2025年VMA与LMA

VMA与LMAVMA Virtual Memory Address 运行地址 程序真正运行的地址空间 LMA Load Memory Address 加载地址 程序实际存储的地址空间 运行地址就是程序运行的地址 PC 指针指向的地址 比如程序中 print 出的函数地址 数组地址等 都是指 VMA

大家好,我是讯享网,很高兴认识大家。

​​​​​​VMA:Virtual Memory Address 运行地址,程序真正运行的地址空间

LMA:Load Memory Address 加载地址,程序实际存储的地址空间

运行地址就是程序运行的地址,PC指针指向的地址,比如程序中print出的函数地址、数组地址等,都是指VMA。


讯享网

要作为运行地址,首先PC指针要能在这个地址空间内跑动,所以这段地址空间必须是可随机寻址的,也就是说可以访问想要访问的地址,如RAM,NorFlash(Norflash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节);如果是NandFlash,则不行,因为NandFlash只能通过一个块一个块的读/写,不能做到随机寻址。

VMA和LMA大多数情况下是相等的,但也可以不相等。通常,当LMA地址空间不支持随机寻址,或者是嫌弃LMA地址空间的访问速度比较慢时(比如NorFlash速度比SDRAM慢),则会将VMA设置到RAM中,这时,VMA与LMA就不相等了。

例:NandFlash因为不能随机访问想要访问的每个地址,不能作为运行地址,所以这里想要把在NandFlash的代码复制到SDRAM中。这里除了代码中要加入复制模块外,还要在链接脚本中使NandFlash部分的VMA设为SDRAM地址。大多数情况下,是在起始代码中初始化时就将需要复制的部分复制的到VMA地址空间中。

小讯
上一篇 2025-01-17 08:11
下一篇 2025-03-22 15:50

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/120051.html