dm642 程式編寫問題

2021-06-19 08:46:42 字數 2398 閱讀 8800

1 無法開啟某個標頭檔案

情況:在乙個工程資料夾中,新建了乙個include資料夾,將標頭檔案都放置在其裡面,但是在ccs中提示無法找到該標頭檔案。

解決:在project選單裡的build option中,compiler頁內,在category裡選擇proprocessor,然後在include search path(-i)後的框裡,填寫:$(proj_dir)\include

2     seed vpm642源**裡面的預編譯

情況:#ifdef _loop2_    _loop2_在各個.h .c檔案中都找不到。

解決: 還是再1裡面的那個頁面,在pre-define symbol(-d)後面的框裡,填上  _loop2_就好了,然後整個工程就預設是已經做過#define _loop2_

3  如何引用自己的庫,或是其他人的庫函式。

解決:  在cmd檔案中用   -l  這個命令寫,如-l lib\seedvpm642_vport.l64 

格式好像是     -l 位址 \ 庫檔名.l64

4 函式符號 多次被定義

情況:在按照例程自己程式設計序,在cmd檔案中新增rts6400.lib和csldm642.lib後編譯

>>   error: symbol _c_int00 is defined multiple times: boot.obj

(.\\lib\\rts6400.lib) and boot.o64 (c:/ccs/c6000/bios/lib/biosi.a64)

>> error: symbol __stack is defined multiple times: boot.obj

(.\\lib\\rts6400.lib) and boot.o64 (c:/ccs/c6000/bios/lib/biosi.a64)

use -heap option to change the default size.

>> error: errors in input - ./debug/seedmotiontest.out not built

解決: 將rts6400.lib去掉,該庫在bios裡面已經自動新增了

5  cmd檔案報錯

情況:把rts6400注釋掉了,編譯中未出現重定義錯誤,但連線是卻有新的報錯:

>> ~~~~~.cmd:   error: can\'t open file \'/.obj\' for input

解決:cmd檔案不該用『 // 』 來注釋,應該用『 /* */  』,導致這個的原因就是在上一步取掉rts6400.lib時,用了//

6. gel配置不當引發的問題

情況:  在通過ccs往dm642燒寫程式時,報錯:data verification failed at address 0x8~~~~~~~

解決:將開啟工程時,預設的gel檔案刪除,載入seeddm642.gel。

由於預設的gel檔案沒有配置emifa,所以若有程式要往sdram裡面燒寫時,sdram無法正確使用,所以會有驗證錯誤。

7  在bios 圖形配置裡面,加seeddm642.init函式

情況:自己仿照seedvpm642_videoloop工程,編寫乙個程式,在i2c處dsp死掉。經過檢視i2c控制代碼值,與map檔案中的控制代碼位置不一樣。

解決:i2c的控制代碼在seeddm642.init函式中生成的,所以應該在bios配置工具中system->global settings裡面的cal user init function打鉤,然後再框裡寫入                  _seedvpm642_init

8 引導程式後,執行,一選擇暫停dsp,電腦上的ccs就死掉了

情況:編寫seedvpm642_videoloop程式,刪除了vp0display後,又新建了乙個。結果就執行不對,經常死。

解決:再新建的時候,忘記選io模型為iom_fxns,結果程式就無可救的跑飛了

9 指標的指標如何取結構體中的某個量

情況:capchan是gio_handle的指標,用capchan->timeout 出錯,用*capchan-> timeout 也出錯

解決:加個小括號  (*capchan)->timeout,按道理取內容運算子*的優先順序更高啊。。。搞不懂

10 使用dsp/bios 動態建立任務,失敗。

情況:在程式中動態建立任務,呼叫 tsk_creat函式,結果返回值是null

解決:在設定dsp/bios的tcf檔案時,忽略了很多初試的東西。

例如,在tsk, task manager 的屬性裡,有設定物件儲存區(object memory)、動態任務堆疊段區域(stack segment for dynamic tasks)他們都應該設定。這裡可以設定為sdram.前面建立任務失敗就是因為stack segment for dynamic tasks 的預設值是空mem_null

DM642啟動過程分析

供所有c6000系列dsp開發者參考。ti關於c6000 bootloader 文件 dm642復位後,晶元先從ce1空間讀取1k位元組的資料到內部sram,然後從位址0開始執行。因為一般的程式都遠遠大於1k位元組,所以一般都是有乙個二級bootloader,用它來載入主程式。bootloader執...

CCS3 3之DM642開發環境建立

使用的 器是seed xdsusb2.0 5v。之前用的是ccs2.2,換成了ccs3.3的。1.安裝ccs3.3.38。在我安裝完後,並沒有急著公升級,公升級的程式是sr12 ccs v3.3 sr 3.3.82.13.exe。2.執行setup ccstudio v3.3進行設定。因為選用的是s...

關於編寫android程式遇到的問題

activity傳值至fragment fragment中的onactivityresult不被呼叫 1.檢查該fragment所屬的activity中,是否重寫了onactivityresult方法。如果是該種情況,請確保寫了super.onactivityresult override prot...