《2013年1月嵌入式系统B卷.pdf》由会员分享,可在线阅读,更多相关《2013年1月嵌入式系统B卷.pdf(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、20132013 年年 1 1 月嵌入式操作系统月嵌入式操作系统 B B 卷卷一、选择题(共一、选择题(共 1010 分,每小题分,每小题 1 1 分)分)1在 uCOS-II 操作系统中,下面的选项_可以做任务的标识。A.任务的优先级B.控制块链表 C.空控制块链表D.中断号2.下面的操作系统中,占用存储空间最小的操作系统是_。A.WindowsXB.LinuxC.ucos-2D.WinCE3.ARM 系列微处理器堆栈的增长方向是_。A.向上 B.向下C.不变D.由 SP 决定4.在嵌入式 ARM 处理器中,中断方式优先级最高的是_。A.ResetB.数据中止C.FIQD.IRQ5.在 uC
2、OS-II 操作系统中,定义变量 OSRdydGrp,通过 OSRdydGrp 再访问任务就绪表,是为了查询就绪表中任何一个任务的状态时_。A.时间相等;B.延长查询时间;C.快速查询;D.增加调度可靠性6.下面的嵌入式操作系统中,哪个很少用在手机上_。A.SymbianB.linuxC.Win CED.VxWorks7、在 uCOS-II 操作系统中,下面 4 个选项中,不正确答案是_。A.先分区,区内分块;B.先分块,块内分区;C.OS_MEM 定义内存分区分块数据结构;D.内存控制块链表记录内存使用情况8、在 uCOS-II 操作系统中,要申请一个内存块,正确函数是_。A.OSMemCr
3、eat();B.OSMemGet();C.OSMemPut();D.OSMemQuery()9、在将 ucos_II 操作系统移植到 ARM 处理器上时,不需要修改的文件是_。A.B.C.D.OSTaskInit10、在 uc/os 操作系统中,下面哪个函数与时间无关_。A.OSTimeDly()B.OSTimeGet()C.OSIntNesting()D.OSTimeDlyHMSM()得分二、填空题(共二、填空题(共 1010 分,每空分,每空 1 1 分)分)11_ _叫 ucos_II 的系统时钟;12_叫时钟节拍;13_叫任务控制块链表;14任务的定义是_。15-17在 uC/OS-I
4、I 中,使用_、_和_这些被称作事件的中间环节来实现任务之间的通信。18-20嵌入式操作系统按实时性要求分有 3 类,它们是_、_和_。得分三、判断题(共三、判断题(共 1010 分,每题分,每题 2 2 分,正确的打,不正确的打)分,正确的打,不正确的打)21嵌入式系统的开发环境和运行环境一致。()22不需将软件引导到 RAM 中而是让其直接在 NorFlash 上运行,这种方式启动最快。()23ARM 采用的体系结构是冯.诺依曼结构。()24嵌入式系统可以采用提供不同的时钟频率技术来降低功效。()25ARM 指令集和 Thumb 指令集均有切换处理器状态的指令,并可在两种工作状态之间切换,
5、在开始执行代码时,应该处于 ARM状态。()得分四、简答题(答案写在试卷背面,每小题四、简答题(答案写在试卷背面,每小题 5 5 分,共分,共 40 40 分)分)26简述 uCOS-II 的中断响应过程27简述嵌入式软件设计和调试流程。28什么是 JTAG。29在基于 ARM 的嵌入式系统中,bootloader 作用是什么。30叙述在任务就绪表中,查找最高优先级的算法和过程31叙述已知任务 A 的优先级是 prio,将其置为就绪态的算法和过程;32已知任务 B 的优先级是 prio1,已在就绪表中,将其脱离就绪态的算法和过程。33如何在中断服务程序中激活一个任务?得分五、实验和程序分析题(
6、答案写在试卷背面,共五、实验和程序分析题(答案写在试卷背面,共 3030 分)分)34详细写出程序执行的过程(15 分)35在执行程序的过程中,在实验箱能够看到的现象(10 分)36写出程序中带有标号语句的注释(5 分)#include#include#include#include OS_STK StackLEDSTACKSIZE=0,;OS_STK StackSEGSTACKSIZE=0,;char IdLED=1;char IdSEG=2;void TaskLED(void*Id);void TaskSEG(void*Id);OS_EVENT*Mbox1;void User_LED_Bl
7、ink(void)static int led_status=0;led_status+=1;if(led_status%2=0)Led_Display(0 x0f);elseLed_Display(0 x00);void User_SEG_Blink(void)static unsigned char seg_value=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 x88,0 x83,static int seg_status=0;0 xc6,0 xa1,0 x86,0 x8e;void TaskLED(void
8、*Id)char*Msg;*(unsigned char*)0 x)=0 x3e;*(unsigned char*)0 x)=seg_valueseg_status;/(5)seg_status+=1;if(seg_status 15)seg_status=0;INT8Uerr;ARMTargetStart();for(;)Msg=(char*)OSMboxPend(Mbox1,0,&err);/(2)uHALr_printf(Msg);User_LED_Blink();void TaskSEG(void*Id);charMsg100;INT8Uerr;int nCount=0;for(;)s
9、printf(Msg,TaskSEG%d,nCount+);OSMboxPost(Mbox1,Msg);/User_SEG_Blink();OSTimeDly(100);/(4)void main(void)ARMTargetInit();(3)OSInit();Mbox1=OSMboxCreate(void*)0);/(1)OSTaskCreate(TaskLED,(void*)&IdLED,(OS_STK*)&StackLEDSTACKSIZE-1,5);OSTaskCreate(TaskSEG,(void*)&IdSEG,(OS_STK*)&StackSEGSTACKSIZE-1,13)
10、;OSStart();return;答案部分答案部分一、单项选择题(每小题一、单项选择题(每小题 1 1 分,共分,共 1010 分分)题号题号1 12 23 34 45 56 67 78 89 91010答案答案A AC CD DA AA AD DB BB BC CD D二、填空题(每空二、填空题(每空 1 1 分,共分,共 1010 分)分)11 任务程序代码、任务堆栈、任务控制块12 程序实体13OSTCBNext、OSTCBPrev14 _大端格式_,_小端格式_15_通信_,_任务调度_16 总是运行优先级高的那个任务17-18_信号量、邮箱(消息邮箱)和消息队列_19-20 1MB
11、,4KB三、判断题(正确的打,不正确的打,每题三、判断题(正确的打,不正确的打,每题 1 1 分,共分,共 8 8 分)分)题号题号答案答案2121X X2222X X2323X X2424 2525 2626 2727X X2828X X四、简答题(四、简答题(31-3631-36 小题每小题小题每小题 5 5 分,分,3737 小题小题 1010 分,共分,共 40 40 分)分)29答:(1)将下一条指令的地址存入相应连接寄存器 LR,以便程序在处理异常返回时能从正确的位置重新开始执行。(2)将 CPSR 复制到相应的 SPSR 中。(3)根据异常类型,强制设置 CPSR 的运行模式位。
12、(4)强制 PC 从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。30答:(1)编辑:创建工程;添加文件、编写程序;汇编语言加 C 语言(2)编译:配置编译、汇编和连接参数;编写连接脚本文件;编译(3)调试:连接调试器;下载程序;运行、调试(4)固化:通过仿真器烧写 flash;专用或通用的编程器;通过 bootloader 烧写 flash31答:JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试。通过 JTAG接口,可对芯片内部的所有部件进行访问,因而是开发调试嵌入式系统的一种
13、简洁高效的手段。目前 JTAG接口的连接有两种标准,即 14 针接口和 20 针接口。32答:BootLoader 是系统加电后运行的第一段软件代码。简单地说,BootLoader 就是在操作系统内核或用户应用程序运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图(有的 CPU 没有内存映射功能如S3C44B0),从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序准备好正确的环境。从操作系统的角度看,BootLoader 的总目标就是正确地调用内核来执行。33答:usr:ARM 处理器正常的程序执行状态;fiq:用于高速数据传
14、输或通道处理;irq:用于通用的中断处理;svc:操作系统使用的保护模式;abt:用于虚拟存储及存储保护;und:当出现未定义指令终止时进入该模式;sys:运行具有特权的操作系统任务34设 Prio=00D5 D4 D3 D2 D1 D0y=UnMapTblOSRdyGrpx=UnMapTblOSRdyTblyOSProHighRdy=(y3)+x或:y=UnMapTblOSRdyGrpOSProHighRdy=(INT8U)(y3;OSRdyTblPrio3|=OSMapTblPrio&0 x07;36设 Prio=00D5 D4 D3 D2 D1 D0第 y 组即元素 OSRdyTbly(
15、第 y 行)的第x 位(D2 D1 D0位)清0,如果这时第y 组即 OSRdyTbly中无就绪任务则 OSRdyGrp中的第 y 位清零;否则,第 y 组即 OSRdyTbly中还有就绪任务,则 OSRdyGrp 中的第 y 位不清零。If(OSRdyTblPrio3&=OSMapTblPrio&0 x07)=0)OSRdyGrp&=OSMapTblPrio3);37在中断服务程序中只是通过向任务发消息的方法去激活这个任务。38答:A、睡眠态;B、就绪态;C、运行态;D、中断服务态;E、等待状态五、阅读下列程序,完成下列要求:五、阅读下列程序,完成下列要求:(共(共 2020 分)分)39a
16、c_key 是共享资源 S 的信号量40启动多任务;运行 MyTask;修改信号量为无效;占用共享资源 s;再修改信号量为有效;MyTask延时挂起 20 个时钟节拍;运行 YouTask;修改信号量为无效;占用共享资源 s;再次占用共享资源 s;再修改信号量为有效;YouTask延时挂起 10 个时钟节拍;41MyTask访问共享数据 s YouTask访问共享数据 s YouTask访问共享数据 sYouTask访问共享数据 s YouTask访问共享数据 s42(1)信号量初值设为 1,表示 s 没有任务占用(2)保存 DOS 环境(3)安装 uC/OS-II 中断(4)关闭中断(5)创建任务 YouTask(6)初始化 uC/OS-II 的统计任务(7)延时 20 个时钟节拍(8)YoyTask任务判断 s 没被其它任务占用,即 ac_key=TRUE;改变信号量值 ac_key=FALSE,然后占用共享资源。