老师,这里为什么不是分散加载,

🔍 溯源 ✍️ Jack | 📅 2025-11-20 | 👍 1 | 原帖↗
#知识星球 #立芯嵌入式 #来源/立芯星球 #技术/启动流程 #技术/链接器 #质量/精华

原帖 | Jack | 2025-11-20 20:06 | 👍1 | 阅读约1

老师,这里为什么不是分散加载,而是重定位?
答:
这是一个非常有含金量的问题。
分散加载(Scatter Loading)解决的是:“程序的不同部分要被放到不同的物理地址去执行”这其实就是link文件(链接控制文件),只不过keil里面叫分散加载
重定位(Relocation)解决的是:“程序的地址不是固定的,运行前要修正成实际地址”

在这里红框中,把 rwdata 从 FLASH 搬到 RAM(即 .data 初始化)),这是重定位的一部分,但属于“运行时拷贝初始化”,不是scatter loading 本体。
简单来说,分散加载:决定.data最终应该在 RAM 的哪个地址,重定位:实际把.data在启动时从 FLASH 拷贝到 RAM,让地址在后续的引用过程中是正确被引用的。(重定位的工程价值另见重定位的用处: 1.进入用户空

c5d3d4b05705.jpg


相关笔记