N32L40x基于串口IAP实现(含升级工具)

bootloader实现要点

bootloader 设计要点
1.分配Flash空间,一部分用于bootloader 一部分用于 APP  ,这里bootloader分配了7K空间,APP分配了121K空间
2.需要准备一个通讯接口,可以是串口,也可以时can等
3.准备mcu的内部flash驱动,可以实现连续读写的函数,flash擦除在写函数内部自动判定
4.bootloader内部延时函数不要使用systick的中断实现,否则进入freertos后创建任务立即出现野指针问题,导致hardfault
5.跳转到app复位函数

实现流程:

  1. 设备开机初始化gpio用于数据led便于提示用
  2. 初始化串口,串口使用接收中断+空闲中断的方式
  3. 初始化flash
  4. 检测是否收到升级指令,收到进入app升级状态,等待app数据,未收到app数据等待超时时进入app
  5. 收到app数据,首先检测数据头尾和检验,成功后将数据写入app地址区域0x8007800开始的地址空间,app收到的数据每次都是1K,当收到的数据小于1K代码代表app数据发送完成
  6. 进入appp

2个核心的bootloader函数

//设置栈顶地址
//addr:栈顶地址
__asm void MSR_MSP
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Car12

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值