嵌入式系统考试试卷及答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
typedefstruct{
unsigned intULCON0;
unsigned intUCON0;
unsigned intUFCON0;
unsigned intUMCON0;
unsigned intUTRSTAT0;
unsigned intUERSTAT0;
unsigned intUFSTAT0;
unsigned intUMSTAT0;
unsigned intUTXH0;
unsigned intURXH0;
unsigned intUBRDIV0;
unsigned intUDIVSLOT0;
unsigned intUINTP0;
unsigned intUINTSP0;
unsigned intUINTM0;
(3)寄存器R12用作子程序间scratch寄存器,记作ip;在子程序的连接代码段中经常会有这种使用规则。
(4)寄存器R13用作数据栈指针,记做SP;在子程序中寄存器R13不能用做其他用途。寄存器SP在进入子程序时的值和退出子程序时的值必须相等。
(5)寄存器R14用作连接寄存器,记作lr;它用于保存子程序的返回地址,如果在子程序中保存了返回地址,则R14可用作其它的用途。
15、数据操作指令是指对存放在寄存器中的数据进行操作的指令,主要包括(36)数据传送指令、(37)算术指令、(38)逻辑指令、(39)比较与测试指令以及(40)乘法指令。(P44)
二、简答题(本题30分,每小题6分)
1、简述ARM处理器的流水线概念,并举例说明ARM9TDMI核的流水线情况。
ARM处理器使用流水线来增加处理器指令流的速度,这样可使几个操作同时进行,并使处理和存储器系统连续操作。ARM9TDMI使用典型的5级流水线,分别为:(1)取指,从存储器中取出指令,并将其放入指令流水线;(2)译码,指令被译码,从寄存器堆中读取寄存器操作数;(3)执行,将其中的1个操作数移位,并在ALU中产生结果;(4)缓冲/数据,如果需要则访问数据存储器,否则ALU只是简单的缓冲1个时钟周期;(5)回写,将指令结果回写到寄存器组中。在执行第一条指令的同时对第二条、第三条、第四条、第五条指令按流程进行操作。(P36)
(6)寄存器R15是程序计数器,记作PC;它不能用作其他用途。
(7)ATPCS中的各寄存器在ARM编译器和汇编器中都是预定义的。(P83)
5、简述RISC和CISC的主要区别。
三、程序设计(本题30分,每空2分)
1、通过控制S5PC100 的GPG3_0、GPG3_1、GPG3_2、GPG3_3实现对发光二极管LED1, LED2, LED3, LED4的轮流亮灭(第一状态点亮LED1、LED2,其他灭;第2状态点亮LED2、LED3,其他灭,第3状态点亮LED3、LED4,其他灭,第4状态点亮LED4、LED1,其他灭,再循环)的控制。且已知引脚输出高电平点亮发光二极管,要求将程序缺失的部分补全。
#include“ s5pc100.h”
int main()
{
int i;
unsigned char ledtab[]={ 0x03,0x06,0x0C,0x18};
GPG3.GPG3CON=(~( 0xffff)<<0)&GPG3.GPG3CON|(0x1111<<0);
while(1)
{
for(i=0;i<4;i++)
UART0.UINTM0=0x0e;
}
int main()
{
uart_int_init ();
uart0_init ();
While(1);
}
3、S5PC100控制K9F2G080U的程序设计中写一个页面的函数程序如下:
#define NFCONT _REG(0xE7200004)
#define NFCMD _REG(0xE7200008)
2、试用C语言程序以及ARM汇编语言设计著名的Euclid最大公约数算法。
C语言程序:int gcd(int a,int b)
{
While (a!=b)
{ if (a>b)
a=a-b;
else
b=b-a;
}
return a;
}
ARM汇编语言程序1:
Gcd: CMP r0,r1
BEQ end
BLT less
}uart0;
#defineUART0(*(volatileuart0*) 0xEC000000)
void uart0_init(void)
{
GPA0.GPA0CON=( GPA0.GPA0CON & ~(0xff)) | 0x22;
UART0.ULCON0= 0x06;(ob00000110)(7位数据位,2位停止位,无校验位),,,
9、S5pc100的GPIO的常用的寄存器分为(17)端口控制寄存器、(18)端口数据寄存器和(19)端口上拉寄存器等3类。(P98)
10、S5pc100的通用异步收发(UART)可支持(20)4个独立的异步串行输入输出口,每个口皆支持(21)中断模式及(22)DMA模式,通道1和3最大传输速率可达(23)3兆波特,每个UART通道包含两个(24)64字节的收发FIFO。(P137)
unsigned intGPA0CON;
unsigned intGPA0DAT;
unsigned intGPA0PULL;
unsigned intGPA0DRV;
unsigned intGPA0PDNCON;
unsigned intGPA0PDNPULL;
}g来自百度文库a0;
#defineGPA0(*(volatilegpa0*) 0xE0300000)
}
#define NFADD _REG(0xE720000C)
#define NFDATA _REG(0xE7200010)
#define NFSTAT _REG(0xE7200028)
Static int nand_write_page(unsigned char *buf, unsigned long addr)
11、Cortex-A8提供了2种中断模式,即(25)IRQ模式和(26)FIQ模式。(P127)
12、S5pc100处理器支持(27)大/小端模式存储字数据,其寻址空间可达(28)4GB。(P42)
13、NAND Flash以(29)页为单位读/写数据,而以(30)块为单位擦除数据。(P193)
14、LOAD/STORE内存访问指令表示在ARM(31)寄存器和(32)存储器之间传送数据。ARM指令中有3种基本的数据传送指令,分别是(33)单寄存器LOAD/STORE指令、(34)多寄存器LOAD/STORE内存访问指令和(35)单寄存器交换指令(P53)
SUB r0,r0,r1
B Gcd
Less:SUB r1,r1,r0
B Gcd
ARM汇编语言程序2:
Gcd: CMP r0,r1
SUBGT r0,r0,r1
SUBLT r1,r1,r0
BNE Gcd(P84)
3、简述看门狗软件程序设计的一般流程。
一般流程:
1)设置看门狗中断操作;
2)设置看门狗控制寄存器;
嵌入式系统考试答案
嵌入式系统总分100分
注:此页不作答题纸,请将答案写在答题纸上, 各题必须标明题号。
一、填空题(本题40分,每空1分)
1、SRAM是利用(1)双稳态触发器来保存信息的,只要不掉电,信息是不会丢失的;DRAM是利用(2)MOS(金属氧化物半导体)电容存储信息,必须通过不停地给电容充电来维持信息。(P5)
Printf(“uart0 device ok\n”);
}
Voidputc(const char data)
{
UART0.UTXH0=data;
While (!( UART0.UTRSTAT0& 0x2));
}
Voiduart0_recv()
{
putc( UART0.URXH0);
UART0.UINTP0= UART0.UINTP0|(1<<0);
{
(GPG3.GPG3DAT= ledtab[i];)
Delay(70);
}
}
return 0;
void Delay(unsigned int x )
{
unsigned int i,j,k;
for(i=0;i<=x;i++)
for(j=0;j<=0xff;j++)
for(k=0;k<=0xff;k++);
}
2、串行口通讯设计,采用S5PC100的UART0口实现收、送功能:要求波特率为115200BPS,UART系统时钟为60MHZ,7位数据位,2位停止位,无校验位,采用中断方式接收数据,并使用轮询方式发送数据实现回显通过串口到终端输入的字符,请补全程序:
#include“s5pc100.h”
typedefstruct{
3)设置看门狗数据寄存器和计数寄存器;
4)启动看门狗定时器(P156)
4、简述过程调用标准中的ARM寄存器使用规则。
寄存器的使用规则:
(1)子程序通过寄存器R0~R3来传递参数。这时寄存器可以记作:A0~A3,被调用的子程序在返回前无需恢复寄存器R0~R3的内容。
(2)在子程序中,使用R4~R11来保存局部变量,这时寄存器R4~R11可以记作:V1~V8。如果在子程序中使用到V1~V8的某些寄存器,子程序进入时必须保存这些寄存器的值,在返回前必须恢复这些寄存器的值,对于子程序中没有用到的寄存器则不必执行这些操作。在THUMB程序中,通常只能使用寄存器R4~R7来保存局部变量。
6、S5pc100具有(9)130个多功能输入/输出接口,其中UART0属于GPIO的(10)GPA0分组。(P98)
7、中断响应大致分为以下几个步骤:(11)保护断点;(12)寻找中断入口;(13)执行中断处理程序;(14)中断返回。(P118)
8、当CPSR程序状态寄存器内容为0x00000031时,表明处理器的模式是(15)FIQ;程序运行在(16)THUMB状态;。(P39-41)
NFADD=(addr>>16)&0xff;
For (i=1;i< (2048);i++)
{
NFDATA=*ptr;
Ptr++;
}
NFCMD= 0x10;
While(!( NFSTAT&(1<<24)));
NFCMD=0x70;
While(NFSTAT&(1));
NFCONT&=(1<<1);
Return 0
{
Unsigned char *ptr=(unsigned char *)buf;
Unsigned int i;
NFCONT&=~(1<<1);
NFSTAT|=(1<<24);
NFCMD= 0x80;
addr= addr>>11;
NFADD=0;
NFADD=0;
NFADD=addr&0xff;
NFADD=(addr>>8)&0xff;
UART0.UCON0=( 1<<2)|(1<<0);(接收和发送都是中断或查询方式)
UART0.UFCON0=0x00;
UART0.UMCON0=0x00;
UART0.UBRDIV0= 0x1F;(=60000000/115200/16-1=31.55,31+0.55,取31)
UART0.UDIVSLOT0= OxD555;(0.55*16=8.8,取9)
VIC1ADDRESS=0;
VIC0ADDRESS=0;
}
Void uart_int_init()
{
VIC1VECTADDR.VIC1VECTADDR10=(unsigned int)uart0_recv;
VIC1INTERRUPT.VIC1INTENABLE= VIC1INTERRUPT.VIC1INTENABLE|(1<<10);
2、ARM有3种含义:(3)它是一个公司的名称;(4)是一类微处理器的通称;(5)还是一种技术的名称。(P14)
3、Cortex-A8提供了(6)10通道的12位混合ADC接口。(P42)
4、从Thumb状态返回到ARM状态,使用(7)BX指令。(P62)
5、对于5级流水线处理器,假设一条指令执行时间5ns,则执行完5条指令的时间为(8)9ns。(P35)
相关文档
最新文档