还剩16页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
第一章绪论
一、填空题
1、ARMAdvancedRISCMachines,既可以认为是一个公司的名字,也可以认为是对一类处理器的通称,还可以认为是一种技术的名字1991年ARM公司成立于英国剑桥,主要出售芯片设计技术的授权,将ARM技术知识产权IP核的技术转让给不同厂商,形成各种芯片,其中IP核是指(是一段具有特定电路功能的硬件描述语言程序)
2、从技术的角度,嵌入式系统定义为以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统是将(应用程序、操作系统和计算机硬件)集成在一起的系统
3、(MCS-51系列的单片机)是低端嵌入式系统中用得最多的微处理器
4、嵌入式最小硬件系统由(时钟系统、供电系统、存储器系统、调试测试接口、复位及其配置系统和嵌入式控制器)组成
5、计算机系统由(硬件和软件)构成,在发展初期并没有操作系统这个概念,用户使用(监控程序)来使用计算机
6、到目前为止,主流的操作系统有三种(多道批处理、分时和实时操作系统)
7、对基于芯片的开发来说,应用程序一般是一个无限的循环,可称为(前后台系统或超循环系统)
8、中断服务程序处理异步事件,这部分可以看成前台行为,前台也叫(中断级)时间相关性很强的关键操作一定是靠中断服务程序来保证的
9、指处理时不可分割的代码,运行这些代码不允许被打断,称为(代码的临界区),也称为临界区
10、可以被一个以上任务使用的资源叫做(共享资源)
11、多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务之间的通信内核提供的基本服务是(任务切换)
12、
13、多数实时内核是(基于优先级调度法)的
二、判断题
1、嵌入式系统一定是实时系统(×)
2、如果“软实时系统”没有满足指定的时间约束并不会导致灾难性的后果,而对于“硬实时系统”来说却是灾难性的(√)
3、硬件抽象层是位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化它隐藏了特定平台的硬件接口细节为操作系统提供虚拟硬件平台使其具有硬件无关性可在多种平台上进行移植(√)
4、操作系统是计算机中最基本的程序操作系统负责计算机系统中全部软硬资源的分配与回收、控制与协调等并发的活动;操作系统提供用户接口,使用户获得良好的工作环境;操作系统为用户扩展新的系统功能提供软件平台(√)
5、调度是内核的主要职责之一调度就是决定该轮到哪个任务运行了(√)
6、非占先式调度法也称作合作型多任务,各个任务彼此合作共享一个CPU(√)
7、占先式内核要求每个任务自我放弃CPU的所有权占先式调度法也称作合作型多任务,各个任务彼此合作共享一个CPU(×)
8、当系统响应时间很重要时,要使用占先式内核最高优先级的任务一旦就绪,总能得到CPU的控制权(√)
9、中断是一种硬件机制,用于通知CPU有个异步事件发生了中断一旦被识别,CPU保存部分(或全部)上下文即部分或全部寄存器的值,跳转到专门的子程序,称为中断服务子程序(ISR)中断服务子程序做事件处理,处理完成后,在前后台系统中,程序回到后台程序(√)
10、中断是一种硬件机制,用于通知CPU有个异步事件发生了中断一旦被识别,CPU保存部分(或全部)上下文即部分或全部寄存器的值,跳转到专门的子程序,称为中断服务子程序(ISR)中断服务子程序做事件处理,处理完成后,对占先式内核而言,让进入就绪态的优先级最高的任务开始运行(√)
11、中断是一种硬件机制,用于通知CPU有个异步事件发生了中断一旦被识别,CPU保存部分(或全部)上下文即部分或全部寄存器的值,跳转到专门的子程序,称为中断服务子程序(ISR)中断服务子程序做事件处理,处理完成后,对非占先式内核而言,程序回到被中断了的任务(√)
三、论述题
1、什么是嵌入式系统?从两个方面说明嵌入式系统的基本概念答
(1)从技术的角度定义以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统是将应用程序、操作系统和计算机硬件集成在一起的系统
(2)从系统的角度定义嵌入式系统是设计完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统术语嵌入式反映了这些系统通常是更大系统中的一个完整的部分,称为嵌入的系统嵌入的系统中可以共存多个嵌入式系统
2、下图中,分别表示什么系统?答:分别是前后台系统非占先操作系统占先操作系统第二章嵌入式系统的硬件基础
一、填空题
1、与冯.诺曼结构处理器比较,哈佛结构处理器有两个明显的特点1)使用两个独立的(存储器)模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;2)使用独立的(两条总线),分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联
2、ARM7系列使用(3级)流水线
3、通过分时复用的方式,将信息以一个或多个源部件传送到一个或多个目的部件的一组传输线是电脑中传输数据的公共通道,将其称为(总线)
4、基于蓝牙接口和红外接口的传输设备,(蓝牙技术)传输距离远
5、嵌入式系统中的触摸屏分为(电阻式、电容式和电感式)三种
二、判断题
1、复杂指令集CIS具有大量的指令和寻址方式,指令长度可变8/2;CRISC精简指令集只包含最有用的指令,指令长度固定,确保数据通道快速执行每一条指令,使CPU硬件结构设计变得更为简单(√)
2、冯·诺依曼结构的处理器中程序存储器和数据存储器公用一条总线它需要事先编制程序,事先将程序包含指令和数据存入主存储器中,计算机在运行程序时就能自动地、连续地从存储器中依次取出指令且执行(√)
3、在存储器系统中,寄存器比本地存储器(Flash、ROM、磁盘)的时钟周期短(√)
三、论述题
1、嵌入式系统的硬件由哪几个组成部分?答第三章嵌入式ARM体系结构
一、填空题
1、ARM微处理器是整个系统的核心,通常由3大部分组成(控制单元、算术逻辑单元和寄存器)
2、在ARM7TDMI处理器内部有(37个)用户可见的寄存器
3、ARM处理器为RISC芯片,其简单的结构使ARM内核非常小,这使得器件的功耗也非常低数据处理操作只针对(寄存器)的内容,而不直接对(存储器)进行操作;
4、各ARM体系结构版本中V1版本的基本的数据处理指令,不包括(乘法)
5、ARM7TDMI的流水线分3级,分别为(取指,译码,执行)
6、ARM处理器支持下列数据类型有(字节8位,半字16位(必须分配为占用两个字节),字32位(必须分配为占用4各字节))
7、ARM指令的长度刚好是(1个字(分配为占用4个字节),Thumb指令的长度刚好是半字(占用2个字节))
8、ARM7TDMI处理器有两种操作状态(ARM状态和Thumb状态)
9、ARM7TDMI处理器的模式有以下七种(用户,系统,中断,快中断,管理,中止,未定义)
10、除(用户模式)外,其它模式均为特权模式ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式
11、中断,快中断,管理,中止,未定义这五种模式称为(异常模式)它们除了可以通过程序切换进入外,也可以由特定的异常进入当特定的异常出现时,处理器进入相应的模式每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠
12、(用户和系统)这两种模式都不能由异常进入,而且它们使用完全相同的寄存器组
13、ARM7TDMI体系结构的处理器,在汇编语言中寄存器(R0~R13)为保存数据或地址值的通用寄存器它们是完全通用的,不会被体系结构作为特殊用途,并且可用于任何使用通用寄存器的指令
14、ARM7TDMI体系结构的处理器中(R0~R7)为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的(32位)物理寄存器
15、ARM7TDMI处理器中的寄存器R14为(链接寄存器),在结构上有两个特殊功能在每种模式下,模式自身的R14版本用于保存子程序返回地址;当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)
16、ARM7TDMI处理器中的寄存器R15为(程序计数器(PC)),它指向正在取指的地址可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况如果R15使用的方式超出了这些限制,那么结果将是不可预测的
17、ARM7TDMI处理器中的寄存器CPSR为(程序状态寄存器),在异常模式中,另外一个寄存器“程序状态保存寄存器(SPSR)”可以被访问每种异常都有自己的SPSR,在进入异常时它保存CPSR的当前值,异常退出时可通过它恢复CPSR
18、只要正常的程序流被暂时中止,例如响应一个来自外设的中断,处理器就进入(异常模式)
19、当nRESET信号被拉低时(一般外部复位引脚电平的变化和芯片的其它复位源会改变这个内核信号),ARM7TDMI处理器放弃正在执行的指令在复位后,除(PC和CPSR)之外的所有寄存器的值都不确定
20、ARM7TDMI处理器的存储器系统有两种映射机制(小端存储器系统和大端存储器系统)
21、一个基于ARM内核的芯片可以只支持大端模式或小端模式,也可以两者都支持通常,(小端模式)是ARM处理器的默认形式
二、判断题
1、ARM7的微处理器采用的是哈佛结构(×)
2、“ARM核”并不是芯片,ARM核与其它部件如RAM、ROM、片内外设组合在一起才能构成现实的芯片(√)
3、ARM7TDMI中T的意思是支持片上调试(×)
4、ARM7TDMI中T的意思是支持高密度16位的Thumb指令集(√)
5、ARM7TDMI处理器使用了冯·诺依曼(VonNeumann)结构,指令和数据共用一条32位总线只有装载、存储和交换指令可以对存储器中的数据进行访问(√)
6、ARM7TDMI处理器有两种操作状态之间的切换并不影响处理器模式或寄存器内容(√)
7、ARM7TDMI处理器共有37个寄存器,分成两大类31个通用32位寄存器;6个状态寄存器(√)
8、ARM7TDMI处理器中的寄存器R8~R12有两个分组的物理寄存器一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式这样在发生FIQ中断后,可以加速FIQ的处理速度(√)
9、ARM7TDMI处理器中的寄存器R
13、R14分别有6个分组的物理寄存器一个用于用户和系统模式,其余5个分别用于5种异常模式(√)
10、寄存器R13常作为堆栈指针(SP)在ARM指令集当中,没有以特殊方式使用R13的指令或其它功能,只是习惯上都这样使用但是在Thumb指令集中存在使用R13的指令(√)
11、ARM7TDMI处理器的存储器系统的在小端格式中,高位数字存放在高位字节中因此存储器系统字节0连接到数据线7~0低位对齐(√)
12、ARM7TDMI处理器的大端存储器系统的在大端格式中,高位数字存放在低位字节中因此存储器系统字节0连接到数据线31~24高位对齐(√)
13、一个基于ARM内核的芯片可以只支持大端模式或小端模式,也可以两者都支持通常,小端模式是ARM处理器的默认形式(√)
三、简答题
1、当多个异常同时发生时,一个固定的优先级系统决定它们被处理的顺序请在下表中,由高至低排列复位、数据中止、FIQ、IRQ、预取中止、未定义和SWI等异常的优先级异常类型优先级1(最高优先级) 234567(最低优先级)答异常类型优先级复位1(最高优先级) 数据中止2FIQ3IRQ4预取中止5未定义指令6SWI7(最低优先级)
四、分析题
1、回答以下关于R14(LR)寄存器与子程序调用的问题
(1)程序A执行过程中调用的是哪个程序?(程序B)
(2)程序跳转至标号Lable,执行程序B同时硬件将“BLLable”指令的下一条指令所在地址存入哪里?(R14(LR))
(3)程序B执行最后,将哪个寄存器的内容放入PC,返回程序A(R14寄存器)
2、以下两图是R14寄存器发生嵌套时的两种使用情况仔细理解图示,并回答以下问题图1在用户模式下执行程序时发生IRQ中断图2在IRQ模式下的中断处理程序重新使能IRQ中断,并且发生了嵌套的IRQ中断
(1)图1中,执行用户模式下的程序;发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14有没有被破坏?(没有)
(2)图1中,IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,能否正确返回之前被中断的程序(能)
(3)如图2所示,如果在IRQ处理程序中打开IRQ中断,并且再次发生IRQ中断;硬件将返回地址保存在R14_irq寄存器中,原来保存的返回地址会不会被覆盖?(会)
(4)图2中,在程序B返回到程序A,然后在返回到用户模式下被中断的程序时,能不能正确返回?(不能)
(5)如何防止图2中的情况发生,该怎么做?(确保R14的对应版本在发生中断嵌套时不再保存任何有意义的值(将R14入栈),或者切换到其它处理器模式下)
3、将0x12345678h字数据的分别以大小端存储方式存储答:第四章ARM7指令集
一、填空题
1、ARM处理器具有9中基本寻址方式,分别为(寄存器寻址,立即寻址,寄存器移位寻址,寄存器间接寻址,基址寻址,多寄存器寻址,堆栈寻址,块拷贝寻址,相对寻址)
2、指令MOVR1R2采用的是(寄存器寻址)的寻址方式
3、堆栈是一个按特定顺序进行存取的存储区,操作顺序为“(后进先出)”
4、存储器堆栈可分为(向上生长)和(向下生长)两种方式
5、ARM处理器是典型的RISC处理器,对存储器的访问只能使用加载和存储指令实现存储器访问指令分为(单寄存器操作指令)和(多寄存器操作指令)
二、程序阅读题
1、指令MOVR0R2LSL#3;执行前,各寄存器的值如下,请写出指令执行后,各寄存器的值答指令执行后,各寄存器的值为
2、指令LDMIAR1!{R2-R7R12}执行什么的操作并给出指令执行前后寄存器的变化情况指令执行前各寄存器的状态答
(1)将R1指向的单元中的数据读出到R2~R
7、R12中R1自动加4
(2)指令执行后各寄存器的状态如下指令执行前各寄存器的状态
3、读下面的程序,说明这段程序的功能AREAExample1CODEREADONLY;声明代码段Example1ENTRY;标识程序入口CODE32;声明32位ARM指令STARTMOVR0#0;设置参数MOVR1#10LOOPBLADD_SUB;调用子程序ADD_SUBBLOOP;跳转到LOOPADD_SUBADDSR0R0R1;R0=R0+R1MOVPCLR;子程序返回END;文件结束答实现两个寄存器相加
4、R0和R1中有两个32位数,若R0R1,则R0=R0-R1;若R0R1,则R1=R1-R0;若R0=R1,则R
1、R0保持不变1请用CMPB和SUB指令完成上述操作2请用条件SUB指令完成上述操作
5、用合适的指令实现以下功能ar0=16 br1=r0*4cr0=r1/16 dr1=r2*
76、说明下列指令的功能aADDSr0r1r1LSL#2bRSBr2r1#
07、下列指令序列完成什么功能?ADDr0r1r1LSL#1SUBr0r0r1LSL#4ADDr0r0r1LSL#
78、对比说明ADR、ADRL与LDR的区别与联系
9、编写一段C语言与汇编语言的混合编程代码,在C语言程序中调用汇编语言代码,完成字符串STR1和STR2内容的互换
10、下列语句中,那些是无效的汇编语言指令?并指出无效指令中的错误1ABC MOV R1,#22Count RN R0 3USR_STACK Equ 64 4START LDR R0,=0x1123456;R0=bx123456H5STARTLDR R0,=0x11234566START MOV R0,#1 MOV R2,#3
11、试编写程序,实现计算2+4+6+8+…+2N的值
12、试编写汇编程序实现32位除法功能第五章基于ARM的硬件系统设计
1、嵌入式最小系统的结构图答
2、简述S3C44B0X最小系统应包括哪些部分?
3、S3C44B0X可使用的外部晶振频率范围是多少(使用/不使用PLL功能时)?
4、计算PLL设置值设一个基于S3C44B0X的系统使用的晶振为
11.0592MHZ石英晶振,请计算出最大的系统时钟频率为多少MHZ?此时PLL的M值和P值为多少?第六章嵌入式实时操作系统
一、填空题
1、实时系统的特点是,如果逻辑和时序出现偏差将会引起严重后果的系统有两种类型的实时系统(软实时系统)和(硬实时系统)
2、可以被一个以上任务使用的资源叫做(共享资源)
3、每个任务都有5种状态,这5种状态是(休眠态,就绪态、运行态、挂起态等待某一事件发生和被中断态)
4、多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务之间的通讯内核提供的基本服务是(任务切换)
5、当两个或两个以上任务有同样优先级,内核允许一个任务运行事先确定的一段时间,叫做时间额度(quantum),然后切换给另一个任务,也叫做(时间片调度)
6、应用程序执行过程中诸任务优先级不变,则称之为(静态)优先级应用程序执行过程中,任务的优先级是可变的,则称之为(动态)优先级
7、与共享资源打交道时,使之满足互斥条件最一般的方法有(关中断、使用测试并置位指令、禁止做任务切换、利用信号量)
8、处理共享数据时保证互斥,最简便快捷的办法是(关中断)和(开中断)
9、信号是只有两个值的变量,信号量是计数式的只取两个值的信号是只有两个值(0和1)的量,因此也称之为信号量
10、一般地说,对信号量只能实施三种操作(初始化)INITIALIZE,也可称作建立CREATE;(等信号)WAIT也可称作挂起PEND;(给信号)SIGNAL或发信号POST
11、两个任务无限期地互相等待对方控制着的资源,称作(死锁或抱死)
12、任务间信息的传递有两个途径(通过全程变量)或(发消息给另一个任务)
13、中断是一种硬件机制,用于通知CPU有个异步事件发生了中断一旦被识别,CPU保存部分或全部现场Context即部分或全部寄存器的值,跳转到专门的子程序,称为(中断服务子程序ISR)
14、从中断发生到开始执行用户的中断服务子程序代码来处理这个中断的时间,称为(中断响应)
15、(时钟节拍)是特定的周期性中断这个中断可以看作是系统心脏的脉动中断之间的时间间隔取决于不同的应用,一般在10mS到200mS之间
16、三种类型的实时系统是(前后台系统,不可剥夺型内核和可剥夺型内核)
二、判断题
1、很多基于微处理器的产品采用前后台系统设计,例如微波炉、电话机、玩具等在另外一些基于微处理器的应用中,从省电的角度出发,平时微处理器处在停机状态halt,所有的事都靠中断服务来完成(√)
2、代码的临界段也称为临界区,指处理时不可分割的代码一旦这部分代码开始执行,则不允许任何中断打入(√)
3、任何为任务所占用的实体都可称为资源资源可以是输入输出设备,例如打印机、键盘、显示器,资源也可以是一个变量,一个结构或一个数组等(√)
4、实时应用程序的设计过程,包括如何把问题分割成多个任务,每个任务都是整个应用的某一部分,每个任务被赋予一定的优先级,有它自己的一套CPU寄存器和自己的栈空间(√)
5、任务的休眠态相当于该任务驻留在内存中,但并不被多任务内核所调度(√)
6、就绪意味着该任务已经准备好,可以运行了,但由于该任务的优先级比正在运行的任务的优先级低,还暂时不能运行(√)
7、运行态的任务是指该任务掌握了CPU的控制权,正在运行中(√)
8、挂起状态也可以叫做等待事件态WAITING,指该任务在等待,等待某一事件的发生,例如等待某外设的I/O操作,等待某共享资源由暂不能使用变成能使用状态,等待定时脉冲的到来或等待超时信号的到来以结束目前的等待(√)
9、单片机一般不能运行实时内核,因为单片机的RAM很有限(√)
10、多数实时内核是基于优先级调度法的,CPU总是让处在就绪态的优先级最高的任务先运行(√)
11、不可剥夺型内核要求每个任务自我放弃CPU的所有权不可剥夺型调度法也称作合作型多任务,各个任务彼此合作共享一个CPU(√)
12、不可剥夺型内核的异步事件是由中断服务来处理的,中断服务以后控制权还是回到原来被中断了的那个任务,直到该任务主动放弃CPU的使用权时,另外一个高优先级的任务才能获得CPU的使用权(√)
13、使用不可剥夺型内核时,几乎不需要使用信号量保护共享数据运行着的任务占有CPU,而不必担心被别的任务抢占(√)
14、使用可剥夺型内核,最高优先级的任务什么时候可以执行,可以得到CPU的控制权是可知的使用可剥夺型内核使得任务级响应时间得以最优化(√)
15、可剥夺型内核总是让就绪态的高优先级的任务先运行,中断服务程序可以抢占CPU,到中断服务完成时,内核让此时优先级最高的任务运行(不一定是那个被中断了的任务)(√)
16、可重入型函数可以被一个以上的任务调用,而不必担心数据的破坏可重入型函数任何时候都可以被中断,一段时间以后又可以运行,而相应数据不会丢失可重入型函数或者只使用局部变量,即变量保存在CPU寄存器中或堆栈中(√)
17、目前,μC/OS-Ⅱ不支持时间片轮番调度法应用程序中各任务的优先级必须互不相同(√)
18、信号量实际上是一种约定机制,在多任务内核中普遍使用信号量用于控制共享资源的使用权满足互斥条件、标志某事件的发生和使两个任务的行为同步(√)
19、信号像是一把钥匙,任务要运行下去,得先拿到这把钥匙如果信号已被别的任务占用,该任务只得被挂起,直到信号被当前使用者释放(√)
20、消息队列实际上是邮箱阵列通过内核提供的服务,任务或中断服务子程序可以将一条消息该消息的指针放入消息队列同样,一个或多个任务可以通过内核服务从消息队列中得到消息发送和接收消息的任务约定,传递的消息实际上是传递的指针指向的内容(√)
21、在非屏蔽中断的中断服务子程序中,不能使用内核提供的服务,因为非屏蔽中断是关不掉的,故不能在非屏蔽中断处理中处理临界区代码(√)
22、实时内核也称为实时操作系统或RTOS它的使用使得实时应用程序的设计和扩展变得容易,不需要大的改动就可以增加新的功能通过将应用程序分割成若干独立的任务,RTOS使得应用程序的设计过程大为减化(√)第七章嵌入式实时操作系统mC/OS-Ⅱ分析
一、填空题
1、μC/OS-II微小内核的最少代码有
(418)行(剔除文件头和函数头后的数目),是仅包含5个最基本的服务函数的“最小内核”
2、μC/OS-II微小内核源代码分为3部分(内核代码、移植代码和配置文件)
3、功能最强的内核SOURCE4提供了
(14)个用户接口函数
4、最小的μC/OS-II微小内核SOURCE1中5个主要服务函数(OSInit、OSStart、OSTaskCreate、OSTimeDly和OSTimeTick)
5、并行程序执行的独立的基本逻辑单位称之为(任务)
6、(务控制块)是一个数据结构,当任务的CPU使用权被剥夺时,μC/OS-Ⅱ用它来保存该任务的状态
7、每个任务被赋予不同的优先级等级,从0级到最低优先级OS_LOWEST_PR1O,当μC/OS-Ⅱ初始化的时候,最低优先级OS_LOWEST_PR1O总是被赋给(空闲)任务
8、多任务的启动是用户通过调用(OSStart)实现的然而,启动μC/OS-Ⅱ之前,用户至少要建立(一个)应用任务
9、µC/OS-Ⅱ可以管理多达
(64)个任务,并从中保留了四个最高优先级和四个最低优先级的任务供自己使用,所以用户可以使用的只有
(56)个任务任务的优先级越高,反映优先级的值则越低
10、µC/OS-Ⅱ管理用户的任务,用户必须要先建立任务,用户可以通过传递任务地址和其它参数到以下两个函数之一来建立任务(OSTaskCreate)或(OSTaskCreateExt)
11、通过调用OSTaskDel可以完成(删除)任务的功能
12、µC/OS-II中的信号量由两部分组成一个是信号量的(计数值),它是一个16位的无符号整数(0到65535之间);另一个是由等待该信号量的任务组成的(等待任务表)
13、如果信号量是用来表示一个或者多个事件的发生,那么该信号量的初始值应设为
(0)如果信号量是用于对共享资源的访问,那么该信号量的初始值应设为
(1)(例如,把它当作二值信号量使用)
14、(邮箱)是µC/OS-II中另一种通讯机制,它可以使一个任务或者中断服务子程序向另一个任务发送一个指针型的变量
15、µC/OS-II提供了5种对邮箱的操作(OSMboxCreate,OSMboxPend,OSMboxPost,OSMboxAccept和OSMboxQuery函数)
16、在使用一个内存分区之前,必须先建立该内存分区这个操作可以通过调用(OSMemCreate)函数来完成
17、在µC/OS-II中,可以使用OSMemQuery函数来查询一个特定内存分区的有关消息通过该函数可以知道特定内存分区中(内存块的大小、可用内存块数和正在使用的内存块数)等信息
18、µC/OS-Ⅱ定义了两个宏来禁止和允许中断(OS_ENTER_CRITICAL和OS_EXIT_CRITICAL)
19、微处理器和微控制器的堆栈是有两种生长方式,置OS_STK_GROWTH为0表示堆栈(从下往上长);置OS_STK_GROWTH为1表示堆栈(从上往下长)
二、判断题
1、调用OSSchedLock以后,用户的应用程序不得使用任何能将现行任务挂起的系统调用也就是说,用户程序不得调用OSMboxPend、OSQPend、OSSemPend、OSTaskSuspendOS_PR1O_SELF、OSTimeDly或OSTimeDlyHMSM直到OSLockNesting回零为止因为调度器上了锁,用户就锁住了系统,任何其它任务都不能运行(√)
2、用OSSchedlock的任务保持对CPU的控制权,尽管有个优先级更高的任务进入了就绪态然而,此时中断是可以被识别的,中断服务也能得到(假设中断是开着的)(√)
3、μC/OS-Ⅱ总是建立一个空闲任务,这个任务在没有其它任务进入就绪态时投入运行这个空闲任务[OSTaskIdle]永远设为最低优先级,即OS_LOWEST_PRI0空闲任务OSTaskIdle什么也不做,只是在不停地给一个32位的名叫OSIdleCtr的计数器加1(√)
4、空闲任务可以被应用软件删除(×)
5、OSTaskStat告诉用户应用程序使用了多少CPU时间,用百分比表示,这个值放在一个有符号8位整数OSCPUsage中,精读度是1个百分点(√)
6、用户必须在多任务系统启动以后再开启时钟节拍器(√)
7、任务可以是一个无限的循环,也可以是在一次执行完毕后被删除掉,但是任务代码并不是被真正的删除了,而只是µC/OS-Ⅱ不再理会该任务代码,所以该任务代码不会再运行(√)
8、任务可以在多任务调度开始前建立,也可以在其它任务的执行过程中被建立在开始多任务调度即调用OSStart前,用户必须建立至少一个任务任务不能由中断服务程序ISR来建立(√)
9、每个任务都有自己的堆栈空间堆栈必须声明为OS_STK类型,并且由连续的内存空间组成(√)
10、删除任务是说任务将返回并处于休眠状态,并不是说任务的代码被删除了,只是任务的代码不再被µC/OS-Ⅱ调用(√)
11、µC/OS-Ⅱ允许用户动态的改变任务的优先级,即在程序运行期间,用户可以通过调用OSTaskChangePrio来改变任务的优先级(√)
12、在使用一个信号量之前,首先要建立该信号量,如果该信号量是用来表示允许任务访问n个相同的资源,那么该初始值显然应该是n,并把该信号量作为一个可计数的信号量使用(√)
13、为了便于内存的管理,在µC/OS-II中使用内存控制块(memorycontrolblocks)的数据结构来跟踪每一个内存分区,系统中的每个内存分区都有它自己的内存控制块(√)
14、用程序可以调用OSMemGet函数从已经建立的内存分区中申请一个内存块该函数的唯一参数是指向特定内存分区的指针,该指针在建立内存分区时,由OSMemCreate函数返回(√)
15、当用户应用程序不再使用一个内存块时,必须及时地把它释放并放回到相应的内存分区中这个操作由OSMemPut函数完成必须注意的是,OSMemPut并不知道一个内存块是属于哪个内存分区的(√)
三、简答题
1、要使µC/OS-Ⅱ正常运行,处理器必须满足哪些要求?答
(1)处理器的C编译器能产生可重入代码
(2)用C语言就可以打开和关闭中断
(3)处理器支持中断,并且能产生定时中断通常在10至100Hz之间
(4)处理器支持能够容纳一定量数据可能是几千字节的硬件堆栈
(5)处理器有将堆栈指针和其它CPU寄存器读出和存储到堆栈或内存中的指令
四、设计题在嵌入式系统中,经常需要完成几件互不相关或关系不大的任务如控制空调的风速、风向和温度,实质上就是控制不同的电机,可以说它们是几个不相关联的任务我们不妨用2个LED来模拟2个控制对象,让它们以不同的速度闪烁,LED低电平点亮、高电平熄灭电路原理图如下
(1)编制主程序,编写LED1控制的(任务0)和LED2控制(任务1)的程序流程图
(2)写出主程序的代码答
(1)
(2)intmainvoid{OSInit;μC/OS-II初始化OSTaskCreateTask0void*0TaskStk0[TaskStkLengh-1]4;创建第一个任务OSTaskCreateTask1void*0TaskStk1[TaskStkLengh-1]5;创建第二个任务OSStart;启动μC/OS-II,任务开始运行return0;}ISR任务ISR任务A任务B任务CISR任务A任务B任务C由高至低由高至低Lable程序A程序BR14BLLable地址AMOVPCLRR14地址ALable高位地址低位地址大端模式高位地址低位地址小端模式0x12高位地址低位地址0x340x560x78大端模式0x78高位地址低位地址0x560x340x12小端模式0x01R2R00x550x01R2R00x08存储器0x4000000C0x400000080x400000040x040x030x020xR60xR4R30x0x400000000x010xR2R10x40000000存储器0x4000000C0x400000080x400000040x040x030x020x04R60x03R4R30x020x400000000x010x01R2R10x40000010。