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

stm32cubeide中编译非flash起始地址开始的程序

为了实现板卡支持OTA升级,将FLASH主要划分为五个片区,分别用以存储bootloader,app1,app2,parameters,以及升级标志,如下表所示:

地址区间用途说明
0x08000000~0x0800BFFFbootloader引导程序
0x08020000~0x0807FFFFAPP1运行程序
0x08080000~0x080DFFFFAPP2升级程序
0x08010000~0x0801FFFFparameters系统参数
0x0800FFF0upgradeFlag升级标志

升级的原理在之前的文章中有介绍,这里因为app大小超过了原来规划的存储空间的大小,因此依据MCU的flash sector的划分,要避免不同用途共用一个sector的空间,因此重新规划了分区,目前app的存储区域有6*64k=384k,满足实际项目需要。

在stm32cubeide中进行app的编译的时候,因为程序不是从flash起始地址0x08000000开始运行,因此需要在工程中做以下更改:

1、Core/Src/system_stm32f4xx.c中:

/* #define VECT_TAB_SRAM */
#if defined(VECT_TAB_SRAM)
#define VECT_TAB_BASE_ADDRESS   SRAM_BASE       /*!< Vector Table base address field.This value must be a multiple of 0x200. */
#define VECT_TAB_OFFSET         0x00000000U     /*!< Vector Table base offset field.This value must be a multiple of 0x200. */
#else
#define VECT_TAB_BASE_ADDRESS   FLASH_BASE      /*!< Vector Table base address field.This value must be a multiple of 0x200. */
#define VECT_TAB_OFFSET         0x00020000U     /*!< Vector Table base offset field.This value must be a multiple of 0x200. */
#endif /* VECT_TAB_SRAM */

将中断向量表偏移值VECT_TAB_OFFSET改为0x0002000U。

2、Inc/STM32F407ZGTX_FLASH.ld中:

/* Memories definition */
MEMORY
{CCMRAM    (xrw)    : ORIGIN = 0x10000000,   LENGTH = 64KRAM    (xrw)    : ORIGIN = 0x20000000,   LENGTH = 128KFLASH    (rx)    : ORIGIN = 0x8020000,   LENGTH = 384K
}

将FLASH的起始地址改为0x8020000,长度改为384K,表示固件在flash中的开始位置以及长度,当编译时固件大小超过设定长度384K时,编译会提示出错。

相关文章:

  • 【ARMv7-A】——CLZ 指令
  • Swift 解法详解:如何在二叉树中寻找最长连续序列
  • 怎么轻松实现报表跨库移植
  • 前端Vue3国际化开发 :使用vue-i18n库和Element Plus 组件实现
  • slam--高斯分布
  • 4、程序的固化和下载(一)
  • 基于 SpringBoot + Vue 在线点餐系统(前后端分离)
  • Eplan2022更改用户界面颜色
  • 文档测试发送
  • 目标检测我来惹2-SPPNet
  • 5分钟玩转Swagger UI:Docker部署+静态化实战
  • LatentSync V8版 - 音频驱动视频生成数字人说话视频 更新V1.6版模型 支持50系显卡 支持批量 一键整合包下载
  • ViT架构所需的大型训练集
  • ROS2的RViz里面,利用navigation2 导航包,在Rviz中添加静态障碍物是否容易?
  • FEMFAT许可有效期
  • 如何用AI赋能学习
  • CHI 总线协议及一致性总线相关的 NOC
  • 深度解析关键词价值,实现精准流量匹配
  • RabbitMQ实现异步消息监听机制
  • 【玄机】日志分析-ssh日志分析
  • wordpress怎么创建菜单/深圳优化seo
  • 重庆 企业网站建设/西安网是科技发展有限公司
  • 笔记本做系统哪个网站好/在线外链工具
  • ipv6域名解析 做网站/百度在西安有分公司吗
  • 网站模板psd/免费seo课程
  • 商丘行业网站建设开发公司/网络渠道有哪些