资源描述
一、 嵌入式微处理器体系结构
嵌入式微处理器体系结构能够采取冯·诺依曼体系结构或哈佛体系结构,指令系统能够选择精简指令系统RISC和复杂指令集系统CISC。
1、 冯·诺依曼体系结构和哈佛体系结构;
(1)冯·诺依曼结构计算机由CPU和存放器组成,其程序和数据共用一个存放空间,程序指令存放地址和数据存放地址指向同一个存放器不一样物理位置;采取单一地址及数据总线,程序指令和数据宽度相同。程序计数器(PC)是CPU内部指示指令和数据存放位置寄存器。
(2)哈佛结构关键特点是将程序和数据存放在不一样存放空间中,即程序存放器和数据存放器是两个相互独立存放器,每个存放器独立编址、独立访问。提升实施速度,提升数据吞吐率,含有较高实施效率。
2、CISC和RISC
类别 CISC RISC
指令系统 指令数量很多 较少,通常少于100
实施时间 有些指令实施时间很长,
如整块存放器内容拷贝;
或将多个寄存器内容
拷贝到存贮器 没有较长实施时间指令
编码长度 编码长度可变,1-15字节 编码长度固定,通常为4个字节
寻址方法 寻址方法多样 简单寻址
操作 能够对存放器和寄存器 只能对寄存器对行算术和逻辑操作,
进行算术和逻辑操作 Load/Store体系结构
编译 难以用优化编译器生成
高效目标代码程序 采取优化编译技术,生成高效目标代码程序
二、ARM状态各模式下寄存器
1、全部37个寄存器,分成两大类:
(1)31个通用32位寄存器;
(2) 6个状态寄存器。
2、R0~R7为未分组寄存器,也就是说对于任何处理器模式,这些寄存器全部对应于相同32位物理寄存器。
3、寄存器R8~R14为分组寄存器。它们所对应物理寄存器取决于目前处理器模式,几乎全部许可使用通用寄存器指令全部许可使用分组寄存器
4、寄存器R8~R12有两个分组物理寄存器。一个用于除FIQ模式之外全部寄存器模式,另一个用于FIQ模式。这么在发生FIQ中止后,能够加速FIQ处理速度
5、寄存器R13、R14分别有6个分组物理寄存器。一个用于用户和系统模式,其它5个分别用于5种异常模式。
三、 处理器工作模式
1、 ARM处理器有7种工作模式;
● usr(用户模式):ARM处理器正常程序实施模式。
● fiq(快速中止模式):用于高速数据传输或通道处理
● irq(外部中止模式):用于通用中止处理
● svc(管理模式):操作系统使用保护模式
● abt (数据访问终止模式): 当数据或指令预取终止时进入该模式,可用于虚拟存放及存放保护。
● sys(系统模式): 运行含有特权操作系统任务。
● und(未定义指令中止模式):当未定义指令实施时进入该模式,可用于支持硬件协处理器软件仿真。
ARM微处理器运行模式能够经过软件改变,也能够经过外部中止或异常处理改变。
除用户模式以外,其它全部6种模式称之为非用户模式,或特权模式(Privileged Modes);其中除去用户模式和系统模式以外5种又称为异常模式(Exception Modes),常见于处理中止或异常,和需要访问受保护系统资源等情况。
2、除用户模式外,其它模式均为特权模式。ARM内部全部系统资源和部分片内外设在硬件设计上只许可(或可选为只许可)特权模式下访问。
3、另外,特权模式能够自由切换处理器模式,而用户模式不能直接切换到别模式。
四、 ARM异常处理
1、当异常产生时, ARM 核:
(1)拷贝 CPSR 到 SPSR_<mode>
(2)设置合适 CPSR 位:
a.改变处理器状态进入 ARM 态
b.改变处理器模式进入对应异常模式
c.设置中止严禁位严禁对应中止 (如需要)
(3)保留返回地址到 LR_<mode>
(4)设置 PC 为对应异常向量地址
2、返回时, 异常处理程序需要:
(1)从 SPSR_<mode>恢复CPSR
(2)从LR_<mode>恢复PC
(3)注意:这些操作只能在 ARM 态实施.
五、 ARM指令集
1、 ARM寻址方法:掌握ARM微处理器9种寻址方法特点。
(1).寄存器寻址
操作数值在寄存器中,指令中地址码字段给出是寄存器编号,寄存器内容是操作数,指令实施时直接取出寄存器值操作。
比如指令:
MOV R1,R2 ;R1←R2
SUB R0,R1,R2 ;R0←R1- R2
(2).立即寻址
在立即寻址指令中数据就包含在指令当中,立即寻址指令操作码字段后面地址码部分就是操作数本身,取出指令也就取出了能够立即使用操作数(也称为立即数)。立即数要以“#”为前缀,表示16进制数值时以“0x”表示。
比如指令:
ADD R0,R0,#1 ;R0←R0 + 1
MOV R0,#0xff00 ;R0←0xff00
(3).寄存器移位寻址
寄存器移位寻址是ARM指令集特有寻址方法。第2个寄存器操作数在和第1个操作数结合之前,优异行移位操作。
比如指令:
MOV R0,R2,LSL #3 ;R2值左移3位,结果放入R0,即R0=R2 * 8
ANDS R1,R1,R2,LSL R3 ;R2值左移R3位,然后和R1相和操作,结果放入R1
可采取移位操作以下:
LSL:逻辑左移(Logical Shift Left),寄存器中字低端空出位补0。
LSR:逻辑右移(Logical Shift Right),寄存器中字高端空出位补0。
ASR:算术右移(Arithmetic Shift Right),移位过程中保持符号位不变,即假如源操作数为正数,则字高端空出位补0,不然补1
ROR:循环右移(Rotate Right),由字低端移出位填入字高端空出位
RRX:带扩展循环右移(Rotate Right extended by 1 place),操作数右移一位,高端空出位用原C 标志值填充。
(4).寄存器间接寻址
指令中地址码给出是一个通用寄存器编号,所需要操作数保留在寄存器指定地址存放单元中,即寄存器为操作数地址指针,操作数存放在存放器中。
比如指令 :
LDR R0,[R1] ;R0←[R1](将R1中数值作为地址,取出此地址中数据保留在R0中)
STR R0,[R1] ;[R1] ←R0
(5).变址寻址
变址寻址是将基址寄存器内容和指令中给出偏移量相加,形成操作数有效地址,变址寻址用于访问基址周围存放单元,常见于查表,数组操作,功效部件寄存器访问等。
比如指令:
LDR R2,[R3,#4] ;R2←[R3 + 4](将R3中数值加4作为地址,取出此地址 数值保留在R2 中)
STR R1,[R0,#-2] ;[R0-2] ← R1(将R0中数值减2作为地址,把R1中内容保留到此地址位置)
(6).多寄存器寻址(LDM/STM)
LDM/STM指令能够把存放器中一个数据块加载到多个寄存器中,也能够把多个寄存器中内容保留到存放器中。寻址操作中寄存器能够是R0-R15这16个寄存器子集或是全部寄存器。采取多寄存器寻址方法,一条指令能够完成多个寄存器值传送,这种寻址方法用一条指令最多能够完成16个寄存器值传送。
格式为:
LDM(或STM){条件}{类型} 基址寄存器{!},寄存器列表{∧}
该指令常见用途是将多个寄存器内容入栈或出栈。
(7).堆栈寻址
堆栈是一个数据结构,堆栈是特定次序进行存取存放区,操作次序分为“后进先出”和“优异后出”,堆栈寻址时隐含,它使用一个专门寄存器(堆栈指针)指向一块存放区域(堆栈),指针所指向存放单元就是堆栈栈顶。
(8).块复制寻址
块复制寻址用于把一块从存放器某一位置复制到另一位置,是一个多寄存器传送指令。
(9).相对寻址
相对寻址是变址寻址一个变通,由程序计数器PC提供基准地址,指令中地址码字段作为偏移量,二者相加后得到地址即为操作数有效地址。
2、堆栈寻址
满递增堆栈(FA):堆栈指针指向最终压入数据,且由低地址向高地址生成。
满递减堆栈(FD):堆栈指针指向最终压入数据,且由高地址向低地址生成。
空递增堆栈(EA):堆栈指针指向下一个将要放入数据空位置,且由低地址向高地址生成。
空递减堆栈(ED):堆栈指针指向下一个将要放入数据空位置,且由高地址向低地址生成。
3、多寄存器寻址(块拷贝寻址)
(1)块拷贝寻址是多寄存器传送指令LDM/STM寻址方法。LDM/STM指令能够把存放器中一个数据块加载到多个寄存器中,也能够把多个寄存器中内容保留到存放器中。寻址操作中寄存器能够是R0-R15这16个寄存器子集或是全部寄存器。
(2)LDM/STM指令依据其后缀名不一样其寻址方法也有很大不一样。
(3)LDMIA R1!,{R0,R2,R3}指令实施后,R1值变为R1+12—>R1;
注:!决定Rn值是否伴随传送而改变
寻址模式 描述 起始地址 结束地址 Rn!
IA 实施后增加 Rn Rn+4*N Rn+4*N
IB 实施前增加 Rn+4 Rn+4*N Rn+4*N
DA 实施后降低 Rn Rn-4*N Rn-4*N
DB 实施前降低 Rn-4 Rn-4*N Rn-4*N
六ARM状态和Thumb状态 转换
1、实现ARM工作状态转换指令,其句法以下:
BX 目标地址
(1)BX指令将引发处理器转移到目标地址所指向地址处实施。
(2)目标地址位[0]不用来作为地址一部分。
a.若目标地址位[0]为1,则指令将CPSR中标志T置位,且将目标地址代码解释为Thumb代码;
b.若目标地址位[0]为0,则指令将CPSR中标志T复位,且将目标地址代码解释为ARM代码。
七、 ARM硬件系统结构
1、S3C2410存放器系统
(1)S3C2410支持大、小端模式,可经过软件选择大小端模式;
(2)存放空间分成8个Bank,每个Bank 128Mbytes,总共 1GB;
6个Bank用于控制 ROM, SRAM, etc.
剩下2个Bank用于控制 ROM, SRAM, SDRAM, etc .
(3)除 Bank0 (16/32-bit) 外,全部Bank全部能够经过编程选择总线宽度= (8/16/32-bit) ;
(4)7个Bank固定起始地址,最终一个Bank可调整起始地址;
(5)最终两个Bank大小可编程
(6)全部Bank存放周期可编程控制;
(7)假如同时使用Bank6/ Bank7,则要求连接相同容量存放器,而且其地址空间在物理上是连续。
2、S3C2410I/O口配置
S3C2410有117个多功效口,掌握怎样经过软件编程对每个I/O口进行配置。如将端口C最低2为设置为01,既设置成输出模式,其它位不变。
rGPCCON = rGPCCON&0xfffffffc|0x00000001;
rGPCDAT= rGPCDAT |0x001; //PC0口电平输出高
表3.4.3 S3C2410A端口C I/O口配置情况
端口C
可选择引脚端功效
GPC15~GPC8
输入/输出
VD7 ~VD0
–
GPC7~GPC5
输入/输出
LCDVF2~LCDVF0
–
GPC4
输入/输出
VM
–
GPC3
输入/输出
VFRAME
–
GPC2
输入/输出
VLINE
–
GPC1
输入/输出
VCLK
–
GPC0
输入/输出
LEND
–
寄存器
地址
读/写
描述
复位值
GPCCON
0x56000020
R/W
配置端口C引脚端,使用位[31:0],分别对端口B16个引脚端进行配置。00:输入;01:输出;10:第2功效;11:保留
0x0
GPCDAT
0x56000024
R/W
端口C数据寄存器,使用位[15:0]
未定义
GPCUP
0x56000028
R/W
端口C上拉电阻不使能寄存器,使用位[15:0] 。0:使能;1:不使能
0x0
保留
0x5600002C
–
保留
未定义
表 端口C控制寄存器
3、掌握ARM微处理器中止系统特点
了解:一旦有中止发生,ARM中止系统将怎样处理。
在ARM系统中,支持复位、未定义指令、软中止、预取中止、数据中止、IRQ和FIQ 7种异常,每种异常对应于不一样处理器模式,有对应异常向量(固定存放器地址)。
在ARM系统中,一旦有中止发生,正在实施程序全部会停下来,通常全部会实施以下中止步骤:
(1)保留现场。保留目前PC值到R14,保留目前途序运行状态到SPSR。
(2)模式切换。依据发生中止类型,进入IRQ模式或FIQ模式。
(3)获取中止服务子程序地址。PC指针跳到异常向量表所保留IRQ或FIQ地址处,IRQ或FIQ异常向量地址处通常保留是中止服务子程序地址,PC指针跳入到中止服务子程序,进行中止处理。
(4)多个中止请求处理。在ARM系统中,能够存在多个中止请求源,比如串口中止、AD中止、外部中止、定时器中止及DMA中止等,所以可能出现多个中止源同时请求中止情况。为了愈加好地域分各个中止源,通常为这些中止定义不一样优先等级,并为每一个中止设置一个中止标志位。当发生中止时,经过判定中止优先级和访问中止标志位状态来识别哪一个中止发生了,进而调用对应函数进行中止处理。
(5)中止返回,恢复现场。当完成中止服务子程序后,将SPSR中保留程序运行状态恢复到CPSR中,R14中保留被中止程序地址恢复到PC中,继续实施被中止程序。
4、 了解S3C2410DMA控制器基础工作原理。
DMA(Direct Memory Acess,直接存放器存取)方法是指存放器和外设在DMA控制器控制下,直接传送数据而不经过CPU,传输速率关键取决于存放器存取速度。在DMA传输过程中,DMA控制器负责管理整个操作,而且无须CPU介入,从而大大提升了CPU工作效率。DMA方法为高速I/O设备和存放器之间批量数据交换提供了直接传输通道。因为I/O设备直接同内存发生成块数据交换,能够提升I/O效率。现在大部分计算机系统均采取DMA技术。很多输入/输出设备控制器全部支持DMA方法。
采取DMA方法进行数据传输具体过程以下。
(1) 外设向DMA控制器发出DMA请求。
(2) DMA控制器向CPU发出总线请求信号。
(3)CPU实施完现行总线周期后,向DMA控制器发出响应请求回复信号。
(4)CPU将控制总线、地址总线及数据总线让出,由DMA控制器进行控制。
(5)DMA控制器向外部设备发出DMA请求回复信号。
(6)进行DMA传送。
(7)数据传送完成,DMA控制器经过中止请求线发出中止信号。CPU在接收到中止信号后,转人中止处理程序进行后续处理。
(8)中止处理结束后,CPU返回到被中止程序继续实施。CPU重新取得总线控制权。
每个DMA控制器能够处理以下4种情况:
(1)源和目标全部在系统总线上;
(2)源在系统总线上,目标在外围总线上;
(3)源在外围总线上,目标在系统总线上;
(4)源和目标全部在外围总线上。
5、嵌入式存放系统特点。
(1)高速缓冲存放器原理及特点。
高速缓冲存放器(cache)用来提升存放器系统性能,很多微处理器体系结构全部把它作为其定义一部分。cache能够降低内存平均访问时间。
Cache能够分为统一cache和独立数据/程序cache。
(2) 存放器管理单元MMU关键完成功效。
(1)虚拟存放空间到物理存放空间映射。采取了页式虚拟存放管理,它把虚拟地址空间分成一个个固定大小块,每一块称为一页,把物理内存地址空间也分成一样大小页。MMU实现就是从虚拟地址到物理地址转换。
(2)存放器访问权限控制。
(3)设置虚拟存放空间缓冲特征。
八、 嵌入式系统I/O设备接口
1、掌握S3C2410I/O接口编程
要求:掌握I/O口编程,能编写实现LED1、 LED2 、 LED3、 LED4 轮番闪烁程序。
实现LED1和LED2轮番闪烁程序代码
void Main(void)
{
int flag,i;
Target Init();//进行硬件初始化操作,包含对I/O口初始化操作
for(;;)
{
if(flag = = 0) {
for(i = 0;i < 1000000;i++); //延时
rGPGCON= rGPGCON&0xfff0ffff | 0x00050000;//配置第8、第
//9位为输出引脚
rGPGDAT= rGPGDAT&0xeff | 0x200; //第8位输出为低电平
//第9位输出高电平
for(i = 0;i< 10000000;i++); //延时
flag = 1;
}
else{
for(i = 0;i< 1000000;i++); //延时
rGPGCON=rGPGCON&0xfff0ffff(0x00050000;//配置第8、
//第9位为输出引脚
rGPGDAT=rGPGDAT&Oxdff | 0x100;//第8位输出为高电平
//第9位输出低电平
for(i = 0;i< 1000000;i++); //延时
flag = 0;
}
}
}
2、掌握S3C2410A/D转换器接口原理
要求:掌握A/D转换器接口原理,能编写A/D转换器初始化函数和获取A/D转换值程序。
(1)A/D转换器(模/数转换器)完成电模拟量到数字量转换。实现A/D转换方法很多,常见方法有计数法、双积分法和逐次迫近法等。
(2).对A/D转换器进行初始化
程序中参数ch表示所选择通道号,程序以下:
void AD_Init (unsigned char ch)
{
rADCDLY=100; //ADC开启或间隔延时
rADCTSC=0; //选择ADC模式
rADCCON=(1<<14)|(49<<6)|(ch<<3)|(0<<2)|(0<<1)|(0); //使能前置分频器,设置前置分频值为49,正常模式,严禁读操作开启,不开启。
}
(3).获取A/D转换值
程序中参数ch表示所选择通道号,程序以下:
int Get_AD(unsigned char ch){
int i;
int val= 0;
i f (ch>7) return 0; //通道不能大于7
for(i=0; i< 16; i++){ //为转换正确,转换16次
rADCCON |=0x1; //开启A/D转换
rADCCON= rADCCON&0xffc7 |(ch<<3); //设置通道号
while (rADCCON&0x1); //等候开启位清零
while(!(rADCCON&0x8000)); //等候转换结束
val +=(rADCDAT0&0x03ff);
Delay(10);
}
return(val >> 4); //为转换正确,除以16取均值
}
3、 掌握四线式电阻式触摸屏工作原理,能分析触摸点X轴坐标和Y轴坐标是怎样测量出来。
触摸屏按其工作原理可分为矢量压力传感式、电阻式、电容式、红外线式和表面声波式5类。在嵌入式系统中常见是电阻式触摸屏。
四线式触摸屏X工作面和Y工作面分别加在两个导电层上,共有4根引出线:X+、X-,Y+、Y-分别连到触摸屏X电极对和Y电极对上。四线电阻屏触摸寿命小于100万次。
当给X方向电极对施加一确定电压,而Y方向电极对不加电压时,在x平行电压场中,触点处电压值能够在Y+(或Y—)电极上反应出来,经过测量Y+电极对地电压大小,经过A/D转换,便可得悉触点X坐标值。同理,当给Y电极对施加电压,而X电极对不加电压时,经过测量X+电极电压,经过A/D转换便可得悉触点Y坐标。
四线电阻触摸屏分辨方法是将四线电阻触摸后改变模拟量转换成数字量,经过软件计算得出不一样屏幕上不一样X,Y坐标。此工作关键是靠S3C2440A 芯片中模数转换器来实现。
4、 了解 S3C2410UART串行接口工作原理,掌握S3C2410UART发送和接收数据程序设计。
UART(通用异步收发器)关键由数据线接口、控制逻辑、配置寄存器、波特率发生器、发送部分和接收部分组成,采取异步串行通信方法,采取RS-232C 9芯接插件(DB-9)连接,是广泛使用串行数据传输方法.
本程序实例实现从UART0接收数据,然后分别从UART0和UART1发送出去。其功效能够把键盘敲击字符经过PC机串口发送给ARM系统上UART0,ARM系统上UART0接收到字符后,再经过UART0和UART1送给PC机,这么就完成了串口间收发数据。要实现以上数据收发功效,需要编写关键代码以下。
(1)发送数据
其中whichUart为全局变量,指示目前选择UART通道,使用串口发送一个字节代码以下:
void Uart_SendByte(int data)
{
if(whichUart= =0)
{
if(data= =‘\n’)
{
while(!(rUTRSTAT0&0x2));
Delay(10); //延时,和终端速度相关
WrUTXH(‘\r’);
}
while(!(rUTRSTAT0&0x2)); //等候,直到发送状态就绪
Delay(10);
WrUTXH0(data);
}
else if(whichUart= =1)
{
if(data==‘\n’)
{
while(!(rUTRSTAT1&0x2));
Delay(10); //延时,和终端速度相关
rUTXH1=‘\r’;
}
while(!(rUTRSTAT1&0x2)); //等候,直到发送状态就绪
Delay(10);
rUTXH1=data;
}
else if(whichUart= =2)
{
if (data= =‘\n’)
{
while(!(rUTRSTAT2&0x2));
Delay(10); //延时,和终端速度相关
rUTXH2=‘\r’;
}
while(!(rUTRSTAT2&0x2)); //等候,直到发送状态就绪
Delay(10);
rUTXH2=data;
}
}
(2).接收数据
假如没有接收到字符则返回0。使用串口接收一个字符代码以下:
char Uart_GetKey(void)
{
if(whichUart==0){
if(rUTRSTAT0&0x1) //UARTO接收到数据
return RdURXH0();
else
return 0;
}
else if(whichUart= =1){
if(rUTRSTAT1&0x1) //UART1接收到数据
return RdURXH1();
else
return 0;
}
else if(whichUart= =2){
if(rUTRSTAT2&0x1) //UART2接收到数据
return RdURXH2();
else
return 0;
}else
return 0;
}
5、掌握键盘接口设计方法。
要求:掌握矩阵式键盘扫描原理,能设计一个和S3C2410连接4X4矩阵式键盘接口电路 ,并编写键盘扫描程序。
(1) 矩阵键盘按键按N行M列排列,每个按键占据行列一个交点,需要I/O口数目是N+M,许可最大按键数是N×M。矩阵键盘能够降低和微控制器I/O接口连线数,是常见一个键盘结构形式。依据矩阵键盘识键和译键方法不一样,矩阵键盘又能够分为非编码键盘和编码键盘两种。
(2) 一个用I/O口实现键盘接口,为了识别键盘上闭合键,常采取行扫描法。行扫描法是使键盘上某一行线为低电平,而其它行接高电平,然后读取列值,假如列值中有某位为低电平,则表明行列交点处键被按下;不然扫描下一行,直到扫描完全部行线为止。
(3) 依据行扫描法原理,识别矩阵键盘按键闭合分两步进行:
a.识别键盘哪一行键被按下:让全部行线均为低电平,检验各列线电平是否为低,假如有列线为低,则说明该列有键被按下,不然说明无键被按下。
b.假如某列有键被按下,识别键盘哪一行键被按下:逐行置低电平,并置其它各行为高电平,检验各列线电平改变,假如列电平变为低电平,则可确定此行此列交叉点处按键被按下。
1.键盘控制初始化程序
void keyboard_test(void)
{
UINT8T ucChar;
UINT8T szBuf[40];
uart_printf(“\n Keyboard Test Example\n”);
uart_printf(“Press any key to exit…\n”);
Keyboard_init();
g_nKeyPress=0xFE;
While(1)
{
f_nKeyPress=0;
while(f_nKeyPress==0)
{
if(uart_tetkey()) //Press any key from UART0 to exit
return;
else if(ucChar==7) //or press 5*4 Key-7 to exit
return;
else if(g_nKeyPress!=0xFE) //or SB1202/SB1203 to exit
return;
}
iic_read_keybd(0x70,0x1,&ucChar); //get data from ZLG7290
If(ucChar!=0)
{
ucChar-key_set(ucChar); //key map for Edukit II
if(ucChar<16)
sprintf(&szBuf,”press key %d”,ucChar);
else if(ucChar<255)
sprintf(&szBuf,”press key %d”,ucChar);
if(ucChar==0xFF)
sprintf(&szBuf,”press key %c”,ucChar);
if(ucChar==0xFF)
sprintf(&szBuf,”press key FUN”);
#ifdef BOARDTEST
print_lcd(200,170,0x1c,&szBuf);
#endif
uart_printf(szBuf);
uart_printf(“\n”)
}
}
uart_printf(“end.\n”);
}
九、 嵌入式软件及操作系统
1、 正确了解进程、线程概念,掌握进程及进程关键特点,并能说明进程和程序有什么区分。
(1) 进程(process)是在描述多道系统中并发活动过程引入一个概念。进程和程序是两个现有联络又有区分概念,二者不能混为一谈。而进程则是一次实施过程,它是临时,是动态地产生和终止。
一个进程通常包含有以下多个方面内容:
①对应程序;②CPU上下文;③一组系统资源。
进程特点:
①进程含有动态性;②进程含有独立性;③进程含有并发性。
(2)线程(thread)是一个比进程更小能独立运行基础单位。所谓线程,就是进程当中一条实施步骤。包含运行上下文、内存地址空间、打开文件等。
能够用线程来作为CPU基础调度单位,使得各个线程之间能够并发实施。对于同一个进程当中各个线程来说,运行在相同资源平台上,能够共享该进程大部分资源,但也有一小部分资源是不能共享,每个线程全部必需拥有各自独立一份。
2、 任务实现
(1).任务层次结构;(2).任务创建和终止;(3).任务状态;(4).任务控制块;(5).任务切换;(6).任务队列.
任务状态:了解任务状态是怎样转换,转换过程。
通常来说,任务含有运行(running)、就绪(ready)和阻塞(blocked)三种基础状态。
任务会在不一样状态之间往返转换,存在:运行 阻塞、运行 就绪、就绪 运行、阻塞 就绪这四种转换关系。
当一个任务已含有运行条件,但因为CPU正在运行其它任务,临时不能运行该任务时,称为就绪状态。不过,只要把CPU分给该任务,它就能够立即实施。
任务因为正在等候某种事件发生而临时不能运行称为阻塞状态,也叫等候状态(waiting)。此时,即使CPU已经空闲下来了,该任务也还是不能运行。
什么是任务控制块TCB,任务控制块包含哪些关键内容 。
TCB(Task Control Block,任务控制块)是在操作系统当中用来描述和管理一个任务数据结构。TCB关键包含任务管理信息、CPU上下文信息、资源管理信息等内容。
3、 实时系统调度:解实时系统任务是怎样调度。
基于优先级调度算法给每个进程分配一个优先级,在每次进程调度时,调度器总是调度那个含有最高优先级任务来实施。
很多嵌入式操作系统全部是实时操作系统(RTOS),实时系统调度追求是实时性,RTOS调度器要让每个任务全部在其最终时间期限(deadline)之前完成,而各任务之间公平性并不是最关键指标。RTOS调度器多采取基于优先级可抢占调度算法。
在RTOS任务模型中,每一个任务用一个三元组来表示(实施时间、周期、时间期限)。其中:实施时间(execution time)E(i)是指对于第i个任务,当它所需要资源全部己含有时,它实施所需要最长时间。周期(peri
展开阅读全文