找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6103|回复: 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)


评分

参与人数 1黑币 +5 收起 理由
yangshijieab + 5

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:244167 发表于 2017-10-30 13:01 | 只看该作者
非常有用的文章,感谢!!!
回复

使用道具 举报

板凳
ID:244167 发表于 2017-11-7 10:10 | 只看该作者
楼主,你好,我想问一下,这种程序构架适合于什么样子的51单片机?就是有没有什么硬性要求?感谢!
回复

使用道具 举报

地板
ID:302214 发表于 2018-4-22 14:24 | 只看该作者
这个程序1与程序2,相当于多一个备份吧,如果程序比较大,内存恐怕吃不销吧
回复

使用道具 举报

5#
ID:275094 发表于 2018-11-9 10:30 | 只看该作者
如果程序二死了,怎么跳转
回复

使用道具 举报

6#
ID:354839 发表于 2018-12-13 21:48 | 只看该作者
感谢分享
回复

使用道具 举报

7#
ID:540488 发表于 2019-9-10 17:07 | 只看该作者
程序1和程序2的rom工程设置是不一样的,实际操作起来非常麻烦,也就是说如果当前运行在app1,那么需要把app2编译出的bin文件烧进去,反之就要把app1的烧进去。意味着每次要编两个目标文件。且上位机要知道当前目标板工作在哪个app才能知道发送哪个app
回复

使用道具 举报

8#
ID:678174 发表于 2019-12-31 10:19 | 只看该作者
说得有点简单,下个文档看看
回复

使用道具 举报

9#
ID:604377 发表于 2021-2-1 08:58 | 只看该作者
请问 APP1和APP2的生成的可执行文件是和地址相关的  程序升级时候 如果运行在APP2 发送的是APP1数据怎么办?
回复

使用道具 举报

10#
ID:87000 发表于 2022-7-8 10:02 | 只看该作者
非常有用的文章,感谢!!!
回复

使用道具 举报

11#
ID:526108 发表于 2022-7-10 06:51 | 只看该作者
浪费空间
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表