嵌入式系统实训报告5--走马灯.docxVIP

  • 84
  • 0
  • 约3.29千字
  • 约 6页
  • 2020-10-15 发布于河北
  • 举报
《嵌入式系统技术》 实训报告 学期: 日期: 实训场所: 二级学院 信息工程学院 班级 姓名 学号 实验题目 实训五、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规则,如果读者想了解更多的规则,可以查看相关的书 籍 籍。 基本 ATPCS 基本ATPCSS定了在子程序调用时的一些基本规则,包括下面 3方面的内容: 各寄存器的使用规则及其相应的名称。 数据栈的使用规 则。 (3) 参数传递的 规则。 相对于其它类型的ATPCS满足基本ATPCS勺程序的执行速度更快,所占用的内存更少。 但是它不能提供以下的支持: ARM程序和Thumb程序相互调用, 数据以及代码的位置无关 的支持,子程序的可重入性,数据栈检查的支持。 而派生的其他几种特定的 ATPCS就是在基本ATPCS的基础上再添加其他的规则而形 成 的。其目的就是提供上述的功能。 2. 寄存器的使用规则 寄存器的使用必须满足下面的规则: 子程序间通过寄存器 R0?R3来传递参数。这时,寄存器R0?R3可以记作A0?A3。 被调用的子程序在返回前无需恢复寄存器 R0?R3的内容。 在子程序中,使用寄存器R4?RII来保存局部变量。这时,寄存器R4?R11可以 记作V1?V如果在子程序中使用到了寄存器 V1?V8中的某些寄存器,子程序进入时必须 保存这些寄存器的值, 在返回前必须恢复这些寄存器的值; 对于子程序中没有用到的寄存 器则不必进行这些操作。在Thumb程序中,通常只能使用寄存器F4?R7来保存局部变量。 寄存器R12用作子程序间scratch寄存器,记作I P。在子程序间的连接代码段中 常有这种使用规则。 寄存器R13用作数据栈指针,记作SP。在子程序中寄存器R13不能用作其他用途。 寄存器SP在进入子程序时的值和退出子程序时的值必须相等。 寄存器R14称为连接寄存器,记作LF。它用于保存子程序的返回地址。 如果在 子程序中保存了返回地址,寄存器R14则可以用作其他用途。 寄存器R15是程序计数器,记作 PC。它不能用作其他用途。 3. 参数传递规则 根据参数个数是否固定可以将子程序分为参数个数固定的 (nonvariadic) 子程序和参数 个数可变的 (variadic) 子程序。这两种子程序的参数传递规则是不同 的。 参数个数可变的子程序参数传递规则 对于参数个数可变的子程序, 当参数不超过4个时,可以使用寄存器R0?R3来传递参 数;当参数超过 4个时,还可以使用数据栈来传递参数。 在参数传递时, 将所有参数看作是存放在连续的内存字单元中的字数据。 然后,依次 将各字数据传送到寄存器 R0、R1、R2、R3中,如果参数多于4个,将剩余的字数据传送 到数 据栈中, 入栈的顺序与参数顺序相反, 即最后一个字数据先入栈。 按照上面的规则, 一个浮 点数参数可以通过寄存器传递, 也可以通过数据栈传递, 也可能一半通过寄存器 传递,另一 半通过数据栈传递。 参数个数固定的子程序参数传递规则 对于参数个数固定的子程序, 参数传递与 参数个数可变的子程序参数传递规则不同。 如果系统包含浮点运算的硬件部件,浮点参数将按照下面的规则传 递: ?各个浮点参数按顺序处理。 ?为每个浮点参数分配FP寄存器。 ?分配的方法是,满足该浮点参数需要的且编号最小的一组连续的 FP寄存器。第 一 个整数参数,通过寄存器 R0?R睐传递。其他参数通过数据栈传递。 子程序结果返回规则 子程序 中结果返回的规则如下: 结果为一个32位的整数时,可以通过寄存器 R0返回。 结果为一个64位整数时,可以通过寄存器 R0和R返回,依次类推。 结果为一个浮点数时,可以通过浮点运算部件的寄存器 fO、dO或者SO来返回。 结果为复合型的浮点数(如复数)时,可以通过寄存器fO?fN或者dO?dN

文档评论(0)

1亿VIP精品文档

相关文档