标题: 一个刷不死的Bootloader程序设计 [打印本页]
作者: zhengzg_1 时间: 2017-8-22 12:10
标题: 一个刷不死的Bootloader程序设计
在此程序笔记会介绍,如何使用用户文件传输协议代替例程中的x-modem协议。以及该Bootloader的软件架构、升级过程和例程的具体使用。
1.1 在线升级过程
例程通过x-modem协议将应用程序的bin文件通过串口传输至MCU。
我们将MCU的32KB的Flash具体划分为:
7KB存储Bootloader代码(0x0000~0x1C00);
12KB存储应用程序1区代码(0x1C00~0x4C00);
12KB存储应用程序2区代码(0x4C00~0x7C00);
1KB存储各种运行参数(0x7C00~0x8000);
用户可以通过修改main函数中的,与地址有关的宏定义来重新划分Flash。
MCU第一运行Bootloader时,会直接跳转至应用程序1区,在生产时直接将Bootloader和应用程序1区代码一起烧至Flash中。
在例程中,应用程序1区代码以数组的形式存储在地址0x1c00处。具体代码详见Bootloader例程中的usercodeapp1.c文件。
整体软件的升级示意图如图 1.1所示:
更新相关参数,并把参数数据重新烧写至Flash末尾的1KB Flash区域。参数数据区示意图如图 1.2所示。
MCU在线升级的流程如下图 所示。
完整的word格式文档51黑下载地址(共8页):
一个刷不死的Bootloader程序设计.docx
(352.66 KB, 下载次数: 83)
作者: 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才能知道发送哪个app
作者: czb999 时间: 2019-12-31 10:19
说得有点简单,下个文档看看
作者: zhangshaoshao 时间: 2021-2-1 08:58
请问 APP1和APP2的生成的可执行文件是和地址相关的 程序升级时候 如果运行在APP2 发送的是APP1数据怎么办?
作者: 西点钟灵毓秀 时间: 2022-7-8 10:02
非常有用的文章,感谢!!!
作者: 624353765 时间: 2022-7-10 06:51
浪费空间
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |