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