新聞中心

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

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

        作者:paradoxfx 時間:2015-01-04 來源:電子產品世界 收藏

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

        本文引用地址:http://www.104case.com/article/267640.htm

          這個錯誤的發生往往是編譯器沒有能夠正確地解析包含變量或者宏的頭文件的路徑。解決方法可以利用上圖中的Variables選項卡,點擊Add,把自定義的變量添加進去,此時CCS會檢查該編譯器變量是否符合標準。

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

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

          在使用Stellarisware或者ControlSuite套件中的例子來創建我們自己的工程時,如果忘了使用—library選項把庫文件添加到鏈接器的路徑里,則經常會出現此錯誤。這些庫文件包括:Stellarisware/Tivaware中的driverlib, grlib, usblib,ControlSuite中的driverlib, IQMath等等。

          那么接下來的步驟就是添加對應的庫文件了。最直接的方法是在工程屬性里選擇,如下圖所示:

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

          #ifdef __cplusplus

          extern "C" {

          #endif

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

          這個錯誤說明我們定義的段超過了指定存儲器區間的大小。可以從以下幾個方面來解決此問題:

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

          2. 嘗試使能或者增加編譯器的優化級別,未經優化的代碼往往需要更多的存儲空間。

          3. 如果使用了I/O代碼,則它們會顯著增加代碼尺寸,例如在很多小容量的器件上,一個printf()函數就能超過存儲容量了,此時可以使用printf()的最小格式,請參考http://www.104case.com/article/266820.htm

          4. 可以考慮修改cmd文件,以增加某個段所使用的存儲空間的長度;代價是別的存儲空間的長度會相應減小,有可能導致新的placement fails 這樣的錯誤產生。具體可參考http://www.104case.com/article/256732.htm

          5. 嘗試精簡/優化代碼,在不影響功能的情況下,使用一些技巧來減小代碼尺寸。

          例如,我們可以使用“空間換時間”,或者“時間換空間”的方法,在代碼尺寸和執行速度上做一些折衷。比如對于一個滑動傅立葉變換(sDFT),我們既可以使用很大的數組來保存滑動值, 從而實現很高的運算速度;也可以減少運算速度,每個周期只使用幾個點來完成計算,這樣可以極大地減小存儲空間的占用。

          6. 不到萬不得已,不要去考慮更換

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

        c++相關文章:c++教程



        上一頁 1 2 下一頁

        關鍵詞: DSP 編程 芯片

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 类乌齐县| 茌平县| 贵港市| 灵寿县| 正定县| 永州市| 晋宁县| 手机| 隆尧县| 肇庆市| 合川市| 安化县| 秭归县| 长沙市| 瑞昌市| 屯留县| 大兴区| 拉孜县| 安多县| 卢氏县| 巴林右旗| 体育| 石阡县| 松阳县| 久治县| 阳朔县| 多伦县| 怀仁县| 梅州市| 阳原县| 尉氏县| 刚察县| 阳谷县| 大埔区| 清河县| 徐州市| 云霄县| 云和县| 桑植县| 东乡县| 浦北县|