中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

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

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

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

          答疑解惑哪家強?當屬我們EEPW最強。。。接下來繼續(xù)了解一下與編譯器和鏈接器的常見錯誤、警告有關的問題原因和解決方法。

        本文引用地址:http://www.antipu.com.cn/article/267641.htm

          46. Tag_Memory_Model attribute value of "1" that is different than one previously seen ("2"); combining incompatible files,是神馬意思?

          這個錯誤表明鏈接器所鏈接的目標文件中存在不同的內存模式,比如說有的目標文件使用了大內存模式,而有的使用的是小內存模式。修改的方法則是讓所有的文件在鏈接時都使用相同的內存模式。

          事實上這種錯誤出現的場合并不算太多,主要出現在工程中引用了別人提供的某些obj文件或者庫文件的時候。在C2000上,新建工程的時候推薦大家統統使用大內存模式(-ml)選項。

          47. Error: file grlib.lib" was built without VFP coprocessor support while a previously seen file was; combining incompatible files,是神馬意思?

          這個錯誤與上面那個錯誤的原因是類似的,表明鏈接器所鏈接的目標文件中存在不同的浮點支持模式。修改方法則是讓所有的目標文件和庫文件使用相同的浮點支持--float_support選項。

          48. 為什么編譯的時候總是提示Warning: creating output section "xxx" without a SECTIONS specification?

          在使用默認的cmd文件進行,而工程中有使用了某些cmd中未明確定義的段的時候,就會出現這個警告。因為沒有在cmd中定義這個段,所以鏈接器會使用默認的算法來創(chuàng)建和分配輸出段“XXX”;這樣雖然能保證程序的工作,卻不被建議這樣做,因為它不利于內存地址空間的有效分配和管理。通常來說,最好不要有任何的鏈接器警告,以消除程序運行時潛在的bug。

          49. 莫名其妙的gmake: Access is denied。

          在編譯程序的時候,編譯器會生成一系列的中間文件,包括obj、lib、asm等等,這個過程被一些帶有主動防御系統的殺毒軟件和安全軟件當作危險行為,因此就被禁止掉了,導致編譯失敗,如下圖所示:

          所以在編譯程序的時候,最好禁用安全軟件,不然即使是安全軟件沒有直接阻止編譯,也會跳出各種各樣的詢問信息,不勝其擾。

          50. Type 'xyz' or Symbol 'abc' could not be resolved。

          這些錯誤一般是由Eclipse CDT (C/C++開發(fā)工具)錯報出的,而不是由TI本身的編譯器所給出的。目前的解決方法是:

          從CCSv4的工程升級到CCSv5或者更高版本的時候,如果選擇的是project---導入工程,一般會有一定的兼容性問題,可能會產生這樣的錯誤。解決方案則是創(chuàng)建一個新的工作區(qū),然后把所有的源程序、庫文件、cmd文件等導入到新的工程中,重新配置工程選項,然后再編譯。

          或者干脆忽略CDT的語法錯誤,方法是在CCS中點擊Window->Preferences->General->Editors->Text Editors->Annotations, 選擇C/C++ Indexer Markers,然后清除掉所有的選擇。

          51. Warning: build attribute vendor section TI missing in " : compatibility cannot be determined。是什么屬性丟失了?

          出現這個問題,說明使用的庫文件是由一個老版本的編譯/鏈接工具所創(chuàng)建的,在使用新版本的工具進行編譯/鏈接時,這個老的庫文件缺失了某些屬性,導致了這個警告的產生。在C2000 的開發(fā)中,有幾個場合特別容易出現此警告:

          ² 在新的編譯環(huán)境中,使用了一個老版本的IQmath庫文件。

          ² 在測試時,使用了老版本的編譯器生成的Flash API。

          ² 在使用高分辨率的HRPWM模塊時,使用了老版本的SFO庫文件來修正MEP。

          這個警告總的來說并不影響程序的運行,我們即可以通過把老的庫文件換成最新版本來徹底解決此問題,也可以在cmd文件中使用--diag_suppress=16002來消除此警告信息。至于16002這樣的警告信息是如何歸類的,在CCS的編譯提示里就有:

          #16002-D build attribute vendor section TI missing in "c:/ti/ccsv6/tools/compiler/C2000_6.2.2/lib/IQmath.lib": compatibility cannot be determined

          52. fatal error: file .....rts2800_fpu32.lib" specifies ISA revision "C28FPU32", which is not compatible with ISA revision "C2800" specified in a previous file or on the command line。

          這個致命錯誤說明對某些不是FPU32的目標文件啟用了--float_support=FPU32選項進行編譯,例如這個目標文件是由不含有FPU的器件上的編譯編譯而來的時候就會產生,也有可能是這個目標文件沒有使用FPU選項。解決的方法是:

          ² 如果導致錯誤的目標文件是支持FPU的,則使用-v28 --float_support=FPU32來編譯所有的程序。在CCS中,可以把這個選項作為全局選項,或者預編譯選項。

          ² 如果器件不支持FPU,則不要使用FPU32選項。這是因為在含有FPU的器件中,float類型的變量會傳遞到FPU寄存器中進行處理;而在不含有FPU的器件中,float類型的變量仍然會保存到棧中。

          53. Warning: entry-point symbol other than "_c_int00" specified: "code_start"。

          初學者經常會遇到此問題。事實上這個警告并不會對程序的運行產生什么影響,它只是用來告訴我們,程序的入口點被編譯器給自動分配到code_start,而不是默認的_c_int00中;它們的效果是一樣的,含義請參考http://www.antipu.com.cn/article/262926.htm。TI提供的外設例子在編譯時也經常會產生此警告。

          54. Error: unresolved symbols remain....

          符號FD$$MPY、FD$$TOL之類的找不到,這樣的問題也是初學者經常遇到的。這樣的問題說明相關的庫函數被使用了,但是庫并沒有被添加到工程之中。例如,在程序中使用了c = IQdiv(a,b);這樣的程序,但是并沒有把IQmath.lib添加到工程中,則IQdiv就會被提示unsolved這樣的錯誤,解決方法則是把對應的庫文件添加到工程里就好了。

          特別說明:帶有兩個美元符號$$的函數一般都是實時運行庫RTS里的,一定要記得添加對應的RTS庫文件。

          55. Error: Tag_ISA attribute value of "2" that is different than one previously seen ("1"); combining incompatible files.

          這個錯誤表明ISA版本這個屬性不正確。其中,1代表C27x,2代表C28x。在使用C28x時,應該使用-v28這樣的選項來使用C28x模式,而不應該再使用其它的兼容模式了。

          56. Error: placement fails for object "csmpasswds"

          在早期版本的CCS5.x編譯器/鏈接器中,有這個問題,鏈接器會不停地提示相同名字的段被既保存在page0,又被保存在page1之中,直到我們把它們改好;這算是一個bug吧,升級編譯工具codegen的版本,或者干脆升級整個ccs軟件,就可以解決此問題。

          57. Warning: function declared implicitly

          雖然這只是個警告,但是它表明函數的原型不存在,編譯器會對函數的參數和返回值做一些假設,這就是bug的一種源頭,所以一定要把這個警告給消除掉。

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




        關鍵詞: DSP 編程

        評論


        相關推薦

        技術專區(qū)

        關閉