stm32 bootloader跳转程序设计

文章目录

1、bootloader跳转程序设计

(1)跳转程序

pFunction JumpToApplication;
uint32_t JumpAddress;
void BootLoad_Jump(void)
{
/* Check Vector Table: Test if user code is programmed starting from address
"APPLICATION_ADDRESS" */
if (((*(__IO uint32_t*)APPLICATION_ADDRESS) & 0x2FFE0000 ) == 0x20000000)
{   
JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS+4); // 取中断向量表中的复位中断地址
HAL_Delay(100);
   __disable_irq();  //关闭所有中断,在跳转后使能中断
//    SCB->VTOR = FLASH_BASE |VECT_TAB_OFFSET;
JumpToApplication = (pFunction) JumpAddress;
/* Initialize user application's Stack Pointer */
__set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
JumpToApplication();
 }
}

(2)、app程序中需要注意

<1>、在keil中ROM起始地址和分配的空间大小

<2>、在system_stm32f4xx.c中设置VECT_TAB_OFFSET为需要偏移的地址

<3>、main函数中使能中断

总结:

Bootloader里面主要是

1、设置bootloader和app的空间

2、接收编译好的app的bin文件,写入flash

3、实现跳转

App里面主要修改的地方是

1、 ROM起始地址和分配的空间大小

2、 重定向中断向量

3、 生成bin文件

这里就是整个程序执行的流程

相关推荐
Tlog嵌入式2 小时前
[项目]基于FreeRTOS的STM32四轴飞行器: 七.遥控器按键
stm32·单片机·嵌入式硬件·mcu
电工小王(全国可飞)3 小时前
STM32 HAL库 CAN过滤器配置
stm32·单片机·嵌入式硬件
四夕白告木贞3 小时前
stm32week6
stm32·单片机·嵌入式硬件·学习
zhongvv4 小时前
OTP单片机调试工具之—应广单片机ADC调试案例
嵌入式硬件·应广单片机·adc采样·otp调试·串口数据显示
小雀丝4 小时前
电机控制常见面试问题(六)
嵌入式硬件·电机·电机控制
爱写代码的雨一颗5 小时前
STM32-SPI通信外设
stm32·单片机·嵌入式硬件
Python小老六6 小时前
软件IIC和硬件IIC的主要区别,用标准库举例!
stm32·单片机·嵌入式硬件
honey ball6 小时前
一些优秀的硬件方案及芯片
单片机·嵌入式硬件
白总Server9 小时前
Bash和Zsh在处理大文件时优化方法
开发语言·网络·ide·stm32·安全·udp·bash
DOMINICHZL9 小时前
卡尔曼滤波算法从理论到实践:在STM32中的嵌入式实现
stm32·嵌入式硬件·算法