AT91初始化代码册中文翻译版.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
AT91初始化代码册中文翻译版

AT91初始化代码手册中文翻译版 由于多种原因基于ARM的AT91的大多数应用代码使用C语言编写。然而,启动顺序要求初始化ARM处理器和严重依赖于寄存器结构的关键设备和内存映射处理机,和存储器重映射操作。由于这个原因,C启动序列必须用汇编编写。 这个应用笔记描述了一个AT91的C代码启动序列示例。他是使用ARM ADS1.1开发工具为AT91评估板写的基于C启动序列。更多的可用C启动序列示例见AT91库。在上电并且复位后C启动序列激活执行。 C启动次序 在设计ARM嵌入式应用设计中主要的考虑是规划内存图。特别是位于地址0x0的存储器。复位后,处理器从地址0x0处的指令处开始执行,因此必须能够从此处取得可执行代码。在嵌入式系统中,这需要初始化后在地址0xO处是NVM(非挥发存储器)。 最简单的规划是在存储器映射中将ROM定位在地址0。当它首先执行位于0x00地址的第一条指令后应用程序能够指向自动的实际入口。但是这也有一个缺点,ROM位窄(8、16位)且比RAM慢,存取他需要更多的等待周期。这将减缓处理器处理通过矢量表的异常尤其是中断。况且,如果矢量表在ROM中,他不能够被代码编辑。 由于RAM较ROM存取速度快且位宽,如果在RAM中0x00处存储器作为矢量表和中断句柄更好。虽然在通常运行中RAM被定位在0x0处数必需的,如果上电后RAM定位在地址0x0,再复位指令入口处没有一个合法的可执行指令。所以上电后ROM必须定位在0x0以保证此处有一个合法的复位矢量。从复位到正常运行的存储器图变换通常通过执行一个REMAP(重映射)来完成。 许多基于ARM的嵌入式应用程序包含在ROM中且在复位后执行。当编写嵌入式操作系统,或没有操作系统从复位后执行的嵌入式应用程序时有几个因素必须考虑,包括: *变换ROM到RAM,以改善执行速度。 *初始化执行环境。例如异常向量,堆栈、I/O引脚 *初始化应用——例如,从ROM中到RAM中拷贝初始化值付值给初始化变量并且清除其他变量为0。 *连接嵌入式执行映像到存储器中放置程序和代码的指定区域。 对于没有操作系统的嵌入式应用,rom中的代码必须提供一个方法以初始化他自己并且开始执行。复位后不会自动初始化,因此应用程序入口在它调用C代码之前执行一些初始化。 复位后定位在地址零的初始化代码,必须: *为初始化代码标记入口标记 *设置异常向量。 *初始化内存系统 *初始化堆栈指针寄存器 *初始化任何临界I/O器件 *初始化中断系统需求的任何RAM变量 *使能中断(如果通过初始化句柄) *如果需要的话改变处理器模式 *如果需要的话改变处理器状态 环境初始化完成后,应用程序初始化继续并且将进入C代码入口。 C启动文件是上电后第一个执行的文件并且从复位后执行微控制器初始化然后调用其他应用程序的主例程。主程序将是一个死循环且不应该返回。 ARM内核复位后从地址零处开始执行。对于嵌入式系统。这意味着系统复位后ROM必须在地址0。由于ROM的限制,异常处理的速度将受到影响并且异常向量不能被编辑。一个通用的策略是重映射ROM到RAM中并且启动后从ROM拷贝异常向量到RAM. C启动示例 在AT91软件库中本笔记和其他笔记包含一个普通的启动文件。这个事例基于AT91开发板、使用ARM ADS 1.1开发工具在外接闪存中调试。这个文件必须被编辑以适应用户的需要。 每个AT91评估板描述在AT91库的software argets子目录中。每个这些子目录中包含下列文件: *target.h文件,用C描述的线路板组件 *target.inc文件,用汇编描述的线路板组件 *一个或多个cstartup.s,使用ARM SDT、ARM ADS和GREEN HILL MULTI 200的标准引导示例。 AT91库提供C启动文件解释如何引导AT91零件并且如何分支到MAIN主函数。启动代码提供一个如何考虑零件的特殊性引导AT91零件以达到板子指定特性和调试级别需求的实例。 初始化代码的区域定义和入口指针 在ARM汇编语言源文件中,开始片断必须通过AREA伪指令标记。这个伪指令片断并且设置它的属性。属性被放置在名字之后,通过逗号分割。以上代码示例定义一个名为RESET的只读代码段。 一个可执行映像必须有一个入口指针。被放置在ROM中的可执行映像通常在0x0放置一个入口指针。在初始化代码中使用汇编伪指令定义一个入口指针。 ;---------------------------------------------------------------------------------- ;-区域定义 ;------------------------------------------------------------------

您可能关注的文档

文档评论(0)

ikangyme + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档