- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《嵌入式系统技术》
实训报告
学期:10-11学年第一学期 日期: 实训场所:单片机实验室(科403)
二级学院 信息工程学院 班级 姓名 学号 实验题目 实训三、C语言控制LED灯(走马灯)
1、实验目的
z 熟悉 ADS 开发环境调试环境。
z 掌握简单的 ARM 汇编指令的使用方法。
z 掌握 S3C2440A 的 I/O 控制寄存器的配置。
z 掌握 ARM 汇编指令和 C 语言相互调用的方法
2、实验设备
z PC 机、ARM 仿真器、2440 实验箱
3、实验内容
z 熟悉 ARM 开发环境的建立。
z 使用 ARM 汇编和 C 语言设置 GPIO 口的相应寄存器。
z 编写跑马灯程序。
4、实验原理
C 程序与汇编程序相互调用规则
为了使单独编译的 C 语言程序和汇编程序之间能够相互调用,必须为子程序间的调用规 定一定的规则。ATPCS ,即 ARM , Thumb 过程调用标准(ARM/Thumb Procedure Call Standard),是 ARM 程序和 Thumb 程序中子程序调用的基本规则,它规定了一些子程序间调用 的基本规则,如子程序调用过程中的寄存器的使用规则,堆栈的使用规则,参数的传递规则 等。
下面结合实际介绍几种 ATPCS 规则,如果读者想了解更多的规则,可以查看相关的书
籍。
1. 基本 ATPCS
基本 ATPCS 规定了在子程序调用时的一些基本规则,包括下面 3 方面的内容: (1)各寄存器的使用规则及其相应的名称。
(2)数据栈的使用规则。
(3)参数传递的规则。
相对于其它类型的 ATPCS,满足基本 ATPCS 的程序的执行速度更快,所占用的内存更少。 但是它不能提供以下的支持: ARM 程序和 Thumb 程序相互调用, 数据以及代码的位置无关
的支持,子程序的可重入性,数据栈检查的支持。
而派生的其他几种特定的 ATPCS 就是在基本 ATPCS 的基础上再添加其他的规则而形成 的。其目的就是提供上述的功能。
2. 寄存器的使用规则
寄存器的使用必须满足下面的规则:
(1) 子程序间通过寄存器 R0~R3 来传递参数。这时,寄存器 R0~R3 可以记作 A0~A3。 被调用的子程序在返回前无需恢复寄存器 R0~R3 的内容。
(2) 在子程序中,使用寄存器 R4~Rll 来保存局部变量。这时,寄存器 R4~R11 可以 记作 V1~V8。如果在子程序中使用到了寄存器 V1~V8 中的某些寄存器,子程序进入时必须 保存这些寄存器的值,在返回前必须恢复这些寄存器的值;对于子程序中没有用到的寄存器 则不必进行这些操作。在 Thumb 程序中,通常只能使用寄存器 R4~R7 来保存局部变量。
(3) 寄存器 R12 用作子程序间 scratch 寄存器,记作 IP。在子程序间的连接代码段中 常有这种使用规则。
(4) 寄存器 R13 用作数据栈指针,记作 SP。在子程序中寄存器 R13 不能用作其他用途。 寄存器 SP 在进入子程序时的值和退出子程序时的值必须相等。
(5) 寄存器 R14 称为连接寄存器,记作 LR。它用于保存子程序的返回地址。如果在
子程序中保存了返回地址,寄存器 R14 则可以用作其他用途。
(6) 寄存器 R15 是程序计数器,记作 PC。它不能用作其他用途。
3.参数传递规则 根据参数个数是否固定可以将子程序分为参数个数固定的(nonvariadic)子程序和参数
个数可变的(variadic)子程序。这两种子程序的参数传递规则是不同的。
(1)参数个数可变的子程序参数传递规则
对于参数个数可变的子程序,当参数不超过 4 个时,可以使用寄存器 R0~R3 来传递参 数;当参数超过 4 个时,还可以使用数据栈来传递参数。
在参数传递时,将所有参数看作是存放在连续的内存字单元中的字数据。然后,依次将 各字数据传送到寄存器 R0、R1、R2、R3 中,如果参数多于 4 个,将剩余的字数据传送到数 据栈中,入栈的顺序与参数顺序相反,即最后一个字数据先入栈。按照上面的规则,一个浮 点数参数可以通过寄存器传递,也可以通过数据栈传递,也可能一半通过寄存器传递,另一 半通过数据栈传递。
(2)参数个数固定的子程序参数传递规则 对于参数个数固定的子程序,参数传递与参数个数可变的子程序参数传递规则不同。
如果系统包含浮点运算的硬件部件,浮点参数将按照下面的规则传递:
· 各个浮点参数按顺序处理。
· 为每个浮点参数分配 FP 寄存器。
· 分配的方法是,满足该浮点参数需要的且编号最小的一组连续的 FP 寄存器。第一 个整数参数,通过寄存器 R0~R3 来传递。其他参数通过数据栈传递。
您可能关注的文档
- 嵌入式系统和linux工程师面试题.doc
- 嵌入式系统接口设计与Linux驱动程序开发.doc
- 嵌入式系统经验.doc
- 嵌入式系统开发及应用课程教学大纲.doc
- 嵌入式系统开发学习如何起步、如何深入.doc
- 嵌入式系统实验:熟悉Linux开发环境.doc
- 嵌入式系统实验报告书.doc
- 嵌入式系统与开发实验大纲.doc
- 嵌入式系统在物联网中的应用.doc
- 嵌入式系统中LCD驱动的实现原理EEVP.doc
- 2025AACR十大热门靶点推荐和解读报告52页.docx
- 财务部管理报表.xlsx
- 高中物理新人教版选修3-1课件第二章恒定电流第7节闭合电路欧姆定律.ppt
- 第三单元知识梳理(课件)-三年级语文下册单元复习(部编版).pptx
- 俄罗斯知识点训练课件-七年级地理下学期人教版(2024).pptx
- 课外古诗词诵读龟虽寿-八年级语文上学期课内课件(统编版).pptx
- 高三语文二轮复习课件第七部分实用类文本阅读7.2.1.ppt
- 高考物理人教版一轮复习课件第4章第3讲圆周运动.ppt
- 高考英语一轮复习课件53Lifeinthefuture.ppt
- 2025-2030衣柜行业风险投资发展分析及投资融资策略研究报告.docx
文档评论(0)