01 存儲器劃分
SWM181xB的Flash總大小為120K,其中前96K用于APP,后24K用于UserBoot,芯片上電先執(zhí)行UserBoot,然后跳轉(zhuǎn)到APP。
SWM181xC的Flash總大小為248K,UserBoot在96K起始的24K處,若程序大小超過96K,則需要在Keil中做如下設(shè)置:
02 執(zhí)行流程
B0接低時,上電后芯片直接執(zhí)行APP。
B0接高時,上電后芯片檢查地址0x18020處內(nèi)容:
若內(nèi)容不是0x0B11FFAC,則執(zhí)行ISP代碼,可通過串口燒錄APP。
若內(nèi)容是0x0B11FFAC,則跳轉(zhuǎn)到UserBoot。
03 工程設(shè)置
UserBoot 和 APP
startup_SWM181.s中需要如下設(shè)置,確保程序的0x20、0x24、0x28三個地址處有正確取值:
DCD 0x0B11FFAC
DCD 0x6000
DCD SRAM_SWITCH
關(guān)于0x6000
UserBoot和APP中的0x6000分別指定了UserBoot和APP的大小為24k,若它們的大小不是24k,可修改對應(yīng)值縮短代碼拷貝時長;設(shè)定值必須是0x1000的整數(shù)倍,且大于等于實際程序大小。如果對上電時間沒有苛刻要求,建議不要修改。
UserBoot
UserBoot的連接使用分散加載文件控制。
04 程序下載
UserBoot
可使用SWMProg、SYNWIT_ISP等可將代碼下載到指定位置的軟件下載。
APP——可使用Keil下載
下載時不要選全擦,否則會把之前下載的UserBoot擦掉。
使用其他工具給SWM181xC下載時需要注意:若程序大于96K需要避免下載工具將0x18000-0x1E000的UserBoot覆寫掉。
可以將APP和UserBoot的bin文件合并成一個然后再用批量工具燒錄。
05 升級ISP
檢查0x18020地址處內(nèi)容并跳轉(zhuǎn)到UserBoot的工作其實是由ISP代碼完成的,舊版ISP代碼沒有此功能,因此需要給帶有舊版ISP代碼的芯片升級ISP。
06 跳轉(zhuǎn)前的清理工作
UserBoot程序中,跳轉(zhuǎn)到APP之前,需要執(zhí)行以下清理操作:
(1)關(guān)閉UserBoot中開啟的外設(shè)中斷;
(2)關(guān)閉UserBoot中使用過的外設(shè)(給外設(shè)的控制寄存器恢復(fù)默認(rèn)值);
比如如果UserBoot中使用了Timer中斷,在跳轉(zhuǎn)到APP之前沒有關(guān)閉Timer的話,那么進入APP之后這個Timer還會觸發(fā)中斷,而APP中沒有給這個Timer寫ISR的話,就會執(zhí)行默認(rèn)ISR,是個死循環(huán)。
注意事項:
下載UserBoot后,ISP程序無法再執(zhí)行,若App中關(guān)閉了SWD,則芯片無法再通過JLink和ISP串口更新程序,只能通過UserBoot更新或擦除App。
責(zé)任編輯:haq
-
芯片
+關(guān)注
關(guān)注
452文章
50025瀏覽量
419791 -
存儲器
+關(guān)注
關(guān)注
38文章
7408瀏覽量
163420
原文標(biāo)題:SWM181定制UserBoot操作指南
文章出處:【微信號:gh_ed4f95bde4df,微信公眾號:華芯微特32位MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論