作者:TI FAE – Johnson Chen
在開(kāi)發(fā)Bootloader 的項(xiàng)目時(shí),我們通常需要把APP程序的入口固定在某個(gè)固定地址上,因此在CMD 里面會(huì)用如下分配來(lái)實(shí)現(xiàn)這個(gè)功能,
APP
{
-l rts2800_fpu32.lib(.text)
} > FLASHH PAGE = 0
但當(dāng)我們更換編譯器或者CCS 版本時(shí),經(jīng)常會(huì)碰到編譯時(shí)出現(xiàn)如下 warning:
no matching section
-l rts2800_fpu32.lib(.text)
如果這個(gè)警告不想辦法消除的話,在通過(guò)Bootloader 燒錄APP 以后,APP 將無(wú)法運(yùn)行。
這個(gè)原因在于C2000 編譯器從 CGT V16.9.0.LTS開(kāi)始 rst2800_ml.lib 和rst2800_fpu32.lib 里面boot.asm相關(guān)文件名有改動(dòng)。
在版本號(hào)大于等于V16.9.0.LTS的編譯器版本中文件名為boot28.asm,而小于V16.9.0.LTS的編譯器版本中文件名為boot.asm
詳細(xì)如圖一圖二所示。
因此在CMD里面分配bootxx.obj的時(shí)候要根據(jù)編譯器版本來(lái)處理。大于等于V16.9.0.LTS版本中文件名為boot28.obj, 而小于V16.9.0.LTS的版本中文件名為boot.obj.
??
圖一 大于等于V16.9.0.LTS 圖二 小于V16.9.0.LTS
解決辦法為, 使用編譯器版大于等于V16.9.0.LTS的時(shí)候,將boot.obj改為boot28.obj即可,例如改成如下:
APP
{
-l rts2800_fpu32.lib(.text)
} > FLASHH PAGE = 0
隨著編譯器版本的升級(jí),未來(lái)有可能boot28.obj名字還會(huì)修改,碰到同樣的問(wèn)題時(shí)可以在你編譯完生成的MAP文件里面找到.text段內(nèi)容里面的內(nèi)容--rts2800_fpu32.lib:bootXXX.obj (.text)。
把上面找到的bootXXX.obj代入下面即可:
APP
{
-l rts2800_fpu32.lib(.text) //
} > FLASHH PAGE = 0
注意:
如果是使用定點(diǎn)芯片時(shí),編譯器庫(kù)文件名將是rst2800_ml.lib,此方法同樣適用。CMD 寫(xiě)法如下:
APP
{
-l rst2800_ml.lib(.text) //
} > FLASHH PAGE =
審核編輯:符乾江
-
嵌入式
+關(guān)注
關(guān)注
5173文章
19967瀏覽量
324242 -
編譯
+關(guān)注
關(guān)注
0文章
682瀏覽量
34763
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論