新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 牛人業(yè)話 > DSP編程技巧之32---答疑解惑哪家強(qiáng)之(7)

DSP編程技巧之32---答疑解惑哪家強(qiáng)之(7)

作者:paradoxfx 時(shí)間:2015-01-04 來(lái)源:電子產(chǎn)品世界 收藏

  43. Error: option --include_path is missing its parameter 'dir',如何解決?

本文引用地址:http://m.butianyuan.cn/article/267640.htm

  這個(gè)錯(cuò)誤的發(fā)生往往是編譯器沒有能夠正確地解析包含變量或者宏的頭文件的路徑。解決方法可以利用上圖中的Variables選項(xiàng)卡,點(diǎn)擊Add,把自定義的變量添加進(jìn)去,此時(shí)CCS會(huì)檢查該編譯器變量是否符合標(biāo)準(zhǔn)。

  44. Error: unresolved symbols remain,如何解決?

  出現(xiàn)這個(gè)錯(cuò)誤說明鏈接器在符號(hào)表中找不到相關(guān)的符號(hào)定義。在這個(gè)例子中,源程序example中使用了函數(shù)myfunc,但是在編譯生成的所有目標(biāo)文件(.obj)或者所有的庫(kù)文件(.lib)中都找不到這個(gè)函數(shù)。解決的方法自然是找到這個(gè)函數(shù)從哪里來(lái)的?然后把它的源添加到工程中。

  在使用Stellarisware或者ControlSuite套件中的例子來(lái)創(chuàng)建我們自己的工程時(shí),如果忘了使用—library選項(xiàng)把庫(kù)文件添加到鏈接器的路徑里,則經(jīng)常會(huì)出現(xiàn)此錯(cuò)誤。這些庫(kù)文件包括:Stellarisware/Tivaware中的driverlib, grlib, usblib,ControlSuite中的driverlib, IQMath等等。

  那么接下來(lái)的步驟就是添加對(duì)應(yīng)的庫(kù)文件了。最直接的方法是在工程屬性里選擇,如下圖所示:

  此外,如果在C++代碼中引用C代碼的頭文件,如果這個(gè)頭文件是自定義的(而不是系統(tǒng)提供的),則最好在頭文件中添加extern "C" {...}以方便在C++代碼中方便使用#include來(lái)引用該頭文件。那么問題又來(lái)了:C編譯器不認(rèn)識(shí)extern "C"怎么辦?此時(shí)要使用#ifdef這樣的宏來(lái)在C中屏蔽它們,即:

  #ifdef __cplusplus

  extern "C" {

  #endif

  45. Error: placement fails for section "xxx",如何解決?

  這個(gè)錯(cuò)誤說明我們定義的段超過了指定存儲(chǔ)器區(qū)間的大小??梢詮囊韵聨讉€(gè)方面來(lái)解決此問題:

  1. 檢查棧和堆的長(zhǎng)度,看看是不是給它們配置了過大的值,導(dǎo)致了在RAM中保存不下去?然后嘗試減小它們的長(zhǎng)度。

  2. 嘗試使能或者增加編譯器的優(yōu)化級(jí)別,未經(jīng)優(yōu)化的代碼往往需要更多的存儲(chǔ)空間。

  3. 如果使用了I/O代碼,則它們會(huì)顯著增加代碼尺寸,例如在很多小容量的器件上,一個(gè)printf()函數(shù)就能超過存儲(chǔ)容量了,此時(shí)可以使用printf()的最小格式,請(qǐng)參考http://m.butianyuan.cn/article/266820.htm。

  4. 可以考慮修改cmd文件,以增加某個(gè)段所使用的存儲(chǔ)空間的長(zhǎng)度;代價(jià)是別的存儲(chǔ)空間的長(zhǎng)度會(huì)相應(yīng)減小,有可能導(dǎo)致新的placement fails 這樣的錯(cuò)誤產(chǎn)生。具體可參考http://m.butianyuan.cn/article/256732.htm。

  5. 嘗試精簡(jiǎn)/優(yōu)化代碼,在不影響功能的情況下,使用一些技巧來(lái)減小代碼尺寸。

  例如,我們可以使用“空間換時(shí)間”,或者“時(shí)間換空間”的方法,在代碼尺寸和執(zhí)行速度上做一些折衷。比如對(duì)于一個(gè)滑動(dòng)傅立葉變換(sDFT),我們既可以使用很大的數(shù)組來(lái)保存滑動(dòng)值, 從而實(shí)現(xiàn)很高的運(yùn)算速度;也可以減少運(yùn)算速度,每個(gè)周期只使用幾個(gè)點(diǎn)來(lái)完成計(jì)算,這樣可以極大地減小存儲(chǔ)空間的占用。

  6. 不到萬(wàn)不得已,不要去考慮更換

  但是如果在產(chǎn)品開發(fā)的評(píng)估階段,存儲(chǔ)空間就已經(jīng)捉襟見肘了,則還是要提早考慮升級(jí)的,不然以后再增加新的功能,或者哪怕是僅僅修正了一個(gè)小的bug,有可能就徹底放不進(jìn)去了。

c++相關(guān)文章:c++教程



上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: DSP 編程 芯片

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉