欢迎光临
我们一直在努力

Cortex-M3:为什么多个加载域可以共存?

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


在前面所有的 .sct 文件示例里,我们看到的都是“一个加载域统领全局”的结构:

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

整个固件——代码、只读数据、.data 初始值——全装在 LR_IROM1 这一个加载域里。烧录时,一个连续的 Flash 区间搞定一切。

但真实的嵌入式产品,几乎从来不长这样。

真实产品长这样:

LR_BOOT 0x08000000 0x00004000 {

}

LR_APP 0x08004000 0x0007C000 {

}

两个加载域,共享同一颗芯片的 Flash,各自独立,各自为政。

这就是今天要讲的主题:为什么链接器允许同一个固件里有多个加载域?它们怎么共存?如果不这样设计,世界会怎样?


赞(0)
未经允许不得转载:171主机测评 » Cortex-M3:为什么多个加载域可以共存?
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址