- 1、本文档共58页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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中断
您可能关注的文档
- 【导练】专题八 化学反应速率化学平衡大题.doc
- 【二模】北京市朝阳区2013二模.doc
- 【高校辅导员】笔试面试题锦.doc
- 【苟鑫】电动机转速测定的数据显示系统仿真设计.doc
- 【行业资料】-必读:日本核泄露危害核辐射预防.doc
- 【建设工程安全生产管理技术】练习题答案.doc
- 【解析】湖北省八校2014届高三上学期第一次联考数学文试题.doc
- 【精品】怎样分析上市公司年报.doc
- 【精心原创编制】【2014深圳二模含答题卷】2014年深圳市第二次调研考试理科综合试题、答题卷答案.doc
- 【兰州理工全套含CAD图论文】X6132万能升降台铣床数控化改造总体的垂直进给伺服系统设计.doc
- 10《那一年,面包飘香》教案.docx
- 13 花钟 教学设计-2023-2024学年三年级下册语文统编版.docx
- 2024-2025学年中职学校心理健康教育与霸凌预防的设计.docx
- 2024-2025学年中职生反思与行动的反霸凌教学设计.docx
- 2023-2024学年人教版小学数学一年级上册5.docx
- 4.1.1 线段、射线、直线 教学设计 2024-2025学年北师大版七年级数学上册.docx
- 川教版(2024)三年级上册 2.2在线导航选路线 教案.docx
- Unit 8 Dolls (教学设计)-2024-2025学年译林版(三起)英语四年级上册.docx
- 高一上学期体育与健康人教版 “贪吃蛇”耐久跑 教案.docx
- 第1课时 亿以内数的认识(教学设计)-2024-2025学年四年级上册数学人教版.docx
文档评论(0)