stm32程序分别存放
STM32 程序的代码和数据在芯片存储器中的存放位置主要分为 Flash(闪存) 和 RAM(内存) 两部分。以下是具体分布和运行机制:
一、Flash(闪存)
用于存储 程序代码 和 只读数据,断电后数据不丢失。
-
代码段(.text)
- 存放编译后的机器指令(如
main()函数、中断服务程序等)。 - 通常从 Flash 的起始地址(
0x08000000)开始存储。
- 存放编译后的机器指令(如
-
只读数据段(.rodata)
- 存放全局常量(如
const修饰的变量)、字符串常量等。
- 存放全局常量(如
-
中断向量表(Vector Table)
- 位于 Flash 起始位置(
0x08000000),存储中断服务函数的入口地址。 - 芯片上电后首先读取此表,初始化程序执行流程。
- 位于 Flash 起始位置(
-
初始化数据段(.data 的初始值)
- 全局变量或静态变量的初始值会预先存储在 Flash 中,程序启动时再拷贝到 RAM。
二、RAM(内存)
用于存储 运行时数据,断电后数据丢失。
-
已初始化数据段(.data)
- 全局变量或静态变量的初始值从 Flash 拷贝到 RAM,程序运行时直接使用 RAM 中的值。
-
未初始化数据段(.bss)
- 未初始化的全局变量或静态变量,程序启动时会自动清零(由启动代码完成)。
-
堆(Heap)
- 用于动态内存分配(如
malloc()),由程序员管理。
- 用于动态内存分配(如
-
栈(Stack)
- 用于存储局部变量、函数调用时的上下文(如返回地址、参数等)。
- 通常从 RAM 的末尾向低地址增长。
三、启动流程
- 上电后,CPU 从 Flash 的中断向量表获取复位向量,跳转到启动代码。
- 启动代码将
.data段的初始值从 Flash 拷贝到 RAM,并清零.bss段。 - 初始化堆栈指针,跳转到
main()函数开始执行用户代码。
四、关键点总结
| 存储位置 | 存放内容 | 生命周期 |
|---|---|---|
| Flash | 代码、中断向量表、常量 | 断电保留 |
| RAM | 变量、堆、栈 | 断电丢失 |
五、示例链接脚本(GCC)
MEMORY
{
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 64K
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 20K
}
SECTIONS
{
.text : { *(.text*) } > FLASH /* 代码段 */
.rodata : { *(.rodata*) } > FLASH /* 只读数据 */
.data : { *(.data*) } > RAM AT > FLASH /* 初始值在Flash,运行时在RAM */
.bss : { *(.bss*) } > RAM /* 未初始化数据 */
}
通过合理配置链接脚本,可以控制程序各部分在存储器中的存放位置,确保正常运行。
线缆怎么存放更好
线缆存放的正确性对于线缆的保护和安全使用具有至关重要的影响。以下是线缆存放正确的重要性: 防止物理损伤:线缆在存放过程中可能会受到挤压、摩擦、撞
2023-11-14 11:16:06
gd32和stm32程序可以互用吗?
gd32和stm32程序可以互用吗? GD32和STM32是两种不同的芯片系列,相同点是都属于ARM Cortex-M系列芯片。虽然它们有相似的
2023-08-16 11:32:41
论线缆存放正确的重要性
线电缆产品种类众多,应用范围十分广泛,如果存放不当会影响线缆的寿命及使用安全,甚至造成不必要的灾害,论线缆存放正确的重要性看看以下clan通讯小编的整理吧。
2022-12-20 10:20:21
通过串口烧写STM32程序的教程方法
如何通过串口烧写STM32程序的教程方法! 用交叉串口线连接开发板和电脑, BOOT0 选择为 1,BOOT1 选择为 0,接上开发板电源,SW1 切换到 ON 打开电源开关。 从开始
资料下载
ah此生不换
2022-03-22 15:39:36
程序计数器的作用_程序计数器pc中存放的是什么
程序计数器是用于存放下一条指令所在单元的地址的地方。当执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到指令寄存器中,此过程称为
2020-12-01 16:06:18
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 如何进行编码器的正确接线?接线方法介绍
- 什么是场效应管?它的作用是什么?
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- amoled屏幕和oled区别
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 苹果笔记本macbookpro18款与19款区别
- 通讯隔离作用
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机