尚硅谷bootloader开发流程笔记

尚硅谷bootloader开发流程笔记

尚硅谷bootloader开发流程笔记


文章目录

  • 1.串口通讯
  • 2.写数据到flash
  • 3.总体测试
  • 4.跳转程序
    • 注意事项
  • 5.大体流程
  • 6.应用层逻辑(优化上述流程)
    • 应用层逻辑流程
  • 7.OTA架构简述
    • 失败情况1
    • 失败情况2:(加入备份区的原因)
      • 解决方案1
      • 解决方案2

1.串口通讯

2.写数据到flash


3.总体测试

4.跳转程序

核心就是复位中断:把其中地址当做函数指针

注意事项

  1. Keil 里改 IROM Start(0x08002000)
    这是编译链接阶段配置:
    告诉编译器,把流水灯代码、向量表编译链接到 Flash 0x08002000 地址,保证固件本身地址正确。
    只解决「代码放对位置」的问题。
  2. 代码里写 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

失败情况2:(加入备份区的原因)

解决方案1

解决方案2