目录
前言
本文通过修改正点原子的IAP实验,体验一下loader升级app的全过程
地址分配
- loader起始地址:0x0800 0000,大小为0x10000
- app的起始地址:0x0801 0000,大小为0x30000
- 实验芯片是大容量的stm32RCT6,总容量为256kB,那么loader的大小为64kB,app大小为192kB
loader的配置和软件内部实现逻辑
loader的起始地址使用默认的,通过串口接收发来的app的bin文件,然后存储在ram里的缓冲数组里。
按下按键wkup,表示将接受到的bin文件写入到flash中
按下key1,开始运行app文件
loader代码:
int main(void)
{
u8 t;
u8 key;
u16 oldcount=0; //老的串口接收数据值
u16 applenth=0; //接收到的app代码长度
u8 clearflag=0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
delay_init(); //延时函数初始化
uart_init(256000); //串口初始化为256000
LED_Init(); //初始化与LED连接的硬件接口
KEY_Init(); //按键初始化
while(1)
{
if(USART_RX_CN