最近快要期末考试了,我把嵌入式系统的习题整理了一下,整理成了这篇笔记。
嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”(原文为devices used to control, monitor, or assist the operation of equipment, machinery or plants)。
典型的应用如:冰箱、洗衣机、空调、工业机器人、智能门禁、汽车电子、共享单车等等。
冯·诺伊曼结构和哈佛结构。
冯·诺伊曼结构较为简单,成本低,运算速度比哈佛结构慢。
哈佛结构能够高速处理数据,可以同时读取分开存储的指令和数据,但结构比较复杂,成本高。
冯·诺依曼理论的要点是:数字计算机的数制采用二进制;计算机应该按照程序顺序执行。人们把冯诺依曼的这个理论称为冯诺依曼体系结构。从ENIAC到当前最先进的计算机都采用的是冯诺依曼体系结构。所以冯诺依曼是当之无愧的数字计算机之父。
数学家冯·诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备),这套理论被称为冯·诺依曼体系结构。
根据冯诺依曼体系结构构成的计算机,必须具有如下功能:
哈佛结构是为了高速数据处理而采用的,因为可以同时读取指令和数据(分开存储的)。大大提高了数据吞吐率,缺点是结构复杂。通用微机指令和数据是混合存储的,结构上简单,成本低。假设是哈佛结构:你就得在电脑安装两块硬盘,一块装程序,一块装数据,内存装两根,一根储存指令,一根存储数据……
哈佛结构处理器有两个明显的特点:使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。
改进的哈佛结构,其结构特点为:以便实现并行处理;具有一条独立的地址总线和一条独立的数据总线,利用公用地址总线访问两个存储模块(程序存储模块和数据存储模块),公用数据总线则被用来完成程序存储模块或数据存储模块与CPU之间的数据传输。
是什么结构要看总线结构的。51单片机虽然数据指令存储区是分开的,但总线是分时复用的,所以顶多算改进型的哈佛结构。ARM9虽然是哈佛结构,但是之前的版本也还是冯·诺依曼结构。早期的X86能迅速占有市场,一条很重要的原因,正是靠了冯·诺依曼这种实现简单,成本低的总线结构。处理器虽然外部总线上看是诺依曼结构的,但是由于内部CACHE的存在,因此实际上内部来看已经算是改进型哈佛结构的了。
uc/os适合小型控制系统,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2k。
uclinux则是继承标准linux的优良特性,针对嵌入式处理器的特点设计的一种操作系统,具有内嵌网络协议、支持多种文件系统,开发者可利用标准linux先验知识等优势。
小型控制系统可充分利用uc/os小巧且实时性强的优势,如果开发pda和互联网连接终端等较为复杂的系统则uclinux是不错的。
True
True
True
True
True
Task 1 has a higher priority
Task 2 has a middle priority
Task 3 has a lower priority
答案:
优先级反转:低优先级任务阻塞了高优先级任务的运行。
从图中看,三个任务优先级排列是 Task 1 > Task 2 > Task 3。
在(3)阶段,任务3占据了信号量,在(4)阶段,优先级更高的任务1抢占了任务3,并在(6)尝试获取信号量,
但由于信号量已被任务3占据,资源不足,任务1被挂起,优先级降低。
而在(8)阶段任务2因为优先级更高,抢占了任务3,因为不需要获取信号量,成功运行。
所以,这就造成了只有中优先级的任务2阻塞了高优先级的任务1运行。
这与我们所期望的,优先级高的任务先运行的目标不相符,所以就产生了问题。
答案:
要解决优先级反转的问题,有两种方案,分别是优先级继承和优先级天花板。
这里使用了优先级继承的策略,在任务3占有了互斥信号量并阻塞了任务1的时候,任务3的优先级被提高到和任务1相同。
所以任务3执行过程中不会被任务2抢占。
当任务3执行完毕,释放互斥信号量时,优先级最高的任务1获取了信号量,开始运行。
答案:ABC
A. 保存每个任务的信息所用的内存大小都是相同的。
B. 信息中包括任务的ID
C. 任务的状态
D. 任务的堆栈指针
答案: ABCD
A. 可以被中断打断
B. 从中断返回时,可以发生任务调度
C. 从中断返回时,返回到断点,即被中断的任务处,继续执行
D. 有优先级高的任务就绪时,低优先级任务被抢占
答案: ABD
A. 临界资源即为临界区
B. 可以通过互斥机制保护临界资源
C. 不可以由多个任务同时访问的资源
D. 临界资源可以是定义的一个变量
答案: BCD
A. 创建任务前必须为任务分配堆栈。
B. 创建任务时必须指定其优先级,且必须唯一。
C. 创建任务后,该任务即处于就绪态。
D. 创建任务时,从空闲链表获得一个TCB,进行初始化
答案: ABCD
False
True
True
False
False
True
False
False
True
答案:
OSRdyGrp=00101100B;
OSRdyTbl[2]=00010000B;
OSRdyTbl[3]=01000000B;
OSRdyTbl[5]=00000001B;
OSRdyGrp=0x24=00100 100B
OSRdyTbl[2]=00100 100B
OSRdyTbl[5]=00101 110B
写出当前优先级最高的任务的优先级。
答案: p r i o = 2 ∗ 8 + 2 = 18 prio=2*8+2=18 prio=2∗8+2=18
A. 任务可以在main函数中创建。
B. 任务可以在其他任务运行过程中由任务创建。
C. 任务可以在中断服务程序中创建。
D. main函数中至少要创建一个任务。
答案: ABD
A. ucos中的任务都必须分配堆栈。
B. ucos中任务的堆栈大小都是相同的。
C. 可以通过malloc函数动态为任务分配堆栈。
D. ucos在任务切换过程中,被挂起的任务使用的CPU寄存器是保存在该任务的堆栈中的。
答案: ACD
A. 系统任务。
B. 优先级最低。
C. 永远不会被放入到等待列表,而处于等待状态。
D. 空闲任务也可以被删除。
答案: ABC
False
False
False
True
True
A. 保护上下文,即保护现场
B. 查找中断向量表,把中断服务的入口地址取出送给指令指针
C. 恢复上下文,即恢复现场
D. 编写具体操作程序
答案: ACD
A. 中断不需要堆栈
B. 中断可以使用被中的那个任务的堆栈
C. 中断可以使用单独的中断栈,而不使用任务的堆栈
D. 中断使用的堆栈可以随时动态分配
答案: BC
A. 中断的响应时间
B. 任务的切换时间
C. 嵌入式操作系统的时钟节拍
D. 开、关中断的时间
答案: ABCD
True
True
False
False
False
True
True
A. 0
B. 1
C. 0~65535之间的任意数
D. 任意值
答案: ABC
A. 1
B. 0
C. 0~65535之间
D. 任意值
答案: B
A. 二值信号量
B. 互斥信号量MUTEX
C. 初值为n的信号量(n为0~65535之间的值)
D. 都不能
答案: AB
A. OSSemCreate()
B. OSSemPend()
C. OSSemAccept()
D. OSSemPost()
答案: CD
A. 信号量
B. 邮箱
C. 消息队列
D. MUTEX和全局变量组合使用
答案: BD
A. main()函数中
B.for循环之前
taskA(){
for(,,){}
}
C. 中断服务程序中
D.for循环中
taskA(){
for(,,){}
}
答案: AB
False
可以自主定义
Cortex M3移植ucos-II,上下文切换实际上是模拟了一次PendSV中断。 True
BSP(Board Support Package)的功能可以包括:
A. 外部设备初始化
B. 板级初始化
C. 系统级初始化
D. 芯片级初始化
答案:BCD
BSP主要功能为屏蔽硬件,提供操作系统及硬件驱动,具体功能包括:
OS _STK Task_STK[256];
答案:BD
typedef unsigned int OS_STK; /* Each stack entry is 16-bit wide */
A. 处理器支持硬件中断
B. 处理器有足够的硬件堆栈
C. 编译器支持可重入型函数
D. 微处理器具有PUSH和POP指令,操作堆栈
答案:BCD
移植uC/OS-II到处理器上必须满足以下条件。
联系邮箱:[email protected]
CSDN:https://me.csdn.net/qq_41729780
知乎:https://zhuanlan.zhihu.com/c_1225417532351741952
公众号:复杂网络与机器学习
欢迎关注/转载,有问题欢迎通过邮箱交流。