一步一步实现STM32-FOTA系列教程之Bootloader编写
文章系列链接
《一步一步实现STM32-FOTA系列教程之bin文件生成》
《一步一步实现STM32-FOTA系列教程之STM32-FLASH分区说明》
《一步一步实现STM32-FOTA系列教程之FLASH静态区读写》
前言
上一篇文章《一步一步实现STM32-FOTA系列教程之FLASH静态区读写》实现了对FLASH静态区读写的操作,有了这部分功能之后,就可以实现一个非常简单的Bootloader代码了。
转载请注明出处
Bootloader 功能说明
这里提供的Bootloader功能就非常的简单了,就是在Bootloader启动之后,读取FLASH静态区的参数信息,然后判断启动分区标志位的值,然后进入相应的分区,运行该分区的程序。
注意这里的教程中没有在 Bootloader 中编写联网获取新版本的代码,这部分的实现会放到主分区和备份分区的代码中实现。
Bootloader 启动流程
这个启动流程之前已经说过了,这里贴出来,方便对比代码。
函数实现
FLASH 分区宏定义
// FLASH 分区 配置
#define FLASH_BASE_ADDR ((uint32_t)0x08000000)
#define NLEDBOOTLOADER_SIZE (64*1024) // Bootloader 大小为 64KB
#define FIRMWAR_ONE_SIZE (80*1024) // 固件1 大小为 80KB
#define FIRMWAR_TWO_SIZE (80*1024) // 固件2 大小为 80KB
#define NLED_CONFIG_PARAM_SIZE (224*1024)
#define BOOTLOADER_START_ADDR (FLASH_BASE_ADDR) //Bootloader 启动地址
#define FIRMWAR_ONE_START_ADDR (FLASH_BASE_ADDR + NLEDBOOTL