|
因為在論壇和官網(wǎng)都沒搜到完全合適的BootLoader,所以自己移植完成了一個BootLoader工程。另外附APP文件工程,可做實驗。用良心保證,看完后可以做一個成功的實驗。
上位機選用SecureCrt,單片機用的stm32f103vet6。
1.png (41.15 KB, 下載次數(shù): 61)
下載附件
2018-12-14 18:53 上傳
首先搞清楚BootLoader過程步驟,代碼可以再根據(jù)自己需要修改:
步驟一:初始化IO口,初始化uart串口,初始化定時器等等
步驟二:進(jìn)入BootLoader選擇界面,如果選擇1是燒寫程序,然后用上位機發(fā)送ymodem格式的bin文件。(bin文件就是應(yīng)用程序的編譯后的二進(jìn)制代碼),發(fā)送完成后,單片機已經(jīng)把它存進(jìn)flash中一塊區(qū)域,并跳轉(zhuǎn)運行此區(qū)域。
步驟二:進(jìn)入BootLoader選擇界面,如果選擇2是直接跳轉(zhuǎn)到應(yīng)用程序區(qū)。
步驟二:進(jìn)入BootLoader選擇界面,如果不選擇,不做任何操作,3秒后直接跳轉(zhuǎn)到應(yīng)用程序區(qū)。
實際SecureCRT效果圖:
2.png (41.18 KB, 下載次數(shù): 56)
下載附件
2018-12-14 18:53 上傳
補充:bootloader占用整個flash的前0x000-0x3000空間,從flash的第0x3000空間開始存的是應(yīng)用程序。
BootLoader和app分別建立兩個工程,那么在app工程中需要修改中斷向量起始地址為0x3000,和keil的target的IROM1,然后編譯得到bin,怎么在keil得到bin?在user中fromelf.exe --bin -o "$L@L.bin" "#L"
3.png (33.77 KB, 下載次數(shù): 66)
下載附件
2018-12-14 18:53 上傳
4.png (32.28 KB, 下載次數(shù): 62)
下載附件
2018-12-14 18:53 上傳
5.png (31.79 KB, 下載次數(shù): 50)
下載附件
2018-12-14 18:53 上傳
我是這樣做的暫時沒有發(fā)現(xiàn)問題,編了幾個簡單的APP程序(流水燈,外部中斷等)測試沒有問題。也請有興趣的朋友提出補充和糾正。
|
評分
-
查看全部評分
|