ARM芯片LPC21xx/22xx启动程序解析与分散加载

需积分: 10 1 下载量 169 浏览量 更新于2024-07-27 收藏 507KB PDF 举报
"LPC21xx/22xx系列ARM芯片启动程序的分解与分散加载技术解析" 本文深入探讨了基于LPC21xx/22xx系列ARM芯片的启动程序,特别是分散加载文件的使用,这对于理解嵌入式系统的启动流程和优化程序执行效率至关重要。文章由钟常慰老师撰写,他详细解释了如何通过分散加载技术来有效地分配代码和数据段到不同的内存区域。 首先,文章提到了在ADSLPC2200的启动模板中包含的三个分散加载文件:mem_a.scf、mem_b.scf和mem_c.scf。这些文件是ADS(ARM Developer Suite)的分散加载机制实现,旨在确保代码和数据在特定地址正确加载。开发者可以根据需求在ArmLinker中选择合适的加载路径。 分散装载技术是嵌入式系统中提升性能的关键策略。它允许将程序分割成只读(RO)和可读写(RW)部分,并根据需要将它们放置在不同的存储区域,如Flash、16位RAM和32位RAM。这样做可以提高中断服务程序的响应速度,以及将大部分代码复制到RAM中以提高运行效率。 该技术主要包括两个核心方面:如何分散和如何装载。如何分散指的是如何组织输入段以构成不同的输出段和域,而如何装载则涉及确定这些域在存储空间中的确切地址。域有装载域和运行域之分,装载域描述程序加载前的状态,运行域描述运行时的状态。对于 RW 类型的输出段,由于在装载和运行时可能位于不同位置,所以需要特别处理。 Scatterfile 是实现分散加载的关键文件。在这个文件中,可以为每个代码或数据区指定装载和执行时的不同存储区域地址。Scatterloading的存储区块分为装载区和执行区,装载区是程序加载时的位置,执行区则是程序运行时的存储区域。由于某些输出段(如RW段)在运行时需要在RAM中,所以装载地址和运行地址可能不一致。 Scatterfile的语法结构简洁明了,允许开发者精确控制每个段的加载和执行位置。这种灵活性使得开发者可以根据系统资源和性能需求定制程序的内存布局,从而优化系统的整体性能。 LPC21xx/22xx系列ARM芯片的启动程序分解及分散加载技术是一个复杂的但至关重要的主题,对于理解和优化嵌入式系统至关重要。通过理解并熟练应用这些技术,开发者能够更高效地利用硬件资源,提高系统的响应速度和运行效率。