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文件

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

相关推荐
菜鸟的日志26 分钟前
【嵌入系统】嵌入式学习笔记(一)
windows·笔记·嵌入式硬件·学习·ubuntu·操作系统
电子科技圈1 小时前
四大“门派”围攻边缘及端侧AI SoC市场“光明顶”
人工智能·嵌入式硬件·mcu·物联网·网络安全·音视频·语音识别
CHINA红旗下1 小时前
串口的使用
stm32·单片机·嵌入式硬件
踏着七彩祥云的小丑2 小时前
嵌入式测试学习第2天:欧姆定律 + 功率计算 + 电路单位换算
单片机·嵌入式硬件
BT-BOX2 小时前
Multisim 14.3 安装与汉化指南(附下载链接)
嵌入式硬件·物联网
Hello_Embed2 小时前
串口硬件结构与三种编程方式
笔记·stm32·学习·ai编程
不断提高3 小时前
别再写 while(1) 死循环了,嵌入式开发该换个活法
c语言·嵌入式硬件·嵌入式·状态模式
LCG元3 小时前
STM32实战:基于STM32F103的智能停车场车位引导系统
stm32·单片机·嵌入式硬件
WYH2873 小时前
【STM32 串口完全指南】从轮询到中断再到 DMA,一步步教你搞定串口收发!
stm32·单片机·嵌入式硬件
hrw_embedded3 小时前
STM32单片机增加全局内存增大导致ADC数据丢失,明明两个不相干的两个部分,为什么会相互干扰?
stm32·单片机·嵌入式硬件