ARM Cortex - M 内存映射与管理详解
1. 内存映射概述
在 ARM Cortex - M 微控制器中,内存映射是一个关键概念。通常,只有与物理组件大小相同的小部分区域会被映射到特定地址范围。尝试访问未映射到任何硬件的内存会触发 CPU 异常。因此,在开发针对特定平台的应用时,了解板载硬件对应的内存区域的位置和大小至关重要,这样才能在链接脚本和源代码中准确描述可用地址空间的布局。
1.1 代码区域
Cortex - M 微控制器地址空间的最低 512 MB 专门用于存储可执行代码。支持 XIP(Execute In Place)的目标设备通常会将闪存映射到这个区域,并且该区域的内存通常在运行时不可写。例如,之前例子中的 .text 和 .rodata 节就被映射到这个区域,因为它们在软件执行过程中保持不变。此外,所有非零定义符号的初始值也存放在此区域,若要在运行时修改这些值,需要将它们显式复制并重新映射到可写段。中断向量表(IVT)通常位于映射区域的起始位置,并且可能有多个闪存存储体被映射到代码区域。
不同的微控制器可能会选择不同的起始地址来映射代码区域。许多微控制器将代码区域映射到地址 0x00000000 ,而有些则选择其他地址,如 0x10000000 或 0x08000000 。例如,STM32F4 的闪存被映射到 0x08000000 ,并且提供了一个别名,使得在运行时也可以从地址 0x00000000 访问相同的内存。
超级会员免费看
订阅专栏 解锁全文
1968

被折叠的 条评论
为什么被折叠?



