周立功NXP_M0系列ARM芯片的启动程序分解.docVIP

周立功NXP_M0系列ARM芯片的启动程序分解.doc

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
周立功NXP_M0系列ARM芯片的启动程序分解

周立功NXP LPC21xx/22xx 系列ARM 芯片的启动程序分解 作者:钟常慰 关于LPC2200 启动程序分散加载描述文件的叙述 在ADS LPC2200 的启动模板中有一个scf 文件夹,其中有mem_a.scf、mem_b.scf、mem_c.scf 这3 个文件,这3 个文件是ADS 的 分散加载机制,其目的是将代码段和数据段分别定位到指定地址上。可以在Arm Linker 中选择加载路径。 分散装载技术概述: 分散装载技术可以把用户的应用程序分割成多个RO(只读)运行域和RW(可读写)运行域(一个存储区域块),并且给它们制定不同的 地址。一个嵌入式系统中,Flash、16 位RAM、32 位RAM 都可以存在于系统中,所以,将不同功能的代码定位在特定的位置会大大地提 高系统的运行效率。下面是最为常用的2 种情况: 1、32 位的RAM 运行速度很快,因此就把中断服务程序作为一个单独的运行域,放在32 位的RAM,使它的响应时间达到最快。 2、程序在RAM 中运行,其效率要远远高于在ROM 中运行,所以将启动代码(Boot loader)以外的所有代码都复制在RAM 中运行, 可以提高运行效率。 分散装载技术主要完成了2 个基本的功能: 如何分散。就是如何将输入段组成输出段和域。 如何装载。就是确定装载域和运行域在存储空间里的地址是多少。 域可以分为装载域和运行域 装载域描述运行前输出段和域在ROM/RAM 里的分布状态,运行域描述了运行时输出段和域在ROM/RAM 里的分布状态。大多数情况下, 映像文件在执行前把它装载到ROM 里,而当运行时,域里的有些输出段(比如RW 类型的输出段)必须复制到RAM 里,程序才能正常运行, 所以,在装载和运行时,RW 类的输出段处在不同的位置(地址空间)。 Scatterfile 分散加载文件: 在scatterfile 中可以为每一个代码或数据区在装载和执行时指定不同的存储区域地址,Scatlertoading 的存储区块可以分成二种类 型: 装载区:当系统启动或加载时应用程序的存放区。 执行区:系统启动后,应用程序进行执行和数据访问的存储器区域,系统在实时运行时可以有一个或多个执行块。 映像中所有的代码和数据都有一个装载地址和运行地址(二者可能相同也可能不同,视具体情况而定)。 scatter 文件语法 scatter 文件是一个简单的文本文件,包含一些简单的语法。 My Region 0x0000 0x1000 ;我的名字My Region 起始地址0x0000 属性0x1000 { ;the context of region 这个域的范围 } 标题 每个块由一个头标题开始定义,头中至少包含块的名字和起始地址,如(0x0000),另外还有最大长度等其他一些属性选项(注:这些属性 是可选的,如0x1000)。 内容 块定义的内容包括在紧接的一对花括号内,依赖于具体的系统情况。 1、 一个加载块必须至少含有一个执行块;实践中通常有多个执行块。 2、 一个执行块必须至少含有一个代码或数据段;这些通常来自源文件或库函数等的目标文件; 通配符号*可以匹配指定属性项中所有没有在文件中定义的余下部分。 有以下几种属性: RO:只读的代码段和常量 RW:可以读写的全局变量和静态变量 ZI:RW 段中要被初始化为零的变量。 Scatterfile 中的定义要按照系统冲定向后的存储器分布情况进行,在引导程序完成初始化任务后,应该把主程序转移到RAM 中运行以 加快系统的运行速度。 2008.11.25 zhongcw1002@ 分(消)散 LPC2200 的分散加载文件分析: ROM_LOAD 0(1) { ROM_EXEC 0(2) { Startup.o (vectors, +First) (3) * (+RO) } (4) IRAM 0(5) { Startup.o (MyStacks) } (6) STACKS_BOTTOM +0 UNINIT (7) { Startup.o (StackBottom) } (8) STACKS 0UNINIT (9) { Startup.o (Stacks) } (10) ERAM 0(11) { * (+RW,+ZI) } (12) HEAP +0 UNINIT (13) { Startup.o (Heap) } (14) HEAP_BOTTOM 0UNINIT (15) { Startup.o (HeapTop) } (16) } FLASH_LOAD 00x1000 (17) { FLASH_

文档评论(0)

cbf96793 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档