Sean's Note

2011年3月30日 星期三

[DM6437] Pin Mux 的設定

可去官網抓 DM643x  Pin Mux Utility.exe 來用。

[DM6437] FlashBurn

平常透過 USB 在板子上模擬都是寫在 RAM 上,所以電源一關掉,

程式也就被洗掉了。這時候就可以使用 FlashBurn,

在 dvsdk 資料夾下可以搜尋到 DM643x Flashing Instructions.pdf,

照著 PDF 的步驟下載 FlashBurn DSK,即可把程式燒進 Flash,

每次把 DSP 電源開啟時就會跑自己燒進去的程式。


記得要呼叫這行 EVMDM6437_init();

因為利用 CCS 開發,startup 和 evmdm6437bsl.lib 會自動幫我們

初始一些環境,所以要手動加入,如果沒加這行有些功能就無法 work,

像是 UART。

2011年3月15日 星期二

[C/C++] extern 的用法

想要宣告一全域變數讓其他文件 (.c 或 .cpp) 共同使用,

必須在型態前加上 extern, 表示變數在文件之外, 如 :

int data; // 宣告在 file1.c

extern int data; // 則必須宣告在 flie1.h

當 file2.c 要使用變數時, 只要 include file1.h 即可,

不必再宣告該變數.

2011年2月15日 星期二

[Windows] 桌面上出現奇怪的IE圖示無法刪除

到 regedit 裡搜尋 {e17d4fc0-5564-11d1-83f2-00a0c90dc849}


這組機碼是負責搜尋功能的,大陸人很愛改寫這些機碼,


來綁架網頁和使搜尋功能壞掉,只要把這些機碼刪除,在重新修復即可。


修復搜索.reg

2010年12月31日 星期五

[DM6437] 初學DSP

最近自己摸 TI 的 DM6437 DSP 真是有夠難上手了。

覺得 Output 怪怪的或 CCS 開不起來就按按 SW6 Reset 吧。

還有隨 DM6437 EVM 附的光碟,裡面有的 Driver 都很舊,有一些 bug,

可以的話就先更新,如:

DSP/BIOS: v5.31.02 -> v5.41.09.34
Code Generation Tools: v6.0.8 -> v6.1.18
DVSDK:  dvsdk_1_01_00_15 -> dvsdk_1_11_00_00


一些名詞的縮寫:
VPSS: Video Processing Subsystem
VPFE: Video Processing Font-end
CCDC: CCD Controller
VPFE: Video Processing Back-end
OSD: On-Screen Display
xDC: Express DSP Component
PSP: Platform Support Package

另外這兩個網站,可以找到許多相關資料。

TI Wiki:
http://processors.wiki.ti.com/index.php/Main_Page

TI Forum:
http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/default.aspx


關於最佳化:
http://processors.wiki.ti.com/index.php/C6000_CGT_Optimization_Lab_-_1

2010年12月20日 星期一

[C/C++] 動態宣告二維陣列

// ==========================

// C Style

// ==========================

int **p;
int i;


// 欲配置成 p[10][3]

p = (int **)malloc(10 * sizeof(int *));
for (i = 0; i < 10; i++){
    p[i] = (int *)malloc(3 * sizeof(int));

....

// 使用完後釋放記憶體空間
for (i = 0; i < 10; i++)
    free(p[i]);

free(p); 





// =========================

// C++ Style

// =========================

int **p; // 二維動態

// 欲配置成 p[10][3]
p = new int* [10];
for (int i = 0; i < 10; i++){
    p[i] = new int [3];

...


// 使用完後釋放記憶體空間
for (int i = 0; i < 10; i++)
    delete [] p[i];

delete [] p; 


int (*p)[3]; // 一維固定一維動態

// 欲配置成 p[10][3]
p = new int[10][3];
for (int i = 0; i < 10; i++){
    p[i] = new int [3];

...


// 使用完後釋放記憶體空間
delete [] p;