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

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.mrgr.cn/news/39037.html

相关文章:

  • PMP考试没通过可以重考吗?补考费多少?
  • (作业)第三期书生·浦语大模型实战营(十一卷王场)--书生入门岛通关第1关Linux 基础知识
  • 如何在云端地球建模云平台利用无人机航拍照片进行三维建模?
  • 活体检测标签之2.4G有源RFID--SI24R2F+
  • iOS 项目中的多主题颜色设计与实现
  • 鸿蒙HarmonyOS之选择相册文件(照片/视频)方法
  • 【算法】递归
  • 还没赢够,30年后,WPS再赢一局,新产品已抢占市场
  • 在 Qt 项目中使用 spdlog 的全攻略
  • Qemu开发ARM篇-7、uboot以及系统网络连接及配置
  • 知识库管理系统盘点:2024年必备10款
  • 无锡卓瓷X哲讯智能科技,SAP项目正式启动!
  • windows11家庭版开启Hyper-v
  • jQuery——offset 和 position
  • 这些售后管理的问题,你遇到过多少?
  • Python异步编程:初学者快速入门到精通指南
  • vue3 挂载全局公共方法/变量/数据
  • IPD变革中,数据治理是关键
  • 在线远程考试|基于springBoot的在线远程考试系统设计与实现(附项目源码+论文+数据库)
  • 海滨体育馆管理系统:SpringBoot实现技巧与案例