尚硅谷bootloader开发流程笔记
尚硅谷bootloader开发流程笔记
文章目录
- 1.串口通讯
- 2.写数据到flash
- 3.总体测试
- 4.跳转程序
- 注意事项
- 5.大体流程
- 6.应用层逻辑(优化上述流程)
- 应用层逻辑流程
- 7.OTA架构简述
- 失败情况1
- 失败情况2:(加入备份区的原因)
- 解决方案1
- 解决方案2
1.串口通讯
2.写数据到flash
3.总体测试
4.跳转程序
核心就是复位中断:把其中地址当做函数指针
注意事项
- Keil 里改 IROM Start(0x08002000)
这是编译链接阶段配置:
告诉编译器,把流水灯代码、向量表编译链接到 Flash 0x08002000 地址,保证固件本身地址正确。
只解决「代码放对位置」的问题。
- 代码里写 SCB->VTOR = 0x08002000
这是程序运行阶段配置:
跳转进APP后,CPU硬件默认还是去 0x08000000 找中断向量表。
这行代码专门修改内核寄存器,告诉CPU:现在向量表在 0x08002000。
只解决「CPU去哪找中断」的问题。
5.大体流程
1.首先编写流水灯程序作为A区,和boot loader作为B区
2.然后注意修改A、B两区的起始地址(keil和代码中)
3.编译A区文件
4.注释掉跳转函数,编译下载B区文件
5.发送A区Bin文件,串口接收
6.取消注释掉跳转函数,编译下载B区文件
6.应用层逻辑(优化上述流程)
应用层逻辑流程
1.先编译App_bootloader.c文件,然后烧录到开发板
2.串口发送信息
3.查看发送bin文件大小
4.发送start:xxx,完成交互指令
5.发送文件
6.
7.OTA架构简述
1.Boot loader跳转前,更改标志位
2.启动看门狗
3.如果APP跳转成功,就会喂狗
4.成功喂狗,说明按时启动,更改标志位(说明APP能跑)
5.程序全部功能自检,更改标志位(APP功能正常)
6.替换备份区
失败情况1
1.Boot loader跳转前,更改标志位
2.启动看门狗
3.如果APP跳转失败,没人喂狗
4.系统重启
5.Bootloader把备份区代码刷写到内部APP
