嵌入式系统设计师考试笔记之嵌入式系统基础知识
1、嵌入式系统的定义
(1)定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
(2)嵌入式系统发展的4个阶段:无操作系统阶段、简单操作系统阶段、实时操作系统阶段、面向Internet阶段。
(3)知识产权核(IP核):具有知识产权的、功能具体、接口规范、可在多个集成电路设计中重复使用的功能模块,是实现系统芯片(SOC)的基本构件。
(4)IP核模块有行为、结构和物理3级不同程度的设计,对应描述功能行为的不同可以分为三类:软核、固核、硬核。
2、嵌入式系统的组成:硬件层、中间层、系统软件层和应用软件层
(1)硬件层:嵌入式微处理器、存储器、通用设备接口和I/O接口。
嵌入式核心模块=微处理器+电源电路+时钟电路+存储器
Cache:位于主存和嵌入式微处理器内核之间,存放的是最近一段时间微处理器使用最多的程序代码和数据。它的主要目标是减小存储器给微处理器内核造成的存储器访问瓶颈,使处理速度更快。
(2)中间层(也称为硬件抽象层HAL或者板级支持包BSP):它将系统上层软件和底层硬件分离开来,使系统上层软件开发人员无需关系底层硬件的具体情况,根据BSP层提供的接口开发即可。
BSP有两个特点:硬件相关性和操作系统相关性。
设计一个完整的BSP需要完成两部分工作:
A、 嵌入式系统的硬件初始化和BSP功能。
片级初始化:纯硬件的初始化过程,把嵌入式微处理器从上电的默认状态逐步设置成系统所要求的工作状态。
板级初始化:包含软硬件两部分在内的初始化过程,为随后的系统初始化和应用程序建立硬件和软件的运行环境。
系统级初始化:以软件为主的初始化过程,进行操作系统的初始化。
B、 设计硬件相关的设备驱动。
(3)系统软件层:由RTOS、文件系统、GUI、网络系统及通用组件模块组成。
RTOS是嵌入式应用软件的基础和开发平台。
(4)应用软件:由基于实时系统开发的应用程序组成。
3、实时系统
(1)定义:能在指定或确定的时间内完成系统功能和对外部或内部、同步或异步时间做出响应的系统。
(2)区别:通用系统一般追求的是系统的平均响应时间和用户的使用方便;而实时系统主要考虑的是在最坏情况下的系统行为。
(3)特点:时间约束性、可预测性、可靠性、与外部环境的交互性。
(4)硬实时(强实时):指应用的时间需求应能够得到完全满足,否则就造成重大安全事故,甚至造成重大的生命财产损失和生态破坏,如:航天、军事。
(5)软实时(弱实时):指某些应用虽然提出了时间的要求,但实时任务偶尔违反这种需求对系统运行及环境不会造成严重影响,如:监控系统、实时信息采集系统。
(6)任务的约束包括:时间约束、资源约束、执行顺序约束和性能约束。
4、实时系统的调度
(1)调度:给定一组实时任务和系统资源,确定每个任务何时何地执行的整个过程。
(2)抢占式调度:通常是优先级驱动的调度,如uCOS。优点是实时性好、反应快,调度算法相对简单,可以保证高优先级任务的时间约束;缺点是上下文切换多。
(3)非抢占式调度:通常是按时间片分配的调度,不允许任务在执行期间被中断,任务一旦占用处理器就必须执行完毕或自愿放弃,如WinCE。优点是上下文切换少;缺点是处理器有效资源利用率低,可调度性不好。
(4)静态表驱动策略:系统在运行前根据各任务的时间约束及关联关系,采用某种搜索策略生成一张运行时刻表,指明各任务的起始运行时刻及运行时间。
(5)优先级驱动策略:按照任务优先级的高低确定任务的执行顺序。
(6)实时任务分类:周期任务、偶发任务、非周期任务。
(7)实时系统的通用结构模型:数据采集任务实现传感器数据的采集,数据处理任务处理采集的数据、并将加工后的数据送到执行机构管理任务控制机构执行。
5、嵌入式微处理器体系结构
(1)冯诺依曼结构:程序和数据共用一个存储空间,程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,采用单一的地址及数据总线,程序和数据的宽度相同。例如:8086、ARM7、MIPS…
(2)哈佛结构:程序和数据是两个相互独立的存储器,每个存储器独立编址、独立访问,是一种将程序存储和数据存储分开的存储器结构。例如:AVR、ARM9、ARM10…
(3)CISC与RISC的特点比较(参照教程22页)。
计算机执行程序所需要的时间P可以用下面公式计算:
P=I×CPI×T
I:高级语言程序编译后在机器上运行的指令数。
CPI:为执行每条指令所需要的平均周期数。
T:每个机器周期的时间。
(4)流水线的思想:在CPU中把一条指令的串行执行过程变为若干指令的子过程在CPU中重叠执行。
(5)流水线的指标:
吞吐率:单位时间里流水线处理机流出的结果数。如果流水线的子过程所用时间不一样长,则吞吐率应为最长子过程的倒数。
建立时间:流水线开始工作到达最大吞吐率的时间。若m个子过程所用时间一样,均为t,则建立时间T=mt。
(6)信息存储的字节顺序
A、存储器单位:字节(8位)
B、字长决定了微处理器的寻址能力,即虚拟地址空间的大小。
C、32位微处理器的虚拟地址空间位232,即4GB。
D、小端字节顺序:低字节在内存低地址处,高字节在内存高地址处。
E、大端字节顺序:高字节在内存低地址处,低字节在内存高地址处。
F、网络设备的存储顺序问题取决于OSI模型底层中的数据链路层。
6、逻辑电路基础
(1)根据电路是否具有存储功能,将逻辑电路划分为:组合逻辑电路和时序逻辑电路。
(2)组合逻辑电路:电路在任一时刻的输出,仅取决于该时刻的输入信号,而与输入信号作用前电路的状态无关。常用的逻辑电路有译码器和多路选择器等。
(3)时序逻辑电路:电路任一时刻的输出不仅与该时刻的输入有关,而且还与该时刻电路的状态有关。因此,时序电路中必须包含记忆元件。触发器是构成时序逻辑电路的基础。常用的时序逻辑电路有寄存器和计数器等。
(4)真值表、布尔代数、摩根定律、门电路的概念。(教程28、29页)
(5)NOR(或非)和NAND(与非)的门电路称为全能门电路,可以实现任何一种逻辑函数。
(6)译码器:多输入多输出的组合逻辑网络。
每输入一个n位的二进制代码,在m个输出端中最多有一个有效。
当m=2n是,为全译码;当m<2n时,为部分译码。
(7)由于集成电路的高电平输出电流小,而低电平输出电流相对比较大,采用集成门电路直接驱动LED时,较多采用低电平驱动方式。液晶七段字符显示器LCD利用液晶有外加电场和无外加电场时不同的光学特性来显示字符。
(8)时钟信号是时序逻辑的基础,它用于决定逻辑单元中的状态合适更新。同步是时钟控制系统中的主要制约条件。
(9)在选用触发器的时候,触发方式是必须考虑的因素。触发方式有两种:
电平触发方式:具有结构简单的有点,常用来组成暂存器。
边沿触发方式:具有很强的抗数据端干扰能力,常用来组成寄存器、计数器等。
7、总线电路及信号驱动
(1)总线是各种信号线的集合,是嵌入式系统中各部件之间传送数据、地址和控制信息的公共通路。在同一时刻,每条通路线路上能够传输一位二进制信号。按照总线所传送的信息类型,可以分为:数据总线(DB)、地址总线(AB)和控制总线(CB)。
(2)总线的主要参数:
总线带宽:一定时间内总线上可以传送的数据量,一般用MByte/s表示。
总线宽度:总线能同时传送的数据位数(bit),即人们常说的32位、64位等总线宽度的概念,也叫总线位宽。总线的位宽越宽,总线每秒数据传输率越大,也就是总线带宽越宽。
总线频率:工作时钟频率以MHz为单位,工作频率越高,则总线工作速度越快,也即总线带宽越宽。
总线带宽 = 总线位宽×总线频率/8, 单位是MBps。
常用总线:ISA总线、PCI总线、IIC总线、SPI总线、PC104总线和CAN总线等。
(3)只有具有三态输出的设备才能够连接到数据总线上,常用的三态门为输出缓冲器。
(4)当总线上所接的负载超过总线的负载能力时,必须在总线和负载之间加接缓冲器或驱动器,最常用的是三态缓冲器,其作用是驱动和隔离。
(5)采用总线复用技术可以实现数据总线和地址总线的共用。但会带来两个问题:
A、需要增加外部电路对总线信号进行复用解耦,例如:地址锁存器。
B、总线速度相对非复用总线系统低。
(6)两类总线通信协议:同步方式、异步方式。
(7)对总线仲裁问题的解决是以优先级(优先权)的概念为基础。
8、电平转换电路
(1)数字集成电路可以分为两大类:双极型集成电路(TTL)、金属氧化物半导体(MOS)。
(2)CMOS电路由于其静态功耗极低,工作速度较高,抗干扰能力较强,被广泛使用。
(3)解决TTL与CMOS电路接口困难的办法是在TTL电路输出端与电源之间接一上拉电阻R,上拉电阻R的取值由TTL的高电平输出漏电流IOH来决定,不同系列的TTL应选用不同的R值。
9、可编程逻辑器件基础(具体参见教程51到61页)
这方面的内容,从总体上有个概念性的认识应该就可以了。
10、嵌入式系统中信息表示与运算基础
(1)进位计数制与转换:这样比较简单,也应该掌握怎么样进行换算,有出题的可能。
(2)计算机中数的表示:源码、反码与补码。
正数的反码与源码相同,负数的反码为该数的源码除符号位外按位取反。
正数的补码与源码相同,负数的补码为该数的反码加一。
例如-98的源码:11100010B
反码:10011101B
补码:10011110B
(3)定点表示法:数的小数点的位置人为约定固定不变。
浮点表示法:数的小数点位置是浮动的,它由尾数部分和阶数部分组成。
任意一个二进制N总可以写成:N=2P×S。S为尾数,P为阶数。
(4)汉字表示法(教程67、68页),搞清楚GB2318-80中国标码和机内码的变换。
(5)语音编码中波形量化参数(可能会出简单的计算题目哦)
采样频率:一秒内采样的次数,反映了采样点之间的间隔大小。
人耳的听觉上限是20kHz,因此40kHz以上的采样频率足以使人满意。
CD唱片采用的采样频率是44.1kHz。
测量精度:样本的量化等级,目前标准采样量级有8位和16位两种。
声道数:单声道和立体声双道。立体声需要两倍的存储空间。
11、差错控制编码
(1)根据码组的功能,可以分为检错码和纠错码两类。检错码是指能自动发现差错的码,例如奇偶检验码;纠错码是指不仅能发现差错而且能自动纠正差错的码,例如循环冗余校验码。
(2)奇偶检验码、海明码、循环冗余校验码(CRC)。(教程70到77页)
12、嵌入式系统的度量项目
(1)性能指标:分为部件性能指标和综合性能指标,主要包括:吞吐率、实时性和各种利用率。
(2)可靠性与安全性
可靠性是嵌入式系统最重要、最突出的基本要求,是一个嵌入式系统能正常工作的保证,一般用平均故障间隔时间MTBF来度量。
(3)可维护性:一般用平均修复时间MTTR表示。
(4)可用性
(5)功耗
(6)环境适应性
(7)通用性
(8)安全性
(9)保密性
(10)可扩展性
性价比中的价格,除了直接购买嵌入式系统的价格外,还应包含安装费用、若干年的运行维修费用和软件租用费。
13、嵌入式系统的评价方法:测量法和模型法
(1)测量法是最直接最基本的方法,需要解决两个问题:
A、根据研究的目的,确定要测量的系统参数。
B、选择测量的工具和方式。
(2)测量的方式有两种:采样方式和事件跟踪方式。
(3)模型法分为分析模型法和模拟模型法。分析模型法是用一些数学方程去刻画系统的模型,而模拟模型法是用模拟程序的运行去动态表达嵌入式系统的状态,而进行系统统计分析,得出性能指标。
(4)分析模型法中使用最多的是排队模型,它包括三个部分:输入流、排队规则和服务机构。
(5)使用模型对系统进行评价需要解决3个问题:设计模型、解模型、校准和证实模型。
真题解析
1、2007年4、5题
若每一条指令都可以分解为取指、分析和执行三步。已知取指时间t取指=4△t,分析时间t分析=3△t,执行时间t执行=5△t。如果按串行方式执行完100条指令需要 (4) △t。如果按照流水线方式执行,执行完100条指令需要 (5) △t。
(4)A. 1190 B. 1195 C. 1200 D. 1205
(5)A. 504 B. 507 C. 508 D. 510
<答案>:C、B
考查流水线技术知识点。
按照串行的方式,执行完一条指令才能执行下一条指令,那么执行完100条指令的时间为:(4+3+5)×100=1200
按照流水线的方式,可以同时执行多条指令。在第一条指令进行分析的时候,第二条指令已经开始取指;当第一条指令进行执行的时候,第二条指令进行分析,第三条指令取指;当第二条指令进行执行完的时候,第三条指令已经分析完成。依此类推,当第一条指令完成之后,每一个执行的周期就可以完成一条指令。需要注意的是,如果流水线的子过程所用时间不一样长,则吞吐率应以最长子过程来计算。因此,我们可以计算得100条指令的执行时间为:(4+3+5)+(100-1)×5=507。
2、2007年24题
某总线有104根信号线,其中数据总线(DB)32根,若总线工作频率为33MHz,则其理论最大传输率为 (24) 。(注:本题答案中的B表示Byte)
(24)A. 33 MB/s B. 64MB/s C. 132 MB/s D. 164 MB/s
<答案>:C
考查总线这个知识点。
根据上面的笔记,总线带宽 = 总线位宽×总线频率/8=32×33/8=132MB/s。
3、2007年26题
某存储器数据总线宽度为32bit,存取周期为250ns,则该存储器带宽为 (26) 。(注:本题答案中的B表示Byte)
(26)A. 8×106B/s B. 16×106B/s C. 16×108B/s D. 32×106B/s
<答案>:B
考查总线这个知识点。
存储器带宽即总线带宽,总线频率为:1/250ns=4×106
存储器带宽为:32×4×106/8=16×106B/s
4、2007年27题
处理机主要由处理器、存储器和总线组成,总线包括 (27) 。
(27)A. 数据总线、串行总线、逻辑总线、物理总线
B. 并行总线、地址总线、逻辑总线、物理总线
C. 并行总线、串行总线、全双工总线
D. 数据总线、地址总线、控制总线
<答案>:D
考查总线这个知识点,基本概念的考查。
5、2007年35题
三极管是可控的开关器件,其饱和与截止状态分别对应开关的接通和断开状态。UBE为基极输入电压,VTH为基极域值电压,如果UBETH,开关应处于 (35) 状态。
(35)A. 接通 B. 三态 C. 断开 D. 高阻
<答案>:C
考查电路中最基本的基础知识点,我觉得做不对的根本不能算嵌入式系统开发入门。
6、2007年36题
如下图所示,若低位地址(A0-A11)接在内存芯片地址引脚上,高位地址(A12-A19)进行片选译码(其中,A14和A16没有参加译码),且片选信号低电平有效,则对下图所示的译码器,不属于此译码空间的地址为 (36) 。
(36)A. AB000H~ABFFFH B. BB000H~BBFFFH
C. EF000H~EFFFFH D. FE000H~FEFFFH
<答案>:D
考查数字电路中译码知识和存储系统中统一编址的问题,相对来说,这个题目有点难度,但是对于学习过和亲身做过单片机的兄弟来说,最基本不过了。
7、2007年46题
(46) 完全把系统软件和硬件部分隔离开来,从而大大提高了系统的可移植性。
(46)A. 硬件抽象层 B. 驱动映射层 C. 硬件交互层 D. 中间层
<答案>:A
考查嵌入式系统组成中的概念。
8、2006年3题
设指令由取指、分析、执行3个子部件完成,每个子部件的工作周期为△t,采用常规标量单流水线处理机。若连续执行10条指令,则共需要时间(3)△t。
(3)A.8 B.10 C.12 D.14
<答案>:C
考查流水线技术知识点。
3+(10-1)×1=12
9、2006年4、5题
某计算机的时钟频率为400MHz,测试计算机的程序使用4种类型的指令。每种指令的数量及所需要的指令时钟数(CPI)如下表所示,则该计算机的指令平均时钟数为(4);该计算机的运算速度为(5)MIPS。
指令类型 指令数目(条) 每条指令需要的时钟数
1 160000 1
2 30000 2
3 24000 4
4 16000 8
(4)A.1.85 B.1.93 C.2.36 D.3.75
(5)A.106.7 B.169.5 C.207.3 D.216.2
<答案>:B、C
考查指令运行方面的简单计算。
平均时钟数=(160000+2×30000+4×24000+8×16000)/(160000+30000+24000+16000)=1.93
MIPS是指每秒种执行多少百万条指令,即106。
计算机的运行数度为:400/1.93=207.25=207.3MIPS
9、2006年12题
计算机要对声音信号进行处理时,必须将它转换为数字声音信号。最基本的声音信号数字化方法时取样-量化法。若量化后的每个声音样本用2个字节表示,则量化分辨率是(12)
(12)A.1/2 B.1/1024 C.1/65536 D.1/131072
<答案>:C
考查声音编码种量化计算的知识点。
2个字节是16位,其量化分辨率位1/1016=1/65536。
10、2006年13题
某幅图像具有640×460个象素点,若每个象素具有8位的颜色深度,则可表示(13)种不同的颜色,经过5:1压缩后,其图像数据需要占用(14)(Byte)的存储空间。
(13)A.8 B.256 C.512 D.1024
(14)A.61440 B.307200 C.384000 D.3072000
<答案>:B、A
考查图像数据存储计算的知识点。
8位颜色深度可以表示28=256种颜色深度。
经过5:1压缩后的数据大小为:640×480×8/8/5=61440。
11、2006年23题
若某逻辑门输入A、B和输出F的波形如下图所示,则F(A,B)的表达式为(23)
(23) A.F=A B B.F=A+B
C.F=A异或B D.F=A(B的非)
___ __
A_______| |____| |_______
_______
B_______| |___________
______
F___________| |_______
<答案>:C
考查数字电路的最基本知识点,我觉得这个都搞不清楚很难通过这个考试。
12、2006年24题
一个4位的二进制计数器,由0000状态开始,经过25个时钟脉冲后,该计数器的状态为24
(24) A.1100 B.1000 C.1001 D.1010
<答案>:C
考查数字电路的最基本知识点,相对上面一题有点难,需要对计数器的工作原理有比较清楚的理解。这个也是搞嵌入式系统的基础中的基础,参考教程38页或相关的数电书籍。
4位的计数器,其计数范围是24=16,0000开始经过16个时钟脉冲之后又回到了开始的状态0000。25-16=9,所以说经过25个时钟之后,其计数器的数值应该是9=1001。
13、2006年25题
稳压二极管构成的稳压电路的接法是(25)
(25) A.稳压管与负载电阻串联。
B.稳压管与限流电阻并联。
C.限流电阻与稳压管串联后,在与负载电阻串联。
D.限流电阻与稳压管串联后,在与负载电阻并联。
<答案>:D
考查模拟电路的最基本知识点,实在太简单,不知道从那里开始分析了。
14、2006年26题
以下叙述中,不符合RISC指令系统特点的是(26)
(26) A.指令长度固定,指令种类少。
B.寻址方式种类丰富,指令功能尽量增强。
C.设置大量通用寄存器,访问存储器指令简单。
D.选取使用频率较高的一些简单指令。
<答案>:B
考查RISC与CICS的区别,考生应该清楚他们的区别,参加教程22页。
15、2006年27题
通常所说的32位微处理器是指(27)
(27) A.地址总线的宽度为32位 B.处理器数据长度只能为32位
C.CPU字长为32位 D.通用寄存器数目为32位
<答案>:C
考查字长的概念和总线宽度的理解,参加教程25页。
16、2006年28题
在32位总线系统中,若时钟频率为500MHz,传送一个32位字需要5个时钟周期,则该总线系统的数据传送速率为(28)MB/s。
(28) A.200 B.400 C.600 D.800
<答案>:B
考查总线和数据传输方面的知识点。
5个时钟周期可以传送4个Byte。
每秒中可以传送:4×(500/5)=400MB/s。
17、2006年30题
评价一个计算机系统时,通常主要使用(30)来衡量系统的可靠性。
(30) A.评价响应时间
B.平均无故障时间(MTBF)
C.平均修复时间
D.数据处理速率
<答案>:B
考查嵌入式系统性能评价中重要知识点。看过了就会做,每什么分析的,参见教程77页。
小结
就我个人的意见,从内容来看,嵌入式系统基础知识的范围很广,知识点很多,而且没有很强的逻辑性,显得比较凌乱,很难将他们有序的组织在一起。但是也不要害怕,内容虽然多而乱,但是考试的题目都比较简单,有些题目几乎是所见即所得。只要你做过嵌入式或者单片机方面的工作,你都能做出来。一些计算的题目也是一些基本概念的延伸。通过分析历年的真题,一方面可以把握考试的出题方式和考试难度,同时可以把握这部分内容的出题方向和复习的方法。从两年的考试题目数量分布来看,06年10道,07年7道,数量有所较少,但是我觉得这不是一个趋势,08年应该不会少于7道题目的。这部分在嵌入式系统设计里面是相当重要的,有一个良好的基础才能做好下面的事情。如果复习得好,将这7、8分题目拿到手,那么你离45分左右的及格线又迈进了一大步了。
祝准备考试的朋友,考试顺顺利利。
嵌入式系统设计师考试笔记之嵌入式微处理器
一、引言
嵌入式微处理器是嵌入式系统的核心器件,深入理解嵌入式微处理器的工作原理,组成结构、体系结构以及软件编程等方面,无论对嵌入式设计师考试的准备还是对嵌入式项目的开发都有一定的帮助。在目前白花盛放的嵌入式微处理器市场,各种各样大大小小的嵌入式微处理器就像菜市场里面的青菜一样。要对各种嵌入式微处理器都有深入的理解几乎是不可能的。但是万变不离其中,在总多的嵌入式微处理器中都有着共同的概念、原理与规律。我们要做的是分析嵌入式微处理器的基本结构、基本工作原理、体系结构、市场发展趋势、各种微处理器的特点与应用场合等等。我个人觉得,面对全国的考试,其考点应该是大家都应该去掌握的一些共有的基本知识,或者是大家都熟悉,流行程度甚广的一些微处理器的使用,而不是一些个性化的知识点或者偏门器件的使用。
二、复习笔记
1. 嵌入式微处理器的基本结构
(1)嵌入式硬件系统一般由嵌入式微处理器、存储器和输入/输出部分组成。
(2)嵌入式微处理器是嵌入式硬件系统的核心,通常由控制单元、算术逻辑单元和寄存器3大部分组成:
A、控制单元:主要负责取指、译码和取数等基本操作并发送主要的控制指令。
B、算术逻辑单元:主要处理数值型数据和进行逻辑运算工作。
C、寄存器:用于暂存临时性的数据。
2. 嵌入式微处理器的分类(根据用途)
(1)嵌入式微控制器(MCU):又称为单片机,片上外设资源一般比较丰富,适合于控制。最大的特点是单片化,体积小,功耗和成本低,可靠性高。目前约占70%的市场份额。
(2)嵌入式微处理器(EMPU):又称为单板机,由通用计算机中的CPU发展而来,它的特征是具有32位以上的处理器,具有较高的性能。通常嵌入式微处理器把CPU、ROM、RAM及I/O等模块做到同一个芯片上。
(3)嵌入式DSP处理器(DSP):专门用于信号处理方面的处理器,其在系统结构和指令算法方面进行了特殊设计,使其处理速度比最快的CPU还快10~50倍,在数字滤波、FFT、频谱分析等方面获得了大量的应用。
(4)嵌入式片上系统(SOC):追求产品系统最大包容的集成器件,其最大的特点是成功实现了软硬件的无缝结合,直接在微处理器片内嵌入操作系统的代码模块。
3. 典型8位微处理器的结构和特点
该部分参考《教程》86~94页,以8051为重点,彻底搞清楚8位单片机的工作原理,外设控制、存储分布、寻址方式以及典型应用。2007年11月下午的第一道题目就考查了8051的定时器使用、外部时钟连接、实际应用的流程设计以及典型的寻址方式。这些考点几乎可以在《教程》上找到,例如外部时钟连接那个问题的答案就是《教程》89页上面的原图。
4. 典型16位微处理器的结构和特点
该部分参考《教程》94~97页。典型的微处理器可以参考MSP430,找一本这方面的书看看关于MSP430的结构原理以及典型应用。
5. 典型32位微处理器的结构和特点
该部分参考《教程》97~112页。32位处理器采用32位的地址和数据总线,其地址空间达到了232=4GB。目前主流的32位嵌入式处理器系统主要有ARM系列、MIPS系列、PoewrPC系列等。ARM微处理器体系结构目前被公认为是嵌入式应用领域领先的32位嵌入式RISC处理器结构。按照目前的发展形式,ARM几乎成了嵌入式应用的代名词。按照我个人的意见,作为嵌入式系统设计师考试,逐渐增加考查ARM体系结构与编程方面的题目是大势所趋。2006年没有一道关于ARM的题目,2007年出了少量题目,可能在2008年会继续增加。在下午题方面,2006年考查了X86方面的应用、2007年考查了8051方面的应用,这个可能是一个过度过程,以目前ARM在嵌入式领域的广泛应用和普及程度,下午题目考查ARM应用方面或者32位其他的微处理器方面的应用题目可能在不就将来的考试中就会出现。
6、单片机系统的基本概念
(1)单片机组成:中央处理器、存储器、I/O设备。
(2)存储器:物理实质是一组或多组具备数据输入/输出和数据存储功能的集成电路,用于充当设备缓存或保存固定的程序及数据。
A、ROM(只读存储器):一般用于存放固定的程序或数据表格等,数据在掉电后仍然会保留下来。
B、RAM(随机存储器):用于暂存程序和数据、中间计算结果,或用作堆栈用等,数据在掉电后就会丢失。
(3)I/O端口:单片机与外界联系的通道,它可以对各类外部信号(开关量、模拟量、频率信号)进行检测、判断、处理,并可控制各类外部设备。现在的单片机I/O口已经集成了更多的特性和功能,对I/O端口的功能进行了拓展和复用,例如外部中断、ADC检测以及PWM输出等等。
(4)输出电平:高电平电压(输出"1"时)和低电平电压(输出"0"时)
A、TTL电平:正逻辑,5V为逻辑正,0V为逻辑负,例如单片机的输出。
B、RS232电平:负逻辑,-12V为逻辑正,+12V为逻辑负,例如PC的输出。
注:因此在单片机和PC进行通讯的时候需要一个MAX232芯片进行电平转换。
(5)堆栈:它是一种线性的数据结构,是一个只有一个进出口的一维空间。
A、堆栈特性:后进先出(LIFO)
B、堆栈指针:用于指示栈顶的位置(地址),当发生压栈或者出栈操作时,导致栈顶位置变化时,堆栈指针会随之变化。
C、堆栈操作:压栈操作(PUSH)和出栈操作(POP)。
D、堆栈类型:"向上生长"型堆栈,每次压栈时堆栈指针加1;"向下生长"型堆栈,每次压栈堆栈时指针减1。
E、堆栈应用:调用子程序、响应中断时,堆栈用于保护现场;还可以用作临时数据缓冲区来使用。
F、使用注意:堆栈溢出问题,压栈和出栈的匹配问题。
(6)定时/计数器:实质都是计数器。用作定时器时是对单片机内部的时钟脉冲进行计数,而在用作计数器时是对单片机外部的输入脉冲进行计数,其作用如下:
A、计时、定时或延时控制;
B、脉冲技术;
C、测量脉冲宽度或频率(捕获功能)
(7)中断:优先级更高的事件发生,打断优先级低的时间进程。引起中断的事件称为中断源。一个单片机可能支持多个中断源,这些中断源可以分为可屏蔽中断和非可屏蔽中断,而这些中断源并不都是系统工作所需的,我们可以根据系统需求屏蔽那些不需要的中断源。
A、中断嵌套:当一个低级中断尚未执行完毕,又发生了一个高级优先级的中断,系统转而执行高级中断服务程序,待处理完高级中断后再回过头来执行低级中断服务程序。
B、中断响应时间是指从发出中断请求到进入中断处理所用的时间;中断处理时间是指中断处理开始到中断处理结束的时间。
C、中断响应过程:
a、保护现场:将当前地址、累加器ACC、状态寄存器保存到堆栈中。
b、切换PC指针:根据不同的中断源所产生的中断,切换到相应的入口地址。
c、执行中断服务处理程序。
d、恢复现场:将保存在堆栈中的主程序地址、累加器ACC、状态寄存器恢复。
e、中断返回:从中断处返回到主程序,继续执行。
D、中断入口地址:单片机为每个中断源分配了不同的中断入口地址,也称为中断向量。
(8)复位:通过外部电路给单片机的复位引进一个复位信号,让系统重新开始运行。
A、复位发生时的动作:
a、PC指针从起始位置开始执行(大多数单片机都时从0x0000处开始执行)。
b、I/O端口设置成缺省状态(高阻态、或者输出低电平)。
c、部分专用控制寄存器SFR恢复到缺省状态。
d、普通RAM不变(如果时上电复位,则是随即数)。
B、两种不同的复位启动方式:
a、冷启动:也叫上电复位,指在断电状态下给系统加电,让系统开始正常运行。
b、热启动:在不断电的状态下,给单片机复位引进一个复位信号,让系统重新开始。
C、两种类型的复位电路:高电平复位和低电平复位。
D注意事项:
a、
注意复位信号的电平状态及持续时间必须满足系统要求。
b、
注意避免复位信号抖动。
(9)时钟电路:单片机是一种时序电路,必须提供脉冲电路才能正常工作。时钟电路相当于单片机的心脏,它的每一次跳动(振动节拍)都控制着单片机的工作节奏。振荡得慢时,系统工作速度就慢,振荡得快时,系统工作速度就快(功耗也增大)。
A、振荡周期:振荡源的振荡节拍。
B、机器周期:单片机完成一个基本操作需要的振荡周期(节拍)。
C、指令周期:执行一条指令需要几个机器周期。不同的指令需要的机器周期数不同。
7、ARM体系结构的基本概念
(1)ARM:Advanced RISC Machine。
(2)ARM体系结构中支持两种指令集:ARM指令集和Thumb指令集。
(3)ARM内核有T、D、M、I四个功能模块:
A、T模块:表示16位Thumb,可以在兼顾性能的同时减少代码尺寸。
B、D模块:表示Debug,内核中放置了用于调试的结构,通常为一个边界扫描链JTAG。
C、M模块:表示8位乘法器。
D、I模块:表示EmbeddedICE Logic,用于实时断点观测及变量观测的逻辑电路部分。
(4)ARM处理器有7种运行模式:
A、用户模式(User):正常程序执行模式,用于应用程序。
D、快速中断模式(FIQ):快速中断处理,用于高速数据传输和通道处理。
C、外部中断模式(IRQ):用于通用的中断处理。
D、管理模式(SVE):供操作系统使用的一种保护模式。
E、数据访问中止模式(Abort):用于虚拟存储及存储保护。
F、未定义指令中止模式(Undefined):当未定义指令执行时进入该模式。
G、系统模式(System):用于运行特权级的操作系统任务。
除了用户模式之外的其他6种处理器模式称为特权模式,在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式切换,其中,除了系统模式外,其他的5种特权模式又称为异常模式。
处理器模式可以通过软件控制进行切换,也可以通过外部中断或异常处理过程进行切换。大多数的用户程序运行在用户模式下,这时,应用程序不能访问一些受操作系统保护的系统资源,应用程序也不能直接进行处理器模式切换。当需要进行处理器模式切换时,应用程序可以产生异常处理,在异常处理中进行处理器模式的切换。这种体系结构可以使操作系统控制整个系统的资源。
当应用程序发生异常中断时,处理器进入相应的异常模式。在每一种异常模式种都有一组寄存器,供相应的异常处理程序使用,这样就可以保证进入异常模式时,用户模式下的寄存器不被破坏。
系统模式并不是通过异常过程进入的,它和用户模式具有完全一样的寄存器,但是系统模式属于特权模式,可以访问所有的系统资源,也可以直接进行处理器模式切换,它主要供操作系统任务使用。
(5)ARM处理器共有37个寄存器:31个通用寄存器和6个状态寄存器
A、通用寄存器包括R0~R15,可以分为3类:
a、未备份寄存器R0~R7:在所有的处理器模式下,未备份寄存器都是指向同一个物理寄存器。
b、备份寄存器R8~R14:
对于R8~R12来说,每个寄存器对于2个不同的物理寄存器,它们每次所访问的物理寄存器都与当前的处理器运行模式有关。
对于R13、R14来说,每个寄存器对于6个不同的物理寄存器,其中一个是用户模式和系统模式共用。
R13在ARM指令种常用作堆栈指针。由于处理器的每种运行模式都有自己独立的物理寄存器R13,所有在用户应用程序的初始化部分,一般要初始化每种模式下的R13,使其指向该运行模式的栈空间。
R14又称为连接寄存器(LR),在ARM体系种具有下面两种特殊作用:在通过BL或BLX指令调用子程序时,存放当前子程序的返回地址;在异常中断发生时,存放异常模式将要返回的地址。
c、程序计数器R15(PC)。
由于ARM采用了流水线机制,在三级流水线中,当正确读取了PC的值时,该值为当前指令地址值加8个字节。也就是说,PC指向当前指令的下两条指令的地址。在ARM指令状态下,PC的0和1位是0,在Thumb指令状态下,PC的0位是0。
B、程序状态寄存器
a、ARM体系结构包含1个当前程序状态寄存器(CPSR)和5个备份的程序状态寄存器(SPSR),使用MSR和MRS指令来设置和读取这些寄存器。
b、当前程序状态寄存器CPSR:保存当前处理器状态的信息,可以在任何处理器模式下被访问。
c、备份程序状态寄存器SPSR:每一种异常处理器模式下都有一个专用的物理状态寄存器。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容,在异常中断程序退出时,可以用SPSR中保存的值来恢复CPSR。
d、由于用户模式和系统模式不属于异常模式,它们没有SPSR,当在这两种模式下访问SPSR时,结果是未知的。
(6)ARM指令的寻址方
所谓寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式。
A、
立即寻址:操作数本身就在指令中给出,只要取出指令也就取到了操作数。
ADD
R0, R0, #1
;R0?R0+1
B、
寄存器寻址:利用寄存器中的数值作为操作数。
ADD
R0, R1, R2
;R0?R1+R2
C、
寄存器间接寻址:以寄存器中的值作为操作数地址,而操作数本身存放在存储器中。
ADD
R0, R1, [R2]
;R0?R1+[R2]
LDR
R0, [R1]
;R0?[R1]
STR
R0, [R1]
;[R1]?R0
D、基址变址寻址:将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。
LDR
R0, [R1, #4]
;R0?[R1+4]
LDR
R0, [R1, #4]!
;R0?[R1+4]
R1?R1+4
LDR
R0, [R1], #4
;R0?[R1]
R1?R1+4
LDR
R0, [R1, R2]!
;R0?[R1+R2]
E、
多寄存器寻址:一条指令可以完成多个寄存器值的传送。
LDMIA
R0, {R1, R2, R3}
;R1?[R0]
R2?[R0+4]
R3?[R0+8]
F、
相对寻址:以程序计数器PC的当前值作为基地址,指令中的地址标号作为偏移量,两者相加之后得到操作数的有效地址。
BL
NEXT
;跳转到子程序NEXT处执行
……
NEXT
……
MOV
PC, LR
;从子程序返回
G、堆栈寻址:支持4种类型的堆栈工作方式:
a、
满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地址生长。
b、
满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生长。
c、
空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生长。
d、
空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生长。
(7)ARM的存储方法
A、大端模式:数据的高字节存储在低地址中,低字节存储在高地址中。
B、小端模式:数据的低字节存储在低地址中,高字节存储在高地址中。
(8)ARM中断与异常
A、ARM内核支持7种中断,不同的中断处于不同的处理模式,具有不同的优先级,而且每个中断都有固定的中断地址入口。当一个中断发生是,相应的R14(LR)存储中断返回地址,SPSR存储当前程序状态寄存器CPSR的值。
B、由于ARM内核支持流水线工作,LR寄存器存储的地址可能是发生中断后面指令的地址,所以不同的中断处理完成后,必须将LR寄存器值经过处理后再写入P15(PC)寄存器。
C、ARM异常的具体含义:
a、复位:当处理器的复位电平有效时,产生复位异常,程序跳转到异常复位异常处理程序处执行。
b、未定义的指令:当ARM处理器或协处理器遇到不能处理的指令时,产生未定义指令异常。可以使用该异常机制进行软件仿真。
c、软件中断:该异常由执行SWI指令产生,可用于用户模式下的程序调用特权操作指令。可使用该异常机制实现操作系统调用功能。
d、指令预取中止:如果处理器预取指令的地址不存在或该地址不允许当前指令访问,存储器向处理器发出中止信号,但当预取的指令被执行时,才会产生指令预取中止异常。
e、数据访问中止:如果处理器数据访问指令的目标地址不存在,或者该地址不允许当前指令访问,处理器产生数据访问中止异常。
f、外部中断请求:当ARM外部中断请求管脚有效,而且CPSR中的I位为0时,产生IRQ异常。系统的外设可以通过该异常请求中断服务。
g、快速中断请求:当ARM快速中断请求管脚有效,而且CPSR的F位为0时,产生FIQ异常。
D、ARM处理器对异常中断的响应过程
a、将下一条指令的地址存入相应的连接寄存器LR中。
b、将CPSR复制到相应的SPSR中。
c、根据异常的类型,强制设置CPSR的运行模式位。
d、强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。
E、ARM处理器从异常中断处理程序中返回
a、恢复中断的程序的处理器状态,将SPSR复制到CPSR中。
b、若在进入异常处理时设置了中断禁止位,要在此清除。
c、将连接寄存器LR的值减去相应的偏移量后送到PC。
F、复位异常中断处理程序不需要返回。在复位异常中断程序开始整个用户程序的执行。
三、真题解析
1、2007年上午49题
在ARM处理器中,(49) 寄存器包括全局的中断禁止位,控制中断禁止位就可以打开或者关闭中断。
(49)A.
CPSR
B.
SPSR
C.
PC
D.
IR
<答案>:A
考查ARM体系结构的基础知识,CPSR为当前程序状态寄存器,包含全局中断控制位。
2、2007年下午试题一(题目略)
考查8051定时器应用、外部时钟硬件连接、实际项目流程设计以及寻址方式。
3、2006年上午27题
通常所说的32位微处理器是指(27)
(27)A. 地址总线的宽度为32位
B. 处理器数据长度只能为32位
C. CPU字长为32位
D. 通用寄存器数目为32个
<答案>:C
根据常识,很容易将B和D排除掉。
所谓字长,指CPU在单位时间内(同一时间)能一次处理的二进制数的位数。
因此,能处理字长为8位数据的CPU通常就叫8位的CPU,32位CPU的字长为32位。
对于字长和字节,通常8位称为一个字节,而字长的长度是不固定的,对于不同的CPU,字长的长度不一样。8位的CPU一次只能处理一个字节,而32位的CPU一次就能处理4个字节。
四、小结
从这两年的考试真题来看,关于嵌入式微处理器方面的题目不多,06和07年上午题目各一题。而且考的都是基础中的基础概念。这些几乎就是每个搞计算机或者单片机的人一进门就要理解的概念。虽然考试的题目不多,然而对嵌入式微处理器的很多基本概念和原理的理解对试卷上的其他题目的解答都有一点的帮助。随着ARM技术的飞速普及,07年也开始出现ARM体系结构的题目,我觉得在今后的考试中,这方面题目可能会不断出现。在下午题目中,一道硬件相关的题目是少不了的,嵌入式微处理器作为嵌入式系统的核心,多多少少会设计到。06年考查X86,07年考查MCS-51,这是计算机也可以说是嵌入式发展和普及的一个过程,今后会不会考查ARM的应用呢?完全有这个可能性。然而目前MCU的市场仍然火爆,最近ARM推出的cortex-M3也不不断占领MCU的市场,可见MCS-51的为基础的应用仍然不断涌现。07年考查了8051的应用,今后我觉得可能还会继续出的吧。
嵌入式系统设计师考试笔记之操作系统基础
一、引言
原定于11月8号的嵌入式系统设计师考试由于某种原因推迟,得以让我有时间再写几篇文章,在最后的时刻为大家提供最后的帮助。
我觉得,嵌入式系统设计主要包含系统设计、硬件设计和软件设计。其中大部分工作是嵌入式软件方面,包括操作系统的移植、系统体系架构设计、设备驱动程序编写、用户应用程序设计等等。所以在嵌入式系统设计师的考试中也应该集中在这几点上面。前面的几篇文章对嵌入式硬件方面做了几个总结,现在对嵌入式软件方面做一些个人的归纳,再结合历年真题分析一下,对我认为常见的考点梳理了一下,不知道对大家有没有用处。
在嵌入式软件设计中,操作系统基础尤为重要,可以考查的考点也特别的多。我觉得它的地位就跟四六级英语考试中的阅读部分一样。这部分内容不能吃透,很难将这个考试拿下来,当然也有例外的。我只是想说明这部分的重要性。闲话少数,进入正题。
二、复习笔记
1、嵌入式软件基础
(1)嵌入式软件的特点:
A、规模较小。
B、开发难度大。
C、实时性和可靠性要求高。
D、要求固化存储。
(2)嵌入式软件分类:
A、系统软件:控制和管理嵌入式系统资源,如嵌入式操作系统、驱动程序、中间件等。
B、应用软件:定义嵌入式设备的主要功能和用途,负载与用户进行交互。
C、支撑软件:辅助软件开发的工具软件。
(3)无操作系统的嵌入式软件的两种实现方式:
A、循环轮转
优点:简单、直观、开销小、可预测。
缺点:过于简单,所有代码顺序执行,无法处理异步事件,缺乏并行处理能力。
B、前后台系统(在循环轮转的基础上增加了中断处理功能)
前台(事件处理级):中断服务程序,负载处理异步事件。
后台(任务级):一个无限循环,负载资源分配、任务管理和系统调度。
(4)有操作系统的三大优点:
A、提高系统的可靠性。
B、提高了系统的开发效率,降低了开发成本,缩短了开发周期。
C、有利于系统的扩展与移植。
(5)设备驱动层(也叫板级支持包BSP:包含了嵌入式系统中所有与硬件相关的代码)
大多数的嵌入式硬件设备都需要某种类型软件的初始化和管理。这部分工作由设备驱动层来完成的,它负责直接与硬件大交道,对硬件进行管理和控制,为上层软件提供所需的驱动支持,类似PC系统中的BIOS和驱动程序。
(6)板级支持包BSP的基本思想
把嵌入式操作系统与具体的硬件平台隔离开来。在BSP当中,把所有与硬件相关的代码都封装起来,并向上提供一个虚拟的硬件平台,而操作系统就运行在这个虚拟的硬件平台上。它使用一组定义好的编程接口来与BSP进行交互,并通过BSP来访问真正的硬件。
(7)一般来说。BSP主要包括两个方面的内容:
A、引导加载程序BootLoader。
B、设备驱动程序。
(8)关于引导加载程序BoorLoader
引导加载程序是嵌入式系统加电后运行的第一段软件代码,是在操作系统内核运行之前运行的一段小程序,它的实现高度依赖于具体的硬件平台,主要的基本功能如下:
A、 片级初始化:纯硬件初始化过程,把微处理器从上电的默认状态设置成系统要求的工作状态。
B、 板级初始化:同时有软件和硬件在内的初始化过程,设置各种硬件的寄存器和设置某些软件的数据结构和参数。
C、 加载内核:将操作系统和应用程序的映象从Flash存储器复制到系统内存当中,然后跳转到系统内核的第一条指令处继续执行。
补充:PC系统的引导加载过程。
PC系统的引导加载程序由两部分代码组成――BIOS和MBR中的引导程序。BIOS在完成硬件检测和资源配置后,将硬盘主引导记录MBR中的引导程序读到系统的内存当中,然后将控制权交给它,由它负责把操作系统的内核映象从硬盘读入到内存,然后跳转到内核入口去运行,即启动操作系统。
(9)设备驱动程序
在一个嵌入式系统中,操作系统可能有也可能无,但是设备驱动程序是必不可少的。设备驱动程序,就是一组库函数,用来对硬件进行初始化和管理,并向上层软件提供良好的访问接口。大多数设备驱动程序都具备下面的基本功能:启动、关闭、停用、启用、读操作、写操作。这些功能一般用函数的形式来实现,这些函数之间的组织结构主要有两种:分层结构和混合结构。
(10)关于分层结构
A、硬件接口:直接操作和控制硬件。
B、调用接口:不直接跟硬件大交道,为上层软件提供服务和函数接口。
C、优点:把所有与硬件相关的细节都封装在硬件接口中,在硬件需要升级,需要更新设备驱动程序的时候,只需要改动硬件接口中的函数即可,而上层调用接口中的函数不用做任何修改。
D、混合结构:在设备驱动程序当中,没有明确的层次关系,上层接口和硬件接口混在一起,相互调用。
(11)嵌入式中间件
它是在操作系统内核、设备驱动程序和应用软件之外的所有系统软件,其基本思路是:把原本属于应用软件层的一些通用的功能模块抽取出来,形成独立的一层软件,从而为运行在它上面的那些应用软件提供一个灵活、安全。移植性好、相互通信、协同工作的平台。
2、嵌入式操作系统概述
(1)内核
内核是指操作系统中的一个组件,它包含了OS的主要功能,即OS的各种特性及其相互之间的依赖关系,这些功能主要包括:
A、任务管理:对系统中运行的软件进行描述和管理,并完成处理器资源分配和调度。
B、存储管理:提高内存的利用率,方便用户使用,提供足够的存储空间。
C、设备管理:方便设备的使用,提高CPU和I/O设备的利用率。
D、文件管理:解决文件资源存储、共享、保密和保护等问题。
注:不同嵌入式操作系统的内核设计各不相同,取决于系统设计和实际需求。
(2)嵌入式操作系统分类:
A、按系统类型:商业系统、专用系统、开源系统。
B、按响应时间:硬实时系统、软实时系统。
C、按软件结构:单体结构(uCOS)、分层结构(MS-DOS)、微内核结构(Vxworks)。
3、任务管理
(1)嵌入式操作系统的任务管理可以分为:
A、单道程序技术:操作系统中,任何时候只能有一个程序在运行。
B、多道程序技术:操作系统中,允许多个程序同时存在并运行。
(2)进程
进程,简单的说,是一个正在运行的程序。
进程与程序既有联系又有区别,主要表现为下面结构方面:
A、程序由数据和代码两部分内容组成,它是一个静态的概念。而进程是正在执行的程序,它也由两部分组成:程序和该程序的运行上下文。它是一个动态的概念。
B、程序和进程之间并不是一一对应的。一个进程在运行的时候可以启动一个或多个程序。反之,同一个程序也可能由多进程同时执行。
C、程序可以作为一种软件资源长期保存,以文件的形式存放在光盘或硬盘上,而进程则是一次执行的过程,它是暂时的,是动态的产生和终止。
一个进程至少应包括三个方面:相应的程序、CPU上下文、一组系统资源。
进程有三个特性:
A、 动态性:进程是正在运行的程序,而程序的运行状态是不断变化的。
B、 独立性:进程是系统资源的使用单位,每个进行有自己的运行上下文和内部状态。
C、 并发性:宏观来看,系统中同时有多个进程存在,它们相互独立地运行。
注:对于并发的理解。
在单CPU的情况下,所谓的并发性指的是宏观上的并发运行,而微观上还是顺序进行,各个进程轮流去使用CPU资源。在单核CPU中,真正的、物理上的PC寄存器只有一个,进程在轮流执行的时候,物理PC的取值也在不断变化。而逻辑PC其实就是一个内存变量。每个进程都有一个逻辑PC,当一个进程要运行的时候,就把它的逻辑PC装载到物理PC中去;反之,当一个进程暂不运行的时候,就把物理PC中的值保存在它的逻辑PC当中。
(3)线程
线程就是进程当中的一条执行流程。
进程其实包含两个部分:资源平台和执行流程(线程)。
在一个进程当中,或者说在一个资源平台上,可以同时存在多个线程;可以用线程作为CPU的基本调度单位,使得各个线程之间可以并发执行;对于同一个进程当中的各个线程来说,他们可以共享该进程的大部分资源。每个线程都有自己独立的CPU运行上下文和栈,这是不能共享的。
(4)任务
在嵌入式系统中,任务其实就是线程,它是能够独立运行的一个实体。原因有二:
A、 任务具有独立的优先级和栈空间,CPU上下文一般存放在栈空间中。
B、 任务之间可以很方便地、直接地使用共享的内存单元,而不需要经过系统内核。
在多道程序的嵌入式系统中,同时存在着多个任务,这些任务之间的结构一般为层状结构,存在着父子关系。当嵌入式内核刚刚启动的时候,只有一个任务存在,然后由该任务派生出所有其他任务。
(5)任务的创建与中止(教程P270)
任务的创建主要发生在以下三种情形:
A、 系统初始化。
B、 任务运行的过程中。
C、 用户提出请求。
从技术的角度来说,实际上新任务只有一种创建的方法,也就是在一个已经存在的任务中,通过调用相应的系统函数来创建一个新的任务。
任务的创建只要有两种可能的实现模型:fork/exec和spawn。两种模型的差别主要在于内存的分配方式。
A、fork/exec模型下,首先调用fork函数为新任务创建一份与父任务完全相同的内存空间,然后再调用exec函数装入新任务的代码,并用它来覆盖原有的属于父任务的内容。嵌入式Linux操作系统是基于fork/exec模型的。
B、spawn模式下,在创建新任务的时候,直接为它分配一个全新的地址空间,然后将新任务的代码装入并运行。uCOS操作系统是基于spawn模型的。
任务的中止可能有多种原因,主要有下面三种情况:
A、 正常退出。
B、 错误推出。
C、 被其他任务踢出。
在有些嵌入式系统中,尤其是一些控制系统中,它的某些任务被设计为"死循环"的模式,一直循环下去,不会中止。
(6)任务的状态
任务有三中基本状态:
A、 运行状态:任务占有CPU,并在CPU上运行。
B、 就绪状态:任务已经具备运行的条件,在等待CPU空闲。
C、 阻塞状态:任务因为正在等待某种事件的发生而暂时不能运行。
对于就绪状态和阻塞状态,它们的相同之处在于,任务都是处于暂停状态,没有运行。不同之处在于,暂停的原因是不一样的,导致就绪状态的原因是外因,是操作系统的CPU正忙,而导致阻塞状态的原因是内因,是任务自身的问题。
任务状态的四种转换关系:任务由 时间 褃
A、 运行à阻塞:任务由于等待某个时间被阻塞起来。
B、 运行à就绪:调度器由于某种原因(例如优先级)选择了另一个任务去运行。
C、 就绪à运行:CPU空闲了,处于就绪状态的任务被调度器选中去运行。
D、阻塞à就绪:任务的等待事件完成,具备了继续运行的条件。
(7)任务控制块TCB
任务控制块TCB,就是在操作系统中,用来描述和管理一个任务的数据结构。系统为每一个任务都维护了一个相应的TCB,用来保存该任务的各种相关信息。它的主要内容包括下面几项:
A、 任务的管理信息:任务的标识ID、状态、优先级、调度信息、各种队列指针等。
B、 CPU上下文信息:CPU各种寄存器当前的值以及逻辑寄存器。
C、 资源管理的信息:段表地址、页表地址、根目录、文件描述字等。
当需要创建一个任务的时候,就为它生成一个TCB,并初始化这个TCB的内容;当需要中止一个任务的时候,只要回收它的TCB就可以了。
(7)任务的切换
基本思想:把当前任务的运行上下文保存起来,并恢复新任务的上下文。
任务切换通常有下面的基本步骤:
A、 将处理器的运行上下文保存在当前任务的TCB中。
B、 更新当前任务的状态,从运行状态变为就绪状态或阻塞状态。
C、 按照一定的策略,从所有处于就绪状态的任务中选择一个去运行。
D、修改新任务的状态,从就绪状态变成运行状态。
E、 根据新任务的TCB的内容,恢复它的运行上下文环境。
在一个多任务的操作系统中,采用任务队列的方式来组织它的所有任务。由操作系统来维护一组队列,用来表示系统当中所有任务的当前状态,不同的状态用不同的队列来标志。
(8)任务的调度
调度器可以看作CPU的资源管理者。
任务调度的首要问题是:何时进行调度,即调度发生的时机。一般有下面几种情形:
A、 一个新任务被创建时,需要决定运行新任务还是继续执行父任务。
B、 一个任务运行结束时,需要从就绪队列中选择某个任务去运行。
C、 一个任务运行阻塞时,需要选择另一个任务去运行。
D、一个I/O操作完成,任务阻塞结束,立即执行新就绪任务还是继续执行被中断任务。
E、 一个时钟节拍结束时,需要对就绪任务重新调度。
任务调度的第二个问题是:如何调度,即调度方式。主要有两种方式:
A、 不可抢占调度方式:例如时间片轮转。
B、 可抢占调度方式:例如优先级调度。
实时操作系统大都采用可抢占调度方式。
任务调度的第三个问题是:调度算法。
A、 先来先服务算法:按照任务到达的先后次序进行调度,是不可抢占的调度方式。
B、 短作业优先算法:各个任务开始执行之前,事先预计好它的执行时间,从中选择用时较短的任务优先执行。
C、 时间片轮转算法:所有的就绪任务按照先来先服务的原则排成一个队列。在每次调度的时候,把处理器分派给队列当中的第一个任务,让它去执行一小段时间。在这个时间段里任务被阻塞或由于其他原因暂停,或者任务的时间片用完了,它会被送到就绪队列的末尾,然后调度器再执行当前队列的第一个任务。这种算法的优点是各个就绪任务都平均地分配使用CPU的时间,每个就绪任务都能一直保持着活动性。时间片轮转法有一个默认前提,即位于就绪队列中的各个任务是同等重要的。
D、优先级算法:给每个任务都设置一个优先级。然后在任务调度的时候,在所有处于就绪状态的任务中选择优先级最高的那个任务去运行。采用优先级调度算法的一个问题是可能会发生优先级反转(教程P285),出现任务"饥饿"现象。
(9)实时系统调度
对于RTOS调度器来说,任务之间的公平性并不是最重要的,它追求的是实时性。
A、单调速率调度算法(RMS):任务的优先级与它的周期表现为单调函数的关系,任务的周期越短,优先级越高,任务的周期越长,优先级越低。RMS假定任务是相同独立的、周期性的、任务在能够在任何位置被抢占,而实际中的系统,任务之间需要进行通信和同步,这是一种理想的调度方法,实际中并不一定存在。
B、最早期限优先法(EDF):根据任务的截止时间来确定其优先级,对于时间限期最近的任务,分配最高的优先级。当有一个新的任务处于就绪状态时,各个任务的优先级就有可能要进行调整,选择截止时间最近的任务去运行。
(10)任务互斥
A、任务之间的关系:相互独立、任务互斥、任务同步、任务通信。
B、任务间的互斥:当前已经有一个任务正在访问临界区共享数据,那么其他任务暂时不能访问。
C、提出互斥访问的四个条件:
a、在任何时候最多只能有一个任务位于它的临界区中。
b、不能事先假定CPU的个数和系统的运行速度。
c、没有任务位于它的临界区中,它不妨碍其他任务去访问临界区资源。
d、任何一个任务进入临界区的请求必须在有限的时间内得到满足,不能无限期。
D、任务互斥的解决方案:
a、关闭中断法
b、繁忙等待法
c、信号量处理
(11)信号量
信号量记录当前可用资源的数量。
信号量由操作系统维护,任务不能直接去修改它的值,只能通过初始化和两个标准原语(PV原语)来对它进行访问。
注:关于原语。
原语通常由若干条语句组成,用来实现某个特点的操作,并通过一段不可分割或不可中断的程序来实现其功能。原语时操作系统内核的一个组成部分,必须在内核态下执行。原语的不可中断性是通过在其执行过程中关闭中断来实现的。关键要理解PV原语的实现:
P(semaphores S)
{
--S.count; //申请一个资源
if(S.count < 0) //没有空闲资源
{
将当前任务阻塞起来,加到阻塞队列末尾,调度新的任务运行。
}
}
V(semaphores S)
{
++S.count; //释放一个资源
if(S.count <= 0) //有任务被阻塞
{
从阻塞队列中取出一个任务,把该任务改为就绪状态,插入就绪队列。
}
}
利用操作系统提供的信号量机制,可以方便、有效地实现对临界资源的互斥访问,优点有两个:
A、 可以设置信号量的计数值,从而允许多个任务同时进入临界区。
B、 当一个任务暂时无法进入临界区时,它会被阻塞起来,将CPU让给其他任务。
(12)任务同步2
任务之间的同步可以使用信号量机制,通过引入PV操作来设定两个任务在运行时的先后顺序。例如,可以把信号量视为某个共享资源的当前个数,然后由一个任务负责生成这种资源,而另一个任务则负责消费这种资源,这样可以构成两个任务之间的先后顺序。在具体实现上,一般把信号量的初始值设为N,N大于或等于0。然后在一个任务内使用V原语,把信号量加1,而在另外一个任务内部使用P原语,将信号量减1,从而实现这两个任务之间的同步关系。
(13)死锁
在一组任务中,每个任务都占用着若干资源,同时又在等待其他任务占用的资源,从而造成所有任务都无法进展下去的现象,这称为死锁现象。
除了资源的竞争之外,PV操作使用不当也会引起死锁。
(14)信号
所谓信号,是系统给任务的一个指示,表明某个异步事件已经发生了。
该事件可能来自外部,也可能来自内部。
信号机制也可以称为软中断机制。
信号机制与中断处理机制非常相似,相同点:
A、 都具有中断性。
B、 都有相应的服务程序。
C、 都可以屏蔽响应。
不同点:
A、 中断由硬件或特定指令产生,而信号由系统调用产生。
B、 中断触发后,硬件会根据中断向量找到相应的处理程序执行;而信号则通过发送信号的系统调用来触发,系统不一定马上对它进行处理。
C、 中断处理程序在系统内核的上下文中运行,是全局的;而信号处理程序在相关任务的上下文中运行,是任务的一个组成部分。
(15)任务间通信
任务之间的通信可以分为两种类型:
A、 低级通信:只能传递状态和整数值等控制信息,例如信号量机制。
B、 高级通信:能够传输任意数量的数据,只要有三类:共享内存、消息传递和管道。
任务之间的通信方式有两种:
A、 直接通信:通信双方必须明确知道与之通信的对象。例如PV原语。
B、 间接通信:通信双方不需指出消息的来源和去向,通过共享邮箱发送和接收消息。
邮箱只能存放单条消息,它提供一种低开销的消息传递机制,只有空和满两种状态。消息队列与邮箱类似,但是可以同时存放若干条消息,提供了一种任务间缓冲通信的方法。
管道由UNIX首创,以文件系统为基础,连接两个任务之间的一个打开的共享文件,专用于任务直接的数据通信。
4、存储管理
见《嵌入式系统设计师考试复习笔记之存储管理篇》。
5、设备管理
(1)设备管理基础
一个I/O单元通常由两个部分组成:
A、 机械部分:I/O设备本身。
B、 电子部分:设备控制器或设备适配器。
硬件寄存器的编址方式有三种:
A、I/O独立编址:对于各种设备控制器中的每一个寄存器,分配一个唯一的I/O端口编号,也叫I/O端口地址,然后用专门的I/O指令对这些端口进行操作。这些端口地址构成的地址空间是完全独立的,与内存地址空间没有任何关系。
B、内存映象编址:把各种设备控制器当中的每一个寄存器都映射为一个内存单元,这内存单元专门用于I/O操作。端口地址空间与内存地址空间是统一编址的,端口地址空间是内存地址空间的一部分。
C、混合编址:对于设备控制器当中的寄存器采用独立编址的方法,每个寄存器有一个独立的I/O端口地址;而对于设备的数据缓冲区,则采用内存映象编址的方法,把他们统一到内存地址空间当中。
(2)I/O控制方式:
A、程序循环检测:要一直占用CPU,浪费CPU的时间。
B、中断驱动方式:前后台系统。
C、直接内存访问:DMA控制,减少了中断的次数。
(3)I/O软件
A、中断处理程序:当一个用户程序需要某种I/O服务时,它会去调用相应的系统函数,而这个函数又会去调用相应的设备驱动程序,在驱动程序中会启动相应的I/O操作,并且被阻塞起来,直到这个I/O操作完成后,产生一个中断程序,并跳到相应的中断处理程序,在这里将会唤醒被阻塞的驱动程序。
B设备驱动程序:直接同I/O设备打交道,直接对它们进行控制的软件模块。上层的I/O软件通过抽象的函数接口与设备驱动程序打交道,这些接口是标准的、稳定不变的,而硬件设备的具体细节被封装在设备驱动程序里面。设备驱动程序的管理通过驱动程序地址表来实现。驱动程序表中存放了各个设备驱动程序的入口地址,可以通过此表来实现设备驱动的动态安装与卸载。
C、设备独立I/O软件:这部分软件在设备驱动程序的上面,是独立的I/O软件,也是系统内核的一部分,主要任务是实现所有设备都需要的一些通用I/O功能,并向用户级的软件提供一个统一的访问接口。
D、用户空间的I/O软件:大部分的I/O软件都是包含在操作系统当中的,也有一小部分运行在系统内核之外。主要可以分为下面两种:
a、与用户程序进行链接的库函数:例如C语言中与I/O相关的库函数。
b、完全运行在用户空间当中的程序:例如Spooling技术。
注:Spooling技术
Spooling是"外围设备联机操作"的所写,spooling技术也叫假脱机技术或虚拟设备技术,它可以把一个独占的设备转变为具有共享特征的虚拟设备。在多道系统中,对于一个独占设备,专门利用一道程序来增强该设备的I/O功能。优点有二:能提供高速的虚拟I/O服务;能实现对独占设备的共享。
6、文件系统
(1)嵌入式文件系统概述
文件系统就是操作系统中用以组织、存储、命名、使用和保护文件的一套管理机制。
常见的嵌入式文件系统有:
A、 FAT:VxWorks、QNX、WindowsCE等
B、 NFS:网络文件系统,基于远程调用和扩展数据表示。
C、 FFS:用于Flash存储器的文件系统。
(2)文件和目录
A、当一个文件被创建时,必须给它指定一个名字,用户就是通过文件名来访问这个文件的。
B、文件命是一个有限长度的字符串,由两部分组成:文件名和扩展名。
C、文件的逻辑结构主要有三种:无结构、简单的记录结构和复杂结构。现代文件系统通常采用的是无结构的形式。
D、除了文件名之外,操作系统会给每个文件附加一些其他信息,称为文件的属性。
E、文件的存取方法有两种:顺序存取和随机存取。
F、目录也称为文件夹,它是一张表格,记录了在该目录下每个文件名和其他的一些管理信息。
G、在多级目录结构中,访问文件或目录主要有两种方法:绝对路径名和相对路径名。
(3)文件系统的实现
A、数据块:在磁盘中以扇区为单元进行读写操作。对文件系统而言,把磁盘空间划分为一个个大小相同的块,称为物理块,每个物理块包含若干个连续的扇区,同时把文件的字节流也分成大小相同的逻辑块。在文件系统内部,以块为单位来进行操作,把每一个逻辑块保存在一个物理块中。
B、文件的实现需要解决两个方面的问题:
a、如何描述一个文件。
b、如何存储一个文件。
C、文件控制块(FCB):它是文件的描述方法,是操作系统为了管理文件而设置的一种数据结构,里面存放了与文件有关的所有管理信息,FCB是文件存在的标志。
D、文件的物理结构:连续结构、链表结构和索引结构。
连续结构:把文件的各个逻辑块按照顺序存放在若干个连续的物理块当中。主要用于CD-ROM等一次性写入的光学存储介质当中。
链表结构:把文件的各个逻辑块依次存放在若干个物理块当中,这些物理块既可以是连续的,也可以是不连续的,然后在各个块之间通过指针连接起来,前一个物理块指向下一个物理块,从而形成一条链表。
带有文件分配表的链表结构:在链表结构的基础上,把每一个物理块当中的链表指针抽取出来,单独组成一个表格,就是文件分配表(FAT)。如果要随机访问文件的地n个逻辑块,可以先从FAT表中查到相应的物理块地址,然后根据这个地址直接去访问磁盘。
索引结构:把文件当中每一个逻辑块所对应的物理块编号直接记录在这个文件的文件控制块当中,这样的文件控制块称为是I节点,或索引节点。这样,对于系统中的每一个文件,都有一个自己的索引节点,通过这个索引节点就能够直接实现逻辑块与物理块之间的映射关系。
(4)目录的实现
A、直接法:把文件控制块的内容直接保存在目录项当中,因此每个目录项就等于某个文件名加上它的FCB。
B、间接法:目录项里面只有文件名和该文件的FCB所在地址。
不管是那一种类型的实现方法,目录的基本功能都一样,即用户给出一个文件名,就返回相应文件的FCB。
(5)空闲空间管理方法:
A、位图法。
B、链表法。
C、索引法。
三、真题解析
(1)2007年21、22题
某系统中有四种互斥资源R1、R2、R3和R4,可用资源数分别为3、5、6和8。假设在T0时刻有P1、P2、P3和P4 四个进程,并且这些进程对资源的最大需求量和已分配资源数如下表所示,那么在T0时刻系统中R1、R2、R3和R4的剩余资源数分别为 (21) 。如果从T0时刻开始进程按 (22) 顺序逐个调度执行,那么系统状态是安全的。
(21)A. 3、5、6和8 B. 3、4、2和2
C. 0、1、2和1 D. 0、1、0和1
(22)A. P1→P2→P4→P3 B. P2→P1→P4→P3
C. P3→P2→P1→P4 D. P4→P2→P3→P1
<解析>:D、C
考查操作系统中进程(任务)管理中死锁检测的多项资源银行家算法。
由于T0时刻已用资源数为3、4、6和7,故剩余资源数为0、1、0、和1。
P1、P2、P3、P4四个进程中,系统只能满足P3的需求资源数:
现在P3的需求量是:1、2、1、1,尚需要的资源数是:0、1、0、1,。
现在剩余的资源数是0、1、0、1,刚好能满足P3的需求,能保证P3运行完。
P3运行结束释放资源后,系统的可用资源为:1、2、1、1
此时P2尚需要的资源为:1、0、0、0,系统能满足P2的请求,故P2能运行完。
P2运行结束释放资源后,系统的可用资源为:1、3、3、3。
此时P1尚需要资源为:0、1、1、2,P4尚需要的资源为0、0、1、2。
系统能满足P1和P4的请求,故P1和P4能运行完。
因此,进程可以按P3àP2àP1àP4或P3àP2àP4àP1的顺序执行。
(2)2007年29、30、31题
考查嵌入式存储系统硬件方面的基础知识。
见《嵌入式系统设计师考试复习笔记之存储管理篇》。
(3)2007年37题
下面 (37) 不属于嵌入式系统中的进程状态。
(37)A. 运行状态 B. 就绪状态 C. 开关状态 D. 等待状态
<解析>:C
考查嵌入式操作系统的基础知识。
见复习笔记2嵌入式操作系统概述(6)。
(4)2007年38题
下面(38)不是操作系统中调度程序所采用的调度算法。
(38)A. 先来先服务(FCFS) B. 先进先出(FIFO)
C. 时间片轮转调度 D. 优先级调度
<解析>:B
考查嵌入式操作系统中进程调度算法的基础知识。
见复习笔记2嵌入式操作系统概述(8)。
(5)2007年39题
在操作系统中,Spooling技术是用一类物理设备模拟另一类物理设备的技术,实现这种技术的功能模块称做 (39) 。
(39)A. 可林斯系统 B. 斯普林系统
C. 图灵机系统 D. 虚拟存储系统
<解析>:B
考查嵌入式操作系统的基础知识。
见复习笔记5设备管理(3)注。
在操作系统中,Spooling技术是用一种物理设备模拟另一种物理设备技术,是使独占设备变成共享设备的技术,也就是一种速度匹配技术,根据Spooling的读音,实现这种技术的功能模块称作斯普林系统。
(6)2007年40题
在操作系统中,除赋初值外,对信号量仅能操作的两种原语是 (40) 。
(40)A. 存操作、取操作 B. 读操作、写操作
C. P操作、V操作 D. 输入操作、输出操作
<解析>:C
考查嵌入式操作系统中PV原语。
见复习笔记2嵌入式操作系统概述(11)注。
P操作表示申请一个资源,V操作表示释放一个资源。
(7)2007年41题
考查嵌入式存储系统中虚拟存储技术方面的基础知识。
见《嵌入式系统设计师考试复习笔记之存储管理篇》。
(8)2007年42题
下面 (42) 特性不符合嵌入式操作系统特点。
(42)A. 实时性 B. 不可定制 C. 微型化 D. 易移植
<解析>:B
考查嵌入式操作系统的基础知识。
太简单了,常识性的问题。
(9)2007年43题
在并行环境中的某些任务必须协调自己的运行速度,以保证各自的某些关键语句按照某种事先规定的次序执行,这种现象被称为任务的 (43) 。
(43)A. 执行 B. 互斥 C. 调度 D. 同步
<解析>:D
考查嵌入式操作系统的任务同步方面的基础知识。
见复习笔记2嵌入式操作系统概述(12)。
(10)2007年44题
关于文件系统,下列叙述中不正确的是 (44) 。
(44)A. 负责文件的组织、存储、检索、命名、共享和保护
B. 提供描述文件抽象的程序接口
C. 文件存储在磁盘或其他不易失的存储介质上
D. 程序员需要关心文件存储分配和存储布局的细节
<解析>:D
考查嵌入式操作系统的文件系统方面的基础知识。
见复习笔记6文件系统。
文件系统负责文件的组织、存储、检索、命名、共享和保护,并为程序员提供描述文件描述的程序接口,程序员不需要关心文件存储分配和存储局部的细节,通过程序接口即可实现对文件的操作。
(11)2007年45题
Linux系统中的设备可分为三类:字符设备、块设备和网络设备,其中不是基于文件系统访问的设备是 (45) 。
(45)A. 字符设备 B. 块设备 C. 网络设备 D. 字符和块设备
<解析>:C
考查嵌入式操作系统的文件系统方面的基础知识。
Linux操作系统中的设备可以分为三类:字符设备、块设备和网络设备。其中字符设备没有缓冲区,数据的处理以字节为单位按顺序进行的,不支持随机读写;块设备是指那些在输入输出时数据处理以块为单位的设备,一般采用了缓存技术,支持数据的随机读写;Linux中的网络设备实现方法不同于字符设备和块设备,它面向上一层不是文件系统而是网络网络协议层,设备节点只有在系统正确初始化网络控制器之后才能建立。
(12)2007年46题
(46) 完全把系统软件和硬件部分隔离开来,从而大大提高了系统的可移植性。
(46)A. 硬件抽象层 B. 驱动映射层 C. 硬件交互层 D. 中间层
<解析>:A
考查嵌入式操作系统的基础知识。
见复习笔记1嵌入式软件基础。
嵌入式系统常采用基于硬件抽象层的分层体系结构,以提高嵌入式软件的可移植性和扩张性。
(13)2007年47题
实时操作系统(RTOS)内核与应用程序之间的接口称为 (47) 。
(47)A. 输入/输出接口 B. 文件系统 C. API D. 图形用户接口
<解析>:C
考查嵌入式操作系统的基础知识。
常识性问题,实时操作系统(RTOS)是一个标准内核,它将CPU时间、中断、I/O和定时器等资源都包装起来,留给用户的是一个标准的应用程序接口,即API接口。
(14)2007年48题
在多任务实时系统中,任务间或者中断服务与任务间常需要交换信息,这种信息交换有 (48) 两个途径。
(48)A. 开/关中断和信息邮箱 B. 共享存储区和消息传递
C. 邮箱机制和数据共享机制 D. 非占先式内核和占先式内核机制
<解析>:C
考查嵌入式操作系统中任务间通信的基础知识。
见复习笔记2嵌入式操作系统概述(15)。
(15)2006年20、21题
在一个单CPU的计算机系统中,采用可剥夺式(也称抢占式)优先级的进程调度方案,且所有的任务可以并行使用I/O设备。下表列出了T1、T2、T3的优先级和独立运行时占用CPU和I/O设备的时间。如果操作系统的开销忽略不计,则这三个任务从同时启动到全部结束的总时间为(20)ms,CPU的空闲时间共有(21)ms。
(20) A. 28 B. 58 C. 61 D. 64
(21) A. 3 B. 5 C. 8 D. 13
<解析>:B、D
考查嵌入式操作系统中任务调度的理解和计算。
3个任务的运行过程示意图如下:
如果操作系统的开销忽略不计,从启动到结束的总时间为:
10+13+5+5+5+2+13+5=58ms
CPU的空闲时间为任务T3进行I/O操作的时间:13ms。
(16)2006年22题
考查嵌入式操作系统中存储管理的基础知识。
见《嵌入式系统设计师考试复习笔记之存储管理篇》。
(17)2006年42题
嵌入式系统由硬件和软件部分构成,以下(42)不属于嵌入式系统软件。
(42) A. 系统内核 B. 驱动程序
C. FPGA编程软件 D. 嵌入式中间件
<解析>:C
考查嵌入式操作系统的基础知识。
见复习笔记1嵌入式软件基础(2)。
(18)2006年43题
关于硬件抽象层,以下描述中错误的是(43)。
(43) A. 硬件抽象层包括操作系统内核和驱动程序。
B. 硬件抽象层将操作系统与硬件平台隔开。
C. 硬件抽象层是一种软件。
D. 硬件抽象层有利于系统的模块化设计。
<解析>:A
考查嵌入式操作系统的基础知识。
见复习笔记1嵌入式软件基础(5)。
硬件抽象层(HAL)也称为板级支持包(BSP),位于嵌入式系统硬件层和系统软件层之间,将系统上层软件和低层硬件分离开来,使系统的底层驱动程序与硬件无关。它主要包括引导加载程序Bootloader和设备驱动程序两个方面的内容。具有两个特点:硬件相关性和操作系统相关性。
(19)2006年44题
一个任务被唤醒,意味着(44)。
(44) A. 该任务重新占有了CPU。 B. 它的优先级变为最大。
C. 其任务移至等待队列的队首。 D. 任务变为就绪状态。
<解析>:D
考查嵌入式操作系统中任务状态切换的基础知识。
见复习笔记2嵌入式操作系统概述(6)。
(20)2006年45题
关于实时操作系统(RTOS)的任务调度器,以下描述中正确的是(45)。
(45) A. 任务之间的公平性是最重要的调度目标。
B. 大多数RTOS调度算法都是可抢占式(可剥夺式)的。
C. RTOS调度器都采用了基于时间片轮转的调度算法。
D. RTOS调度算法只是一种静态优先级调度算法。
<解析>:B
考查嵌入式实时操作系统的基础知识。
见复习笔记2嵌入式操作系统概述(8)(9)。
(21)2006年46题
在下列调度算法中,(46)算法不会出现任务"饥饿"的情形。
(46) A. 时间片轮转法 B. 先来先服务法
C. 可抢占的短作业优先算法 D. 静态优先级算法
<解析>:A
考查嵌入式实时操作系统的基础知识。
见复习笔记2嵌入式操作系统概述(8)。
(22)2006年47题
在实时操作系统中,邮箱通信是一种(47)通信方式。
(47) A. 直接 B. 间接 C. 低级 D. 高级
<解析>:B
考查嵌入式操作系统中任务间通信的基础知识。
见复习笔记2嵌入式操作系统概述(15)。
(23)2006年48题
在某个嵌入式操作系统中,若PV操作的信号量S的初始值为2,当前值为-1,则表示等待信号量S的任务个数为(48)。
(48) A. 0 B. 1 C. 2 D. 3
<解析>:B
考查嵌入式操作系统中的PV原语。
信号量S表示资源的实体,它是一个与队列有关的整型变量,其值仅由P、V操作来完成。当S=n>0时,表示列队中有n个资源可用;当S=0时,表示队列中无资源可用;当S=n<0时,表示进入等待队列中的任务数有n的绝对值|n|个。信号量S的当前值为-1,则表示等待的信号S的任务个数为1个。
(24)2006年49题
在实时操作系统中,两个任务并发执行,一个任务要等待其合作伙伴来发送消息,或建立某个条件后再向前执行,这种制约性合作关系被称为任务的(49)。
(49) A. 同步 B. 互斥 C. 调度 D. 执行
<解析>:A
考查嵌入式操作系统中任务间同步的基础知识。
见复习笔记2嵌入式操作系统概述(12)。
(25)2006年50题
考查嵌入式操作系统中存储管理的基础知识。
见《嵌入式系统设计师考试复习笔记之存储管理篇》。
(26)2006年51题
考查嵌入式操作系统中存储管理的基础知识。
见《嵌入式系统设计师考试复习笔记之存储管理篇》。
(27)2006年52题
文件系统的主要功能是(52)。
(52) A. 实现对文件的按名存取 B. 实现虚拟存储
C. 提高外存的读写速度 D. 用于保存系统文档
<解析>:A
考查嵌入式操作系统中文件系统的基础知识。
见复习笔记6文件系统。
(28)2006年53题
在FAT16文件系统中,若每个簇的大小是2KB,那么它所能表示的最大磁盘分区容量为(53)。
(53) A. 2MB B. 32MB C. 64MB D. 128MB
<解析>:D
考查嵌入式操作系统中文件系统的基础知识。
FAT是一种适合小卷集与双重引导需要的文件系统。采用FAT文件系统格式化的卷以簇的形式进行分配。FAT16使用了16位的空间来表示每个扇区配置文件的情形。如果每个簇的大小是2KB,那么它所能表示的最大磁盘分区容量为:216×2KB=217 KB=27MB=128MB。
(29)2006年54题
在下面的叙述中,(54)不是嵌入式图形用户接口(GUI)的主要特点。
(54) A. 运行时占用的系统资源少 B. 模块化结构,便于移植和定制
C. 可靠性高 D. 美丽华丽,图形算法复杂
<解析>:D
考查嵌入式图形接口的基础概念。我也不知道该不该归类到这里来。
四、小结
纵观两年的考试题目,2006年考了16道题目,2007年考了17道题目。上面的75道题目,除了20道左右的公共题目,5道左右的C语言题目和10道专业外语题目之外的40道左右的题目中,嵌入式操作系统相关的题目占了半壁江山,可见其分量之重。弄得这部分题目除了可以在上午题目拿到可观的分数之外,还可以在下午的题目中大派用场。细看里面的题目,考察的都是基本概念和基本原理,设计一些简单的推理和计算。只要最这些有深入彻底的理解,基本能拿到90%的分数的。
祝大家考试好运!
嵌入式系统设计师考试笔记之接口技术
一、引言
嵌入式系统的硬件除了核心的微处理器之外就是外围器件和接口。接口技术在嵌入式系统设计处于如此重要的位置,是嵌入式系统设计师硬件部分的重要考试范围。目前嵌入式系统中的接口五花百门,每个接口都可以写成一本厚厚的书。面对内容如此之多,范围如此之广的考试部分,应该怎么样去复习呢?我的指导思想是,把握好每种接口技术的最基本概念,理解透每个接口的最基本工作原理,从历年考题中提炼出常考知识点,重点进行复习,这样足以应付考试了。是不是这样就要通过真题考试来验证了,让我们期待吧。
二、复习笔记
1. Flash存储器
(1)Flash存储器是一种非易失性存储器,根据结构的不同可以将其分为NOR Flash和NAND Flash两种。
(2)Flash存储器的特点:
A、区块结构:在物理上分成若干个区块,区块之间相互独立。
B、先擦后写:Flash的写操作只能将数据位从1写成0,不能从0写成1,所以在对存储器进行写入之前必须先执行擦除操作,将预写入的数据位初始化为1。擦除操作的最小单位是一个区块,而不是单个字节。
C、操作指令:执行写操作,它必须输入一串特殊指令(NOR Flash)或者完成一段时序(NAND Flash)才能将数据写入。
D、位反转:由于Flash的固有特性,在读写过程中偶尔会产生一位或几位的数据错误。位反转无法避免,只能通过其他手段对结果进行事后处理。
E、坏块:区块一旦损坏,将无法进行修复。对已损坏的区块操作其结果不可预测。
(3)NOR Flash的特点:
应用程序可以直接在闪存内运行,不需要再把代码读到系统RAM中运行。NOR Flash的传输效率很高,在1MB~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。
(4)NAND Flash的特点
能够提高极高的密度单元,可以达到高存储密度,并且写入和擦除的速度也很快,这也是为何所有的U盘都使用NAND Flash作为存储介质的原因。应用NAND Flash的困难在于闪存需要特殊的系统接口。
(5)NOR Flash与NAND Flash的区别:
A、NOR Flash的读速度比NAND Flash稍快一些。
B、NAND Flash的擦除和写入速度比NOR Flash快很多
C、NAND Flash的随机读取能力差,适合大量数据的连续读取。
D、NOR Flash带有SRAM接口,有足够的地址引进来寻址,可以很容易地存取其内部的每一个字节。NAND Flash的地址、数据和命令共用8位总线(有写公司的产品使用16位),每次读写都要使用复杂的I/O接口串行地存取数据。
E、NOR Flash的容量一般较小,通常在1MB~8MB之间;NAND Flash只用在8MB以上的产品中。因此,NOR Flash只要应用在代码存储介质中,NAND Flash适用于资料存储。
F、NAND Flash中每个块的最大擦写次数是一百万次,而NOR Flash是十万次。
G、NOR Flash可以像其他内存那样连接,非常直接地使用,并可以在上面直接运行代码;NAND Flash需要特殊的I/O接口,在使用的时候,必须先写入驱动程序,才能继续执行其他操作。因为设计师绝不能向坏块写入,这就意味着在NAND Flash上自始至终必须进行虚拟映像。
H、NOR Flash用于对数据可靠性要求较高的代码存储、通信产品、网络处理等领域,被成为代码闪存;NAND Flash则用于对存储容量要求较高的MP3、存储卡、U盘等领域,被成为数据闪存。
2、RAM存储器
(1)SRAM的特点:
SRAM表示静态随机存取存储器,只要供电它就会保持一个值,它没有刷新周期,由触发器构成基本单元,集成度低,每个SRAM存储单元由6个晶体管组成,因此其成本较高。它具有较高速率,常用于高速缓冲存储器。
通常SRAM有4种引脚:
CE:片选信号,低电平有效。
R/W:读写控制信号。
ADDRESS:一组地址线。
DATA:用于数据传输的一组双向信号线。
(2)DRAM的特点:
DRAM表示动态随机存取存储器。这是一种以电荷形式进行存储的半导体存储器。它的每个存储单元由一个晶体管和一个电容器组成,数据存储在电容器中。电容器会由于漏电而导致电荷丢失,因而DRAM器件是不稳定的。它必须有规律地进行刷新,从而将数据保存在存储器中。
DRAM的接口比较复杂,通常有一下引脚:
CE:片选信号,低电平有效。
R/W:读写控制信号。
RAS:行地址选通信号,通常接地址的高位部分。
CAS:列地址选通信号,通常接地址的低位部分。
ADDRESS:一组地址线。
DATA:用于数据传输的一组双向信号线。
(3)SDRAM的特点:
SDRAM表示同步动态随机存取存储器。同步是指内存工作需要同步时钟,内部的命令发送与数据的传输都以它为基准;动态是指存储器阵列需要不断的刷新来保证数据不丢失。它通常只能工作在133MHz的主频。
(4)DDRAM的特点
DDRAM表示双倍速率同步动态随机存取存储器,也称DDR。DDRAM是基于SDRAM技术的,SDRAM在一个时钟周期内只传输一次数据,它是在时钟的上升期进行数据传输;而DDR内存则是一个时钟周期内传输两次次数据,它能够在时钟的上升期和下降期各传输一次数据。在133MHz的主频下,DDR内存带宽可以达到133×64b/8×2=2.1GB/s。
3、硬盘、光盘、CF卡、SD卡的相关知识见《教程》145~148页。
4、GPIO原理与结构
GPIO是I/O的最基本形式,它是一组输入引脚或输出引脚。有些GPIO引脚能够加以编程改变工作方向,通常有两个控制寄存器:数据寄存器和数据方向寄存器。数据方向寄存器设置端口的方向。如果将引脚设置为输出,那么数据寄存器将控制着该引脚状态。若将引脚设置为输入,则此输入引脚的状态由引脚上的逻辑电路层来实现对它的控制。
5、A/D接口
(1)A/D转换器是把电模拟量转换为数字量的电路。实现A/D转换的方法有很多,常用的方法有计数法、双积分法和逐次逼进法。
(2)计数式A/D转换法
其电路主要部件包括:比较器、计数器、D/A转换器和标准电压源。
其工作原理简单来说就是,有一个计数器,从0开始进行加1计数,每进行一次加1,该数值作为D/A转换器的输入,其产生一个比较电压VO与输入模拟电压VIN进行比较。如果VO小于VIN则继续进行加1计数,直到VO大于VIN,这时计数器的累加数值就是A/D转换器的输出值。(详细参考《教程》155页)
这种转换方式的特点是简单,但是速度比较慢,特别是模拟电压较高时,转换速度更慢。例如对于一个8位A/D转换器,若输入模拟量为最大值,计数器要从0开始计数到255,做255次D/A转换和电压比较的工作,才能完成转换。
(3)双积分式A/D转换法
其电路主要部件包括:积分器、比较器、计数器和标准电压源。
其工作原理是,首先电路对输入待测电压进行固定时间的积分,然后换为标准电压进行固定斜率的反向积分,反向积分进行到一定时间,便返回起始值。由于使用固定斜率,对标准电压进行反向积分的时间正比于输入模拟电压值,输入模拟电压越大,反向积分回到起始值的时间越长。只要用标准的高频时钟脉冲测定反向积分花费的时间,就可以得到相应于输入模拟电压的数字量,也就完成了A/D转换。(详细参考《教程》156页)
其特点是,具有很强的抗工频干扰能力,转换精度高,但转换速度慢,通常转换频率小于10Hz,主要用于数字式测试仪表、温度测量等方面。
(4)逐次逼近式A/D转换法
其电路主要部件包括:比较器、D/A转换器、逐次逼近寄存器和基准电压源。
其工作原理是,实质上就是对分搜索法,和平时天平的使用原理一样。在进行A/D转换时,由D/A转换器从高位到低位逐位增加转换位数,产生不同的输出电压,把输入电压与输出电压进行比较而实现。首先使最高位为1,这相当于取出基准电压的1/2与输入电压比较,如果在输入电压小于1/2的基准电压,则最高位置0,反之置1。之后,次高位置1,相当于在1/2的范围中再作对分搜索,以此类推,逐次逼近。(详细参考《教程》157页)
其特点是,速度快,转换精度高,对N位A/D转换器只需要M个时钟脉冲即可完成,一般可用于测量几十到几百微秒的过渡过程的变化,是目前应用最普遍的转换方法。
(5)A/D转换的重要指标(有可能考一些简单的计算)
A、分辨率:反映A/D转换器对输入微小变化响应的能力,通常用数字输出最低位(LSB)所对应的模拟电压的电平值表示。n位A/D转换器能反映1/2n满量程的模拟输入电平。
B、量程:所能转换的模拟输入电压范围,分为单极性和双极性两种类型。
C、转换时间:完成一次A/D转换所需要的时间,其倒数为转换速率。
D、精度:精度与分辨率是两个不同的概念,即使分辨率很高,也可能由于温漂、线性度等原因使其精度不够高。精度有绝对精度和相对精度两种表示方法。通常用数字量的最低有效位LSB的分数值来表示绝对精度,用其模拟电压满量程的百分比来表示相对精度。
例如,满量程10V,10位A/D芯片,若其绝对精度为±1/2LSB,则其最小有效位LSB的量化单位为:10/1024=9.77mv,其绝对精度为9.77mv/2=4.88mv,相对精度为:0.048%。
6、D/A接口基本
(1)D/A转换器使将数字量转换为模拟量。
(2)在集成电路中,通常采用T型网络实现将数字量转换为模拟电流,再由运算放大器将模拟电路转换为模拟电压。进行D/A转换实际上需要上面的两个环节。关于T型电阻解码网络和D/A转换具体原理参考《教程》的159页。
(3)D/A转换器的分类:
A、电压输出型:常作为高速D/A转换器。
B、电流输出型:一般外接运算放大器使用。
C、乘算型:可用作调制器和使输入信号数字化地衰减。
(4)D/A转换器的主要指标:分辨率、建立时间、线性度、转换精度、温度系数。
7、键盘接口
(1)键盘的两种形式:线性键盘和矩阵键盘。
(2)识别键盘上的闭合键通常有两种方法:行扫描法和行反转法。(《教程》163页)
(3)行扫描法是矩阵键盘按键常用的识别方法,此方法分为两步进行:
A、识别键盘哪一列的键被按下:让所有行线均为低电平,查询各列线电平是否为低,如果有列线为低,则说明该列有按键被按下,否则说明无按键按下。
B、如果某列有按键按下,识别键盘是哪一行按下:逐行置低电平,并置其余各行为高电平,查询各列的变化,如果列电平变为低电平,则可确定此行此列交叉点处按键被按下。
8、显示接口
(1)LCD的基本原理是,通过给不同的液晶单元供电,控制其光线的通过与否,从而达到显示的目的。
(2)LCD的光源提供方式有两种:投射式和反射式。笔记本电脑的LCD显示器为投射式,屏的背后有一个光源,因此外界环境可以不需要光源。一般微控制器上使用的LCD为反射式,需要外界提供电源,靠反射光来工作。电致发光(EL)是液晶屏提供光源的一种方式。
(3)按照液晶驱动方式分类,常见的LCD可以分为三类:扭转向列类(TN)、超扭曲向列型(STN)和薄膜晶体管型(TFT)。
(4)市面上出售的LCD有两种类型:带有驱动电路的LCD显示模块,只要总线方式驱动;没有驱动电路的LCD显示器,使用控制器扫描方式。
(5)通常,LCD控制器工作的时候,通过DMA请求总线,直接通过SDRAM控制器读取SDRAM中指定地址(显示缓冲区)的数据,此数据经过LCD控制器转换成液晶屏扫描数据格式,直接驱动液晶显示器。
(6)VGA接口本质上是一个模拟接口,一般都采用统一的15引脚接口,包括2个NC信号、3根显示器数据总线、5个GND信号、3个RGB色彩分量、1个行同步信号和1个场同步信号。其色彩分量采用的电平标准为EIA定义的RS343标准。
9、触摸屏接口
(1)按工作原理分,触摸屏可以分为:表面声波屏、电容屏、电阻屏和红外屏几种。(具体的工作原理看《教程》173页)
(2)触摸屏的控制采用专业芯片,例如ADS7843。(具体工作原理看《教程》176页)。
10、音频接口
(1)基本原理:麦克风输入的数据经音频编解码器解码完成A/D转换,解码后的音频数据通过音频控制器送入DSP或CPU进行相应的处理,然后数据经音频控制器发送给音频编码器,经编码D/A转换后由扬声器输出。
(2)数字音频的格式有多种,最常用的是下面三种:
A、采用数字音频(PCM):是CD或DVD采用的数据格式。其采样频率为44.1kHz。精度为16位时,PCM音频数据速率为1.41Mb/s;精度为32位时为2.42 Mb/s。一张700MB的CD可以保存大约60分钟的16位PCM数据格式的音乐。
B、MPEG层3音频(MP3):MP3播放器采用的音频格式。立体声MP3数据速率为112kb/s至128kb/s。
C、ATSC数字音频压缩标准(AC3):数字TV、HDTV和电影数字音频编码标准,立体声AC3编码后的数据速率为192kb/s。
(3)IIS是音频数据的编码或解码常用的串行音频数字接口。IIS总线只处理声音数据,其他控制信号等则需要单独传输。IIS使用了3根串行总线:数据线SD、字段选择线WS、时钟信号线SCK。
(4)当接收方和发送方的数据字段宽度不一样时,发送方不考虑接收方的数据字段宽度。如果发送方发送的数据字段小于系统字段宽度,就在低位补0;如果发送方的数据宽度大于接收方的宽度,则超过LSB的部分被截断。字段选择WS用来选择左右声道,WS=0表示选择左声道;WS=1表示选择右声道。此外,WS能让接收设备存储前一个字节,并准备接收下一个字节。
11、串行接口
(1)串行通信是指,使数据一位一位地进行传输而实现的通信。与并行通信相比,串行通信具有传输线少、成本低等优点,特别适合远距离传送;缺点使速度慢。
(2)串行数据传送有3种基本的通信模式:单工、半双工、全双工。
(3)串行通信在信息格式上可以分为2种方式:同步通信和异步通信。
A、异步传输:把每个字符当作独立的信息来传输,并按照一固定且预定的时序传送,但在字符之间却取决于字符与字符的任意时序。异步通信时,字符是一帧一帧传送的,每帧字符的传送靠起始位来同步。一帧数据的各个代码间间隔是固定的,而相邻两帧数据其时间间隔是不固定的。
B、同步传输:同步方式不仅在字符之间是同步的,而且在字符与字符之间的时序仍然是同步的,即同步方式是将许多字符聚集成一字符块后,在每块信息之前要加上1~2个同步字符,字符块之后再加入适当的错误检测数据才传送出去。
(4)异步通信必须遵循3项规定:
A、字符格式:起始位+数据+校验位+停止位(检验位可无),低位先传送。
B、波特率:每秒传送的位数。
C、校验位:奇偶检验。
a、奇校验:要使字符加上校验位有奇数个"1"。
b、偶检验:要使字符加上校验位有偶数个"1"。
(5)RS-232C的电气特性:负逻辑。
A、在TxD和RxD上:逻辑1为-3V~-15V,逻辑0为3V~15V。
B、在TES、CTS、DTR、DCD等控制线上:
信号有效(ON状态)为3V~15V
信号无效(OFF状态)为-3V~-15V
(6)TTL标准与RS-232C标准之间的电平转换利用集成芯片RS232实现。(详见《教程》182页)
(7)RS-422串行通信接口
A、RS-422是一种单机发送、多机接收的单向、平衡传输规范,传输速率可达10Mb/s。
B、RS-422采用差分传输方式,也称做平衡传输,使用一对双绞线。
C、RS-422需要一终端电阻,要求其阻值约等于传输电缆的特性阻抗。
(8)RS-485串行总线接口
A、RS-485是在RS-422的基础上建立的标准,增加了多点、双向通信能力,通信距离可为几十米到上千米。
B、RS-485收发器采用平衡发送和差分接收,具有抑制共模干扰的能力。
C、RS-485需要两个终端电阻。在近距离(300m一下)传输可不需要终端电阻。
12、并行接口
(1)并行接口的数据传输率比串行接口快8倍,标准并行接口的数据传输率为1Mb/s,一般用来连接打印机、扫描仪等,所以又称打印口。
(2)并行接口可以分为SPP(标准并口)、EPP(增强型并口)和ECP(扩展型并口)。
(3)并行总线分为标准和非标准两类。常用的并行标准总线有IEEE 488总线和ANSI SCSI总线。MXI总线是一种高性能非标准的通用多用户并行总线。
13、PCI接口
(1)PCI总线是地址、数据多路复用的高性能32位和64位总线,是微处理器与外围控制部件、外围附加板之间的互连机构。
(2)从数据宽度上看,PCI定义了32位数据总线,且可扩展为64位。从总线速度上分,有33MHz和66MHz两种。
(3)与ISA总线相比,PCI总线的地址总线与数据总线分时复用,支持即插即用、中断共享等功能。
14、USB接口
(1)USB总线的主要特点:
A、使用简单,即插即用。
B、每个USB系统中都有主机,这个USB网络中最多可以连接127个设备。
C、应用范围广,支持多个设备同时操作。
D、低成本的电缆和连接器,使用统一的4引脚插头。
E、较强的纠错能力。
F、较低的协议开销带来了高的总线性能,且适合于低成本外设的开发。
G、支持主机与设备之间的多数据流和多消息流传输,且支持同步和异步传输类型。
H、总线供电,能为设备提供5V/100mA的供电。
(2)USB系统由3部分来描述:USB主机、USB设备和USB互连。
(3)USB总线支持的数据传输率有3种:高速信令位传输率为480Mb/s;全速信令位传输率为12Mb/s;全速信令位传输率为1.5Mb/s。
(4)USB总线电缆有4根线:一对双绞信号线和一对电源线。
(5)USB是一种查询总线,由主控制器启动所有的数据传输。USB上所挂接的外设通过由主机调度的、基于令牌的协议来共享USB带宽。
(6)大部分总线事务涉及3个包的传输:
A、令牌包:指示总线上要执行什么事务,欲寻址的USB设备及数据传送方向。
B、数据包:传输数据或指示它没有数据要传输。
C、握手包:指示传输是否成功。
(7)主机与设备端点之间的USB数据传输模型被称作管道。管道有两种类型:流和消息。消息数据具有USB定义的结构,而数据流没有。
(8)事务调度表允许对某些流管道进行流量控制,在硬件级,通过使用NAK(否认)握手信号来调节数据传输率,以防止缓冲区上溢或下溢产生。
(9)USB设备最大的特点是即插即用。
(10)工作原理:USB设备插入USB端点时,主机都通过默认地址0与设备的端点0进行通信。在这个过程中,主机发出一系列试图得到描述符的标准请求,通过这些请求,主机得到所有感兴趣的设备信息,从而知道了设备的情况以及该如何与设备通信。随后主机通过发出Set Address请求为设备设置一个唯一的地址。以后主机就通过为设备设置好的地址与设备通信,而不再使用默认地址0。
15、SPI接口
(1)SPI是一个同步协议接口,所有的传输都参照一个共同的时钟,这个同步时钟有主机产生,接收数据的外设使用时钟来对串行比特流的接收进行同步化。
(2)在多个设备连接到主机的同一个SPI接口时,主机通过从设备的片选引脚来选择。
(3)SPI主要使用4个信号:主机输出/从机输入(MOSI),主机输入/从机输出(MISO)、串行时钟SCLK和外设片选CS。
(4)主机和外设都包含一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次数据传输。寄存器通过MOSI信号线将字节传送给外设,外设也将自己移位寄存器中的内容通过MISO信号线返回给主机,这样,两个移位寄存器中的内容就被交换了。
(5)外设的写操作和读操作时同步完成的,因此SPI成为一个很有效的协议。
(6)如果只是进行写操作,主机只需忽略收到的字节;反过来,如果主机要读取外设的一个字节,就必须发送一个空字节来引发从机的传输。
16、IIC接口
(1)IIC总线是具备总线仲裁和高低速设备同步等功能的高性能多主机总线。
(2)IIC总线上需要两条线:串行数据线SDA和串行时钟线SCL。
(3)总线上的每个器件都有唯一的地址以供识别,而且各器件都可以作为一个发送器或者接收器(由器件的功能决定)。
(4)IIC总线有4种操作模式:主发送、主接收、从发送、从接收。
(5)IIC在传送数据过程中共有3种类型信号:
A、开始信号:SCL为高电平时,SDA由高向低跳变。
B、结束信号:SCL为高电平时,SDA由低向高跳变。
C、应答信号:接收方在收到8位数据后,在第9个脉冲向发送方发出特点的低电平。
(6)主器件发送一个开始信号后,它还会立即送出一个从地址,来通知将与它进行数据通信的从器件。1个字节的地址包括7位地址信息和1位传输方向指示位,如果第7位为0,表示要进行一个写操作,如果为1,表示要进行一个读操作。
(7)SDA线上传输的每个字节长度都是8位,每次传输种字节的数量没有限制的。在开始信号后面的第一个字节是地址域,之后每个传输字节后面都有一个应答位(ACK),传输中串行数据的MSB(字节高位)首先发送。
(8)如果数据接收方无法再接收更多的数据,它可以通过将SCL保持低电平来中断传输,这样可以迫使数据发送方等待,直到SCL被重新释放。这样可以达到高低速设备同步。
(9)IIC总线的工作过程:SDA和SCL都是双向的。空闲的时候,SDA和SCL都是高电平,只有SDA变为低电平,接着SCL再变为低电平,IIC总线的数据传输才开始。SDA线上被传输的每一位在SCL的上升沿被采样,该位必须一直保持有效到SCL再次变为低电平,然后SDA就在SCL再次变为高电平之前传输下一个位。最后,SCL变回高电平,接着SDA也变为高电平,表示数据传输结束。
17、以太网接口
(1)最常用的以太网协议是IEEE802.3标准。
(2)传输编码(06和07年都有考题):曼彻斯特编码和差分曼彻斯特编码。
A、曼彻斯特编码:每位中间有一个电平跳变,从高到底的跳变表示"0",从低到高的跳变表示为"1"。
B、差分曼彻斯特编码:每位中间有一个电平跳变,利用每个码元开始时有无跳变来表示"0"或"1",有跳变为"0",无跳变为"1"。(详见《教程》200页)。
(3)相比之下,曼彻斯特编码编码简单,差分曼彻斯特编码提供更好的噪声抑制性能。
(4)以太网数据传输特点:
A、所有数据位的传输由低位开始,传输的位流时用曼彻斯特编码。
B、以太网是基于冲突检测的总线复用方法,由硬件自动执行。
C、传输的数据长度,目的地址DA+源地址SA+类型字段TYPE+数据段DATA+填充位PAD,最小为60B,最大为1514B。
D、通常以太网卡可以接收3种地址的数据:广播地址、多播地址、自己的地址。
E、任何两个网卡的物理地址都不一样,是世界上唯一的,网卡地址由专门机构分配。
(5)嵌入式以太网接口有两种实现方法:
A、嵌入式处理器+网卡芯片(例如:RTL8019AS、CS8900等)
B、带有以太网接口的处理器。
(6)TCP/IP是一个分层协议,分为:物理层、数据链路层、网络层、传输层和应用层。每层实现一个明确的功能,对应一个或几个传输协议,每层相对于它的下层都作为一个独立的数据包来实现。每层上的协议如下:
A、应用层:BSD套接字。
B、传输层:TCP、UDP。
C、网络层:IP、ARP、ICMP、IGMP
D、数据链路层:IEEE802.3 Ethernet MAC
E、物理层:二进制比特流。
(7)ARP(地址解析协议)
A、网络层用32位的地址来标识不同的主机(即IP地址),而链路层使用48位的物理地址(MAC)来标识不同的以太网或令牌网接口。
B、ARP功能:实现从IP地址到对应物理地址的转换。
(8)ICMP(网络控制报文协议)
A、IP层用它来与其他主机或路由器交换错误报文和其他重要控制信息。
B、ICMP报文是在IP数据包内被传输的。
C、网络诊断工具ping和traceroute其实就是ICMP协议。
(9)IP(网际协议)
A、IP工作在网络层,是TCP/IP协议族中最为核心的协议。
B、所有的TCP、UDP、ICMP及IGMP数据都以IP数据包格式传输。
C、TTL(生存时间字段):指定了IP数据包的生存时间(数据包可以经过的路由器数)。
D、IP提供不可靠、无连接的数据包传送服务,高效、灵活。
a、不可靠:它不能保证数据包能成功到达目的地,任何要求的可靠性必须由上层来提供(如TCP)。如果发生某种错误,IP有一个简单的错误处理算法--丢弃该数据包,然后发送ICMP消息报给信源端。
b、无连接:IP不维护任何关于后续数据包的状态信息。每个数据包的处理都是相互独立的。IP数据包可以不按顺序接收,
(10)TCP(传输控制协议)
TCP协议是一个面向连接的可靠的传输层协议,它为两台主机提供高可靠性的端到端数据通信。
(11)UDP(用户数据包协议)
UDP协议是一种无连接不可靠的传输层协议,它不保证数据包能到达目的地,可靠性有应用层来提供。UDP协议开销少,和TCP相比更适合于应用在低端的嵌入式领域中。
(12)端口:TCP和UDP采用16位端口号来识别上层的用户,即应用层协议,例如FTP服务的TCP端口号都是21,Telnet服务的TCP端口号都是23,TFTP服务的UDP端口号都是69。
18、CAN总线接口
(1)CAN(Control Area Network,控制器局域网)总线是一种多主方式的串行通信总线,是国际上应用最广泛的现场总线之一,最初被用于汽车环境中的电子控制网络。一个CAN总线构成的单一网络中,理想情况下可以挂接任意多个节点,实际应用中节点数据受网络硬件的电气特性所限制。
(2)总线信号使用差分电压传送。两条信号线被称为CAN_H和CAN_L,静态是均为2.5V左右,此时状态表示逻辑1,也可以叫做"隐性"。用CAN_H比CAN_L高表示逻辑0,称为"显性",此时,通常电压值为CAN_H=3.5V和CAN_L=1.5V。
(3)当"显性"和"隐性"位同时发送的时候,最后总线数值将为"显性"这种特性为CAN总线的仲裁奠定了基础。
(4)CAN总线的一个位时间可以分成4个部分:同步段、传播时间段、相位缓冲段1和相位缓冲段2。(详见《教程》205页)
(5)CAN总线的数据帧有两种格式:标准格式和扩展格式。包括:帧起始、仲裁场、控制场、数据场、CRC场、ACK场和帧结束。
(6)CAN总线硬件接口包括:CAN总线控制器和CAN收发器。CAN控制器主要完成时序逻辑转换等工作,例如菲利普的SJA1000。CAN收发器是CAN总线的物理层芯片,实现TTL电平到CAN总线电平特性的转换,例如TJA1050。
19、xDSL接口
(1)xDSL(数字用户线路)技术是,在现有用户电话线两侧同时接入专用的DSL调制解调设备,在用户线上利用数字数字信号高频带宽较宽的特性直接采用数字信号传输,省去中间的A/D转换,突破了模拟信号传输极限速率为56KB/s的闲置。
(2)DSL技术主要分为对称和非对称两大类。
(3)对成xDSL更适合于企业点对点连接应用,例如文件传输、视频会议等收发数据量大致相同的工作。
(4)ASDL是近年发展的另一种宽带接入技术,是利用双绞铜线向用户提供两个方向上速率不对称的宽带信息业务。
(5)ADSL在一对电话线上同时传送一路高速下行数据、一路较低速率上行数据、一路模拟电话。各信号之间采用频分复用方式占用不同频带,低频段传送话音;中间窄频带传送上行信道数据及控制信息;其余高频段传送下行信道数据、图像或高速数据。
20、WLAN接口
(1)WLAN(Wireless Local Area Network)是利用无线通信技术在一定的局部范围内建立的,是计算机网络与无线通信技术相结合的产物,它以无线多址通道作为传输媒介,提供有线局域网的功能。
(2)WLAN的标准:主要是针对物理层和媒质访问控制层(MAC层),涉及到所有使用的无线频率范围、控制接口通信协议等技术规范与技术标准。
A、IEEE 802.11:定义了物理层和MAC层规范,工作在2.4~2.4835GHz频段,最高速率为2Mb/s,是IEEE最初制定的一个无线局域网标准。
B、IEEE 802.11b:工作在2.4~2.4835GHz频段,最高速率为11Mb/s,传输距离50~150inch。采用点对点模式和基本模式两种运行模式。在数据传输速率方面可以根据实际情况在11Mb/s、5.5Mb/s、2 Mb/s、1 Mb/s的不同速率间自动切换。
C、IEEE 802.11a:工作在5.15~8.825GHz频段,最高速率为54Mb/s/72Mb/s,传输距离10~100m。
D、IEEE 802.11g:混合标准,拥有EEE 802.11a的传输速率,安全性较EEE 802.11b好,采用两种调制方式,做到与EEE 802.11a和EEE 802.11b兼容。
(3)WLAN有两种网络类型:对等网络和基础机构网络。
21、蓝牙接口
(1)蓝牙技术的目的:使特定的移动电话、便鞋式电脑以及各种便携通信设备的主机之间近距离内实现无缝的资源共享。
(2)蓝牙技术的实质内容是要建立通用的无线空中接口及其控制软件的公开标准。其工作频段为全球通用的2.4GHz ISM(即工业、科学、医学)频段,其数据传输速率为1Mb/s,采用时分双工方案来实现全双工传输,其理想的连接范围为10cm~10m。
(3)蓝牙基带协议是电路交换和分组交换的结合。
(4)蓝牙技术特点:
A、传输距离短,工作距离在10m以内。
B、采用跳频扩频技术。
C、采用时分复用多路访问技术,有效地避免了"碰撞"和"隐藏终端"等问题。
D、网络技术。
E、语言支持。
F、纠错技术,其采用的是FEC(前向纠错)方案。
(5)蓝牙接口由3大单元组成:无线单元、基带单元、链路管理与控制单元。
22、1394接口
(1)1394作为一种标准总线,可以在不同的工业设备之间架起一座沟通的桥梁,在一条总线上可以接入63个设备。
(2)IEEE 1394的特点:
A、支持多种总线速度,适应不同应用要求。
B、即插即用,支持热插拔。
C、支持同步和异步两种传输方式。
D、支持点到点通信模式,IEEE 1394是多主总线。
E、遵循ANSI IEEE 1212控制及状态寄存器(CSR)标准,定义了64位的地址空间,可寻址1024条总线的63个节点,每个节点可包含256TB的内存空间。
F、支持较远距离的传输。
G、支持公平仲裁原则,为每一种传输方式保证足够的传输带宽。
H、六线电缆具有电源线,可传输8~40V的直流电压。
(3)IEEE 1394的协议栈由3层组成:物理层、链路层和事务层,例外还有一个管理层。物理层和链路层由硬件构成,而事务层主要由软件实现。
A、物理层提供IEEE 1394的电气和机械接口,功能是重组字节流并将它们发送到目的节点上去。
B、链路层提供了给事务层确认的数据服务,包括:寻址、数据组帧和数据校验。
C、事务层为应用提供服务。
D、管理层定义了一个管理节点所使用的所有协议、服务以及进程。
23、电源接口
(1)DC-DC转换器有三种类型:
A、线性稳压器:产生较输入电压低的电压。
B、开关稳压器:能升高电压、降低电压或翻转输入电压。
C、充电泵:可以升高、降低或翻转输入电压,但电流驱动能力有限。
(2)任何变压器的转换过程都不具有100%的效率,稳压器本省也使用电流(静态电流),这个电流来自输入电流。静态电流越大,稳压器功耗越大。
(3)线性稳压器输入输出使用退耦电容来过滤,电容除了有助于平稳电压以外,还有利于去除电源中的瞬间短时脉冲波形干扰。
(4)电压与功耗之间的平方关系意味着理想高效的方法是在要求较低电压的较低时钟速率上执行代码,而不是先以最高的时钟速率执行代码然后再转为空闲休眠。
(5)电源通常被认为是整个系统的"心脏",绝大多数电子设备50%~80%的节能潜力在于电源系统,研制开发新型开关电源是节能的主要举措之一。
(6)降低功耗的设计技术:
A、采用低功耗器件,例如选用CMOS电路芯片。
B、采用高集成度专用器件,外部设备的选择也要尽量支持低功耗设计。
C、动态调整处理器的时钟频率和电压,在允许的情况下尽量使用低频率器件。
D、利用"节电"工作方式。
E、合理处理器件空余引脚:
a、大多数数字电路的输出端在输出低电平时,其功耗远远大于输出高电平时的功耗,设计时应该注意控制低电平的输出时间,闲置时使其处于高电平输出状态。
b、多余的非门、与非门的输入端应接低电平,多余的与门、或门的输入端应接高电平。
c、ROM或RAM及其他有片选信号的器件,不要将"片选"引脚直接接地,避免器件长期被接通,而应该与"读/写"信号结合,只对其进行读写操作时才选通。
F、实现电源管理,设计外部器件电源控制电路,控制"耗电大户"的供电情况。
三、真题解析
1、2007年25题
下图为01001110的各种编码方式,不归零电平(NRZ-L)采用0表示高电平,1表示低电平。若按照从上到下的顺序,所采用的编码方式分别为(25)。
25)A.不归零电平,曼彻斯特编码,差分曼彻斯特编码,不归零1制
B.不归零电平,不归零1制,曼彻斯特编码,差分曼彻斯特编码
C.曼彻斯特编码,不归零电平,不归零1制,差分曼彻斯特编码
D.不归零1制,不归零电平,差分曼彻斯特编码,曼彻斯特编码
<答案>:B
考查计算机系统硬件编码方面的基础知识。
不归零电平:0=高电平;1=低电平。
不归零1制:0=在间隔的其实位置没有跳变;1=在间隔的其实位置有跳变。
曼彻斯特编码:
0=在间隔的中间位置从高向低跳变。
1=在间隔的中间位置从低向高跳变。
差分曼彻斯特编码:在间隔的中间位置总有一个跳变。
0=在间隔的起始位置有跳变。
1=在间隔的起始位置没有跳变。
2、2007年28题
下面关于DMA方式的描述,不正确的是(28)。
(28)A. DMA方式使外设接口可直接与内存进行高速的数据传输
B. DMA方式在外设与内存进行数据传输时不需要CPU干预
C.采用DMA方式进行数据传输时,首先需要进行现场保护
D. DMA方式执行I/O交换要有专门的硬件电路
<答案>:C
考查计算机系统硬件方面关于DMA方式的基础知识。尽管《教程》中没有详细的提及,但是作为嵌入式最基本的知识点,是应该掌握的。
DMA是"直接存储器访问",以这种方式传送数据时,是通过专门的硬件电路-DMA控制器直接访问存储器来完成,不需要CPU的干预,省去了保护和恢复现场的问题。
3、2007年32题
下列关于D/A变换器接口的描述,不正确的是(32)。
(32)A.它是嵌入式微机系统与外部模拟控制对象的重要控制接口
B.它通常由模拟开关、权电阻电路、缓冲电路组成
C.它也可以把外界的模拟量变换成数字量
D.它输出的模拟量可以是电流,也可以是电压
<答案>:C
考查嵌入式系统中D/A接口的基础知识。
D/A转换器是将数据信号转化为模拟信号的接口,是嵌入式系统与外部模拟控制对象的重要控制接口,其通常由模拟开关、权电阻电路和缓冲电路组成,根据不同的情况,输出的模拟量可以是电流,也可以是电压。
4、2007年33题
RS-232C串行通信总线的电气特性要求总线信号采用(33)。
(33)A.正逻辑 B.负逻辑 C.高电平 D.低电平
<答案>:B
考查嵌入式系统中串行接口的基本知识。我觉得这是常识性的问题。
5、2006年33、34题
RS-232标准在初期可以满足人们的要求,但当人们要求以更高的速率传送到更远的距离时,需要有新的标准。RS-449就是为此目的而设计的,它的标准规格中,RS-422标准是平衡式的,传输一个信号用两根线,逻辑信号用(33)表示,双线传输的主要优点是(34)
(33) A.正负5V以上电平 B.正负3V以上电平
C.两线的电平差 D.两线的电平
(34) A.冗余可靠 B.抗干扰能力强
C.传输线少 D.可并行传输信号
<答案>:C、B
考查RS-422串行通信接口的基本知识。
RS-422标准的数据信号采用差分传输方式(即逻辑信号用两条线的电平差表示),使用一对双绞线进行信号传输。其主要优点是增强了信号的抗干扰能力。
6、2006年35题
若曼彻斯特编码和差分曼彻斯特编码的波形如图所示,则实际传送的比特串为(35)
(35) A. 011010110 B. 100101100
C. 100100100 D. 011010011
<答案>:D
考查计算机系统硬件编码方面的基础知识。
详解见(1)2007年25题。
7、2006年36题
下面关于PCI总线的叙述,其中(36)是错误的。
(36) A. PCI总线支持64位总线。
B. PCI总线的地址总线与数据总线是分时复用的。
C. PCI总线是一种独立设计的总线,它的性能不受CPU类型的影响。
D. PC机中不能同时使用PCI总线和ISA总线。
<答案>:D
考查嵌入式系统中PCI接口的基本知识。
详见见复习笔记13。在普通PC中允许同时使用PCI总线和ISA总线,这也是常识。
8、2006年37题
IEEE802.11b标准定义了使用跳频、扩频技术的无线局域网标准,传输速率为1Mb/s,2Mb/s,5.5Mb/s和(37)
(37) A. 10Mb/s B. 11Mb/s C. 20 Mb/s D. 54 Mb/s
<答案>:B
考查WLAN中常用标准的基本知识。
嵌入式系统设计师考试复习笔记之存储管理篇
引言
2007年下半年通过了嵌入式系统设计师的考试,一大堆的复习资料都不知道扔那里好,卖掉又有点可惜,送人又没人要。与其让当时的复习笔记沉沦书架底部,还不如整理一下让大家评论评论。2008年11月的考试也快到了,如果能帮到有需要的人,那我真是乐坏了。看看06和07年的题目,在存储管理方面的题目蛮多的,应该是一个重要考点。无论是概念、理论、分析和计算都相当容易出题。在我当时的复习笔记中这方面算最多了。这里就先拿这个点说说吧,其他的以后有时间再写了。
1、存储器系统的层次架构
计算机系统的存储器被组织城一个金字塔的层次结构。
自上而下为:CPU内部寄存器、芯片内部高速缓存(cache)、芯片外部高速缓存(SRAM、SDRAM、DRAM)、主存储器(FLASH、EEPROM)、外部存储器(磁盘、光盘、CF卡、SD卡)和远程二级存储器(分布式文件系统、WEB服务器),6个层次的结构。
上述设备从上而下,依次速度更慢、容量更大、访问频率更小,造价更便宜。
2、高速缓存(cache)
工作原理(参照教程126页,博客画不了图):主要利用了程序的局部性特点。
地址映象是指把主存地址空间映象到cache的地址空间。
地址变换是指当程序或数据已经装入到cache后,在实际运行过程中,把主存地址如何编程cache空间的地址。
常用的地址映象和地址变换的方式有:(教程127页)
直接映象和变换:速度快,造价低,但有局限性,不能充分利用cache的好处。
组相联地址映象和变换:速度稍慢但是命中率高。
全相联地址映象和变换:可以任意映射。
常用的cache替换算法:轮转法和随机替换算法。
高速缓存的分类:
统一cache和独立的数据/指令cache
写通cache和写回cache
读操作分配cache和写操作分配cache
3、存储管理单元(MMU)
MMU在CPU和物理内存之间进行地址转换,将地址从逻辑空间映射到物理空间,这个过程称为内存映射。
MMU主要完成下面的工作:
A.虚拟存储空间到物理空间的映射。
B.存储器访问权限的控制。
C.设置虚拟存储空间的缓冲特性。
嵌入式系统中常常采用页式存储管理。为了管理这些页引入了页表的概念。
页表是位于内存中的表,它的每一行对应虚拟存储空间的一个页,该行包含了该虚拟内存页对应的物理内存页的地址、该页的访问权限和该页的缓冲特性等。
从虚拟地址到物理地址的变换过程就是查询页表的过程。
由于页表存储在内存中的,整个查询过程需要付出很大的代价。根据程序局部性的特点,增加了一个小容量、高速度的存储部件来存放当前访问需要的地址变换条目,这个存储部件称为:地址转换后备缓冲器(TLB)。
当CPU访问内存时,首先在TLB中查找需要的地址变换条目,如果该条目不存在,CPU再从内存中的页表中查询,并把相应的结果添加到TLB中,更新它的内容。
嵌入式系统中虚拟存储空间到物理空间的映射以内存块为单位进行。即虚拟存储空间中一块连续的存储空间被映射到物理存储空间中同样大小的一块连续存储空间。
在页表和TLB中,每一个地址变换条目实际上记录了一个虚拟存储空间的内存块的基地址与物理存储空间相对应的一个内存块的基地址之间的对应关系。
在MMU中实现虚拟地址到物理地址的映射是通过两级页表来实现的。
禁止MMU时,所有物理地址和虚拟地址相等,即使用平板存储模式。
4、内存保护
操作系统通常利用MMU来实现操作系统内核与应用程序之间的隔离,以及应用程序与应用程序之间的隔离。
内存保护包含两个方面的内容:
A.防止地址越界,每个应用程序都有自己独立的地址空间。
B.防止越权操作,每个应用程序都有自己的访问权限。
5、实模式与保护模式
在嵌入式系统中,常见的存储管理方案可以分为两大类:实模式和保护模式。
实模式:内存的平面使用模式。特点有:
A.不划分"系统空间"与"用户空间",无须进行地址映射。
B.操作系统与应用程序之间不再有物理的边界。
C.系统中的"任务"或"进程",实际上全是内核线程。
在实模式下,内存布局可以分为5个段:
A.代码段:包含操作系统和应用程序的所有代码。
B.数据段:所有带有初始值的全局变量。
C.BSS段:所有未带初始值的全局变量。
D.堆空间:动态分配的内存空间。
E.栈空间:保存上下文以及函数调用时的局部变量和形参。
在实模式存储管理方案下,主要的工作在于堆空间的管理,即如何来管理空闲的堆空间、如何来分配内存、如何来回收内存等等。
保护模式:处理器中必须有MMU硬件并启用。特点有:
A.系统内核和用户程序都有各自独立的地址空间。
B.每个应用程序只能访问自己的地址空间,不能去破坏操作系统和其他应用程序的代码和数据。
6、分区存储管理
为了实现多道程序系统而采用的内存管理。
基本思路:把整个内存划分为两大区域,即系统区和用户区,然后再把用户区划分为若干个分区,每个任务占有其中的一个分区。这样,在内存当中就同时保留多个任务,让他们共享整个用户区,从而实现多个任务的并发运行。
分区存储管理又可以分为两类:固定分区和可变分区。
固定分区:各个用户分区的个数、位置和大小一旦确定后,就固定不变,不能再修改。
优点:易于实现,系统开销较小。
缺点:内存利用率不高,分区总数固定。
可变分区:动态创建,在装入一个程序时,系统将根据它的需求和内存空间的使用情况来决定是否分配。
优点:动态变化,非常灵活。
缺点:可能存在外碎片。
在实现可变存储管理技术的时候,需要考虑三个方面的问题:
A.内存管理的数据结构
B.内存的分配算法
C.内存的回收算法
7、地址映射
地址映射也叫地址重定位。
逻辑地址和物理地址是完全不同的,不能用逻辑地址来直接访问内存单元。
为了保证CPU在执行指令的时候,可以正确地访问内存单元,需要将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址。这个过程称为:地址映射。
地址映射由存储管理单元MMU来完成。
地址映射主要有两种方式:静态地址映射和动态地址映射。
静态地址映射:当用户程序被装入内存时,直接对指令代码进行修改,一次性地实现逻辑地址到物理地址的转换。
动态地址映射:当用户程序被装入内存时,不对指令代码做任何修改,而是在程序的运行过程中,当它需要访问内存单元的时候,再来进行地址转换。
在具体实现时,这项转换工作一般是由硬件的地址映射机制来完成的。通常设置一个基地址寄存器,或者叫重定位寄存器。当一个任务被调度运行时,就把它所在分区的起始地址装入到整个寄存器中。然后,在程序运行的过程中,当需要访问某个内存单元时,硬件就会自动地将其中的逻辑地址加上基地址寄存器中的内容,从而得到实际的物理地址,并且按照这个物理地址区执行。
这个基地址寄存器位于MMU的内部,整个地址映射过程是自动运行的。从理论上说,每访问一次内存都要进行一次地址映射。
8、页式存储管理(重点)
基本思路:把物理内存划分为许多固定大小的内存块,称为物理页面;把逻辑地址空间也划分为大小相同的块,称为逻辑页面。当一个用户程序被装入内存时,不是以整个程序为单位,把它存放在一整块连续的区域,而是以页面为单位来进行分配的。对于一个大小为N的页面程序,需要有N个空闲的物理页面来把它装载。这些物理页面不一定是要连续的。
在页式存储管理中需要解决三个问题:数据结构、内存分配与回收、地址映射。
数据结构有两个:页表和物理页面表。
A.页表:给出了任务逻辑页面号和内存中物理页面号之间的对应关系。
B.物理页面表:描述内存空间中,各个物理页面的使用情况。
具体的例子请参考《教程》317页(博客中画不了图,有兴趣自己看)。
内存的分配过程:
A.对于一个新来的任务,计算它所需要的页面数N,然后查看位示图,看是否还有N个空闲的物理页面。
B.如果有足够的空闲物理页面,就去申请一个页表,其长度为N,并把页表的起始地址填入到该任务的控制块中。
C.分配N个空闲的物理页面,把他们的变换填到页表中,建立逻辑页面与物理页面直接的对应关系。
D.修改位示图,对刚刚被占用的那些物理页面进行标记。
地址映射的基本思路:
A.逻辑地址分析:对逻辑地址,找到它所在的逻辑页面,以及它在页面内的偏移地址。
B.页表查找:根据逻辑页面号,从页表中找出它对应的物理页面号。
C.物理地址合成:根据物理页面号和页内偏移地址,最终确定物理地址。
逻辑地址分析:
页面的大小都是2的整数次幂。对于给定的一个逻辑地址,可以直接把它的高位部分作为逻辑页面号,把它的低位部分作为页内偏移地址。例如,假设页面的大小是4KB,即2的12次幂,逻辑地址为32为,那么在一个逻辑地址当中,最低12位为页内偏移地址,而剩下的20位就是逻辑页面号。
计算方法:
逻辑页面号=逻辑地址/页面大小
页内偏移量=逻辑地址%页面大小
页表查找:
页表作为操作系统的一个数据结构,通常保存在内核的地址空间中。
页表基地址寄存器用来指向页表的起始地址;页表长度寄存器用来指示页表的大小,即对于当前任务,它总共包含有多少个页面。
物理地址合成:
假设物理页面号为f,页内偏移地址为offset,每个页面大小为2n,那么相应的物理地址为:f×2n+offset。
9、虚拟存储管理
程序局部性原理:时间局限性和空间局限性。
虚拟页式存储管理:在页式管理的基础上,增加了请求调页和页面置换的功能。
基本思路:当一个用户程序需要调入内存去运行时,不是将这个程序的所有页面都装入内存,而是只装载部分的页面,就可以启动这个程序运行。在运行过程中,如果发现要执行的指令或者访问的数据不在内存当中,就向系统发出缺页中断请求,然后系统在处理这个中断请求时,就会将保存在外存中的相应页面调入内存,从而使该程序能继续运行。
在虚拟页式存储管理中,页表包含:逻辑页面号、物理页面号、驻留位、保护位、修改位和访问位。
常用的页面置换算法:
A.最优页面置换算法:理想化算法。
B.最近最久未使用算法:链表法和栈方法。寻找长时间没有被访问的页面。
C.最不常用算法:每个页面设置一个访问计数器。
D.先进先出算法:性能比较差。
E.时钟页面置换算法:把页面组成环形链表,类似时钟面。
一般来说,当一个任务刚刚启动的时候,它会不断去访问一些新的页面,然后逐步建立一个比较稳定的工作集。工作集是指当前任务正在使用的逻辑页面的集合。如果分配给一个任务的物理页面数太少,不能包含整个的工作集,任务将会造成很多缺页中断,需要频繁地进行页面置换,这种现象称为"抖动"。
10、相关的考试真题
(1)2007年6题:
若内存地址区间为4000H~43FFH,每个存贮单元可存储16位二进制数,该内存区域用4片存储器芯片构成,则构成该内存所用的存储器芯片的容量是(6)。
(6)A.512×16bitB.256×8bitC.256×16bitD.1024×8bit
<答案>:C
首先计算内容空间的大小:43FFH-4000H=3FFH,其大小为1024×16bit
接着计算存储芯片的容量:(1024×16bit)/4=256×16bit=512×8bit
根据选项提供的内容,只有256×16bit符合提纲的要求。
(2)2007年23题:
页式存储系统的逻辑地址是由页号和页内地址两部分组成,地址变换过程如下图所示。假定页面的大小为8K,图中所示的十进制逻辑地址9612经过地址变换后,形成的物理地址a应为十进制(23)。
(23)A.42380B.25996C.9612D.8192
<答案>:B
8K=1024×8=8192
逻辑页面号=9612/8192=1(1号页号对应的物理地址块号为3)
页内偏移量=9612%8192=1420
物理地址=3×8192+1420=25996
(3)2007年24题
某总线有104根信号线,其中数据总线(DB)32根,若总线工作频率为33MHz,则其理论最大传输率为(24)。(注:本题答案中的B表示Byte)
(24)A.33MB/sB.64MB/sC.132MB/sD.164MB/s
<答案>:C
每个字节8位,需要8根数据线。
数据总线有32跟,每次可以并行传输32/8=4个字节。
总线工作频率为33MHz,那么理论最大传输率为33×4=132MHz。
(4)2007年26题
某存储器数据总线宽度为32bit,存取周期为250ns,则该存储器带宽为(26)。(注:本题答案中的B表示Byte)
(26)A.8×106B/sB.16×106B/sC.16×108B/sD.32×106B/s
<答案>:B
存取频率为:1/0.00000025s=4000000
总线宽度为:32bit/8=4byte
存储器带宽:4×4000000=16000000=16×106B/s
(5)2007年29~31题
在嵌入式处理器中,CACHE的主要功能由(29)实现;某32位计算机的CACHE容量为16KB(B:字节),CACHE块的大小为16B(B:字节),若主存与CACHE地址映像采用直接映像方式,则主存地址为0x1234E8F8的单元装入CACHE的地址(30);在下列CACHE替换算法中平均命中率最高的是(31)。
(29)A.硬件B.软件
C.操作系统D.应用程序
(30)A.00010001001101B.01000100011010
C.10100011111000D.11010011101000
(31)A.先入后出算法(FILO)B.随机替换算法(RAND)
C.先入先出算法(FIFO)D.近期最少使用算法(LRU)
<答案>:A、C、D
29:Cache的主要功能由硬件实现,这个《教程》有介绍。
30:cache容量为16KB即逻辑地址的低14位
由于采用的是直接映象所以cache的地址为:主存地址的低14位。
31:相比较说,D的命中率最低。
(6)2007年34题
在嵌入式系统的存储结构中,存取速度最快的是(34)。
(34)A.内存B.寄存器组C.FlashD.Cache
<答案>:B
寄存器组>cache>内存>flash
(7)2007年41题
操作系统中的"抖动"是指(41)的现象。
(41)A.根据一定的页面置换算法,将页面调出
B.由于选择了长期未被访问的页进行置换,导致系统更换页面
C.页面调入不久就被导出,导出不久又被调入,导致系统频繁更换页面
D.根据系统运行情况决定将哪个页面调出,而不是由页面置换算法决定更换哪个页面
<答案>:C
《教程》中328页有对"抖动"的介绍。
(8)2006年1题
若内存按字节编址,用存储容量为32K×8比特的存储器芯片构成地址编号A0000H到DFFFFH的内存空间,则至少需要(1)片。
(1)A.4B.6C.8D.10
<答案>:C
DFFFF=-A0000H=256KB。
256/32=8片
(9)2006年22题
从下表关于操作系统存储管理方案1、方案2和方案3的相关描述可以看出,他们分别对应(22)存储管理方案。
方案1:在系统进行初始化的时候就已经将主存储空间划分成大小相等或不等的块,并且这些块的大小在此后是不可以改变的。系统将程序分配在联系的区域中。
方案2:主储存空间和程序按固定大小大单位进行分割,程序可以分配在不连续的区域中。该方案当一个作业的程序地址空间大于主存可以使用的空间时也可以执行。
方案3:编程时必须划分程序模块和确定程序模块之间的调用关系,不存在调用关系的模块可以占用相同的主存区。
(22)A.固定分区、请求分页和覆盖
B.覆盖、请求分页和固定分区
C.固定分区、覆盖和请求分页
D.请求分页、覆盖和固定分区
<答案>:A
《教程》中有相关概念的介绍。
(10)2006年28题
在32位总线系统中,若时钟频率为500MHz,传送一个32位字需要5个时钟周期,则该总线系统的数据传输速率为(28)MB/s。
(28)A.200B.400C.600D.800
<答案>:B
与2007年的24和26题考查的是相同的内容。
在32位总线系统中,每次可以传送32位字,即4个BYTE。
时钟频率为500MHz,则传输32位的速率为100MHz。
也就是总线的数据传输速率为:4×100=400MB/s。
在嵌入式系统的存储结构中,存取速度最快的是(34)。
(11)2006年29题
在CPU和物理内存之间进行地址转换时,(29)将地址从虚拟(逻辑)地址空间映射到物理地址空间。
(29)A.TCBB.MMUC.CACHED.DMA
<答案>:B
TCB:任务控制块
MMU:存储管理单元
CACHE:高速缓存
DMA:直接存储
(12)2006年31题
下列存取速度最快的是(31)。
(31)A.flash存储器B.DRAM存储器C.高速缓存(CACHE)D.磁盘
<答案>:C
高速缓存(CACHE)>DRAM存储器>flash存储器、磁盘
(13)2006年51题
页式存储器当中的页面是由(51)所感知的。
(51)A.用户B.操作系统C.编译系统D.连接程序
<答案>:B
概念理解,看过就应该会做,不看过也能推理出来。
总的来看,07年考查内存管理方面的内容比06年多,深度也相应的增加了。
嵌入式系统设计师考试笔记之电子电路设计基础
一、引言
在嵌入式系统的硬件设计中,嵌入式微处理器和外围设备接口技术是两个最为核心的部分,然而支撑这个两个部分的基础确实电子电路的基本技术。任何一个嵌入式系统的设计都离不开电子电路的设计。作为嵌入式系统设计师的考试,对这方面的考查或多或少有几题,但在整个考试题目中所占的比例不多。过去的两分考题中,06年考了4题,07年没有考查相关题目。这不能说明以后的考试就不会考查这方面的知识,毕竟这个部分是一个不可缺少的基础。同时,在嵌入式的一些基础知识题目的解题中,也需要一定电子电路设计的基础知识。电子电路设计的基础知识可以写成几本书,但是不要害怕。正是如此,考试考查的只可能是重要概念、基础知识和基本技能。过去的真题也验证了这一点,考查的都是电子电路设计的基本步骤,一些基本概念、布线布局的基本原则以及抗干扰的一些基本措施。想当年,我也是这样赌一把,把教程上的基本东西梳理清楚,感觉可以应用考试的题目。当然这是一种偷懒的做法,如果您有时间和精力,完全把握这方面的内容是件好事情。
二、复习笔记
1、电路设计原理
(1)电路板设计主要分为3个步骤:设计电路原理图、生成网络表、设计印制电路版。
(2)网络表是电路原理设计和印制电路板设计中的一个桥梁,它是设计工具软件自动布线的灵魂。
(3)网络表的格式包括2部分:元器件声明和网络定义。(缺少任一部分都有可能在布线的时候出错)
(4)电路原理图设计不仅是整个电路设计的第一步,也是电路设计的基础。包括以下的一些具体步骤:
A、建立元器件库中没有的库元件。
B、设置图纸属性。
C、放置元件。
D、原理图布线。
E、检查与校对。
F、电路分析与仿真。
G、生成网络表。
H、保存与输出。
2、PCB电路设计
(1)PCB设计是电子产品物理结构设计的一部分,它的主要任务是根据电路的原理和所需元件的封装形式进行物理结构的布局和布线。
(2)PCB设计包括下面一些具体步骤:
A、建立封装库中没有的封装。
B、规划电路板。
C、载入网络表和元件封装。
D、布置元件封装。
E、布线。
F、设计规则检查。
G、PCB仿真分析。
H、存档输出。
3、多层PCB设计的注意事项
(1)高频信号线一定要短,不可以有尖角(90度直角),两根线之间的距离不宜平行、过近,否则可能会产生寄生电容。
(2)如果是两面板,一面的线布成横线,一面的线布成竖线,尽量不要布成斜线。
(3)一般来说,线宽一般为0.3mm,间隔也为0.3mm,这个长度约为8~10mil。但是对于电源线或者大电流线应该有足够宽度,一般需要60~80mil。焊盘一般为64mil。
(4)单面板的生产工艺都很差,因此,单面板的焊盘尽量做得大一些,线要尽量粗一些。
(5)铜膜线的地线应该在电路板的周边,同时将电路上可以利用的空间全部使用铜箔做地线,增强屏蔽能力,并且防止寄生电容。
(6)电路图上的地线表示电路中的零电位,并用作电路中其他各点的公共参考点,在实际电路中由于地线阻抗的存在,必然会带来共阻干扰,因此,在布线是,不能将具有地线符号的点随便连接在一起,这可能引起有害的耦合而影响电路的正常工作。
4、PCB设计中的可靠性知识
(1)地线设计:在电子设备中,接地是控制干扰的重要方法。
A、正确选择单点接地与多点接地。
a、在低频电路中(工作频率小于1MHz),采用一点接地。
b、在高频电路中(工作频率大于10MHz),采用就近多点接地。
B、将数字电路与模拟电路分开,两者地线不要相混。分别与电源端地线相连。
C、尽量加粗地线。若地线很细,接地电位则随电流的变化而变化,如有可能,接地线的宽度应大于3mm。
D、将接地线构成环路,可以明显提高抗噪声能力。
(2)电磁兼容性设计
A、选择合理的导线宽度。
a、瞬变电流在印制线条上所产生的冲击干扰主要是由印制导线的电感成分造成的。
b、时钟引线、行驱动器和总线驱动器的信号线常常载有大的瞬变电流,导线要尽可能短。
c、对于分立元件,导线宽度载1.5mm左右可满足要求。
d、对于集成电路,导线宽度可在0.2mm~1mm之间选择。
B、采用正确的布线策略:最好采用井字形网状布线结构。
a、PCB的一面横向布线,另一面纵向布线,然后在交叉孔处用金属化孔相连。
b、尽量减少导线的不连续性,例如导线不要突变,拐角应大于90度。
c、尽量避免长距离的平行走线,尽可能拉开线与线之间的距离。
d、信号线与地线及电源线尽可能不交叉。
e、在一些对干扰十分敏感的信号线之间设置一根地线,可以有效抑制串扰。
C、抑制反射干扰。
(3)去耦电容配置。
配置去耦电容可以抑制因负载变化而产生的噪声,是印制电路板的可靠性设计的一种常规做法。配置原则如下:
A、 电源输入端跨接一个10~100uF的电解电容。
B、 为每个集成电路芯片配置一个0.01uF的陶瓷电容。
C、 对于噪声能力弱、关断时电流变化大的器件和ROM、RAM等存储型器件,应在芯片的电源线和地线之间直接接入去耦电容。
D、去耦电容的引线不能过长,特别是高频旁路电容不能带引线。
(4)PCB的尺寸与器件的布置。
A、相互有关的元件尽量放得靠近一些。
B、时钟发生器、晶振和CPU的时钟输入端易产生干扰,要相互靠近一些。
C、易产生噪声的元件、小电流电路、大电流电路等应尽量原理逻辑电路。
(5)散热设计。
5、电子设计原理
(1)EDA是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术最新成果而研制成的电子CAD通用软件包。利用EDA工具,电子工程师可以将电子产品的由电路设计、性能分析到IC设计图或PCB设计图整个过程在计算机上自动处理完成。
(2)"自顶向下"的设计方法。
先从系统设计入手,在顶层进行功能框图的划分和结构设计。在框图一级进行仿真和纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证,然后用综合优化工具生成具体的门电路网表,其对应的物理实现级可以是PCB或专用集成电路。
(3)VHDL是一种全方位的硬件描述语言,包括系统行为级、寄存器传输级和逻辑门级多个设计层次,支持结构、数据流、行为3种描述形式的混合描述。
6、电子电路测试原理与方法
(1)故障检测:判断故障是否存在,即只判断有无故障。
(2)故障诊断(故障定位):不仅判断故障是否存在,而且指出故障位置。
(3)仿真:对设计过程中得到的电路参数验证其正确性。
(4)测试:判断产品是否合格。
(5)可测试设计的3个方面是:测试生成、测试验证、测试设计。
(6)JTAG测试接口是IC芯片测试方法的标准。
7、硬件抗干扰测试
(1)形成干扰的3个基本要素:干扰源、传播路径和敏感器件。
(2)干扰的耦合方式:干扰源产生的干扰信号要通过一定的耦合通道才对系统产生作用。
A、直接耦合:最有效的方式是加入去耦电容。
B、公共阻抗耦合。
C、电容耦合。
D、电磁感应耦合(磁场耦合)。
E、漏电耦合。
(3)抑制干扰源的技术
尽可能减小干扰源的du/dt和di/dt,这是抗干扰设计中最优先考虑和最重要的原则。
A、 主要通过在干扰源两端并联电容来实现减小干扰源的du/dt。
B、 主要通过在干扰源回路串联电感或电阻及增加续流二极管来实现di/dt。
(4)切断干扰传播路径的技术
A、充分考虑电源对嵌入式系统的影响。例如给电源加滤波电路或稳压器。
B、若微处理器的I/O口接控制电机等噪声器件,应在I/O和噪声源之间加隔离。
C、晶振与微处理器的引脚尽量靠近,用地线把时钟区隔离起来,晶振外壳接地并固定。
D、电路板合理分区,如强、弱信号,数字、模拟信号。
E、尽可能将干扰源与敏感元件远离。
F、用地线把数字区与模拟区隔离。
G、数字地与模拟地要分离,最后再一点接于电源地。
H、微处理器和大功率器件的地线要单独接地,以减小互相干扰。
I、大功率器件尽可能放在电路板边缘。
(5)提高敏感元件的抗干扰性能
A、布线时尽量减少回路环的面积,以降低感应噪声。
B、电源线和地线要尽量粗,除减小压降外,更重要的是降低耦合噪声。
C、微处理器闲置的I/O口不要悬空,要接地或接电源。
D、其他IC的闲置端在不改变系统逻辑的情况下接地或电源。
E、使用电源监控及看门狗电路,可大幅度提高整个电路的抗干扰性能。
F、在满足要求的前提下,尽量降低微处理器的晶振和选用低速数字电路。
三、真题解析
1、2006年38题
电路板的设计主要分为三个步骤,不包括(38)这一个步骤。
(38) A、生成网络表 B、设计印制电路版
C、设计电路原理图 D、自动布线
<答案>:D
见复习笔记1,这是嵌入式硬件设计的常识。
2、2006年39题
现代电子设计方法包含了可测试设计,其中(39)接口是IC芯片测试的标准接口。
(39)A. BIST B. JATG C. UART D. USB
<答案>:B
见复习笔记6,概念性问题。
3、2006年40题
多层印制电路板(4层或者4层以上)比双面板更适合于高速PCB布线,最主要的原因是(40)
(40) A. 通过电源平面供电,电压更稳定。
B. 可以大大减小电路中信号回路的面积。
C、多层印制电路板工艺简单。
D、自动布线更容易。
<答案>:B
可以用排除法,根据常识首先可以排除C和D。
见复习笔记7,布线时尽量减少回路环的面积,以降低感应噪声。因此,相比之下,B选型是最主要原因。
4、2006年41题
下面不符合数字电路(或者集成电路)的电磁兼容性设计方法的是(41)
(41) A. IC的电源及地的引脚较近,有多个电源和地。
B. 使用贴片元件,不是用插座。
C. IC的输出级驱动能力应超过实际应用的要求。
D. 对输入和按键采用电平检测(而非边沿检测)
<答案>:C(参考郭春柱著的《嵌入式系统设计师案例导学》)
数字电路(或集成电路)的电磁兼容性(EMI)设计在进行器件选型时,通常遵循一下原则:
(1) 在满足技术指标前提下,尽量选用低速时钟的IC。
(2) 所选IC的电源及地引脚较近。
(3) 所选IC有多个电源及地线引脚。
(4) 所选IC的输出电压波动性小,输出级能力不超过实际应用要求。
(5) 所选IC的电源瞬态电流(穿透电流)低。
(6) 所选IC的输入电容尽量小。
(7) 所选IC具有可控开关速率。
(8) 所选IC地线反射较低。
(9) 建议在PCB上焊接表贴芯片。
在EMC电路技术方面,通常遵循以下原则:
(1) 对输入和按键采用电平检测(而非边沿检测)。
(2) 降低负载电容,以使靠近输出端的集电极开路驱动器便于上拉,电阻值尽量大。
(3) 使用前沿速率尽可能慢而且平滑的数字信号(不超过失真极限)。
(4) 在PCB样板上,允许对信号边沿速度或带宽进行控制。
(5) 微处理器散热片与芯片之间通过导热材料隔离,并在周围多点射频接地。
(6) 不能在看门狗或电源监视电路上使用可编程器件。
(7) 电路中尽量配置一只高质量的看门狗。
(8) 电源的监视电路要对电源中断、跌落、浪涌和瞬态干扰有抵抗能力。
四、小结
到这里,关于嵌入式系统设计师考试的硬件方面的复习笔记也就整理完毕了。后面有时间的话,继续嵌入式软件设计和系统体系设计方面的内容。前面的文章得到了不少朋友的评论,收到不少他们的来信。谢谢你们的支持,希望我的这些文章能帮到你们。