嵌入式自整版.docx

上传人:b****3 文档编号:4423240 上传时间:2022-12-01 格式:DOCX 页数:8 大小:37.35KB
下载 相关 举报
嵌入式自整版.docx_第1页
第1页 / 共8页
嵌入式自整版.docx_第2页
第2页 / 共8页
嵌入式自整版.docx_第3页
第3页 / 共8页
嵌入式自整版.docx_第4页
第4页 / 共8页
嵌入式自整版.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

嵌入式自整版.docx

《嵌入式自整版.docx》由会员分享,可在线阅读,更多相关《嵌入式自整版.docx(8页珍藏版)》请在冰豆网上搜索。

嵌入式自整版.docx

嵌入式自整版

肖磊

1.任务的状态及其转换关系

 

2.μC/OS_II把任务的优先权分为64个优先级别,每一个级别都用一个数字来表示。

数字0表示任务的优先级别最高,数字越大则表示任务的优先级别越低

3.任务控制块结构的主要成员

Typedefstructos_tcb{

OS_STK*OSTCBStkPtr;//指向任务堆栈栈顶的指针

 ……

 structos_tcb*OSTCBNext;//指向后一个任务控制块的指针

structos_tcb*OSTCBPrev;//指向前一个任务控制块的指针

 ……

INT16UOSTCBDly;//任务等待的时限(节拍数)

INT8UOSTCBStat;//任务的当前状态标志

INT8UOSTCBPrio;//任务的优先级别

……

}OS_TCB;//变量

4.下列程序实现把优先级别为prio的任务置为就绪状态

OSRdyGrp|=OSMapTbl[prio>>3];

OSRdyTbl[prio>>3]|=OSMapTbl[prio&0x07];

重点:

prio中的Y(prio右移3位)得下标数组号,查数组OSMapTbl[]得对应二进制码,与OSRdyGrp相或,将就绪表中相应Y-bit位置1;

prio中的X(prio与0x07相与)得下标数组号,查数组OSMapTbl[]得对应二进制码,与Y对应的行相或,将就绪表中相应X-bit位置1。

5.下列程序实现将一个优先级别为prio的任务脱离就绪状态

if((OSRdyTbl[prio>>3]&=~OSMapTbl[prio&0x07])==0)

OSRdyGrp&=~OSMapTbl[prio>>3];

重点:

取prio中的X(任务优先级prio与0x07相与),查数组OSMapTbl[]的值取反,和prio中的Y(prio右移3位),查表OSRdyTbl的值相与得出结果赋值给OSRdyTbl[pro>>3],若OSRdyTbl[pro>>3]为零,则取反OSRdyTbl[pro>>3],与OSRdyGrp相与后赋值到OSRdyGrp,即将任务就绪中的相应位置0,使优先级别号为prio的任务脱离就绪状态。

6.下列代码实现从任务就绪表中获取优先级别最高的就绪任务

y=OSUnMapTal[OSRdyGrp];//D5、D4、D3位

x=OSUnMapTal[OSRdyTbl[y]];//D2、D1、D0位

prio=(y<<3)+x;//优先级别

重点:

首先扫描组变量OSRdyGrp,找到OSRdyGrp中的最低位1,确定位号=Y,然后扫面OSRdyTbl[y],找到OSRdyTbl[y]中的最低位1,确定位号=X,最高优先级别prio=Y*3+X.

7.任务的三要素是程序代码、私有堆栈、任务控制块。

8.嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用程序4个部分组成。

9.“嵌入性”、“专用性”与“计算机系统”是嵌入式系统的三个基本要素。

10.冯·诺依曼结构与哈佛结构的特点与区别。

(1)冯·诺依曼结构的特点

1)程序和数据储存在同一个储存空间,指向同一个储存器的不同物理地址;

2)采用统一的地址和数据总线;

3)处理器执行指令时,先取指后执行;

(2)哈佛结构的特点

1)程序和数据储存在不同的储存空间,独立编址,独立访问;

2)采用四套总线:

程序和数据的数据总线、地址总线;

3)处理器执行指令时,取指和执行同时进行;

区别:

两者的程序和数据存储空间,编址方式,总线各不相同,较冯·诺依曼结构,哈佛结构采用独立存储空间,分离的数据和地址总线,提高了执行速度,使数据吞吐率提高了一倍。

11.复杂指令集计算机体系和精简指令集计算机体系的特点与区别。

类别

CISC

RISC

指令系统

指令数量很多

较少,通常少于100

执行时间

有些指令执行时间很长,如整块的存储器内容复制;或将多个寄存器的内容赋值带存储器

没有较长的执行时间的指令

编码长度

编码长度可变,1~15字节

编码长度固定,通常为4个字节

寻址方式

寻址方式多样

简单寻址

操作

可以对存储器和寄存器进行算数和逻辑运算

智能对寄存器进行算数和逻辑操作,Load和Store体系结构

编译

难以用优化编译器生成高效的目标编码程序

采用优化编译技术,生成高效的目标代码程序

12.对于一个多字节类型的数据,在存储器中有两种存放方法。

一种是低字节数据存放在内存低地址处,高字节数据存放在内存高地址处,称为小端字节顺序存储法(低对低,高对高);另一种是高字节数据存放在低地址处,低字节数据存放在高地址处,称为大端字节顺序存储法(低对高,高对低)。

13.RTOS对响应时间有非常严格的要求,当某一个外部事件或请求发生时,相应的任务必须在规定的时间内完成相应的处理。

RTOS可以分为硬实时和软实时两种情形。

14.按照系统对响应时间的敏感程度,EOS(嵌入式操作系统)可以分为RTOS(RealTimeOperatingSystems,实时操作系统)和非实时操作系统两大类。

15.设备驱动层(BSP)把嵌入式操作系统与具体的硬件平台隔离开来。

16.所有的EOS都有一个内核(kernel),内核是系统当中的一个组件,它包含了任务管理、存储管理、输入/输出(I/O)设备管理和文件系统管理四个功能模块。

17.按照软件的体系结构,EOS可以分为单体结构、分层结构和微内核结构三大类。

18.嵌入式Linux操作系统和µC/OS-II都属于单体内核系统。

19.MS-DOS属于分层结构。

20.VxWorks属于微内核结构。

21.常见的嵌入式操作系统有VxWorks、嵌入式Linux、WindowsCE、µC/OS-II和PalmOS等。

22.进程和程序的联系和区别。

一个程序主要由代码和数据两部分内容组成。

而进程是正在执行的程序,它是由程序和该程序的运行上下文两部分内容组成。

程序是静态的,而进程是一个动态的,变化的。

进程和程序之间并不是一一对应的。

一个进程在运行的时候可以启动一个或多个程序,同一个程序也可能由多个进程同时执行。

程序可以以文件的形式存放在硬盘或光盘上,作为一种软件资源长期保存。

而进程则是一次执行过程,它是暂时的,是动态地产生和终止的。

总而言之进程是一个正在运行的程序,有相应程序的代码和数据。

23.在嵌入式操作系统当中,任务的创建主要采用fork/exec和spawn两种模型。

在fork/exec模型,首先调用fork函数为新任务创建一份与父任务完全相同的内存空间,然后再调用exec函数装入新任务的代码,并用它来覆盖原有的属于父任务的内容。

对于新创建的子任务来说,它可以从父任务那里继承代码、数据等各种属性。

而spawn模型在创建新任务的时,直接为它分配一个全新的地址空间,然后将新任务的代码装入并运行。

24.任务切换,任务切换的步骤?

任务切换(contextswitching)是指一个任务正在CPU上运行,由于某种原因,系统需要调度另一个任务去运行,那么这时就需要进行把当前任务的运行上下文保存起来,并设置新任务的上下文,这一过程称为任务切换。

任务切换通常包含有以下几个基本步骤:

(1)将处理器的运行上下文保存在当前任务的TCB中;

(2)更新当前任务的状态,从运行状态变为就绪状态或阻塞状态。

(3)按照一定的策略,从所有处于就绪状态的任务中选择一个去运行。

(4)修改新任务的状态,从就绪状态变成运行状态。

(5)根据新任务的TCB的内容,恢复它的运行上下文环境。

25.一般来说,在一个新的任务被创建时、在一个任务运行结束时、在一个任务由于I/O操作、信号量或其他原因被阻塞时、在一个I/O中断发生时、在一个时钟中断发生时这五种调度时机都可能会发生任务的调度。

26.任务调度存在可抢占调度(preemptive)和不可抢占调度(nonpreemptive)两种调度方式。

27.先来先服务调度算法、短作业优先调度算法和时间片轮转调度算法的特点。

先来先服务算法:

是一种最简单的调度算法。

基本思想就是按照任务到达的先后次序来进行调度,它是一种不可抢占的调度方式最大优点就是简单,易于理解也易于实现。

缺点是一批任务的平均周转时间取决于各个任务到达的顺序,如果短任务位于长任务之后,那么将增大平均周转时间。

短作业优先算法;在各个任务在开始执行前,事先预计好各任务的执行时间,调度算法根据这些预计时间,安排执行时间较短的任务优先执行。

可以证明,对于一批同时到达的任务,采用SJF算法将得到一个最小的平均周转时间。

SJF算法有不可抢占方式和可抢占方式两种实现方案。

在不可抢占方式,只有任务运行完毕或者是被阻塞时,才会让出CPU进行新的调度。

而在可抢占方式,当前任务正在运行的时候,来了一个比它执行时间更短的任务,而且它的运行时间要小于当前正在运行的任务的剩余时间,那么这个新任务就会抢占CPU去运行。

这种方法也称为SRTF(ShortestRemainingTimeFirst,最短剩余时间优先算法)

时间片轮转算法:

采用RR算法,各个就绪任务平均地分配CPU的使用时间.如果一个任务在分配给它的时间片结束前就已经运行结束了或者是被阻塞了,那么它就会立即让出CPU给其他的任务

28.ARM微处理器采用RISC架构。

29.ARM7TMDI是目前使用最广泛的32位嵌入式RISC处理器,采用三级流水线结构。

TMDI含义:

在ARM核的命名规则中,TDMI的基本含义为:

T:

支持高密度16位的Thumb指令集;

D:

支持片上Debug;

M:

内嵌硬件乘法器(Multiplier);

I:

嵌入式ICE,支持片上断点和调试点。

30.ARM9采用五级流水线结构。

31.ARM处理器共有37个寄存器,这些寄器包括:

31个通用寄存器、6个状态寄存器。

32.ARM微处理器支持7种运行模式,分别为usr(用户模式)、fiq(快速中断模式)、irq(外部中断模式)、svc(管理模式)、abt(数据访问终止模式)、sys(系统模式)、und(未定义指令中止模式)。

33.ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。

34.除用户模式以外,其余的所有6种模式称之为非用户模式,或特权模式(PrivilegedModes);其中除去用户模式和系统模式以外的5种又称为异常模式(ExceptionModes),常用于处理中断或异常,以及需要访问受保护的系统资源等情况。

35.ARM处理器有32位ARM和16位Thumb两种工作状态。

在32位ARM状态下执行字对齐的ARM指令,在16位Thumb状态下执行半字对齐的Thumb指令。

36.R14寄存器使用时容易出现的问题及解决方法。

当发生异常嵌套时,这些异常之间可能会发生冲突。

例如:

如果用户在用户模式下执行程序时发生了IRQ中断,用户模式寄存器不会被破坏。

但是如果允许在IRQ模式下的中断处理程序重新使能IRQ中断,并且发生了嵌套的IRQ中断时,外部中断处理程序保存在R14_irq中的任何值都将被嵌套中断的返回地址所覆盖。

解决办法是确保R14的对应版本在发生中断嵌套时不再保存任何有意义的值(将R14入栈),或者切换到其它处理器模式下。

37.异常处理过程

当异常产生时,ARMcore:

a)拷贝CPSR到SPSR_

b)设置适当的CPSR位:

i.改变处理器状态进入ARM态

ii.改变处理器模式进入相应的异常模式

iii.设置中断禁止位禁止相应中断(如需要)

c)保存返回地址到LR_

d)设置PC为相应的异常向量

返回时,异常处理需要:

e)从SPSR_恢复CPSR

f)从LR_恢复PC

g)Note:

这些操作只能在ARM态执行.

38.对下面程序进行注释。

R14_=ReturnLink;将下一条指令的地址存入链接寄存器LR(即R14)

a)SPSR_=CPSR;拷贝CPSR到SPSR_

CPSR[4:

0]=ExceptionModeNumber;根据异常类型,设置CPSR的运行模式位为4和相应的中断位0;

CPSR[5]=0;运行于ARM状态

IF==ResetorFIQthen;当响应FIQ异常时,禁止新的FIQ异常

CPSR[6]=1;;将CPSR中的F位置1,清除IRQ异常

CPSR[7]=1;;将CPSR中的I位置1,清除IRQ异常

PC=ExceptionVectorAddress

;把PC指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序。

39.ARM寻址方式

40.ARM指令

41.ARM微处理器支持四种类型的堆栈工作方式,即:

满递增堆栈、满递减堆栈、空递增堆栈、空递减堆栈。

42.ARM状态和Thumb状态切换。

进入Thumb状态:

当操作寄存器的状态位(位0)为1时,可以采用执行BX指令的方法,是微处理器从ARM状态切换到Thumb状态。

此外,当处理器处于Thumb状态时发生异常,则异常处理返回时,自动切换到Thumb状态。

进入ARM状态:

当操作数寄存器的状态位为0时,执行BX指令时可以使微处理器从Thumb状态切换到ARM状态。

此外,在处理器进行异常处理时,把PC指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序,

也可以使处理器切换到ARM状态。

43.ARM体系结构除了支持执行效率很高的32位ARM指令集以外,同时支持16位的Thumb指令集。

Thumb指令集是ARM指令集的一个子集,允许指令编码为16位的长度。

与等价的32位代码相比较,Thumb指令集在保留32位代码优势的同时,大大的节省了系统的存储空间。

在应用程序的编写过程中,只要遵循一定调用的规则,Thumb子程序和ARM子程序就可以互相调用。

当处理器在执行ARM程序段时,称ARM处理器处于ARM工作状态,当处理器在执行Thumb程序段时,称ARM处理器处于Thumb工作状态。

44.μC/OS-Ⅱ有两种调度器,一种是任务级的调度器,另一种是中断级的调度器;

45.操作系统的最重要的工作之一是任务调度,uC/OS-II是抢占式多任务内核,采用基于优先级的任务调度。

46.DRAM是嵌入式系统的存储器动态随机存储器,SRAM是嵌入式系统的静态随机存储器;

47.嵌入式系统定义是以应用为中心、软硬件可剪裁、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

48.嵌入式系统的硬件层包含嵌入式微处理器、存储器、通用设备接口、I/O接口。

49.嵌入式系统的软件层由实时多任务操作系统、文件系统、图形用户接口、网络系统及通用组建模块组成。

50.ARM采用32位地址总线,所支持的最大寻址空间为(2^32,4GB),从0~3字节放置第一个存储字数据,4~7字节放置第二个存储字数据,在不出现分支的情况下,程序计数器每次增长4个字节。

51.ARM微处理器的指令集仅能处理寄存器中的数据,处理结果都要放回寄存器中,而对系统存储器的访问需要通过专门的加载/存储指令来完成。

52.了解R12、R13、R14、R15和CPSR寄存器(各标志位含义)的作用;

R12:

R13:

寄存器R13通常用作堆栈指针,称作SP

R14:

寄存器R14用作子程序链接寄存器,也称为链接寄存器LK.当执行带链接分支(BL)指令时,得到R15的备份。

在其他情况下,将R14当做通用寄存器。

R15:

寄存器R15用作程序计数器(PC)在ARM状态,位[1:

0]为0,位[31:

2]保存PC。

在Thumb状态,位[0]为0,位[31:

1]保存PC。

CPSR:

当前程序状态寄存器。

作用:

保存ALU中的当前操作信息;控制允许和禁止中断;设置处理器的运行模式。

具体标志位含义参照P79。

53.掌握IRQ与FIQ,发生IRQ或FIQ异常时,处理器需要执行哪些操作?

    

  A:

异常发生时,ARM微处理器执行的步骤  

1>将下一条指令的地址存入LR 

2>复制CPSR到SPSR  

3> 根据异常类型,设置CPSR的运行模式位和相应的中断位  

3>强制PC从相应的异常向量地址取下一条指令执行,跳转到相应的异常处理程序处  

B:

异常处理完毕返回 

1>将连接寄存器LR的值减去相应的偏移量后送到PC中。

 

2> 将SPSR复制回CPSR中。

  

3> 若在进入异常处理时设置了中断禁止位,要在此清除。

  

4> 可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1