- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ARM体系结构与编程(第2版)第12章解析,arm体系结构与编程,arm体系架构与编程,arm体系结构与编程pdf,arm体系架构与编程pdf,arm编程,arm编程入门,arm编程语言,arm多核编程,arm编程软件
在本章中,介绍嵌入式应用程序的设计方法。首先介绍嵌入式应用程序设计的基本知识。然后通过几个示例,具体说明嵌入式应用程序的设计方法。对于每个示例,不仅详细介绍程序设计的要点,而且介绍如何使用ARM开发工具编译和连接这些程序,生成映像文件。本章是对前面几章知识的综合应用。 12.2、12.3和12.4节中的示例是以ARM公司的PID为目标系统的。12.5节中的示例是以LinkUp公司的L7210SDB评价板为目标系统的。由于各种嵌入式应用环境相差非常大,因此,这里主要是通过这些示例来更直接地介绍嵌入式应用系统的开发方法,具体的代码会因嵌入式环境的不同而有差异。 * 12.1 嵌入式应用程序设计的基本知识 本节介绍嵌入式应用程序设计的基本知识,比较详细地介绍系统初始化时要进行的操作。在后面几节的例子中,还会详细介绍其中的一些技术。 * 12.1.1 嵌入式应用系统中的存储映射 1. 地址0x0处为ROM 2. 地址0x0处为RAM 如果在系统正常运行过程中,地址0x0处为RAM,则在系统复位时需要执行下面的操作序列。 (1) 系统复位时,ROM被映射到地址0x0处,程序从这里获取复位异常中断的中断向量。 (2) 执行复位异常中断向量,这里使用的是高位中断向量表。假设系统中ROM地址从0X0f000000开始,可以通过下面的伪指令跳转到存放在ROM中的下一条指令处执行: ? LDR PC,=0x0f000004 ?(3) 设置地址重映射寄存器REMAP=1,重新将RAM映射到地址0x0开始的空间。 (4) 完成其他的初始化代码。 * 12.1.1 嵌入式应用系统中的存储映射 对地址空间进行重映射的存储器解码器可以通过下面的操作简单地实现: ? case ADDR(31:24) is when 0x00 if REMAP = 0 then select ROM else select SRAM when 0x0F select ROM when ... * 12.1.2 系统初始化 1. 系统运行环境的初始化 标识整个代码的初始入口点。 设置异常中断向量表。 初始化存储系统。 初始化各模式下的数据栈。 初始化一些关键的I/O接口。 初始化异常中断需要使用的RAM变量。 使能异常中断。 如果需要的话,切换处理器模式。 如果需要的话,切换处理器状态。 2. 应用程序的初始化 将已经初始化的数据搬运到可写的数据区。 在可写存储区建立ZI属性的可写数据区。 * 12.2 使用semihosting的C语言程序示例 semihosting技术将应用程序中的I/O请求通过一定的通道传送到主机(Host),由主机上的资源响应应用程序的I/O请求,而不是像通常那样,由应用程序所在的计算机响应应用程序的I/O请求。 SWI指令可以根据指令中的参数,以及相关寄存器的值选择执行某个特定的子程序。ARM体系利用SWI提供semihosting功能。 本例是一个使用semihosting的C语言程序示例。程序中包含了函数main()。这时,C运行时库中的函数__main()将完成前面介绍的各种初始化操作,应用程序中不需要进行这些初始化操作。 * 12.2.1 源程序分析 在main()函数中,调用了一些用户自己定义的子函数,包括demo_malloc()、demo_sscanf()、demo_printf()、demo_float_print()及demo_sprintf()。这些子程序使用semihosting的SWIs实现相应的功能。 本应用程序可以运行在本例所描述的semihosting环境中,也可以运行在嵌入式环境下。程序中的宏变量EMBEDDED用来区分这两种运行环境。当定义了EMBEDDED时,程序运行于嵌入式环境,当未定义EMBEDDED时,程序运行于semihosting环境。 当程序运行于嵌入式环境时,该嵌入式系统的存储系统有两种映射方式。在第1种方式中,系统运行期间地址0x0处为RAM,在系统复位时,ROM被映射到地址0x0处,程序的前几条指令将RAM重新映射到地址0x0处。这种方式通过定义程序中的宏变量ROM_RAM_REMAP来标识。在第2种方式中,不进行地址重映射,这是通过不定义程序中的宏变量ROM_RAM_REMAP来标识的。 就本例而言,程序中宏变量EMBEDDED、ROM_RAM_REMAP以及USE_SERIAL_ PORT都没有被定义。程序实际上只运行main()中最后几个子程序调用。这几个子程序使用semihosting SWIs提供的功能,在Angel、Armulator和MultiICE中都提供了semihosting SWIs功能,用户不需要写其他代码。 * 12.2.2 生成映像文件 1
您可能关注的文档
- SIP外墙体新型包梁包柱实验方案.docx
- SMA-13首件制.doc
- AO-标准的接骨板和螺丝钉技术-骨折外科手术解析.ppt
- APP开发必须懂的网络常识解析.doc
- apt-mirror脚本源代码分析注释解析.doc
- APRV气道压力释放通气解析.ppt
- APQP培训资料解析.ppt
- SNCR_技术.ppt
- SNCR运行规范.doc
- APP软件BI分析功能设计解析.docx
- 农业物联网技术在果园环境监测与调控中的应用与创新教学研究课题报告.docx
- 小学英语课堂游戏化多模态输入策略研究教学研究课题报告.docx
- 2025年碳捕集与封存技术在实现绿色低碳未来中的应用前景分析报告.docx
- 跨境业务合规管理趋势,2025年合规科技应用前景展望实战实战实战案例报告.docx
- 聚焦2025:铁路物流多式联运中的物流标准化与国际化发展报告.docx
- 航空发动机智能运维技术2025年航空发动机维修质量控制与维修质量控制体系研究报告.docx
- 高端装备制造业知识产权战略布局与产业竞争力提升报告.docx
- 2025年轨道交通车站智能化服务升级趋势及乘客体验优化分析报告.docx
- 人工智能在智能客服领域的应用与效果评估报告.docx
- 细胞外囊泡在消化系统疾病治疗中的研究动态报告.docx
文档评论(0)