發表文章

目前顯示的是 2009的文章

DirectShow for NTSC GraphEdit發生無Video輸出

之前在GraphEdit拉出的架構可以直接使用NTSC的Device播放, 但這幾天我重新嘗試用程式把架構再拉出來,結果發生無Video輸出, 而且解析度不太正常,並圖像也只有同一張,剛開始一直找不到原因, 後來嘗試幾個架構方式後,一直到最後才發現原來Renderer的解析度 跟Video Capture Sources不一樣,於是重新設定解析度之後就可以 正常輸出了。

ISDB紀錄/說明

因工作需要,在新工作上我們必須做一些與ISDB相關的Driver/軟體, 因為之前我並未碰過ISDB,因此為它做了一些研究,順便紀錄下來: ISDB目前有分為兩種模式,一種是地上波(ISDB-T),另一種是衛星訊號(ISDB-S)。 而ISDB的頻寬一律落在6Mhz的。 目前使用ISDB規格的國家有:巴西、日本。 http://www.arib.or.jp/english/  : ISDB在日本的規範組織。

利用jiffies計時

因工作上的需求,於是我又找了另一個計時的方法, 但經過測試後,偶爾會出現不是很準確的狀況, 但仍紀錄下來當作參考。 ------------------------------------------- jiffies - 最原始的來源是CPU的tick。當硬體一過電後, CPU每隔一段固定時間就會發出一個tick訊息,而由jiffies紀錄下來, 因此,你可以利用程式讀出jiffies的值,那就是開機到目前為止的ticks。 而CPU隔多久會發出一次tick的訊息,就得視CPU的clock速度而定, 可以由make menuconfig中找到clock freq. 的設定,裡面有提到當時的速度設定。 而jiffies的使用例子如下: long tick2,tick1; tick1 = jiffies; for(;;)   do something ....   break; tick2 = jiffies; time= tick2-tick1; long msec = jiffies_to_msecs(abs(time)); msec求出的值便是毫秒的單位啦!

[BusyBox的用途]

這陣子要在FPGA的開發板上做一些系統的測試,所以順便研究了BusyBox。 關於busybox的說明只有簡單一句話: 他就是Linux上的工具包,集合指令、工具,如:ls,mkdir,move ...等。 當然對我們來說,這只是將工具的Size壓縮, 當你成功的compiler busybox後,他會幫你建立一個rootfs。 而rootfs會自動copy一些工具到/bin,/sbin,usr/bin ...等。 裡面可以清楚看到一些執行指令都是個link檔,與busybox連結。 所以Busybox在compiler時,就依cross compiler的環境將這些工具/指令compiler進busybox的binary檔了。 所以,有了Busybox就可以省去我們建立這些指令的時間跟硬碟的空間,當然這也是嵌入式系統的第一步。

[Linux上clock_gettime毫秒的計算]

整理一下在Linux上的時間計算方式,據原先常用的gettimeofday(tv,NULL);的方法 好像沒辦法精確的抓到毫秒,所以我再google了另一個方法...紀錄下來: #include<stdio.h> #include<time.h> #define BILLION 1000000000L; int main(void){ struct timespec start,end; clock_gettime(CLOCK_REALTIME,&start);//取得Start的時間 int ret; printf("In sleep ...\n"); usleep(150000); printf("out of sleep ... \n"); clock_gettime(CLOCK_REALTIME,&end);//取得End的時間 double time = ( end.tv_sec - start.tv_sec)                             + (double)(end.tv_nsec-start.tv_nsec)/(double)BILLION;//計算開始到結束花費的時間 printf("run time = %lf\n",time);         //顯示出來的時間會是" 秒.微秒毫秒..." } 記得在Compiler後面加上-lrt,否則會在Link時出現找不到clock_gettime的錯誤訊息喔!