dm642 程序編寫問題

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章