STM32F407VET6单片机的IAP技术---APP部分

背景描述:

假设当前的APP起始地址要修改为0x8010000。

假设依赖F407的串口1进行固件升级(PA9,PA10)

只需要3个步骤

1-NVIC向量表偏移

如果在bootloader中跳转到的APP地址是0x8010000,那么我们只要把VECT_TAB_OFFSET的宏修改为0x10000就可以了;

默认的NVIC地址是 VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET;即: 0x8000000 | 0x000000

修改后的NVIC地址:0x8010000

实现方法通常有2钟:

1)在system_stm32f4xx.c中修改 函数SystemInit();

2)在main函数中初始化之前添加:

SCB->VTOR = 0x8000000 |0x10000 ;

2-配置keil魔术棒

把默认的程序起始地址改为0x8010000,大小依据情况分配

3-业务逻辑中添加RESET功能

注意:

1)复位时直接使用HAL_NVIC_SystemReset();就行;

不能使用Reset_Handler( );//因为Reset_Handler( );会跳转到APP的起始地址0x8010000,不会跳转到bootloader的起始地址。

2)串口1回复boot V\r\n 或者不回复,因为用来测试的上位机是网上找的,不是我开发的。

4.补充:

其他部分不用改,就像平时写APP程序那样就行。

相关推荐
一路往蓝-Anbo1 天前
【第13期】中断机制详解 :从向量表到ISR
c语言·开发语言·stm32·单片机·嵌入式硬件
ArrebolJiuZhou1 天前
00 arm开发环境的搭建
linux·arm开发·单片机·嵌入式硬件
易水寒陈1 天前
使用J-Link RTT Viewer
stm32·单片机
少一倍的优雅1 天前
hi3863(ws63)智能小车 (三)PWM驱动马达
单片机·嵌入式硬件·hi3863
xingzhemengyou11 天前
STM32 内存空间中的选项字节
stm32·单片机
v先v关v住v获v取1 天前
椰子采摘机械臂设计cad9张+三维图+设计说明书
科技·单片机·51单片机
就是蠢啊1 天前
51单片机——TFTLCD显示器(一)
嵌入式硬件·计算机外设·51单片机
qq_448011161 天前
嵌入式中IO、GPIO、专用IO
单片机·嵌入式硬件
xingzhemengyou11 天前
STM32 Boot0 与 Boot1 [当 Flash 被误操作锁死或 SWD/JTAG 无法连接时,很有用]
stm32·单片机·嵌入式硬件
恒锐丰小吕1 天前
屹晶微 EG27710 600V耐压、高性能、快速开关的半桥驱动芯片技术解析
嵌入式硬件·性能优化·硬件工程