当前位置: 首页 > article >正文

stm32 bootloader跳转程序设计

文章目录

  • 1、bootloader跳转程序设计
    • (1)跳转程序
    • (2)、app程序中需要注意
      • <1>、在keil中ROM起始地址和分配的空间大小
      • <2>、在system_stm32f4xx.c中设置VECT_TAB_OFFSET为需要偏移的地址
      • <3>、main函数中使能中断
  • 总结:

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文件
这里就是整个程序执行的流程


http://www.kler.cn/news/331015.html

相关文章:

  • 浏览器发送请求后关闭,服务器的处理过程
  • Authentication Lab | Leaky JWT
  • 解决CentOS 7 yum install 出现 No such file or directory 错误的方案
  • 微软准备了 Windows 11 24H2 ISO “OOBE/BypassNRO“命令依然可用
  • PDF转换为TIF,JPG的一个简易工具(含下载链接)
  • 《深度学习》OpenCV 图像拼接 拼接原理、参数解析、案例实现
  • ARM 架构、cpu
  • MATLAB中的艺术:用爱心形状控制坐标轴
  • 828华为云征文 | 华为云Flexus云服务器X实例搭建企业内部VPN私有隧道,以实现安全远程办公
  • html空单元格的占位
  • 浙大数据结构:06-图2 Saving James Bond - Easy Version
  • 【JavaWeb】JavaWeb笔记 HTTP
  • iOS 提取图片的主题色,并支持灵活提取
  • 前端编程艺术(1)---HTML
  • 机器学习(1):机器学习的概念
  • Elasticsearch分布式搜索引擎入门
  • PDF转PPT:四款热门工具的亲身体验分享!
  • 如何更改 Ubuntu/Linux 终端中命令行提示符的颜色
  • 每日学习一个数据结构-AVL树
  • Axios入门使用