想請問CCS MSP430如何燒錄兩個code在不同區域?
型號:MSP430FR2433
bootloader燒入在0xC400 (length:0x1400)
app燒在0xD800 (length:0x2780)
是藉由lnk_msp430fr2433.cmd去更改嗎?
但如果燒完bootloader再燒錄app,app會不會把bootloader區塊清除掉?
灰小子:
方法一:把bootloader和app编译生成的txt文件合并成一个,然后烧录
方法二:先烧写bootloader,然后通过bootloader的方式把app烧写进去
Tsai Toby:
回复 灰小子:
1.所以CCS沒辦法自訂位置去燒錄? 之前使用Keil可以編寫.sct去實現 2.那另請問一下,像這樣兩個程式(bootloader & app) lnk_msp430fr2433.cmd除了更改 FRAM : origin = 0xC400, length = 0x3B80 有其他地方需要修改嗎? 目前只知道如果bootloader需要使用中斷的話,需要把中斷向量複製到RAM去。(這邊我應該沒理解錯誤吧?)
Xiaodong LI:
回复 Tsai Toby:
使用 #pragma 语句可以定义一段程序编译的起始地址
Tsai Toby:
回复 灰小子:
方法二:先烧写bootloader,然后通过bootloader的方式把app烧写进去
我現在先燒錄bootloader code想利用write FRAM把app直接從0xD800開始填寫
但我發現我的app產生出來的bin file是15KB,這邊要怎麼修改才可以產生出我所規劃的10K size?bootloader origin = 0xC400, length = 0x1400 (5KB)
APPorigin = 0xD800, length = 0x2780 (10KB)
Tsai Toby:
回复 Xiaodong LI:
1.但是我想要整個app code放在0xD800 (大小10kB)
這樣要怎麼設置?2.利用bootloader從0xD800開始燒錄的話,那我app的project在編譯成BIN有需要特別設定嗎?
Tsai Toby:
方法二:先烧写bootloader,然后通过bootloader的方式把app烧写进去 目前使用上面的方法,link.cmd做以下修正 (Bootloader) FRAM : origin = 0xC400, length = 0x1400 (APP) FRAM : origin = 0xD800, length = 0x2780 編譯後產生出10kB的bin檔 ========================================== 利用bootloader燒入APP(從0xD800)開始
0xFFFE~0xFFFF不覆蓋保留原本的(reset vector)
最後利用asm(" mov &0xD800,PC;");跳到APP程式就不知道飛去哪了…轉跳到APP不是把PC指向APP起始位址嗎?