本文主要是介绍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复位函数
实现流程:
- 设备开机初始化gpio用于数据led便于提示用
- 初始化串口,串口使用接收中断+空闲中断的方式
- 初始化flash
- 检测是否收到升级指令,收到进入app升级状态,等待app数据,未收到app数据等待超时时进入app
- 收到app数据,首先检测数据头尾和检验,成功后将数据写入app地址区域0x8007800开始的地址空间,app收到的数据每次都是1K,当收到的数据小于1K代码代表app数据发送完成
- 进入appp
2个核心的bootloader函数
//设置栈顶地址
//addr:栈顶地址
__asm void MSR_MSP
这篇关于N32L40x基于串口IAP实现(含升级工具)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!