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

STM32 IAP 需要关注的一些事

1、首先要知道STM32的程序是如何分布在FLASH中的。
2、升级的时候涉及到两个程序,一个是bootloader,一个是user程序,这两个程序的功能分别的什么作用的?
3、编译的固件是怎么分布的?通过那个配置文件去指导编译器去排布代码的放置?
在编译的时候一般有一个.ld文件去指导,代码是如何分布在固件中,包括堆栈的指定,比如STM32在工程中就有这个文件STM32F100RB_FLASH.ld,用来配置代码编译生成的固件如何分布在那个地址。
在这里插入图片描述
4、startup_stm32f100xb.s文件是什么作用的?
用于芯片启动的时候还没有跑到main函数之前的初始化作用,指定中断函数的地址。
在这里插入图片描述

5、那里下载工程
git clone https://github.com/ferenc-nemeth/stm32-bootloader.git

6、bootloader和user程序有两个中断向量表,user程序需要设备中断向量表和bootloader的不一样。
方法一可以在代码启动的时候调用库函数设置偏移:
NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x5000);__ASM(“CPSIE I”); //将中断向量表偏移0x5000个字节,原始的位置为0x08000000,偏移后位置为0x080005000。
方法二 修改system_stm32f1xx.c文件中的宏定义#define VECT_TAB_OFFSET 0x00005000U

http://www.lryc.cn/news/401977.html

相关文章:

  • 高并发服务器-使用多进程(Multi-Process)实现【C语言】
  • 线程控制
  • Spring Data Jpa 原生SQL联表查询返回自定义DTO
  • Hadoop3:HDFS存储优化之小文件归档
  • Golang | Leetcode Golang题解之第234题回文链表
  • Unity Apple Vision Pro 开发(四):体积相机 Volume Camera
  • C语言 | Leetcode C语言题解之第231题2的幂
  • GitHub备份代码的学习笔记
  • 微信小程序与本地MySQL数据库通信
  • Flutter热更新技术探索
  • 【机器学习-00】机器学习是什么?
  • 【BUG】已解决:WslRegisterDistribution failed with error: 0x800701bc
  • 无人机监测的必要性及方法
  • PHP框架详解:Symfony框架
  • 在 Navicat BI 创建自定义字段:类型更改字段
  • llama-index,uncharted and llama2:7b run locally to generate Index
  • vue、js截取视频任意一帧图片
  • STM32智能家居系统教程
  • uniapp 开发 App 对接官方更新功能
  • 【PostgreSQL】PostgreSQL 教程
  • Qt类 | QLabel类详解
  • 深入剖析 Android 开源库 EventBus 的源码详解
  • End-to-End Object Detection with Transformers【目标检测-方法详细解读】
  • CSS3实现提示工具的渐入渐出效果及CSS3动画简介
  • JVM 垃圾回收算法
  • 吴恩达大模型系列课程《Prompt Compression and Query Optimization》中文学习打开方式
  • 2.javaWeb_请求和响应的处理(Request,Response)
  • 用C++、Python、Rust编写的有安全问题的B树
  • 问题:当直齿圆柱齿轮的齿数少于?时,可采用 变位的办法来避免根切。 #学习方法#其他
  • 请你谈谈:spring bean的生命周期 - 阶段2:Bean实例化阶段