[单片机]Bootloader+App设计

主要记录Bootloader设计过程中的一些思路,经供参考(以恩智浦S12系列为例)。

ROM地址划分

首先是存储地址的划分,主要是ROM(Flash)地址划分,通过PRM文件实现Flash的分区。主要划分两个部分,Flash靠后的放Bootloader,前面放App。需要注意的是分区地址信息需要保持一致。

中断向量表

按照S12的默认配置,中断向量表和复位向量是安排在Flash的最后,作为bootloader可以使用该默认的配置,而App需要做中断向量表的重定向,通常做法是放在App分区的最前面。

复位向量表

复位向量是程序入口。Bootloader的复位向量表"必须"按照默认的配置(否则上电的时候都没法运行),而App的复位向量有两种方法实现重定向,两种方法实现的结果是一样的:一种是直接指定在App的Flash段内,通常在该段的最后;另一种方式是按照默认的配置不变,但是在Bootloader中对改地址的赋值做特殊处理。当Bootloader检测到需要写复位向量时,将该复位向量写到App的Flash段内,这样做的好处是当单独调试App工程时,照样能够运行,而第一种方法需要先手动调整复位向量为默认向量才能正常运行。

其他问题

1.更新Bootloader本身,这涉及到将Bootloader程序拷贝到RAM中,然后擦除自身的Flash内容,然后通过上位机更新自己。
2.程序烧录的过程可以将Bootloader和App的程序合并成一个文件进行烧录。
3.上位机设计,这个就按照数据格式协议发送就完事,最简单就是用串口调试助手实现更新。
4.在App中预留擦除AppFlash段的接口,通常的做法是擦除App复位向量。
5.App工程转化成内存镜像文件,本例中就elf文件转成S19文件。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值