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