星期六, 4月 12, 2014
星期二, 3月 11, 2014
Reference from :愛做夢的蘆薈
在embedded的設備上,driver需要讀取某些設定檔並根據設定值設定硬體,除了ioctl, file read/write之外,最簡單的方式莫過於直接在kernel space進行設定檔的讀寫,不過通常”寫入”這個功能很少用到,所以我略過這個東西不提
在kernel讀取檔案的方式非常簡單,小弟粗分為三個步驟,這三個步驟後方所列的就是kernel的API
1.Open file: filp_open
2.Read file: f_op->read
3.Close file: filp_close
程式的範例請直接參考下面所列,程式裡面比較值得一提的是get_fs和set_fs,kernel會根據set_fs的設定值決定要不要檢查讀/寫memory的界限,如果set_fs傳入的參數是kernel_ds,那kernel會bypass memory 界限的檢查,經過這樣的設定,才能正確取得檔案資料
1.Open file: filp_open
2.Read file: f_op->read
3.Close file: filp_close
程式的範例請直接參考下面所列,程式裡面比較值得一提的是get_fs和set_fs,kernel會根據set_fs的設定值決定要不要檢查讀/寫memory的界限,如果set_fs傳入的參數是kernel_ds,那kernel會bypass memory 界限的檢查,經過這樣的設定,才能正確取得檔案資料
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/unistd.h>
#include <linux/sched.h>
#include <linux/fs.h>
#include <linux/file.h>
#include <linux/mm.h>
#include <asm/uaccess.h>
mm_segment_t oldfs;
struct file *openFile(char *path,int flag,int mode) { struct file *fp;
fp=filp_open(path, flag, 0); if (fp) return fp; else return NULL; }
int readFile(struct file *fp,char *buf,int readlen) { if (fp->f_op && fp->f_op->read) return fp->f_op->read(fp,buf,readlen, &fp->f_pos); else return -1; }
int closeFile(struct file *fp) { filp_close(fp,NULL); return 0; }
void initKernelEnv(void) { oldfs = get_fs(); set_fs(KERNEL_DS); }
static int __init readfile_init(void) { char buf[1024]; struct file *fp; int ret;
initKernelEnv(); fp=openFile("/etc/myconfig",O_RDONLY,0); if (fp!=NULL) { memset(buf,0,1024); if ((ret=readFile(fp,buf,1024))>0) printk("buf:%s\n",buf); else printk("read file error %d\n",ret); closeFile(fp); } set_fs(oldfs); return 0; }
static void __exit readfile_exit(void) {
printk("read file module remove successfully\n"); } module_init(readfile_init); module_exit(readfile_exit);
MODULE_DESCRIPTION("read a file in kernel module"); MODULE_AUTHOR("Joey Cheng "); MODULE_LICENSE("GPL"); MODULE_ALIAS("read file module");
#include <linux/module.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/unistd.h>
#include <linux/sched.h>
#include <linux/fs.h>
#include <linux/file.h>
#include <linux/mm.h>
#include <asm/uaccess.h>
mm_segment_t oldfs;
struct file *openFile(char *path,int flag,int mode) { struct file *fp;
fp=filp_open(path, flag, 0); if (fp) return fp; else return NULL; }
int readFile(struct file *fp,char *buf,int readlen) { if (fp->f_op && fp->f_op->read) return fp->f_op->read(fp,buf,readlen, &fp->f_pos); else return -1; }
int closeFile(struct file *fp) { filp_close(fp,NULL); return 0; }
void initKernelEnv(void) { oldfs = get_fs(); set_fs(KERNEL_DS); }
static int __init readfile_init(void) { char buf[1024]; struct file *fp; int ret;
initKernelEnv(); fp=openFile("/etc/myconfig",O_RDONLY,0); if (fp!=NULL) { memset(buf,0,1024); if ((ret=readFile(fp,buf,1024))>0) printk("buf:%s\n",buf); else printk("read file error %d\n",ret); closeFile(fp); } set_fs(oldfs); return 0; }
static void __exit readfile_exit(void) {
printk("read file module remove successfully\n"); } module_init(readfile_init); module_exit(readfile_exit);
MODULE_DESCRIPTION("read a file in kernel module"); MODULE_AUTHOR("Joey Cheng
星期三, 2月 19, 2014
專家觀點:成功發表新產品的十個訣竅
專家觀點:成功發表新產品的十個訣竅
http://www.eettaiwan.com/ART_8800695195_480102_NT_2d7b317c.HTM?click_from=8800110138,9950211892,2014-02-19,EETOL,ARTICLE_ALERT筆者曾經與超過100家以上的零組件供應商合作,其中不乏在半導體元件與相關電子零件方面推出創新產品的業者;我也曾看過許多因為推出了成功的產品,而創造機遇與挑戰的獨特案例。綜合那些成功(以及少數失敗)的故事,以下是筆者歸納出的、當一家公司準備推出新產品時需要考慮的十個關鍵問題。
1. 到底誰是你的客戶群,他們的採購決策程序又是如何?
很多公司的產品設計可能是在美國,產品生產則是與亞洲的製造商合作,但通常在其他區域如俄羅斯或以色列也有專家團隊。你的關鍵客戶可能只有10或20家公司,因此你需要去了解他們在決策過程方面的細節。
2. 你的新產品價值主張為何?
想想你的新產品是否代表擁有全新功能,或是為現有的產品添加功能,還是一種入門款低價產品?也要思考該產品的定位,並與目前或預期中的競爭對手相比較。
3. 新產品的實際或預期競爭對手何在?
這個問題的答案可能對你、你的客戶以及價值供應鏈上的潛在廠商都很明顯,但也可能更微妙;你的客戶可能正在看同樣擁有你產品功能的其他產品,或是其他的替代品。
4. 你的產品市場潛力如何?
新聞媒體與分析師通常會問新產品目前或未來的市場營收潛力,將你的估計與一個或更多外部的觀察者分享,通常是會有價值的。
5. 你的產品價值鏈何在?你的新產品可能改變該價值連嗎?
如果你的新產品破壞了現有的價值鏈,例如消除了該價值鏈上的某一個階段(phase),你會遭遇更大的挑戰;你可能馬上就會與現有的客戶競爭,並且需要把產品賣給一組全新的客戶。
6. 你打算何時發表你的產品?
雖 然你的大部分重要客戶可能會去參加大型展會,但你或許可以在較小規模展會、專門技術研討會,或者是一對一的拜訪時取得他們「高品質的時間」。不要擠在某個 大型展會的第一天眾多廠商發表產品的時候,考量選擇一個與眾不同的時間發表你的產品;你需要抗拒來自公司董事會、客戶或其他人的誘惑與壓力,不要為了與某 個展會或研討會的時間一致,而過早發表產品。
7. 產業分析師扮演什麼角色?
產業分析師可能會成為你的產品在市場定位方面的重要發聲板,並能提供一個來自外部的、客觀的視角;很多分析師會討論他們對你的市場機會以及新產品的看法。
8. 媒體扮演什麼角色?
媒體扮演的主要角色就是報導新聞與趨勢,因此了解他們的興趣、可利用性,以及他們偏好取得資訊的方式很重要;你的行銷團隊應該要專注於與關鍵媒體建立關係,而不是只在產品發表時簡單地與媒體接觸。
9. 你的產品發表進行流程如何?
雖然每一次的產品發表狀況都不同,還是有幾個關鍵行動可確保成功:
‧在產品發表前5~10天,在保密協定(NDA)之下邀集最具影響力的分析師與媒體聚會;
‧針對不同關鍵市場排定最佳的產品發表時間,例如亞洲市場發表時間可選在某個亞洲區域產會舉行時;
‧在產品發表日公佈新聞稿,並將新聞稿以電子郵件形式發送給目標產業分析師與媒體;
‧如果合適,透過社交媒體來分享產品發表訊息,也許可利用一些小玩笑來讓人們期待產品的發表;
‧考量採用電子報來通知關鍵客戶以及潛在客戶有關產品發表的訊息;
‧針對所得到的回應與報導進行分析,評估訊息滲透的品質;舉例來說,那些回應是否符合預期?相關報導是否真實反映了記者會與透過網路所交流的訊息?
10. 如何知道產品發表是否成功?
在產品發表之前建立評量指標是很重要的,能讓決策者判定投資報酬率(ROI);對大多數人來說,基本評量指標包括短期銷售增加、長期性銷售提升,以及建立品牌所帶來的貢獻。
在一家公司的演進歷程中,產品發表通常是很關鍵的時期;提前進行相關研究、建立關鍵訊息、組織關鍵行動,並積極執行、根據評量指標來評估效果,將有助於確保成功。
編譯:Judith Cheng
(參考原文: 10 Tips for Your Product Launch,by Tim Johnson;本文作者為行銷顧問公司Stearns Johnson Communications總裁)
星期三, 1月 22, 2014
Qemu
- Create empty rootfs
- qemu-img create -f qcow hda.img 10G
- Download kernel + initrd
- http://archive.debian.org/debian/dists/etch/main/installer-mips/current/images/qemu/netboot/
- Run
- qemu-system-mips -M mips -kernel vmlinux-2.6.18-6-qemu -initrd initrd.gz -hda hda.img -append "root=/dev/ram console=ttyS0" -nographic
Reference
- http://www.aurel32.net/info/debian_mips_qemu.php
星期二, 1月 21, 2014
星期四, 12月 26, 2013
ZigBee
ZigBee SEP 2 is here. Now what?
http://www.freaklabs.org/index.php/FreakZ-Open-Source-Zigbee-Stack.html
星期三, 12月 25, 2013
gt
http://translate.google.com.tw/translate_tts?q=您好&tl=zh
input type="text" x-webkit-speech="" />
http://slides.html5rocks.com/#web-sockets
input type="text" x-webkit-speech="" />
http://slides.html5rocks.com/#web-sockets
星期四, 12月 19, 2013
Cam
Study
- http://www.skybell.com/
- https://www.dropcam.com/open_source
- 3S Market 寶島監控應用市場資訊網
Study
- MyOOPS開放式課程
- https://diy.org/skills/physicist/challenges/393/make-a-cosmic-ray-detector/achievement
- http://www.amnh.org/education/resources/rfl/web/einsteinguide/activities/cloud.html
標籤:
【新東西、新發現】
星期日, 12月 08, 2013
希爾伯特-黃變換
昨天來學校看到樓下,一堆旗子,上面打著黃鍔星期一 17:00~19:00的演講,題目What is Frequency,想說應該是知名人物,下午好奇的查了一下他的研究,發現他的來頭真的不小,本來星期六要來K書的,結果一個下午 + 晚上在研究他在1998年發表的(Hilbert-Huang Transformation簡稱HHT)跟應用。中央大學校長李羅權指出,HHT為一高效率應用數學演算法,這項方法可適用於分析非線性、非穩定性過程所產生的數據。
HHT的發明被認為是「NASA史上最重要的應用數學發現之一」
HHT優點主要在非線性。HHT 由三個部分組成 ( IMF + EMD + 希爾伯特轉換 ), 其中前兩者是他發明的一個IMF function + 一個EMD方法,第三個希爾伯特轉換是希爾伯特的,對於非穩態及非線性看來是非常有用的,HHT 到最後會生成 n個IMF和一個趨勢函數,這個對我們的應用應該很有幫助,但他整個結構應該很吃重IMF的準確性,該用何種原始 Data數據要想一下。
另外昨天也順道去分析了一下他跟線性回歸, 非線性回歸的差異點,本來感覺上是差不多的東西,但後來發現回歸線並沒辦法做到他的功能,非線性回歸方程一般很難求,不然就是先測定它是何種波形,再回頭推,自然界複雜波形沒辦法用單一非線性函數去歸納出趨勢函數,線性回歸就更不用講了,兩者用途也不太相同。
回頭我又看了一下DCT 跟傅立葉轉換,都類似轉Frequency domain,概念上有相近,對於應用上,結果就是得到一個DC + n個AC,在我們的應用上應該是很有幫助的。直到昨天我才搞懂DC 這個值的物理意涵,重點在下面那張圖的「線性組合」[6],大多文章都在講DCT的流程、怎麼算,很少文章講到這件事。

EMD 的運算如下:將一原始訊號做若干次 Sifting 後,訊號上、下包絡線的平均線會漸漸和水平軸重合,直至訊號的上、下包絡線對稱於水平軸。此新訊號即為第一個 IMF,故稱為 IMF1。將 IMF1 從原始訊號減去,得到第一個殘餘訊號( First Residual ),稱為 r1,將 r1 依同樣方式做若干次 Sifting,可獲得 IMF2,再將 IMF2 從 r1 扣除,得到第二個殘餘訊號 r2,依此規則重複計算,則可將原始訊號拆解成數個 IMF 和最後的殘餘訊號,此即為 EMD 的運算流程。
Reference:
- 希爾伯特-黃轉換
- 黃鍔院士領航 世界級「數據分析方式研究中心」成立 文 /陳如枝
- 希爾伯特黃轉換簡介 (Hilbert Huang Transform) 高雄海洋大學助理教授 謝志敏 Chih-Min Hsieh 2007/7/12
- 黃鍔教授-《黃鍔教授-隨波逐流》
- Discrete cosine transform WIKI
- 二維影像離散餘弦轉換原理(DCT, Discrete Cosine Transform)
- 離散餘弦變換
- 離散傅立葉變換
- What is Frequency
- http://www.ancad.com.tw/VS_Online_Help/ch03s07.html
訂閱:
文章 (Atom)



,
的預操作和後操作。