基于S3C2440的启动代码分析.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于S3C2440的启动代码分析

中国科技论文在线 基于S3C2440 的启动代码分析 仇磊 武汉理工大学信息工程学院信号与信息处理,武汉(430063 ) E-mail: ql64@163.com 摘 要:嵌入式系统日益广泛地应用于工业控制、移动通讯、网络系统、无线系统、家用电 器以及消费电子等设备中。基于微处理器 S3C2440 的嵌入式数据采集系统平台体积小,结 构清晰、通用性好、可扩展性强。它可用于车载振动监测、机械设备现场监测、隧道振动监 测等方面,在工业测量与控制领域中都具有较为广阔的应用前景。 本文分析了基于 S3C2440 的系统版的底层代码。该系统是一个常见的 ARM 实验板,是在 DEMO 板的基础上做了一些改动,对系统的理解首先要是对硬件的分析,然后就是底层软 件的分析,理解好了 S3C2440 启动代码,就会对系统工作的流程有深刻的认识。 关键词:S3C2440;启动代码;ARM9 ; 1 引言 很多初学者总是将启动代码和 Bootloader 联系在一起,这是错误的。通常,启动代码是 系统上电或者复位后运行的第一段代码,是进入 C 语言的 main 函数之前需要执行的那段汇 编代码。它的作用是在用户程序运行之前对系统硬件及软件环境进行必要的初始化并在最后 使程序跳转到用户程序。它直接面对 ARM 处理器内核及硬件控制器进行编程,所执行的操 作与具体的目标系统紧密相关。 这是由于 C 语言程序的运行需要具备一定的条件,如分配好外部数据空间,堆栈空间 和中断入口等。另外,汇编代码可以更直接地对硬件进行操作,效率更高,这对启动中断等 对时间要求更高的情况是非常必要的[1] 。 Bootloader 不是一段代码,它是一个具有引导装载功能的完整的程序,如可以引导装载 linux 的vivi ,uboot ,以及通常PC 机上的 BIOS 程序等。基于 S3C2440 的Bootloader 也包含 了 S3C2440 的启动代码,也就是说,S3C2440 的启动代码是基于 S3C2440 的 Bootloader 的 一部分,是所有 S3C2440 应用程序的一部分。 2 汇编基础 2.1 伪操作 GET 伪操作类似于 C 语言里面的 include,是将一个源文件包含到当前源文件中,并将 被包含的文件在其当前位置进行汇编处理。IMPORT 伪操作相当于 C 语言中的 extern 声明, 它告诉编译器当前的符号不再本源文件中定义,而是在其他源文件中定义,在本源文件中可 能引用该符号。AERA 伪操作用于定义一个代码或者数据段。ASSERT,在汇编编译器对汇 编程序的扫描中,如果 ASSERT 中条件不成立,ASSERT 伪操作将报告错误信息。 2.1 汇编指令 LDR 伪指令将一个 32 位的常数或者一个地址值读取到寄存器中。BL 跳转指令,L 决 定是否保存返回地址。MRS 用于将状态寄存器的内容传送到通用寄存器中,MSR 用于将通 用寄存器的内容或一个立即数传送到状态寄存器中。LDM 和 STM 分别为批量 Load/Store 内存访问指令,FD 为满递减数据栈。 -1- 中国科技论文在线 3 启动代码功能模块分解 启动代码主要是在主程序运行之前初始化系统硬件及软件的运行环境,它的主要功能包 括以下的几个方面: 建立中断向量表 初始化系统堆栈 应用程序执行环境初始化 跳转至主函数 3.1 系统堆栈的初始化 ARM 有 7 种模式,用户模式,快速中断模式,中断模式,管理模式,中止模式,未定 义模式和系统模式。系统堆栈的初始化主要是给各个处理器模式分配堆栈空间。堆栈是为中 断或程序跳转服务的,当发生中断或程序跳转时,需要将当前处理器的状态及一些参数保持 在堆栈中,当中断处理完毕以后或程序执行完后返回时,再将堆栈保存的现场数据进行恢复, [2]

文档评论(0)

xxj1658888 + 关注
实名认证
文档贡献者

教师资格证持证人

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

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档