使用C/C++語言編寫基于DSP程序的注意事項(xiàng)#e#使用C/C++語言編寫基于DSP程序的注意事項(xiàng)
1、 不影響執(zhí)行速度的情況下,,可以使用c或c/c++語言提供的函數(shù)庫,,也可以自己設(shè)計(jì)函數(shù),,這樣更易于使用“裁縫師”優(yōu)化處理,例如:進(jìn)行絕對(duì)值運(yùn)算,,可以調(diào)用fabs()或abs()函數(shù),也可以使用if...else...判斷語句來替代,。 2,、 要非常謹(jǐn)慎地使用局部變量,根據(jù)自己項(xiàng)目開發(fā)的需要,,應(yīng)盡可能多地使用全局變量和靜態(tài)變量。 3,、 一定要非常重視中斷向量表的問題,很多朋友對(duì)中斷向量表的調(diào)用方式不清楚,。其實(shí)中斷向量表中的中斷名是任意取定的,dsp是不認(rèn)名字的,,它只認(rèn)地址!!中斷向量表要重新定位。這一點(diǎn)很重要,。 4、 要明確dsp軟件開發(fā)的第一步是對(duì)可用存儲(chǔ)空間的分析,,存儲(chǔ)空間分配好壞關(guān)系到一個(gè)dsp程序員的水平。對(duì)于dsp,,我們有兩種名稱的存儲(chǔ)空間,,一種是物理空間,,另一種是映射空間,。物理空間是dsp上可以存放數(shù)據(jù)和程序的實(shí)際空間(包括外部存儲(chǔ)器),,我們的數(shù)據(jù)和程序最終放到物理空間上,但我們并不能直接訪問它們,。我們要訪問物理空間,,必須借助于映射空間才行!!但是映射空間本身是個(gè)“虛”空間,是個(gè)不存在的空間,。所以,往往是映射空間遠(yuǎn)遠(yuǎn)大于實(shí)際的物理空間,,有些映射空間,如io映射空間,,它本身還代表了一種接口,。只有那些物理空間映射到的映射空間才是我們真正可訪問(讀或?qū)?的存儲(chǔ)空間。 5,、 盡可能地減少除法運(yùn)算,而盡可能多地使用乘法和加法運(yùn)算代替,。 6、 如果ti公司或第三方軟件合作商提供了dsplib或其他的合法子程序庫供調(diào)用,,應(yīng)盡可能地調(diào)用使用。這些子程序均使用用匯編寫成,,更為重要之處是通過了tms320算法標(biāo)準(zhǔn)測(cè)試,。而且,,常用的數(shù)字信號(hào)處理算法均有包括!! 7、 盡可能地采用內(nèi)聯(lián)函數(shù)!!而不用一般的函數(shù)!!可以提高代碼的集成度,。 8,、 編程風(fēng)格力求簡(jiǎn)煉!!盡可能用c語言而不用c++語言。我個(gè)人感到雖然c++終代碼長了一些,,好象對(duì)執(zhí)行速度沒有影響。 9,、 因?yàn)樵赾5000中double型和float型均占有2個(gè)字,,所以都可以使用,,而且,可以直接將int型賦給float型或double型,,但,,盡可能地多使用int數(shù)據(jù)類型代替!這一點(diǎn)需要注意!! 10,、 程序最后至少要加上一個(gè)空行,編譯器當(dāng)這個(gè)空行為結(jié)尾提示符,。 11,、 大膽使用位運(yùn)算符,,非常好用!! 12、2003年6月份從ti的網(wǎng)站上下到了關(guān)于tms320c67x系列dsp的快速算法庫,,于是,,tms320c5000和c6000全系列的快速算法庫都問世了,這些算法庫均可供c/c++語言直接調(diào)用,,優(yōu)化程度100%,實(shí)際編程時(shí)盡可能地使用(下載時(shí)可以同時(shí)下載到說明文檔和ascii源程序,,可以根據(jù)自己需要作出修改,修改前最好做個(gè)備份) |
|