首页 ARM处理器启动代码的分析与设计

ARM处理器启动代码的分析与设计

举报
开通vip

ARM处理器启动代码的分析与设计 武汉理工大学 甘泉 杨健 陈永泰 ARM处理器启动代码的分析与设计 Analysis and Design of ARM Processor Bootcode 摘 要:本文以ARM7TDMI作内核的网络控制器$3C4510B为例,简要介绍了ARM体系结构及其特点,重点阐 述了ARM处理器启动程序底层的组成结构和各部分的具体内容。 关键词:ARM内核;启动代码;中断向量;堆栈 随着对高处理能力、网络通信、 实时多任务,超低功耗这些需求的 增长,传统8位处理器已经不能满 足新产品的要求...

ARM处理器启动代码的分析与设计
武汉理工大学 甘泉 杨健 陈永泰 ARM处理器启动代码的分析与设计 Analysis and Design of ARM Processor Bootcode 摘 要:本文以ARM7TDMI作内核的网络控制器$3C4510B为例,简要介绍了ARM体系结构及其特点,重点阐 述了ARM处理器启动程序底层的组成结构和各部分的具体内容。 关键词:ARM内核;启动代码;中断向量;堆栈 随着对高处理能力、网络通信、 实时多任务,超低功耗这些需求的 增长,传统8位处理器已经不能满 足新产品的要求了,高端嵌入式处 理器已经进入了国内开发人员的视 野,并在国内得到了普遍的重视和 应用。ARM是目前嵌入式领域应用 最广泛ff:JRISC做处理器结构,以其 低成本、低功耗、高性能等优点占 据了嵌入式系统应用领域的领先地 位。本 文应用 A R M 处理器 $3C4510B开发设计了四路E1收发 器,参考一些文献X~ARM处理器的 启动代码进行了编写,结合在实际 应用时编写调试的经验进行了总 结。 ARM体系结构 目前,ARM系列的通用32位 RISC微处理器有ARM 7、ARM 9、 ARM 9 E、ARM 1 0等多个产品, 这些处理器可以工作于 7种模式 下,如表 1所示。 除User模式以外的其它模式都 叫做特权模式,除User和System以 外的其它5种模式叫做异常模式。 大部分应用程序都在User模式下运 行,当处理器处于 User模式下时, 执行的程序无法访问一些被保护的 系统资源,以利于操作系统控制系 统资源的使用,也不能改变模式, 否 则就 会导致一次异常 。对于 System模式,任何异常都不会导致 进入这一模式,而且它使用的寄存 器和User模式下基本相同,主要是 用于有访问系统资源请求而又避免 使用额外的寄存器的操作系统任 务。在特权模式下,它们可以完全 访问系统资源,可以自由地改变模 式。在处理特定的异常时,系统进 入对应的异常模式下。这5种异常 模式都有各自额外的寄存器,用于 避免在发生异常的时候与用户模式 下的程序发生冲突。如表2所示: 在任意一种处理器模式中,都 使用同一个寄存器来标识当前处理 器的工作模式,这个寄存器叫做 CPSR(当前程序状态寄存器),它的 0~4位用来表示CPU模式,(如表2 所示)而且在每 ·种处理器异常模 式下,都有一个对应的SPSR(缓存 程序状态寄存器),用来保存进入异 lI。夸文于 0o4年7月2o日“|I= 1.甘采:硕士生;杨健:硕士生 豫j 泰: 常模式前的CPSR的值。SPSR的作 用就是当CPU从异常模式退出时, 通过一条简单的汇编指令就能够恢 复进入异常模式前的CPSR,该值 保存在当前异常模式的SPSR中。 启动代码的设计 启动代码类似于 电脯 中的 BIO S,它从系统上电开始接管 CPU,依次需要负责初始化CPU在 各种模式下的堆栈空间、设定CPU 的内存映射、对系统的各种控制寄 存器做初始化、对CPU的外部存储 器进行初始化、设定各外围设备的 基地址、创建正确的中断向量表、为 c代码执行创建ZI(零创建)区,然 后进入到c代码。在c代码中继续 对时钟、RS232端口进行初始化,然 后打开系统中断允许位。最后进入 到应用代码中执行,执行期间响应 各种不同的中断信号并调用预先设 置好的中断服务程序处理这些中断。 整个过程的流程图如图1所示。 堆栈初始化 堆栈的初始化要处理的事情是 为处理器的7个处理器模式分配堆 副攀长 手≯; .要从事无线通信研究。 J J 6 _ ⋯ . 一 ⋯ . .一 维普资讯 http://www.cqvip.com http://www.elecfans.com ????? http://bbs.elecfans.com ?????? 表1 ARM处理器工作模式 黎 鬟 魏冀霪§蠹 霭 一 麓。 。 处理器模式 描述 栈空间。以下以FIQ模式下的堆栈 设置为例说明: 0RR r1.r0.#LOCKOUT I FIQ—MODE;把模式放在r1中, LOCKOUT用来屏蔽中断位; MSR cpsr,rl;改变CPU [~4JCPSR寄存器,进入到指定的FIQ 模式; MSR spsr,r2 ;保存前一 模式; LDR sp,=FIQ—STACK ; 把FIQ模式下的堆栈起始值赋给当 前的SP,FIQ—STACK是分配给FIQ 模式堆栈空间(比如说 1K字节)的 起始地址。 按这种方式设置其它模式下的 堆栈。 DRAM的初始化根据系统配置 信息来决定,因为系统不一定会用 到DRAM,但是一定要做SDRAM 的初始化。主要的处理 内容是 ROM和RAM基址的设定、数据总 线的宽度、SDRAM的刷新时间等 等,这些可以参照S3C4510B芯片 的用户手册。 特殊寄存器的设置主要是针对 I/O口,比方说设定几个I/O位用做 系统状态指示灯LED。寄存器的设 定主要根据硬件的配置情况而定, 表2各模式下寄存器的分配及CPSR模式位 强 嚣 。 。 ll毳| §童甏舔塞蘸| 。 0 琵蕊0 罄 模 式 可以访问的寄存器 值得注意的是由于这段启动代码是 烧录到ROM中的,而中断向量必须 位于零地址,所以在存储单元没有 重新映射之前ROM基址的设定应 该为零地址。 拷贝(image)主要是为了提高 运行速度,编译生成的映像文件代 码从ROM内拷贝到RAM中去,而 程序的执行也就在RAM中。当然, 启动代码对运行速度的要求不是很 严格,所以这个拷贝动作可以不用 做,让代码存放在ROM中,代码的 执行也在ROM中,而运行中所需要 的数据在RAM中。 内存的初始化是为C代码的运 行开辟内存区,代码编译后会分为 三个区:只读区、可读可写区,零 初始化区。内存的初始化处理的内 容是:当只读区截止地址等于可读 可写区基址时,把零初始化区各字 节清零;当只读区截止地址不等于 可读可写区基址时,如果可读可写 区基址小于零初始化基址,就从只 读区截止地址处开始把数据拷贝到 可读可写区基址处,直到到达零初 始化基址,然后把零初始化区各字 节清零,否则也只用把零初始化区 各字节清零。 中断向量表是用于处理异常情 况的,当发生异常时,首先要保存 当前程序的返回地址和CPSR寄存 器的值,然后进入到相应的异常向 量地址,一般来说在异常向量地址 是一个跳转指令,使程序进入相应 — 1n I旦 -I一.一.o 维普资讯 http://www.cqvip.com http://www.elecfans.com ????? http://bbs.elecfans.com ?????? 的异常处理过程。由于中断向量表 要位于系统的零地址,当把启动代 码烧录到EEPROM 中运行时就需 要把ROM的地址定义到零地址,所 以程序的入口处如下: main ENTRY B Reset — Handler ;系统上 电后进入复位操作,通过这个跳转 指令进入堆栈初始化操作 B Undefined — Handler;处理 未定义模式。 B SW I — — Handler B Prefetch — Handler B Abort _ Handler N0P :Reserved Vector B IRQ—Handler ;处理器 IRQ中断。 B FIQ—Handler ;处理器 FIQ中断,快速响应用户中断,支 持高速数据传输这些跳转指令的地 址是 固定的,复位跳转指令在 0X0000,0000,未定义模式的跳转 是OXO000,0004,其它跳转指令地 址依次加4,而且这个顺序是不能 更改的。 系统重新映射当你为了提高运 行速度而把ROM的Image拷贝到 RAM后,中断向量表就不是在零地 址处,因此要重新映射存储单元, 把RAM的地址重新设定为零地址。 映 射 就 是 把 启 动 代 码 从 ROM(EEPROM或者Flash)拷贝到 SDRAM运行,同时再拷贝完毕以 后 进行 内存 的 重新 映射 ,把 SDRAM映射到原来的ROM地址 (OxO000)中,这样就可以用SDRAM 中的代码写Flash,使得程序代码得 以更新。但是需要注意的是,如果 程序进行了映射,这样就对在线调 试带来了困难,使得在线调试不可 以在 R A M 中进行(如果写入 EEPROM的代码是映射了的,则在 调试器启动的时候必然也会对程序 进行映射,使得程序在调试器中不 可以定位到原来的地方 ,使得调试 失败)。一个折中的方法是,不进行 映射,就是说在调试的代码中不可 以使用下载,这样就可以像普通的 代码一样进行调试了。 结语 做完这些初始化后,让CPU切 换到用户模式下,并把堆栈指针SP 指定到用户堆栈区,就可以进入到 c代码区运行。在c代码中继续对 时钟、RS232端口进行初始化,然 后打开系统中断允许位,进入到应 用代码中执行。此程序加载到处理 器$3C45lOB中经过调试,CPU可 以正常启动,能够对中断请求做出 及时的响应,上层应用的主代码可 以加载到Flash中,移植实时操作系 统RTXC后对多任务的调度控制正 常。匝 参考文献: 1.SteveFurber,‘ARM SoC体 系结构’,北京航空航天大学出版 社 .2002. 2.马忠梅,‘ARM嵌入式处理 器结构与应用基础’,北京航空航天 大学出版社,2003. 3.李驹光,‘ARM应用系统开 发详解一基于$3C45l0B的系统设 计’,清华大学出版社,2003. ZiLOG三 十周年庆典 ,上海设计 中心开幕 9月1日,ZiLOG公司在上海为 其不断创新的30年历程举办了庆 祝活动(1 974年由Federico Faggin 创建),同时正式对外公布其设在上 海浦东张江高科技工业园内,占地 约6000平方米的设计中心的成立。 ziLOG董事长兼cE0 Jim Thorburn说:新成立的上海设计中 心是该公司中国策略中的重要组成 部分,突出了ZiLOG对于整个中国 区的重视。而中国区在ZiLOG亚太 区的收入比重占50%。中心的成立 使ZiLOG能够为持续增长中的中 国MCU市场提供快速的机动 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 。 整个中国区的客户已经积极地 把ZiLOG的芯片应用到他们的设 计中,该公司正 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 扩展设计中心 的资源和能力,同时在未来的日子 里,ZiLOG将特别针对中国电子厂 家对低成本应用的需求,开发出贴 近市场的新产品。匝 ● ·'^ - t 。 . ⋯ ⋯ 维普资讯 http://www.cqvip.com http://www.elecfans.com ????? http://bbs.elecfans.com ??????
本文档为【ARM处理器启动代码的分析与设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_150549
暂无简介~
格式:pdf
大小:171KB
软件:PDF阅读器
页数:3
分类:互联网
上传时间:2013-06-12
浏览量:8