二、填空题1. ARM Cortex-A是ARM Cortex应用处理器,此系列中A5、A7、A8、A9、A12、A15和A17字长______位,而A50系列中的A53和A57字长为______位。
32 64
[解析] 本题考查典型ARM处理器内核特点。Cortex-A系列是面向高端应用的处理器核,此系列中A5、A7、A8、A9、A12、A15和A17字长32位,而A50系列中的A53和A57字长为64位。
2. 嵌入式系统的开发过程,可划分为4个阶段,即:需求分析与规格说明、______、构件设计、系统集成与测试。系统集成阶段并不是把所有构件连接在一起就行了,而是要反复的对系统进行测试,测试的目的就是要验证系统功能,发现系统______。
系统设计 错误
[解析] 本题主要考查嵌入式系统的开发过程,即需求分析与规格说明、系统设计、构件设计、系统集成与测试4个阶段。
3. μC/OS-Ⅱ是目前嵌入式操作系统领域中的最小内核之一,它只提供______、任务间通信与同步、任务管理、时间管理和______等基本功能,该内核裁减到最小状态后编译出来的代码只有8KB左右,资源消耗非常小。
4. S3C2410内部的电源管理模式主要有正常模式、慢速模式、休眠模式以及掉电模式。系统复位后自动进入的模式是正常模式。如果已经处于休眠状态,当有______发生时自动返回正常模式。
5. μC/OS-II中调用中断退出函数OSIntExit()标志着中断服务子程序的______,OSIntExit()将中断嵌套层数计数器的值______。
终结 减1
[解析] 本题主要考查μC/OS-II中断退出函数OSIntExit()的使用。调用中断退出函数OSIntExit()标志着中断服务子程序的终结,OsintExit()将中断嵌套层数计数器减1。
6. 为确保网络的互连互通,计算机和通信控制设备必须共同遵循一定的通信协议。互联网(Internet)将大量同构或异构的计算机网络连接起来所遵循的协议是______,实现这些同构或异构网络互连的关键设备是______。
TCP/IP 路由器
[解析] 要想极大地发挥网络的作用又必须把许多同构和异构的网络互相连接起来,这就必须解决诸如计算机统一编址、数据包格式转换等一系列问题。解决这一问题的途径是使用TCP/IP中的IP协议(网络互连协议)和路由器(router)。
7. Linux操作系统内核的网络模块可分为两部分:一部分提供对各种网络资源访问的控制,称为网络______;另一部分提供对各种网络硬件的支持,称为网络______。
协议 驱动程序
[解析] Linux操作系统内核的网络模块可分为两部分:一部分提供对各种网络资源访问的控制,称为网络协议;另一部分提供对各种网络硬件的支持,称为网络驱动程序。
8. ARM处理器有7种异常,按向量地址从小到大排列的顺序是:______、未定义指令UND、软件中断SWI、指令预取中止PABT、数据访问中止DABT、______以及快速中断FIQ。
9. 下图是嵌入式系统硬件部分的逻辑组成及其与外部世界关系的示意图,其中的组成部分A是______;组成部分B是______。
中央处理器 用户界面
[解析] 本题考查较简单,主要是嵌入式系统硬件的逻辑组成。硬件的主体是中央处理器和存储器,他们通过I/O接口和I/O设备与外部世界联系,并借助总线相互连接。中央处理器(CPU)由运算器、控制器、寄存器、高速缓冲存储器(Cache)等部件组成,故A是中央处理器;B里面包括按键、键盘、指示灯和屏幕等人机交互设备,他们是用户界面的硬件部分,所以B是用户界面。
10. AND R1,R2,#0x101,若R2=0xFF998877,则R1=______。
11. 已知ARM处理器的R1=0x12345678,R2=0xFF00FF00,则执行指令0RR R0,R1,R2后,寄存器R0=______,R1=______。
0xFF34FF78 0x12345678
[解析] 本题考查ARM处理器的指令格式和寻址方式。R0中是R1和R2逻辑或之后的值;而R1中的值不变。
12. 实时系统的任务时限有两种类型,分别是______和______。
截止时间 任务执行预设时间
[解析] 本题考查对实时系统任务时限的类型的了解。实时系统的任务时限有两种类型,分别是截止时间和务执行预设时间。
13. 采用ADS1.2集成开发工具软件来开发基于ARM微处理器的嵌入式系统时,ADS1.2把目标文件中的信息按照三种存储区域类型来进行划分,即划分为RO段、______、XI段。其中R0段是指______和常数的存储区域,具有只读属性。
RW段 代码
[解析] 本题主要考查嵌入式系统主要开发工具软件ADS1.2如何进行地址映射配置。ADS1.2把目标文件中的信息按照3种存储区域类型来进行划分,即划分为RO段、RW段、ZI段;R0段是指代码存储区和常数存储区,具有只读性质。
14. 嵌入式系统的存储器以半导体存储器为主。随着技术的不断发展,新型存储器不断出现,主要包括FRAM和MRAM,分别称为______存储器和______存储器。
铁电随机存取存储器 磁性随机存取存储器
[解析] 本题考查嵌入式系统涉及到的新型存储器。嵌入式系统的存储器以半导体存储器为主,FRAM和MRAM,分别称为铁电随机存取存储器和磁性随机存取存储器。
15. 若以S3C2410为核心的目标机上,已经移植成功Linux操作系统。若要开发该目标机的Linux应用程序,通常使用a/In-linux-______交叉编译器来编译应用程序。若要对一个应用程序进行调试排错,则应该在编译命令中加______参数对它进行编译。
16. Linux内核主要是由5个子系统组成的,如下图所示,其中的A是______子系统,B是______子系统。
内存管理 进程调度
[解析] 本题考查Linux内核的子系统构成。Linux的内核主要是由5个子系统组成:进程调度;内存管理;虚拟文件系统;网络接口;进程间通信。
17. 在有线通信中,双绞线的特点是成本______、易受外部高频电磁波干扰,误码率较______,传输距离有限,主要应用于固定电话回路和计算机局域网等。
低 高
[解析] 本题主要考查有线通信的传输介质。双绞线的特点是成本低、易受外部高频电磁波干扰,误码率较高,传输距离有限,主要应用于固定电话回路和计算机局域网等。
18. 定时部件是嵌入式系统中经常使用的功能部件,S3C2410的RTC部件是定时部件的一种,它提供日期、时间信号。若RTC部件所设置的间隔时间到将产生IRQ异常,那么,启动引导程序中,可以在地址______处设置一条转移指令,作为IRQ异常服务程序的入口指令。
19. 经典ARM处理器复位后自动进入的地址为______,外部快速中断的向量地址为0x0000001C。
20. 为了用嵌入式系统进行音频信息的处理,必须将声音信号数字化。声音信号数字化的3个步骤是:______、______和编码。
三、综合题便携式血氧仪采用无创伤的血氧检测方法,通过光电信号检测人体手指内动脉血的周期变化特征,从而计算出动脉血氧饱和度(其外形如图所示)。若便携式血氧仪以S3C2410芯片为核心,并外加其他功能电路来进行设计,其基本功能描述如下:
a、利用动脉血液中血红蛋白和还原血红蛋白对红光或红外光吸收率的不同,采用光电电路来无创伤检测动脉血氧饱和度,并检测脉率。
b、若动脉血氧饱和度低于90%,需进行声光报警,声光报警的频率与脉搏的频率一致。
c、便携式血氧仪中能保存1个月中所检测的动脉血氧饱和度、脉率等参数,保存参数时需要同时保存相关的检测时间,并可通过按键“→”和按键“←”来查看。
d、采用普通单色液晶LCD作为显示器,显示动脉血氧饱和度、脉率等参数。
根据上述功能要求的描述,请完善下面的叙述(程序)和回答有关的问题。(完善程序或回答问题所需的寄存器格式见说明)。
说明:下面是试题解答时需要用到的寄存器格式及相关说明。 1)端口E控制寄存器(GPECON)的格式
符号 | 位 | 描述 | 初始状态 |
GPE15 | [31:30] | 00=输入01=输出10=IICSDA 11=保留 | 00 |
GPE14 | [29:28] | 00=输入01=输出10=IICSCL 11=保留 | 00 |
GPE13 | [27:26] | 00=输入01=输出10=SPICLK 11=保留 | 00 |
GPE12 | [25:24] | 00=输入01=输出10=SPIMOSI0 11=保留 | 00 |
GPE11 | [23:22] | 00=输入01=输出10=SPIMISO0 11=保留 | 00 |
GPE10 | [21:20] | 00=输入01=输出10=SDDAT3 11=保留 | 00 |
GPE9 | [19:18] | 00=输入01=输出10=SDDAT2 11=保留 | 00 |
GPE8 | [17:16] | 00=输入01=输出10=SDDAT1 11=保留 | 00 |
GPE7 | [15:14] | 00=输入01=输出10=SDDAT0 11=保留 | 00 |
GPE6 | [13:12] | 00=输入01=输出10=SDCMD 11=保留 | 00 |
GPE5 | [11:10] | 00=输入01=输出10=SDCLK 11=保留 | 00 |
GPE4 | [9:8] | 00=输入01=输出10=IISSDO 11=保留 | 00 |
GPE3 | [7:6] | 00=输入01=输出10=IISSDI 11=保留 | 00 |
GPE2 | [5:4] | 00=输入01=输出10=CDCLK 11=保留 | 00 |
GPE1 | [3:2] | 00=输入01=输出10=IISSCLK 11=保留 | 00 |
GPE0 | [1:0] | 00=输入01=输出10=IISLRCK 11=保留 | 00 |
2)TCFGO寄存器的格式
符号 | 位 | 描述 | 初始状态 |
Reserved | [31:24] | 保留 | 0x00 |
Dead zone length | [23:16] | 这8位用于确定死区长度,死区长度的1个单位等于 Timer0的定时间隔。 | 0x00 |
Prescaler 1 | [15:8] | 这8位确定Timer2、Timer3、Timer4的预分频器值。 | 0x00 |
Prescaler 0 | [7:0] | 这8位确定Timer0、Timer1的预分频器值。 | 0x00 |
3)TCFG1寄存器的格式
符号 | 位 | 描述 | 初始状态 |
Reserved | [31:24] | 保留 | 0x00 |
DMA mode | [23:20] | 选择产生DMA请求的定时器。 0000=不选择(所有采用中断请求) 0001=Timer0 0010=Timer1 0011=Timer2 0100=Timer3 0101=Timer4 0110=保留 | 0000 |
MUX4 | [19:16] | 选择Timer4的分割器值。 0000=1/2 0001=1/4 0010=1/8 0011=1/16 01XX=外部TCLK1 | 0000 |
MUX3 | [15:12] | 选择Timer3的分割器值。 0000=1/2 0001=1/4 0010=1/8 0011=1/16 01XX=外部TCLK1 | 0000 |
MUX2 | [11:8] | 选择Timer2的分割器值。 0000=1/2 0001=1/4 0010=1/8 0011=1/16 01XX=外部TCLK1 | 0000 |
MUX1 | [7:4] | 选择Timer1的分割器值。 0000=1/2 0001=1/4 0010=1/8 0011=1/16 01XX=外部TCLK0 | 0000 |
MUX0 | [3:0] | 选择Timer0的分割器值。 0000=1/2 0001=1/4 0010=1/8 0011=1/16 01XX=外部TCLK0 | 0000 |
|
通过TCFG0、TCFG1的设置,可以确定预分频器值和分割器值,最终通过下面公式计算定时器计数时钟频率。 定时器计数时钟频率=PCLK/(预分频器值+1)/(分割器值) 预分频器值的范围=0~255 分割器值的取值范围=2,4,8,16 4)TCON寄存器的格式
符号 | 位 | 描述 | 初始状态 |
Timer4 | [22] | 确定Timer4的自动装载功能位1=自动装载0=一次 停止 | 0 |
Timer4 | [21] | 确定Timer4的手动更新位1=更新TCNTB4 0=不操作 | 0 |
Timer4 | [20] | 确定Timer4的启动/停止位1=启动0=停止 | 0 |
Timer3 | [19] | 确定Timer3的自动装载功能位1=自动装载0=一次 停止 | 0 |
Timer3 | [18] | 确定Timer3的输出反转位1=TOUT3反转0=不反转 | 0 |
Timer3 | [17] | 确定Timer3的手动更新位1=更新TCNTB3和TCMPB3 0=不操作 | 0 |
Timer3 | [16] | 确定Timer3的启动/停止位1=启动0=停止 | 0 |
Timer2 | [15] | 确定Timer2的自动装载功能位1=自动装载0=一次 停止 | 0 |
Timer2 | [14] | 确定Timer2的输出反转位1=TOUT2反转0=不反转 | 0 |
Timer2 | [13] | 确定Timer2的手动更新位1=更新TCNTB2和TCMPB2 0=不操作 | 0 |
Timer2 | [12] | 确定Timer2的启动/停止位1=启动0=停止 | 0 |
Timer1 | [11] | 确定Timer1的自动装载功能位1=自动装载0=一次 停止 | 0 |
Timer1 | [10] | 确定Timer1的输出反转位1=TOUT1反转0=不反转 | 0 |
Timer1 | [9] | 确定Timer1的手动更新位1=更新TCNTB1和TCMPB1 0=不操作 | 0 |
Timer1 | [8] | 确定Timer1的启动/停止位1=启动0=停止 | 0 |
Reserved | [7:5] | 保留 | 000 |
Dead zone | [4] | 确定死区操作位1=使能0=不使能 | 0 |
Timer0 | [3] | 确定Timer0的自动装载功能位1=自动装载0=一次停止 | 0 |
Timer0 | [2] | 确定Timer0的输出反转位1=TOUT0反转0=不反转 | 0 |
Timer0 | [1] | 确定Timer0的手动更新位1=更新TCNTB0和TCMPB0 0=不操作 | 0 |
Timer0 | [0] | 确定Timer0的启动/停止位1=启动0=停止 | 0 |
5)RTCCON寄存器的格式
符号 | 位 | 描述 | 初始状态 |
CLKRST | [3] | 确定RTC时钟计数器是否复位1=复位0=不复位 | 0 |
CNTSEL | [2] | 选择BCD码1=保留0=合并BCD码 | 0 |
CLKSEL | [1] | 选择BCD时钟1=保留(仅在测试时选择XTAL时钟) 0=XTAL的1/215 | 0 |
RTCEN | [0] | 确定RTC使能/不使能1=使能0=不使能 | 0 |
6)TICNT寄存器的格式
符号 | 位 | 描述 | 初始状态 |
TICNT INT ENABLE | [7] | 时间片计数器中断使能 1=使能0=不使能 | 0 |
TICK TIMECOUNT | [6:0] | 时间片计数器的值,范围为1~127。 该计数器是减1计数,在计数过程中不能进行读操作。 | |
|
7)RTCALM寄存器的格式
符号 | 位 | 描述 | 初始状态 |
Resetved | [7] | 保留 | 0 |
ALMEN | [6] | 全局报警使能位1=使能0=不使能 | 0 |
YEAREN | [5] | 年报警使能位1=使能0=不使能 | |
MONREN | [4] | 月报警使能位1=使能0=不使能 | |
DATEEN | [3] | 日报警使能位1=使能0=不使能 | |
HOUREN | [2] | 时报警使能位1=使能0=不使能 | |
MINEN | [1] | 分报警使能位1=使能0=不使能 | |
SECEN | [0] | 秒报警使能位1=使能0=不使能 | |
1. 在便携式血氧仪的硬件平台设计时,除了需要设计最小系统所需的时钟电路、复位电路等外,还必须设计光电信号采集电路来采集动脉血对红光或红外光的反射。现选用一个波长660nm的红光LED和一个波长910nm的红外光LED作为光源,其阳极接电源正极,且由GPE15引脚和GPE14引脚分别加同相驱动电路后控制相关LED的阴极使其发光。那么,GPE15或GPE14输出______电平时,其控制的LED发光。在相关驱动程序中,初始化GPE15或GPE14引脚功能的语句可以是:
rGPECON=((rGPECON|0x50000000)&______); //rGPECON是端口E的控制寄存器
只控制波长910nm的红外光LED亮(GPE14引脚控制)的语句可以是:
rGPEDAT=rGPEDAT&______; //rGPEDAT是端口E的数据寄存器。
只控制波长660nm的红光LED灭(GPE15引脚控制)的语句可以是:
rGPEDAT=rGPEDAT | ______;
低0 0x5FFFFFFF 0xBFFF 0x8000
[解析] S3C2410是基于ARM9内核的典型ARM芯片,采用ARM920T核,属于中高档32位嵌入式微处理器。本题主要考查基于S3C2410的嵌入式系统开发。涉及到的知识点包括嵌入式最小系统、GPIO接口典型应用、计数器以及相关应用的驱动程序设计等等。
外接LED发光管,有共阳极接法和共阴极接法两种。当采用共阳极接法时,相应的输出口输出低电平时,对应的二极管被点亮。驱动程序即是给相应的控制寄存器赋值。GPE15或GPE14作为输出口,相应的置0,即0x5FFFFFFF。控制LED亮,则相应端口置0;控制LED灭则相应端口置1。
2. 硬件平台设计时,还需设计一个光敏电路来接收动脉血对红光或红外光的反射光,将光信号转换成电流。经过放大的光电流信号,必须经过______转换电路,变为数字信号后,才可以输入CPU进行处理。由于脉搏波的能量主要分布在0.5~5Hz范围,因此,对脉搏波信号的采样频率至少应该为______Hz,所得到的数字脉搏波信号才不至于失真。
模/数(A/D) 10
[解析] 将模拟信号转变为数字信号需要模/数(A/D)转换电路;根据香农采样定理,采样周期不得低于信号的1/2,故采样频率应该至少是信号最高频率的2倍。
3. 为了满足声光报警的频率(即报警LED闪烁频率及蜂鸣器“嘀…嘀…”呜叫频率)与脉搏频率一致,设计时选用Timer1部件来产生一个时间间隔,该时间间隔为脉搏波周期的1/2。若检测出脉搏波频率为2Hz,系统主频参数PCLK为264MHz,分割器值选择为16,预分频器值选择为99,那么,Timer1部件产生的时间间隔应为______ms,初始化函数可以设计如下,请补充完善。(注:下面程序中所用的参数请用十六进制表示)
void Timer1 Int(void)
{
//设置定时器配置寄存器0(TCFG0)
rTcFG0=______; //dead zone=0, Timer1预分频器值设99
//设置定时器配置寄存器1(TCFG1)
rTCFG1=______; //工作在中断方式,分割器值为16
//设置计数常数
rTCNTB1=0xA122;
//设置控制寄存器TCON
rTCON=______; //仅更新TCNTB1和TCMPB1
rTCON=______; //仅Timer1启动
}
250 0x00000063 0x00000030 0x00000200 0x00000100
[解析] 脉搏周期为0.5s,故时间间隔为0.25s即250ms;定时器计数脉冲周期=1/(PCLK/(预分频值+1)/分频系数),则根据计算,可得寄存器0的端口值为0x63,寄存器1的端口值为0x30;控制寄存器设置参照寄存器格式,对相应位进行赋值。
4. 在保存所检测的动脉血氧饱和度、脉率等参数时,需同时保存检测时间。检测时间通过读取S3C2410芯片内部的______部件来获得实时的日期及时间。在相关驱动程序中,可以用下面一段语句来初始化该部件。
void R_init(void)
{
//初始化相关寄存器,rRTCCON是控制寄存器变量。
rRTCCON=rRTCCON|______; //设置使能该部件的控制位
rRTCALM=______; //报警功能(即闹钟)全部禁止
rRTCRST=0x00;
rTICNT=______; //时间间隔设置为1s
rRTCCON=(rRTCCON&______); //设置不使能该部件的控制位
……//省略了其他语句
}
RTC 0x01 0x00 0xFF 0xFE
[解析] 系统日期和时间可通过读取芯片内部的实时时钟部件来获得;设置使能控制位即对寄存器相应位赋值1,即0x01;闹钟全禁止,则全赋值0,即0x00;时间间隔设置参照寄存器格式,为0xFF;若设置为不使能,则相应位置0,即0xFE。
5. 设计按键“→”和按键“←”的电路时,选择GPE8、GPE9来分别连接。若按键按下时,对应的GPIO引脚将为“0”,否则为“1”。那么,在相关驱动程序中,可以用语句:rGPECON=rGPECON&______来初始化GPE8、GPE9为输入,并可以用下面一段语句来判断是哪个命令按键被唯一按下。
temp=rGPEDAT & 0x0300; //temp是一个8位二进制变量,rGPEDAT是端口E的数据寄存器
switch(temp)
{case ______; //判断是否“→”按键被唯一按下,“→”键连接到GPE8
……//省略了其他语句
case ______; //判断是否“←”按键被唯一按下,“←”键连接到GPE9
……//省略了其他语句
}
设计单色LCD显示屏的接口电路时,采用S3C2410芯片的GPE0~GPE7连接到LCD模块的8位数据线D0~D7上,用来传输显示信息。在相关驱动程序中,可以用下面语句来初始化GPE0~GPE7为输出:
rGPECON=((rGPECON|0x00005555)&______)
0xFFF0FFFF 0x0200 0x0100 0xFFFF5555
[解析] 键盘和显示屏等外设是GPIO口的典型应用,注意接线方式和输出口的高低电平,并用来对相应的控制寄存器对应的位进行赋值。对GPE8、GPE9端口初始化为输入,对相应位置0,即0xFFF0FFFF;对GPE8、GPE9端口分别赋值置1,则分别是0x0200,0x0100;初始化GPE0~GPE7八个端口为输出,则置1,即0xFFFF5555。