嵌入式系统设计师考试笔记之嵌入式系统基础知识
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时,表示列队中有n个资源可用;当s=0时,表示队列中无资源可用;当s=ncache>内存>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) 电源的监视电路要对电源中断、跌落、浪涌和瞬态干扰有抵抗能力。
四、小结
到这里,关于嵌入式系统设计师考试的硬件方面的复习笔记也就整理完毕了。希望我的这些文章能帮到你们。
DFRobot新推Fermion: 1.51”OLED 透明屏幕
拉动传感器需求大幅增长
亚运夜景灯光工程
全球加密货币用户总数在2021年1月突破1亿
最会玩“黑色”的厂商:vivoX9 2000万双摄搭载磨砂黑!
资料下载:嵌入式系统设计师考试笔记(非常全面)
中兴Axon30评测 中兴axon30参数真全面屏手机二代诚意满满
fireflyROC-RK3328-PC编译Ubuntu 根文件系统简介
风力发电一键求助可视sip对讲终端
“铜陵城市超脑”上线,深刻推动铜陵精细化治理全面升级
双稳态多谐振荡器电路及波形
贝加莱模块化的X90控制器现在可配备状态监控功能
峰飞自动驾驶eVTOL载人飞行器V1500M完成首飞测试
浅谈苹果AR眼镜的重点研发工作
世界四大前沿新科技,将颠覆我们对世界的认知
中国联通打造开放式光网络,模块化设计支持机架堆叠式灵活扩展
iphone8什么时候上市?iphone8最新消息:苹果内部人士自曝iPhone8售价,苹果难产导致贵到离谱售价8000起跳
高中低代表者:iPhone7Plus、一加3T、荣耀畅玩6X
塑料行业通用水分测试仪的常规参数介绍
vivo与OPPO引领,当红五款热机盘点,小米Note2和OPPOR9Plus仍经典