Default memory map(ARM)

本文深入解析ARM处理器工具链中未描述内存映射的默认设置,包括代码和数据加载位置、堆和栈的分配方式以及链接器规则。针对ARMv6-M和ARMv7-M架构的固定内存映射,简化了不同系统间的软件移植过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘自: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0471c/Beihhaag.html

文档: ARM Compiler toolchain  Developing Software for ARM Processors.pdf

就不翻译了, 水平有限, 费时间, 免得误人子弟. 见谅则个!  ^_^

====================================================================================

In an image where you have not described the memory map, the linker places code and data according to a default memory map, as shown in the following figure:

Figure 2. Default memory map

Note

The processors based on ARMv6-M and ARMv7-M architectures have fixed memory maps. This makes porting software easier between different systems based on these processors.

The default memory map is described as follows:

  • The image is linked to load and run at address 0x8000. All Read Only (RO) sections are placed first, followed by Read-Write(RW) sections, then Zero Initialized (ZI) sections.

  • The heap follows directly on from the top of ZI, so the exact location is decided at link time.

  • The stack base location is provided by a semihosting operation during application startup. The value returned by this semihosting operation depends on the debug environment.

The linker observes a set of rules to decide where in memory code and data is located:

Figure 3. Linker placement rules


Generally, the linker sorts the input sections by attribute, by name, and then by position in the input list.

To fully control the placement of code and data you must use the scatter-loading mechanism.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值