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