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 如何引用自己的庫,或是其他人的庫函數。
情況:編寫出了dsp/bios針對自己板子的驅動,但是該怎麼做在自己的程序中鏈接呢
解決: 在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