標題: 一個刷不死的Bootloader程序設計 [打印本頁]
作者: zhengzg_1 時間: 2017-8-22 12:10
標題: 一個刷不死的Bootloader程序設計
在此程序筆記會介紹,如何使用用戶文件傳輸協(xié)議代替例程中的x-modem協(xié)議。以及該Bootloader的軟件架構、升級過程和例程的具體使用。
1.1 在線升級過程
例程通過x-modem協(xié)議將應用程序的bin文件通過串口傳輸至MCU。
我們將MCU的32KB的Flash具體劃分為:
7KB存儲Bootloader代碼(0x0000~0x1C00);
12KB存儲應用程序1區(qū)代碼(0x1C00~0x4C00);
12KB存儲應用程序2區(qū)代碼(0x4C00~0x7C00);
1KB存儲各種運行參數(0x7C00~0x8000);
用戶可以通過修改main函數中的,與地址有關的宏定義來重新劃分Flash。
MCU第一運行Bootloader時,會直接跳轉至應用程序1區(qū),在生產時直接將Bootloader和應用程序1區(qū)代碼一起燒至Flash中。
在例程中,應用程序1區(qū)代碼以數組的形式存儲在地址0x1c00處。具體代碼詳見Bootloader例程中的usercodeapp1.c文件。
整體軟件的升級示意圖如圖 1.1所示:
0.png (136.47 KB, 下載次數: 149)
下載附件
2017-8-22 16:05 上傳
更新相關參數,并把參數數據重新燒寫至Flash末尾的1KB Flash區(qū)域。參數數據區(qū)示意圖如圖 1.2所示。
0.png (53.82 KB, 下載次數: 150)
下載附件
2017-8-22 16:06 上傳
MCU在線升級的流程如下圖 所示。
完整的word格式文檔51黑下載地址(共8頁):
一個刷不死的Bootloader程序設計.docx
(352.66 KB, 下載次數: 83)
2017-8-22 12:09 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者: yangshijieab 時間: 2017-10-30 13:01
非常有用的文章,感謝!!!
作者: yangshijieab 時間: 2017-11-7 10:10
樓主,你好,我想問一下,這種程序構架適合于什么樣子的51單片機?就是有沒有什么硬性要求?感謝!
作者: ghostvip 時間: 2018-4-22 14:24
這個程序1與程序2,相當于多一個備份吧,如果程序比較大,內存恐怕吃不銷吧
作者: DUANQIRUI 時間: 2018-11-9 10:30
如果程序二死了,怎么跳轉
作者: dhjsjhsjn 時間: 2018-12-13 21:48
感謝分享
作者: q405228062 時間: 2019-9-10 17:07
程序1和程序2的rom工程設置是不一樣的,實際操作起來非常麻煩,也就是說如果當前運行在app1,那么需要把app2編譯出的bin文件燒進去,反之就要把app1的燒進去。意味著每次要編兩個目標文件。且上位機要知道當前目標板工作在哪個app才能知道發(fā)送哪個app
作者: czb999 時間: 2019-12-31 10:19
說得有點簡單,下個文檔看看
作者: zhangshaoshao 時間: 2021-2-1 08:58
請問 APP1和APP2的生成的可執(zhí)行文件是和地址相關的 程序升級時候 如果運行在APP2 發(fā)送的是APP1數據怎么辦?
作者: 西點鐘靈毓秀 時間: 2022-7-8 10:02
非常有用的文章,感謝!!!
作者: 624353765 時間: 2022-7-10 06:51
浪費空間
作者: huaishang 時間: 2025-12-31 09:21
非常有用的文章,感謝!!!
作者: tcygood 時間: 2026-6-16 22:09
我也是分三個區(qū)。
| 歡迎光臨 (http://www.denmoz.com/bbs/) |
Powered by Discuz! X3.1 |