《嵌入式系统》课程ARM部分大作业
一、如何定义ARM寄存器列表,试举一个使用寄存器列表的例子,要求实现4个字的内存复制。
答:AREA EXAMPLE1,CODE,READONLY
ENTRY
LDR R0,=0XFF; //把地址0XFF赋给R0
LDR R5,=0X0F; //把地址0X0F赋给R5
START
PBLOCK RLIST {R1-R4}; //把R1-R4定义为PBLOCK
LDMIA R0,PBLOCK; //把R0为首地址的内存4个字单元装载至R1到R4中
STMIA R5,PBLOCK; //把R1到R4的值依次存至R5为首地址的内存字单元
STOP
B STOP; //死循环
END
二、分析下面程序,写出下面程序遵循的规则,给出关键语句的注释,以及程序功能。
#include<stdio.h>
extern void strcopy(char *d,const char *s);
int main()
{
c onst cha r *srcstr=“First string - source”;
c har dststr[]=“secon
d string - destination”;
p rintf(“Before copying:\n”);
p rintf(“%S\n%S\n” srcstr,dststr);
s trcopy(dststr,srcstr);
printf(“After copying:\n”);
P rintf(“%s\n%s\n”,srcstr,dststr);
r eturn(0);
}
AREA scopy CODE,READONLY
E XPORT strcopy ;
Strcopy ;//R0指向目的字符串,R1指向源字符串
L DRB R2,[R1],#1;//加载字节和更新地址
S TRB R2,[R0],#1;//储存字节和更新地址
C MP R2,#0;//检查零终止符
B NE strcopy //如果不是零终止符则循环,否则继续执行
M OV PC,LR;//返回
E ND
答:功能:将r1指向的字符串拷贝到r0指向的地方,字符串以0作结束标志。
三、分析下面程序,写出下面程序遵循的规则,给出关键语句的注释,以及程序
功能。
int g(int a, int b, int c, int d ,int e) /
{
r eturn a + b + c + d + e;
}
EXPORT f ;
AREA f, CODE,READONLY
IMPORT g ;使用伪操作IMPORT声明C程序g()
STR lr,[sp,# - 4]!;保存返回地址
ADD r1,r0,r0 ;假设进入程序f时,r0中值为i,r1值设为2*i
ADD r2,r1,r0 ;r2值设为3*i
ADD r3,r1,r2 ;r3值设为5*i
STR r3,[sp,# - 4]!;第五个参数5*i通过数据栈传递
ADD r3,r1,r1 ;r3值设为4*i
BL g ;调用C程序g()
ADD sp,sp,#4 ;调整数据栈指针,准备返回
LDR pc,[sp],#4 ;返回
END
答:计算5*r0的值并通过数据栈传递保存。
四、下图是某个嵌入式实验板电路总体模块图,用中文写出该实验板的模块组成,及每个模块的功能。
答:power:5v,3.3v,1.35v电源供电
XScale PXA255(400Mhz):内核处理器
Intel Strata Flash(32MB):Intel岩闪存储器
SDRAM(64MB):同步动态随机存储器
10Base-T Ethemet 1 port:工业双绞线以太网接口1
Serial 2 port(Bluetooth,Full UART):串行端口2
JTAG Port(6pin,20pin Connector):JTAG测试接口
USB Slave Port:USB从盘接口
PCMCIA 1 Slot:个人电脑存储卡槽1
CF 1 Slot:数据存储设备卡槽1
MMC 1 Slot:MMC闪存卡槽1
Extemal Interface:对外接口
Touch Screen:触摸屏
DISPLSY 6.4 inches TFT LCD:6.4寸TFT液晶显示
RTC:实时时钟芯片
IrDA:红外线点对点无线通信
Audio(AC’97):多媒体声卡
五、(选做)利用C语言的位运算符实现5个函数,分别实现如下功能:
(1)将输入的一个无符号整数的第i位置0 或置1
(2)检测一个无符号整数的第i位置是0还是1?
(3)在屏幕上输出一个整数的二进制表示
(4)将一个16bit整数转化为BCD码表示
(5)检测当前计算机是大端机还是小端机?。