|
1.warning: entry point symbol _c_int00 undefined 使用C寫DSP時,在rts.lib庫中定義了入口地址:_c_int00 The –c and cr options cause the linker to use linking conventions that are required by the C compiler.” 這個錯誤是沒有加庫文件,你可以project view 右鍵加入,也可以在project->build options->Linker->libraries中加入..\..\lib\cls\lib\(搜索路徑)還要加上庫名cslDM642.lib;rts6400.lib分號隔開。 2.Error: Illegal opcode at pc = 0×00000190 我第一次遇到這種錯誤,因為B跳轉(zhuǎn)(分支)指令要有五個周期的延時,所以加上NOP 5就好了。 b .s2 b3 3. error: can’t allocate .text, size 00006e40 (page 0) in LP (avail: 00001000) 這種情況是你的CMD文件中分配的存儲空間太小了,LP: origin = 0×0,len = 0×1000 改成LP: origin = 0×0,len = 0×10000就可以可。 4. error: memory types LP and LD on page 0 overlap 改成LP : origin = 0×0, len = 0×10000就好了。 5. undefined first referenced symbol in file ——— —————- _asmfunc C:\\CCStudio_v3.3\\MyProjects\\MyAsmTest\\Debug\\MyAsmTest.obj >> error: symbol referencing errors – ‘./Debug/MyAsmTest.out’ not built 解決方法:1.是庫的問題 2.把你的匯編程序和C程序起不同的名字。 6.creating output section .const without SECTIONS specification >> warning: creating output section .switch without SECTIONS specification >> warning: creating output section .sysmem without SECTIONS specification、 Printf()需要上面的段 .sysmem 段?? 前十個參數(shù)將被從左到右依次放入寄存器A4、B4、A6、B6、A8、B8、A10、B10、A12和B12。 返回值是整型或32位的浮點型,則放在寄存器A4中返回;假如返回值是雙精度或是長雙精度型,則放在A5:A4中返回;假如返回值是一個結(jié)構(gòu)類型,則將其結(jié)構(gòu)的地址放在A3中返回。 最近總是出現(xiàn)相同的錯誤!唉!! 1. C運行庫文件rtsXX.lib提供了C函數(shù),及初始化函數(shù)c_int00(). 程序?qū)戇MEPROM上電后直接運行,就必須包含Vectors.asm文件,必須被.cmd文件分配到0地址。 DSP復(fù)位后,跳轉(zhuǎn)到c_int00(),在它之中完成初始化堆棧和頁面指針,全局變量等,然后再調(diào)用main()函數(shù)。 2. 連接器-c選項用于設(shè)置運行時初始化全局變量(Run-time-autoinitalization),-cr選項用于設(shè)置在加載時初始化(Load-time initialization)。編譯器將C中的初始化的全局/靜態(tài)變量的初始化放在.cinit段中。但實際的全局/靜態(tài)變量占有的地址空間在.bss段。 3. 大數(shù)組far b[1024] 放在.far段,.bss放小變量。 4. restict 標(biāo)明一個指針是指向一個特定對象的惟一的指針。 5. intrinsics定義內(nèi)聯(lián)函數(shù)。 內(nèi)聯(lián)函數(shù)前面加_ 6. 軟件流水:-o2,-o3時會使用軟件流水。 Prolog(軟件流水填充),epilog(軟件流水排空) 錯誤:undefined first referenced symbol in file ——— —————- _dopt C:\\CCStudio_v3.3\\MyProjects\\dianji\\Debug\\dianji.obj 改法一種是庫沒有加對,一種是匯編文件和C文件重名字了。 程序優(yōu)化: 3個階段, 1. 不考慮相關(guān)知識,直接寫C語言程序。 2. 利用C優(yōu)化方法優(yōu)化C程序。 3. 從C中抽出對性能影響較大的程序段,改寫成匯編程序。 查看指令運行時間, clock()函數(shù) #include <time.h> Clock_t start ,stop,overhead; Start = clock(); Stop = clock(); Overhead = stop – start; Start = clock(); 函數(shù) Stop = clock(); Printf (%d,start-stop-overhead); -g/-s : -g 使能符號和匯編調(diào)試;-s |
|
|