小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

DSP調(diào)試總結(jié)(轉(zhuǎn)) ? Algorithm Home

 oskycar 2010-07-24

1.warning: entry point symbol _c_int00 undefined

使用C寫DSP時,在rts.lib庫中定義了入口地址:_c_int00
而使用匯編語言編程,就不用包括rts.lib庫,所以入口地址及其標(biāo)號可以由人工指定。而使用C時,就不同了,必須從rts.lib定義的這個入口_c_int00入口,是約定的。

The –c and cr options cause the linker to use linking conventions that are required by the C compiler.”
其實在匯編語句中也可以不用_c_int00來定義程序入口,只要把編譯器選項 -c去掉,用-e 選項來定義你想要的程序入口地址。這個可在CMD文件里加-c。

這個錯誤是沒有加庫文件,你可以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
;NOP 5

3. error: can’t allocate .text, size 00006e40 (page 0) in LP (avail: 00001000)
>>   error: errors in input – ./Debug/mytest2.out not built

這種情況是你的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
>> warning: can’t find a memory area named ‘LD’ on page 0 for allocation of
            ‘.stack’
>>   error: can’t find any memory areas for allocation of ‘.stack’
>>   error: can’t allocate ‘.stack’ into ‘LD’ (page 0)
>> warning: can’t find a memory area named ‘LD’ on page 0 for allocation of
            ‘.sysmem’
>>   error: can’t find any memory areas for allocation of ‘.sysmem’
>>   error: can’t allocate ‘.sysmem’ into ‘LD’ (page 0)
這種情況呢,又是你的CMD問題,分配的空間太大了。LP : origin = 0×0,     len = 0×100000

改成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

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多