国民技术N32G430开发笔记(9)- IAP升级 Bootloader的制作
IAP升级 Bootloader的制作
1、上节提到Flash的分区,0x8000000-0x8004000为Boot分区,我们的bootloader就烧录到此分区。
Bootloader很简单,新建一个普通的工程,
也不用初始化外部设备,开机后,直接跳转到
App分区所在的地址即可,
当然App的分区程序也要提前烧录进去,
否则也是跳不过去的。
代码
#include <string.h>
#include "main.h"
#include "bsp_delay.h"
#include "flash.h"
typedef void (*pFunction)(void);
pFunction Jump_To_Application;
uint32_t JumpAddress;
void Jump_To_App(uint32_t address)
{
if (((*(__IO uint32_t*)address) & 0x2FFE0000) == 0x20000000)
{
JumpAddress = *(__IO uint32_t*) (address + 4);
Jump_To_Application = (pFunction) JumpAddress;
__set_MSP(*(__IO uint32_t*) address);
Jump_To_Application();
}
}
int main(void)
{
SysTick_Delay_Ms(1000);
Jump_To_App(APP_START_ADDRESS);
}
开机延时一秒,直接跳转到0x08006000地址处。执行Application的程序。
修改bootloader的ld文件n32g430_flash.ld,将bin文件限制在16K大小
之前的教程都是基于Application程序开发,所以跳转到Application后,会看到定时器6每100ms去开关LED1,
代码路径:https://gitee.com/xiaoguo-tec_0/n32iap