三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Cortex-M3:为什么需要 ALIGN 在分散加载中?

Cortex-M3:为什么需要 ALIGN 在分散加载中?

难度:★★
本文首发于我的嵌入式技术号「OneChan讲Soc嵌入式」,未经授权禁止转载。


前几篇文章我们反复提到,.sct文件里到处是ALIGN

LR_IROM1 0x08000000 0x00080000 { ER_IROM1 0x08000000 0x00080000 { *.o (RESET, +First) *.o (+RO) } RW_IRAM1 0x20000000 0x00010000 { *.o (+RW) *.o (+ZI) .ANY (+RW +ZI) } }

你可能会想:汇编里已经有ALIGN了,为什么分散加载文件里还要再写一遍?链接器不能自己搞定对齐吗?

答案是:能搞定一部分,但搞不定全部。而且,如果你在该写ALIGN的地方没写,链接器不会报错——它只会在运行时给你一个随机触发的 HardFault。

今天这篇文章,就来拆开分散加载文件里ALIGN的三重作用,以及它在 Cortex-M3 上最容易被忽视的一个硬性要求。


一、分散加载中的 ALIGN 和汇编中的 ALIGN 有什么区别?

汇编中的ALIGN:作用于当前 AR

← 返回列表