难度:★★ 本文首发于我的嵌入式技术号「OneChan讲Soc嵌入式」,未经授权禁止转载。
你正在写一个分散加载文件。工程不大不小,有二十几个源文件,每个文件里都有 .text、.rodata、.data、.bss 这些标准段,还有几个自定义段。
你按部就班地写:
ER_IROM1 0x08000000 0x00080000 {
*.o (RESET, +First)
main.o (+RO)
startup.o (+RO)
system.o (+RO)
… 还有十几个 .o 等着你列 …
}
写到一半,你突然想:难道链接器不能自己把那些“剩下”的段自动分配掉吗?为什么非得我一个个列举?
能。关键字叫 ANY。
ER_IROM1 0x08000000 0x00080000 {
*.o (RESET, +First)
*.o (+RO)
.ANY (+RO) ; 剩余的只读段,全自动分配
}
但如果你以为 ANY 只是一个“省事”的语法糖,你就低估了链接器在背后为它构建的那套复杂的分配算法。今天这篇文章,就把 ANY 的真面目彻底拆开。
网硕互联帮助中心


评论前必须登录!
注册