《嵌入式系统的基础知识.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统的基础知识.ppt(81页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、嵌入式系统原理与设计嵌入式系统原理与设计 第3章嵌入式系统的基础知识嵌入式系统原理与设计ll 本章要点嵌入式系统原理与设计3.1 基本概念3.2 开发相关知识第 第3 3 章 章 嵌 嵌入 入式 式系 系统 统的 的基 基础 础知 知识 识嵌入式系统原理与设计3.1 基本概念 存储器结构 流水线技术 CISC&RISC 大端存储和小端存储 存储器管理单元MMU BSP Bootloader和OSLoader 进程和线程嵌入式系统原理与设计3.1.1 3.1.1 存储器结构存储器结构两种类型 哈佛结构和冯哈佛结构和冯.诺依曼结构诺依曼结构哈佛结构:(11)程序存储器和数据存储器相互)程序存储器和
2、数据存储器相互独立,可独立编址、独立访问;独立,可独立编址、独立访问;(22)双总线结构;)双总线结构;(33)取指令和访问数据可并行进行。)取指令和访问数据可并行进行。程序存储器数据存储器CPU地址线数据(指令)线地址线数据线哈佛结构嵌入式系统原理与设计3.1.1 存储器结构冯.诺依曼结构:(11)程序和数据在同一存储器中,统一)程序和数据在同一存储器中,统一编址,依靠编址,依靠PCPC寄存器指示指令地址;寄存器指示指令地址;(22)单总线结构;)单总线结构;(33)取指令和访问数据不可并行。)取指令和访问数据不可并行。程序存储区数据存储区CPU公用地址线共用数据线冯.诺依曼结构嵌入式系统原
3、理与设计其它变形结构:(11)MCS-51MCS-51系列单片机:系列单片机:程序、数据地址线分开,数据线共用;程序、数据地址线分开,数据线共用;(22)TMS320TMS320系列系列DSPDSP芯片:芯片:数据存放于程序存储器中数据存放于程序存储器中 指令存放于指令存放于CacheCache中中嵌入式系统原理与设计三种提速技术Cache系统并行存取(如哈佛结构、低位交叉访问等)先行缓冲技术嵌入式系统原理与设计现代微处理器以RISC技术为基础,基于流水线技术实现指令级并行,基于多核技术实现线程级并行,基于VLSI门阵列实现控制器硬连线逻辑,使得微处理器性能大大提高,达到甚至超过上一世纪大中型
4、计算机甚至巨型计算机的性能水平。流水线技术 嵌入式系统原理与设计设一条指令的执行过程分为:取指(取指令)、析指(分析指令)、执指(执行指令)三个阶段三个阶段都可能有访存操作取指 析指 执指访存取指令分析指令,可能访存取数执行指令,可能访存存结果3.1.2 3.1.2 流水线技术流水线技术嵌入式系统原理与设计1.顺序执行方式 nn条指令的执行时间:条指令的执行时间:设每段时间相等都是设每段时间相等都是tt,则执行时间:,则执行时间:T=3ntT=3nt特点:特点:简单,但指令执行速度慢,功能部件利用简单,但指令执行速度慢,功能部件利用率低率低取指k 析指k 执指k 取指k+1 析指k+1 执指k
5、+1嵌入式系统原理与设计2.重叠执行方式 T=(2+n)tnt 当n很大时,约缩短了2/3时间ARM7TDM1(-S)处理器使用3步流水取指k 析指k 执指k取指k+1 析指k+1 执指k+1取指k+2 析指k+2 执指k+2嵌入式系统原理与设计指令的重叠执行对计算机组成提出什么要求首先首先,要实现执指,要实现执指kk、析指、析指k+1k+1与取指与取指k+2k+2三者重叠,三者重叠,硬件上必须要有相对独立的取指、分析和执行部件。硬件上必须要有相对独立的取指、分析和执行部件。需要把顺序执行方式中的一个集中的指令控制器,需要把顺序执行方式中的一个集中的指令控制器,分解成三个功能独立的部件:存控(
6、存储控制器)、分解成三个功能独立的部件:存控(存储控制器)、指控(指令控制器)、运控(运算控制器)指控(指令控制器)、运控(运算控制器)其次其次,要求各个功能部件的运行速度大致相等,避,要求各个功能部件的运行速度大致相等,避免在重叠中的相互等待,如图所示。这需要依靠免在重叠中的相互等待,如图所示。这需要依靠RISCRISC技术的支持,以及用到预处理和缓冲技术。技术的支持,以及用到预处理和缓冲技术。此外此外还要解决三个阶段访问主存冲突问题,实现并还要解决三个阶段访问主存冲突问题,实现并行访存。行访存。嵌入式系统原理与设计在微处理器中较早就有指令重叠运行的雏形。如8086 处理器.取指k 析指k
7、执指k取指k+1 析指k+1 执指k+1取指k+2 析指k+2 执指k+2指令重叠运行时的相互等待嵌入式系统原理与设计Intel 80486的6步流水线结构q取指令q指令译码q地址生成q取操作数q执行指令q存储或回写结果Pentium 4具有高达20级的超流水线和超标量流水线结构嵌入式系统原理与设计多级重叠:子过程分解为更小的子过程一般使每个部件的执行时间相等,虽然执行一次浮点加法仍需4 t,但4个部件同时工作,则每隔一个t就能完成一次浮点加法,速度提高3倍取指令入出译码形成操作数地址取操作数执行保存结果求阶差入出尾数加 规格化 对阶一种指令流水线浮点加法器流水线嵌入式系统原理与设计RISC具
8、有指令简单、规整,只有存(STORE)、取(LOAD)指令,几乎所有指令都在一个机器周期内完成,并注重编译的优化等特点,容易做到指令重叠运行时各个功能部件的运行时间相等,大大减少了重叠中功能部件的相互等待,为指令流水带来天然的支持。此外,为了更好地发挥其在流水线中的效果,RISC处理机还采用了延时转移、指令取消、重叠寄存器窗口、指令流调整、硬件为主固件为辅等多种关键技术。2.RISC对流水线技术的支持 嵌入式系统原理与设计要使流水线发挥高效率,就要使流水线连续流动,尽量不出现断流的情况。引起流水线断流的原因很多,除了编译形成的目标程序不能发挥流水结构的作用,或存储系统由于结构或频宽等原因不能源
9、源不断地为流水线提供所需要的指令和操作数外,就是流水线中存在相关问题。相关:程序相近指令之间的某种影响指令重叠执行的关系,分为数据相关、控制相关和结构相关三类。3.流水线相关问题的解决 嵌入式系统原理与设计(1)数据相关及其处理 如:k:OP R1,A2;R1=(R1)OP(A2)k+1:OP R1,R2;R1=(R1)OP(R2)第k+1条指令和第k条指令存在R1数据相关。3.流水线相关问题的解决 嵌入式系统原理与设计解决办法:解决办法:一是采用一是采用推后处理法推后处理法,即规定同时读写,即规定同时读写同一个寄存器时,写操作优先,使发生读写冲突同一个寄存器时,写操作优先,使发生读写冲突时,
10、读数推后一个周期或推后一个节拍。时,读数推后一个周期或推后一个节拍。有时间浪费,实现简单有时间浪费,实现简单析指k 执指k析指k+1 执指k+1 析指k+1(推后)结果写R1需要读R1读R1推后一个周期执指k+1嵌入式系统原理与设计运算器二是设置专用数据通路:需增加硬件通用寄存器堆锁存器 锁存器相关专用通路嵌入式系统原理与设计(2)控制相关及其处理 控制相关是指由转移、条件分支、转子、中断等引起的相关。比如,如果指令K是转移指令,则顺序取来的指令k+1势必无效,重叠运行就会被打断。克服控制相关主要采用先行缓冲技术和转移预测技术。嵌入式系统原理与设计(2)控制相关及其处理 先行缓冲技术先行缓冲技
11、术在处理器内设置了一定深度的指令在处理器内设置了一定深度的指令缓冲栈,进行指令预取。如果转移的目标指令就缓冲栈,进行指令预取。如果转移的目标指令就在指令缓冲栈中,则无须重新取指令而直接分析在指令缓冲栈中,则无须重新取指令而直接分析执行,大大减少了控制相关带来的流水线延时。执行,大大减少了控制相关带来的流水线延时。转移预测技术转移预测技术一般有软件猜测法和硬件猜测法。一般有软件猜测法和硬件猜测法。软件猜测法修改编译器,由编译器分析程序,预软件猜测法修改编译器,由编译器分析程序,预先调整指令顺序,尽量降低转移成功的概率,使先调整指令顺序,尽量降低转移成功的概率,使指令尽量顺序执行。硬件猜测法利用专
12、门的硬件指令尽量顺序执行。硬件猜测法利用专门的硬件电路预先对指令进行分析,跟踪程序转移的历史电路预先对指令进行分析,跟踪程序转移的历史并预测程序可能的转移目标。现代微处理器的硬并预测程序可能的转移目标。现代微处理器的硬件预测准确度达到件预测准确度达到90%90%以上。以上。嵌入式系统原理与设计(3)结构相关及其处理 结构相关是指流水线中出现资源冲突问题,即出现流水线的各段在同一个时钟周期内使用相同的操作部件。例如,如果只有一个整数加法运算单元,就不能有两条连续执行加法运算的指令重叠操作。要解决结构相关,必须重复设置一些功能单元,以保证指令的所有组合都能够进行流水作业。嵌入式系统原理与设计流水线
13、技术的进一步发展,产生了多种高性能的指令流水线技术的进一步发展,产生了多种高性能的指令级并行处理器,如超标量处理器(级并行处理器,如超标量处理器(Superscalar Superscalar ProcessorProcessor)、超流水线处理器()、超流水线处理器(Superpipelining Superpipelining ProcessorProcessor)和超标量超流水线处理器)和超标量超流水线处理器(Superpipelining Superscalar ProcessorSuperpipelining Superscalar Processor)。)。所谓超标量处理机是指具有
14、多条能同时工作的流水线。所谓超标量处理机是指具有多条能同时工作的流水线。流水线级数在流水线级数在88级及以上的流水线处理器称为超流水级及以上的流水线处理器称为超流水线处理器,具有多条线处理器,具有多条88级及以上的流水线处理器就是级及以上的流水线处理器就是超标量超流水线处理器了。超标量超流水线处理器了。例如例如IntelIntel公司在公司在20062006年年33月发布的月发布的Core2 DuoCore2 Duo(酷睿(酷睿22)双核处理器可在)双核处理器可在11个时钟周期内,同时执行个时钟周期内,同时执行128128位位乘法、乘法、128128位加法、位加法、128128位数据加载与位数
15、据加载与128128位数据回存,位数据回存,或者是或者是44个个3232位单倍浮点精确度乘法与位单倍浮点精确度乘法与44个个3232位浮点位浮点单精确度加法运算。各条流水线深度达到单精确度加法运算。各条流水线深度达到1414级。级。4.超标量流水线和超级流水线 嵌入式系统原理与设计3.1.3 CISC&RISC3.1.3 CISC&RISC优化指令系统的两种不同的途径和方法复杂指令系统(CISC)精简指令系统(RISC)嵌入式系统原理与设计1 复杂指令系统(CISC)复杂指令系统(Complex Instruction Set Computer,CISC)增强指令功能,用新的复杂指令替代原由软
16、件子程序完成的功能,实现软件功能硬化的计算机系统它可从面向目标程序、面向高级语言和面向操作系统这三方面的优化来考虑。嵌入式系统原理与设计1.目标程序的优化思路:思路:从时间上和空间上优化目标程序,将使用从时间上和空间上优化目标程序,将使用频度高的指令进行硬件加速,用新指令替代使频度高的指令进行硬件加速,用新指令替代使用频度高的指令串用频度高的指令串主要途径:主要途径:(11)增强数据转送指令的功能)增强数据转送指令的功能(22)增强运算型指令的功能)增强运算型指令的功能(33)增强程序控制指令的功能)增强程序控制指令的功能如8088指令系统中的串操作指令和带重复前缀的串操作指令。指令 REP
17、MOVSW其功能相当于一个指令串:MVSW:MOV AX,SI MOV ES:DI,AX INC SI INC SI INC DI INC DI DEC CX JNZ MVSW如函数运算指令。三角函数SIN(X)的计算是展开成级数进行一系列四则运算的结果如8088指令系统中的循环控制指令 LOOPNZ LBL其功能相当于执行下述一系列操作:CX-1CX 若CX0 且 ZF1 则程序转向标号LBL,否则执行下一条指令嵌入式系统原理与设计2.对高级语言和编译程序的支持思路:缩小高级语言和机器语言的差距,使目标程序提高时空效率主要途径:(1)增强对高级语言和编译程序支持的指令,从而达到减少目标程序长
18、度,减少目标程序执行时间的目的。例:赋值语句、IF.Then.语句等的机器支持。(2)高级语言计算机如Lisp计算机,prolog计算机。嵌入式系统原理与设计3.操作系统的优化针对操作系统的功能进行直接支持针对操作系统的功能进行直接支持(11)优化支持操作系统的指令)优化支持操作系统的指令 处理机工作状态和访问方式的转换 处理机工作状态和访问方式的转换 进程的管理和切换 进程的管理和切换 存储管理和信息保护 存储管理和信息保护 进程的同步和互斥,信号灯的管理等 进程的同步和互斥,信号灯的管理等(22)增加专用于操作系统的指令)增加专用于操作系统的指令 如某些不公开的特权指令 如某些不公开的特权
19、指令(33)把操作系统中使用频繁,对速度影响大的机)把操作系统中使用频繁,对速度影响大的机构型软件子程序硬化或固化;构型软件子程序硬化或固化;(44)由专门的处理机来执行操作系统,形成功能)由专门的处理机来执行操作系统,形成功能分布处理系统结构。分布处理系统结构。嵌入式系统原理与设计(1)指令格式不固定,指令可长可短,操作数可多可少;(2)寻址方式复杂多样,操作数可来自寄存器,也可来自存储器;(3)采用微程序控制,执行每条指令均需完成一个微指令序列;(4)一般CPI,指令越复杂,CPI越大。4.CISC的特点嵌入式系统原理与设计2 精简指令系统(RISC)精简指令系统(Reduced Inst
20、ruction Set Computer,RISC)减少指令数目,简化指令功能,降低硬件复杂度,提高指令执行速度(1个节拍内完成)的计算机系统嵌入式系统原理与设计RISC是80年代提出的一种新的设计思想。目前许多处理机都采用了RISC指令系统。例:Sun、ultra sparc、SGI、PowerPC、Intel 80486、Pentium 1-4等。嵌入式系统原理与设计1.CISC的问题(1)20%与80%规律 庞大的指令系统中大部分指令利用率低 大约20%的指令占据了80%的执行时间.事实上,频度最高的是三类指令MOV、ALU、Jump。(如对8088指令系统的统计分析)嵌入式系统原理与设
21、计指令使用频度 指令使用频度 指令执行时间 指令执行时间指令名称 指令名称 占百分比 占百分比 累计占百 累计占百分比 分比指令名称 指令名称 占百分比 占百分比 累计占百 累计占百分比 分比MOV MOV 24.85 24.85 24.85 24.85 IMUL IMUL 19.55 19.55 19.55 19.55PUSH PUSH 10.36 10.36 35.21 35.21 MOV MOV 17.44 17.44 36.99 36.99CMP CMP 10.28 10.28 45.49 45.49 PUSH PUSH 11.11 11.11 48.10 48.10JMPcc JMP
22、cc 9.03 9.03 54.52 54.52 JMPcc JMPcc 10.55 10.55 58.65 58.65ADD ADD 6.80 6.80 61.32 61.32 CMP CMP 7.80 7.80 66.45 66.45POP POP 4.14 4.14 65.46 65.46 CALL CALL 7.27 7.27 73.72 73.72RET RET 3.92 3.92 69.38 69.38 RET RET 4.85 4.85 78.57 78.57 Intel8088处理机指令系统使用频度和执行时间统计(部分)嵌入式系统原理与设计(2)VLSI技术的发展引起的问题CI
23、SC控制十分复杂,不规整,不符合VLSI发展的方向,而RISC则控制简单,而且比较规整。在CISC处理机中,大量使用微程序技术以实现CISC。(3)软硬件功能分配问题在CISC中,虽然增加了硬件指令,但并不能保证整个程序执行时间的缩短。因为这些复杂指令要消耗较多的CPU周期数,但又不常用。此外,CISC系统各种指令执行周期的复杂不一,很不适应流水线技术的发展。嵌入式系统原理与设计 精简指令集:保留最基本的,去掉复杂、使用频度不高的指令 大大减少指令系统可采用寻址方式的种类,一般不超过两种。由于指令简单,可以让所有指令都在一个机器周期内完成。采用Load/Store结构,尽量减少访存,有助于大大
24、简化指令格式,统一了存储器访问方式 大量设置寄存器堆 采用硬接线控制代替微程序控制 注重编译的优化2.RISC的基本设计思想嵌入式系统原理与设计RISC结构的优势(1)简化指令系统设计,指令格式规整同一,非常适合VLSI电路实现。(2)提高机器的执行速度和效率。(3)降低设计成本,提高了系统的可靠性。(4)可以提供直接支持高级语言的能力,简化编译程序的设计。嵌入式系统原理与设计 Load/Store结构提出:CDC6600(1963)CRAY1(1976)RISC思想最早在IBM公式提出,但不叫RISC,IBM801处理器是公认体现RISC思想的机器。D.Paterson提出RISC名词,并研
25、制了RISC-,实验样机。J.Hemnessy研制MIPS芯片(1982)。85年后推出商品化RISC:MIPS1(1986)和SPARCV1(1987)。RISC的提出与发展嵌入式系统原理与设计1981年,32位的RISC I 微处理器问世 特点:特点:(11)指令简单、规整)指令简单、规整 31 31种指令(以数据传送、算逻运算、程序控制指种指令(以数据传送、算逻运算、程序控制指令为主)、两种寻址方式、多为三地址指令、指令令为主)、两种寻址方式、多为三地址指令、指令字长统一为字长统一为3232位、所有指令都在一个周期内完成。位、所有指令都在一个周期内完成。(22)大量采用寄存器)大量采用寄
26、存器 78 78个通用寄存器个通用寄存器(33)只有)只有LOAD/STORELOAD/STORE指令访存指令访存 效果:效果:研制周期短、性能高研制周期短、性能高 嵌入式系统原理与设计现代RISC结构更注重面向寄存器结构,注重RISC对流水线高效率的支持,重视优化编译技术。嵌入式系统原理与设计3 指令系统的优化发展方向 RISC的不足(1)加重汇编语言程序设计的负担(2)目标程序所占的存储空间可能加大(3)对浮点运算和虚拟存储器的支持还不够强(4)对编译程序的质量要求较高,难度较大嵌入式系统原理与设计为了克服这些缺点,RISC结构也在改进。例如增多微程序控制,而不是采用单纯硬联逻辑,便于支持
27、编译和高级语言实现,增加在片主存(在CPU上集成部分主存单元)而不是增多寄存器。如何减少指令系统的指令条数、提高编码效率优化算法、提高主频、增大结构内部的操作并行性,减少指令平均执行周期,更好地支持超流水线运行,是RISC结构进一步研究和改进的方向。今后计算机发展改进的总趋势是让RISC和CISC互相结合,取长补短。嵌入式系统原理与设计3.1.4 3.1.4 大端存储和小端存储大端存储和小端存储 字节(Byte):8位,基本单位半字(Half-Word):16位,2字节字(Word):32位,4字节嵌入式系统原理与设计编址方式1、对象:Register、Memory、I/ODevices;通过
28、编址使之唯一可被访问到;2、编址单位:字、字节、位三种。(1)字编址方式:每个编址单位与设备存储器访问单位相一致,实现最简单。但不支持非数值计算,如string,char等的运算。(2)字节编址方式:Normalmode,因为编址单位=信息的基本单位。出现的问题:存放单位和访问单位不一致的问题,因此将产生如何存放数据的问题。(3)位编址方式:存储器单元的每一位都有一个地址,常用于需要位控制的场合 嵌入式系统原理与设计字节编址方式下,产生的存贮和访问问题 可以从任意地址位置开始存贮和访问。无论是双字、单字、半字或字节,顺序存放,可从任一位置开始访问。优点:不浪费存贮空间;缺点:a.双字、单字或半
29、字都可能出现跨存储单元存放情况。致使访问一个变量或存贮单位必须花费两个存储周期的时间。b.RAM的R/W控制比较复杂,Read时,要用and屏蔽取出有效的部分;Write时,要屏蔽2次完成。嵌入式系统原理与设计 解决的方法:a.无论是双字、单字、半字或字节,都必须从一个存储单元的起始地址开始存放,而这个存储单元的其它部分不用。这样,无论访问双字、单字、半字或字节,都可以在一个存储周期内完成,且读写控制简单。此法缺点是空间浪费很大。b.按整数边界存储,即从地址的整倍数位置开始访问:双字地址最末3个二进制位必须是000,单字地址最末2个二进制位必须为00,半字地址最末1个二进制位必须为0。此法能够
30、保证无论访问双字、单字、半字或字节,都可以在一个存储周期内完成。尽管有存储空间浪费和存储器读写控制较复杂的问题,但比a方式要好得多。嵌入式系统原理与设计字节编址的存储器中,还要考虑一个存储字中的多个字节如何编码问题。存在两种排序方法:(1)小端存储(Little Endian):字节或半字的最低位字节(Lowest Significant Bit,LSB)存放于内存最低位字节地址上。即:最低地址存放最低位字节 Power PC、Intel X86系列等采用(2)大端存储(Big Endian):字节或半字的最高位字节(Most Significant Bit,MSB)存放于内存最低位字节地址上
31、。即:最低地址存放最高位字节 M68000系列、ColdFire系列等采用嵌入式系统原理与设计12345678310(a)小端存储图2-10存储字中的字节编码顺序例78563412310(b)大端存储另外,字节编址的计算机中,需要指令地址计数器根据访问内容的长短进行计数,如指令字长为32位,则取该指令后,指令地址计数器应加4;若是64位字长指令,则需加8。嵌入式系统原理与设计3.1.5 3.1.5 存储器管理单元存储器管理单元MMUMMU存储器管理单元MMU(Memory Management Unit)的功能:将虚拟地址转换为物理地址和对存储器访问权限的控制嵌入式系统原理与设计虚拟存储器的工
32、作原理虚拟存储器的地址空间有三种:虚地址空间,它是应用程序员编程的地址空间,这个地址空间非常大;主存地址空间,又称实存地址空间;辅存地址空间,即磁盘地址空间。嵌入式系统原理与设计以页式虚存为例页(页(PagePage):固定大小的块():固定大小的块(116KB116KB)主存分页:实页主存分页:实页 虚存分页:虚页虚存分页:虚页主存地址主存地址AA虚地址虚地址AvAv实页号p页内偏移d用户号U虚页号P页内偏移D嵌入式系统原理与设计内部地址变换U、Pp外部地址变换(查外页表)U、P外存实地址联机外存地址主存页面表页面替换算法I/O通道启动脱机外存 U P DAv多用户虚地址命中访问主存选主存页
33、页内地址主存未命中未命中访联机外存主存页面失效,查内页表命中主存未满,有空页号主存满主存页号调入页被替换页选页X用户页Y用户页:联机外存p d嵌入式系统原理与设计页式虚存的工作过程 虚地址虚地址AvAv 内部地址变换内部地址变换未命中未命中 外部地址变换外部地址变换查外页表查外页表 命中命中 得到得到PP对应的实地址对应的实地址 无无 实页号实页号pp、d d 查内页表查内页表 启动脱机外存启动脱机外存 访问主存访问主存 有空页号有空页号 无空页号无空页号 调入主存调入主存 替换调入替换调入嵌入式系统原理与设计地址映象及地址变换地址映像:程序装入时,建立用户虚地址与主程序装入时,建立用户虚地址
34、与主存实地址的对应关系,便于取指令。存实地址的对应关系,便于取指令。地址变换:程序运行时,用户虚地址变换为主程序运行时,用户虚地址变换为主存实地址存实地址(内部地址变换内部地址变换)或辅存地址或辅存地址(外部地外部地址变换址变换),便于数据存取。,便于数据存取。三种类型的虚存:(1)段式虚拟存储器(2)页式虚拟存储器(3)段页式虚拟存储器嵌入式系统原理与设计嵌入式操作系统MMU对虚存的管理通过TLB(Translation Lookaside Buffers)实现虚存地址物理地址的转换机制程序的逻辑地址是虚地址进程都有各自的虚拟地址空间,映射于不同的物理页面上(便于保护共享的物理内存资源)嵌入
35、式系统原理与设计虚存地址空间分为两部分:用户空间和系统空间系统空间的保护核心模式下可访问用户空间和系统空间核心模式下可访问用户空间和系统空间用户模式下只能访问用户空间用户模式下只能访问用户空间进程要共享内核,必须通过系统调用接口,进程要共享内核,必须通过系统调用接口,通过一组特殊的指令使系统进入内核态。调通过一组特殊的指令使系统进入内核态。调用完成后,由内核将系统返回用户态。用完成后,由内核将系统返回用户态。用户空间的保护每个用户的空间通过地址转换映射到不同的物每个用户的空间通过地址转换映射到不同的物理存储页面上,进程只能访问自己的地址空理存储页面上,进程只能访问自己的地址空间间。嵌入式系统原
36、理与设计嵌入式操作系统MMU对虚存的管理内核中维护全局数据结构和每个进程的一些对象内核中维护全局数据结构和每个进程的一些对象信息,使得内核可以访问任何进程的地址空间。信息,使得内核可以访问任何进程的地址空间。进程只能通过特殊的方法访问到其他进程的地址进程只能通过特殊的方法访问到其他进程的地址空间。空间。进程在用户态不能访问系统空间进程在用户态不能访问系统空间进程访问内核,必须执行某些特殊指令,通过系进程访问内核,必须执行某些特殊指令,通过系统调用接口,使系统进入内核态,并将控制权交统调用接口,使系统进入内核态,并将控制权交给内核,由内核代替进程完成操作。系统调用完给内核,由内核代替进程完成操作
37、。系统调用完成后,内核执行特征指令返回用户态,将控制权成后,内核执行特征指令返回用户态,将控制权交给进程。交给进程。嵌入式系统原理与设计3.1.6 BSP 3.1.6 BSP 板级开发包板级开发包BSP(Board Support Packed)BSP(Board Support Packed):针对具:针对具体的开发板提供的开发软件,不同的开发板具有不体的开发板提供的开发软件,不同的开发板具有不同的同的BSPBSP。BSPBSP内容:内容:(1)C/C+(1)C/C+语言的交叉编译器语言的交叉编译器(2)BootLoader(2)BootLoader程序程序(3)(3)嵌入式操作系统,如嵌入
38、式操作系统,如Windows CEWindows CE、LinuxLinux等等(4)(4)调试、下载工具,如调试、下载工具,如JTAGJTAG等等(5)(5)开发板上设备的驱动程序开发板上设备的驱动程序(6)(6)开发板相关的技术文档开发板相关的技术文档嵌入式系统原理与设计3.1.7 BootLoader3.1.7 BootLoader和和OS Loader OS Loader BootLoaderBootLoader(启动加载器启动加载器):完成系统启动和系统软:完成系统启动和系统软件加载工作的程序,是件加载工作的程序,是BSPBSP中的重要系统软件。中的重要系统软件。主要功能:(1)(1
39、)完成处理器和周边电路正常运行所需的初始化工作 完成处理器和周边电路正常运行所需的初始化工作(2)(2)屏蔽底层硬件的差异,便于上层应用软件的编写和移 屏蔽底层硬件的差异,便于上层应用软件的编写和移植 植(3)(3)具有类似 具有类似BIOS BIOS的功能,以及一定的调试、下载、网 的功能,以及一定的调试、下载、网络更新等功能 络更新等功能BootLoader程序与操作系统、CPU、内存及系统硬件相关,依赖于具体的Boader。BootLoader的开发和移植是嵌入式系统开发的重要内容之一。嵌入式系统原理与设计OSLoader OSLoader(操作系统加载器操作系统加载器):完成操作系统载
40、入:完成操作系统载入工作的程序,在工作的程序,在PCPC系统中常用,还能对多操作系统系统中常用,还能对多操作系统进行载入管理。进行载入管理。PCPC机上的机上的BIOS+BIOS+OSLoaderOSLoader相当于嵌入式系统中的相当于嵌入式系统中的BootLoaderBootLoader嵌入式系统原理与设计3.1.8 3.1.8 进程和线程进程和线程 进程进程:正在运行的应用程序的一个实例。正在运行的应用程序的一个实例。由两部分组成:由两部分组成:(1)(1)操作系统用来管理该进程的内核对象 操作系统用来管理该进程的内核对象(2)(2)该进程拥有的地址空间(应用程序的代码段、静态数 该进程
41、拥有的地址空间(应用程序的代码段、静态数据段、堆栈,非片内执行的 据段、堆栈,非片内执行的DLL DLL)一个进程由一个或多个线程组成。一个线程是一个一个进程由一个或多个线程组成。一个线程是一个执行单元,它控制执行单元,它控制CPUCPU执行进程中某一段代码段。执行进程中某一段代码段。一个线程可以访问这个进程中所有的地址空间和资一个线程可以访问这个进程中所有的地址空间和资源。源。一个进程最少包含一个线程来执行代码,这个线程一个进程最少包含一个线程来执行代码,这个线程又叫做主线程。又叫做主线程。嵌入式系统原理与设计进程间通信与进程、任务和线程的同步 进程进程定义了一个顺序执行的程序及其状态。进程
42、在运行期间的状态是通过其状态(运行、阻塞或者完成)、进程控制块PCB或者进程结构(他的数据、对象及资源)等来表示。进程由操作系统内核调度,进程通过执行指令来运行,其状态的连续改变由PCB的程序计数器来监控。应用程序可定义为由进程和不同状态下的进程行为所组成的程序 嵌入式系统原理与设计任务 应用程序也可定义为由任务和不同状态下的任务行为所组成的程序。任务是在操作系统调度内核控制下,在CPU上运行的运算或者行为的集合。它在存储器上有一种进程结构:任务控制块。它具有惟一的ID号。在系统中,任务具有如下状态:空闲、就绪、运行、阻塞和完成。如果任务有无限等待循环,则可能再次进入到就绪状态。多任务操作系统
43、是通过不同任务之间的上下文切换实现的嵌入式系统原理与设计(11)任务是独立的,相互之间不能调用。)任务是独立的,相互之间不能调用。(22)每个任务都有一个)每个任务都有一个IDID号。号。(33)在某一时刻,任务有自己的程序计数器、虚)在某一时刻,任务有自己的程序计数器、虚拟堆栈指针,即所谓任务的上下文。拟堆栈指针,即所谓任务的上下文。(44)每个任务都有自己的)每个任务都有自己的TCBTCB标识,保存了当前标识,保存了当前时刻的程序计数器信息、存储器映射、信号(消时刻的程序计数器信息、存储器映射、信号(消息)发送表、信号屏蔽、任务息)发送表、信号屏蔽、任务IDID、CPUCPU状态(寄状态(
44、寄存器、程序计数器和存器、程序计数器和CPUCPU栈指针)和内核栈的存栈指针)和内核栈的存储器块。储器块。(55)每个任务都有自己的优先级参数。)每个任务都有自己的优先级参数。(66)每个任务都有自己的上下文记录,反映)每个任务都有自己的上下文记录,反映OSOS阻塞某个任务,并将另一个任务初始化为运行状阻塞某个任务,并将另一个任务初始化为运行状态之前的态之前的CPUCPU状态。每个任务都还有自己的初始状态。每个任务都还有自己的初始上下文参数上下文参数context_initcontext_init。嵌入式系统原理与设计(77)每个任务可编写成无限的事件等待循环。)每个任务可编写成无限的事件等待
45、循环。(88)在任意时刻,每个任务都处于下列某一状态:)在任意时刻,每个任务都处于下列某一状态:空闲:任务初始化之前的事件等待循环状态。空闲:任务初始化之前的事件等待循环状态。就绪:退出事件等待循环,准备执行的状态所需事就绪:退出事件等待循环,准备执行的状态所需事件已经发生。件已经发生。运行运行阻塞(等待):保存上下文,暂时挂起。如等待键阻塞(等待):保存上下文,暂时挂起。如等待键盘输入或文件输入。盘输入或文件输入。(99)任务完成后返回空闲状态或就绪状态。)任务完成后返回空闲状态或就绪状态。(1010)每个任务要么必须是一个可载入例程,要么)每个任务要么必须是一个可载入例程,要么必须能共享数
46、据。必须能共享数据。嵌入式系统原理与设计线程线程多任务操作系统运行多个进程。一个进程包括一多任务操作系统运行多个进程。一个进程包括一个或多个线程。线程定义了调度程序调度个或多个线程。线程定义了调度程序调度CPUCPU和和其他系统资源的最小单位。线程具有自己的程序其他系统资源的最小单位。线程具有自己的程序计数器、堆栈指针与堆栈、用于线程调度的优先计数器、堆栈指针与堆栈、用于线程调度的优先级参数,以及进行上下文切换时,装入处理器寄级参数,以及进行上下文切换时,装入处理器寄存器中的变量。在内核中,线程具有自己的信号存器中的变量。在内核中,线程具有自己的信号屏蔽。未被屏蔽时,激活线程并使之运行;被屏屏
47、蔽。未被屏蔽时,激活线程并使之运行;被屏蔽时,线程被放入处于挂起状态的线程队列中。蔽时,线程被放入处于挂起状态的线程队列中。一个进程的不同线程可以共享该进程的通用结构。一个进程的不同线程可以共享该进程的通用结构。多线程可以共享该进程的数据。多线程可以共享该进程的数据。在应用程序中,线程是一个轻量级的子进程或者在应用程序中,线程是一个轻量级的子进程或者进程,受操作系统内核控制。在存储器中,线程进程,受操作系统内核控制。在存储器中,线程具有一个进程结构,称为线程堆栈。线程有唯一具有一个进程结构,称为线程堆栈。线程有唯一的的IDID号。在系统中,线程具有启动、运行、阻塞号。在系统中,线程具有启动、运
48、行、阻塞和完成。和完成。嵌入式系统原理与设计3.2 开发相关知识 ICE和ICD 其它硬件调试工具 JTAG 编译器和交叉编译器 模拟器和仿真器嵌入式系统原理与设计3.2.1 ICE3.2.1 ICE和和ICD ICD ICE(In-Circuit Emulator):在线仿真器。ICD(In-Circuit Debugger):在线调试器。嵌入式系统原理与设计ICE:仿真处理器芯片的行为,提供丰富的调试功能。如单步、断点执行;实现实时运行;跟踪功能。ICE包括软件部分和硬件部分特点:实时仿真调试,应用广泛,但价格昂贵。常见的ICE有:单片机仿真器、ARM的JTAG在线处理器嵌入式系统原理与设
49、计ICD:ICE的简化调试工具软件,较多利用模拟方式取得与ICE类似的效果。特点:成本低,但实时调试较难实现。使用ICD的前提:被调试的处理器内部必须有调试功能和相应接口。嵌入式系统原理与设计3.2.2 3.2.2 其它硬件调试工具其它硬件调试工具 ROM Monitor(ROM监视器)ROM Emulator(ROM仿真器)嵌入式系统原理与设计3.2.3 JTAG 3.2.3 JTAG JTAG 标准:JTAG(Joint Test Action Group,联合测试行动组)起草了边界扫描测试(Boundary Scan Testing,BST)规范,1990年成为IEEE1149.1规定,
50、简称JTAG 标准。边界扫描(Boundary Scan):对芯片调试时,应用边界扫描寄存器将芯片和外围的输入输出隔离,通过边界扫描寄存器的状态测试,实现对芯片输入输出信号的观察和控制。嵌入式系统原理与设计TAP(Test Access Port)TAP(Test Access Port),通用的测试端口。包括,通用的测试端口。包括55个信号接口:个信号接口:(11)TCK(Test Clock Input)TCK(Test Clock Input):提供独立的的基本:提供独立的的基本的时钟输入信号的时钟输入信号(22)TMS(Test Mode Selection Input)TMS(Tes