5 ARM启动代码设计的中断处理.ppt

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章ARM启动代码设计及中断的处理 内 容 5.1 嵌入式软件开发 5.2 启动代码分析 5.3 BootLoader分析 5.4 ARM中断处理 5.1 嵌入式软件开发 启动代码 应用程序(无操作系统) bootloader 嵌入式操作系统移植 BSP板级支持包 应用程序开发(操作系统) 嵌入式软件设计和调试流程 交叉编译 ARM代码结构 ARM程序编译后得到的二进制代码通常包含: 代码段(text段或code段):编译后的代码,只读 读写数据段(data段):可读写的全局变量,读写 只读数据段(rodata段):只读数据,如const类型的全局变量 BSS段:需要清0的数据 这些段在链接(link)过程中产生,并且在链接过程中都应该设置各段的起始地址。程序必须从代码段指定的起始位置处运行。 根据代码段运行所在地址的硬件介质不同可以将程序分为在RAM运行的程序和在ROM运行的程序。 链接脚本 链接脚本示例 在RAM运行程序结构图 在ROM运行程序结构图 GCC库 5.2 启动代码 由于ARM软件编程一般采用高级语言,如C语言,因此在系统启动后必须有一段程序能够将CPU带入到能够运行C语言的状态,这段程序就是启动代码。 启动代码通常用汇编语言完成,并在系统复位入口点(ARM系统中为0地址)运行。 在嵌入式系统中系统复位入口点所在的硬件通常是Flash等芯片,存储在这些芯片中的数据即使掉电也能够保存,而且这个地方的硬件的访问宽度是由硬件设计决定,软件不能更改,这样就能保证上电后该地址的数据有效。 启动代码主要功能(1) 1、建立异常向量表 2、初始化硬件:初始化RAM、关闭中断、关闭看门狗等 3、初始化堆栈 4、初始化读写数据段、BSS段: 在ROM中运行的程序必须将数据段从ROM中拷贝到RAM中,并将BSS段清零; 在RAM中运行的程序则需要将BSS段清零,然后将整个代码段、只读数据段、读写数据段和BSS段从ROM拷贝到RAM。 启动代码主要功能(2) 5、重定向 位置无关的代码是指该代码不用在编译指定的地址 运行也能保证程序的执行流程和执行逻辑不会改变。 位置相关代码运行的地址必须和编译时的地址一致,否则将导致程序运行流程改变。 在初始化程序区、数据区之后需要一条跳转指令将PC跳转到编译时指定的运行地址接着运行。LDR指令及之前的指令都在ROM中运行,而startram标号之后的代码则跳转到编译时指定的地址(RAM或者ROM中)中运行了,因为startram标号表示的地址是由编译时就确定的。这个过程就是重定向。 LDR PC, = startram startram : … 重定向之前运行的代码必须是位置无关的代码。 启动代码主要功能(3) 6、跳转到C代码 LDR PC,=Main 5.2 启动代码分析 在基于ARM920T core的嵌入式系统中,系统在上电或复位时都从地址0始执行,因此在这个地址处安排的通常就是系统的启动代码。 它通常也是BootLoader程序的一部分,可以在启动代码基础上编写BootLoader。 用汇编语言编写。 启动代码是在复位后运行其它程序之前运行的一段小程序。通过它,初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用C函数准备好正确的环境。 启动代码的移植和修改 启动代码除了依赖于 CPU 的体系结构外,实际上也依赖于具体的嵌入式板级设备的配置,比如板卡的硬件地址分配,RAM芯片的类型,其他外设的类型等。 对于两块不同的嵌入式板而言,即使它们是基于同一种 CPU而构建的,如果他们的硬件资源和配置不一致的话,要想让运行在一块板子上的启动代码也能运行在另一块板子上,也还是需要作一些必要的修改。 启动代码流程图 设置异常跳转表 关闭看门狗 设置中断模式并禁止中断 配置存储器控制寄存器宽度 堆栈初始化 C代码初始化 5.3 BOOTLOADER分析 u-boot简介 u-boot简介 BootLoader的基本概念 BootLoader 的移植和修改 BootLoader 的安装 用来控制 BootLoader 的设备或机制 Boot Loader 的操作模式 BootLoader与主机间文件传输的通信设备及协议 BootLoader的主要任务与典型结构框架 BootLoader的主要任务与典型结构框架 Stage 1初始化流程图 Stage 2流程图 板级支持包 板级支持包的特点 板级支持包的功能 板级支持包的功能 系统级初始化 硬件相关的驱动程序 5.4 ARM中断

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档