《嵌入式系统技术》
实训报告
学期:日期: 实训场合:
二级学院
信息工程学院
班级
姓名
学号
实验题目
实训五、C语言控制LED灯(走马灯)
1、实验目日勺
z熟悉ADS开发环境调试环境。
z掌握到了寄存器V1-V8中勺某些寄存器,子程序进入时必须 保存这些寄存器勺值,在返回前必须恢复这些寄存器勺值;对于子程序中没有用到勺寄存 器则不必进行这些操作。在Thumb程序中,一般只能使用寄存器R4〜R7来保存局部变量。
寄存器R12用作子程序间scratch寄存器,记作IP。在子程序间勺连接代码段中 常有这种使用规则。
寄存器R13用作数据栈指针,记作SP。在子程序中寄存器R13不能用作其她用途。 寄存器SP在进入子程序时勺值和退出子程序时勺值必须相等。
寄存器R14称为连接寄存器,记作LR。它用于保存子程序勺返回地址。如果在 子程序中保存了返回地址,寄存器R14则可以用作其她用途。
寄存器R15是程序计数器,记作PC。它不能用作其她用途。
参数传递规则根据参数个数与否固定可以将子程序分为参数个数固定日勺(nonvariadic)
子程序和参数
个数可变勺(variadic)子程序。这两种子程序勺参数传递规则是不同 勺。
(1)参数个数可变勺子程序参数传递规则
对于参数个数可变勺子程序,当参数不超过4个时,可以使用寄存器即〜R3来传递参 数;当参数超过4个时,还可以使用数据栈来传递参数。
在参数传递时,将所有参数看作是寄存在持续勺内存字单元中勺字数据。然后,依次 将各字数据传送到寄存器R0、R1、R2、R3中,如果参数多于4个,将剩余勺字数据传送到 数据栈中,入栈勺顺序与参数顺序相反,即最后一种字数据先入栈。按照上面勺规则,一 种浮点数参数可以通过寄存器传递,也可以通过数据栈传递,也也许一半通过寄存器传递, 另一半通过数据栈传递。
参数个数固定勺子程序参数传递规则对于参数个数固定勺子程序,参数传递与 参数个数可变勺子程序参数传递规则不同。
如果系统涉及浮点运算勺硬件部件,浮点参数将按照下面勺规则传
递:
•各个浮点参数按顺序解决。
•为每个浮点参数分派FP寄存器。
•分派勺措施是,满足该浮点参数需要勺且编号最小勺一组持续勺FP寄存器。第一 个整数参数,通过寄存器R0〜R3来传递。其她参数通过数据栈传递。
子程序成果返回规则子程序中
成果返回勺规则如下:
•成果为一种32位勺整数时,可以通过寄存器R0返回。
•成果为一种64位整数时,可以通过寄存器R0和Rl返回,依次类推。
•成果为一种浮点数时,可以通过浮点运算部件勺寄存器f0. d0或者s0来返回。
•成果为复合型勺浮点数(如复数)时,可以通过寄存器f0〜fN或者d0〜dN来返回。
•对于位数更多日勺成果,需要通过内存来传递。
C语言函数和ARM汇编语言函数间互相调用高档语言函数与汇编语言函数勺混合调 用也要遵循ATPCS规则保证程序调用时参数勺
对勺传递。在汇编程序中使用EXPORT伪指令声明本子程序,使其他程序可以调用此子 程序,而在
C语言程序中使用extern核心字声明外部函数(声明要调用勺汇编子程序),即可 调用此汇编子程序。下面给出两个例子来简介函数互相调用。
例C函数中调用汇编
示例中汇编子程
嵌入式系统实训基础报告走马灯 来自淘豆网m.daumloan.com转载请标明出处.