嵌入式系统学习笔记(一)

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

嵌入式系统学习笔记

录入作者:SOFA120

录入时间:2010.3.2

 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

第一讲

嵌入式定义:以应用为中心,以计算机技术为基础,软件硬件可裁剪,功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

嵌入式OS与单片机,PC区别1. 目前嵌入式系统的主流是以32位嵌入式微处理器为核心的硬件设计和基于实时操作系统(RTOS)的软件设计; 单片机系统多为4位、8位、16位机,不适合运行操作系统,难以完成复杂的运算及处理功能; 嵌入式系统强调基于平台的设计、软硬件协同设计;单片机大多采用软硬件流水设计; 嵌入式系统设计的核心是软件设计(占70%左右的工作量);单片机系统软硬件设计所占比例基本相同。2. 嵌入式系统一般是专用系统,而PC是通用计算平台;嵌入式系统的资源比PC少得多;嵌入式系统软件故障带来的后果比PC机大得多;嵌入式系统一般采用实时操作系统;嵌入式系统大都有成本、功耗的要求;嵌入式系统得到多种微处理体系的支持;嵌入式系统需要专用的交叉开发工具。

RTOS:实时操作系统。如果逻辑和时序出现偏差将会引起严重后果的系统。与通用操作系统没有本质的区别,一般用于比较复杂的嵌入式系统软件开发中。一般操作系统只注重平均性能,如对于整个系统来说,所有任务的平均响应时间是关键,而不关心单个任务的响应时间。 嵌入式实时操作系统最主要的特征是性能上的“实时性”,也就是说系统的正确性不仅依赖于计算的逻辑结果,也依赖于结果产生的时间。软实时系统:系统的宗旨是使各个任务运行得越快越好,并不要求限定某一任务必须在多长时间内完成(响应时间为数十秒)。硬实时系统:各任务不仅要执行无误而且要做到准时(响应时间在msus)

第二讲

BSP概念,特点BSP(板级支持包)是介于底层硬件和操作系统之间的软件层次,它完成系统上电后最初的硬件和软件初始化,并对底层硬件进行封装,使得操作系统不再面对具体的操作。特点:硬件相关性:因为嵌入式实时系统的硬件环境具有应用相关性,所以,作为高层软件与硬件之间的接口,BSP必须为操作系统提供操作和控制具体硬件的方法。操作系统相关性:不同的操作系统具有各自的软件层次结构,因此,针对不同的操作系统具有特定的接口形式。

SOC定义:一般说来, SoC称为系统级芯片,也有称片上系统,意指它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。同时它又是一种技术,用以实现从确定系统功能开始,到软/硬件划分,并完成设计的整个过程。从狭义角度讲,它是信息系统核心的芯片集成,是将系统关键部件集成在一块芯片上;从广义角度讲, SoC是一个微小型系统,如果说中央处理器(CPU)是大脑,那么SoC就是包括大脑、心脏、眼睛和手的系统。国内外学术界一般倾向将SoC定义为将微处理器、模拟IP核、数字IP核和存储器(或片外存储控制接口)集成在单一芯片上,它通常是客户定制的,或是面向特定用途的标准产品。

冯•诺依曼体系结构/哈佛体系结构:冯·诺依曼体系的特点:数据与指令都存储在存储器中;被大多数计算机所采用;ARM7。哈佛体系结构的特点:程序存储器与数据存储器分开;提供了较大的数据存储器带宽;适合于数字信号处理;大多数DSP都是哈佛结构;ARM9是哈佛结构。

CISCRISCCISC:复杂指令集(Complex Instruction Set Computer)具有大量的指令和寻址方式;80%的程序只使用20%的指令,大多数程序只使用少量的指令就能够运行。RISC:精简指令集(Reduced Instruction Set Computer)在通道中只包含最有用的指令确保数据通道快速执行每一条指令使CPU硬件结构设计变得更为简单。指令规整、对称、简单,指令小于100条,基本寻址方式只有23种;单周期指令,便于流水操作;大量的寄存器(不少于32个)。指令系统:CISC指令多,RISC少,通常少于100;执行时间:CISC有些指令执行时间很长,如整块的存储器内容复制;或将多个寄存器的内容复制到存贮器,RISC没有较长执行时间的指令。编码长度:CISC编码长度可变,1-15字节,RISC编码长度固定,通常为4个字节。寻址方式:CISC寻址方式多样,RISC简单寻址。操作:CISC可以对存储器和寄存器进行算术和逻辑操作,RISC只能对寄存器进行算术和逻辑操作,Load/Store体系结构。编译:CISC难以用优化编译器生成高效的目标代码程序,RISC采用优化编译技术,生成高效的目标代码程序

流水线:在CPU中把一条指令分解成多个可单独处理的操作,使每个操作在一个专门的硬件站(stage)上执行,这样一条指令需要顺序地经过流水线中多个站的处理才能完成,但是前后相连的几条指令可以依次流入流水线中,在多个站间重叠执行,因此可以实现指令的并行处理。提高了CPU的运行效率;内部信息流要求通畅流动

CACHECache的设计思想:把在一段时间内、一定地址范围中被频繁访问的信息集合,成批地从主存中读到一个能高速存取的小容量存储器中存放起来,供程序在这段时间内随时使用,从而减少或不再去访问速度较慢的主存,就可以加快程序的运行速度。1、为什么采用高速缓存:微处理器的时钟频率比内存速度提高快得多,高速缓存可以提高内存的平均性能。2、高速缓存的工作原理:依据:程序和数据访问的局部性原理。高速缓存是一种小型、快速的存储器,它保存部分主存内容的拷贝。

IP:软核:HDL语言描述;灵活度高,可修改;与工艺独立,可根据具体的加工工艺重新综合;IP很难保护。固核:逻辑综合后的描述;与工艺相关。硬核:物理综合后的描述;准备流片;包含工艺相关的布局和时序信息;IP很容易保护,但灵活性和可移植性差。多数的处理器和存储器。IP核的商业模型:1.设计者提供设计和工具的许可证;2.核厂商设计并制造集成电路芯片;3.核厂商卖核, 负责为客户设计并制造芯片。

嵌入式OS分类及特点:分类:按实时性分,(1)顺序执行系统:系统内只含有一个程序,独占CPU的运行时间,按语句顺序执行该程序,直至执行完毕,另一程序才能启动运行。如DOS操作系统。(2)分时操作系统:系统内同时可以有多个程序运行,把CPU的时间按顺序分成若干片,每个时间片内执行不同的程序。如UNIX操作系统。(3)实时操作系统:系统内有多个程序运行,每个程序有不同的优先级,只有最高优先级的任务才能占有CPU的控制权。按实时性的强弱分类:1.()实时系统,其系统响应时间在毫秒或微秒级(数控机床);2.一般实时系统,其系统响应时间在毫秒-几秒的数量级上,其实时性的要求比强实时系统要差一些(电子菜谱的查询)。3.()实时系统,其系统响应时间约为数十秒或更长(工程机械)。特点实时系统的特点是,如果逻辑和时序出现偏差将会引起严重后果的系统。有两种类型的实时系统:软实时系统和硬实时系统。在软实时系统中系统的宗旨是使各个任务运行得越快越好,并不要求限定某一任务必须在多长时间内完成。在硬实时系统中,各任务不仅要执行无误而且要做到准时。大多数实时系统是二者的结合。实时系统的应用涵盖广泛的领域,而多数实时系统又是嵌入式的。这意味着计算机建在系统内部,用户看不到有个计算机在系统里面。

占先内核和非占先内核的区别:1.占先式内核总是让就绪态的高优先级的任务先运行,中断服务程序可以抢占CPU,到中断服务完成时,内核让此时优先级最高的任务运行(不一定是那个被中断了的任务)。任务级系统响应时间得到了最优化,且是可知的。2.非占先式内核几乎不需要使用信号量保护共享数据。运行着的任务占有CPU,而不必担心被别的任务抢占。最大缺陷在于其响应高优先级的任务慢,任务已经进入就绪态,但还不能运行,也许要等很长时间,直到当前运行着的任务释放CPU

第三讲交叉开发环境:交叉开发是指在一台通用计算机上进行软件的编辑编译,然后下载到嵌入式设备中进行运行调试的开发方式。用来开发的通用计算机可以选用比较常见的PC机、工作站等,运行通用的WindowsUnix操作系统。开发计算机是宿主机,嵌入式设备是目标机。交叉开发环境提供调试工具对目标机上运行的程序进行调试。由运行于宿主机上的交叉开发软件和宿主机到目标机的调试通道组成。

嵌入式系统的调试方法:模拟调试(Simulator)软件调试(DebuggerBDM/JTAG调试(BDM/JTAG Debugger)全仿真调试(Emulator

链接文件的作用.ld文件:描述代码链接定位的有关信息,包括代码段,数据段,地址段等,链接器必须使用该文件对整个系统的代码做正确的定位。

.map文件:防止软件调试过程中访问非法存储区时产生异常中断;.CS文件:通过一组命令序列来让集成环境自动完成一些特定的功能。汇编源程序*.s C语言程序*.c ,链接脚本文件*.ld,存储区映像文件*.map,命令脚本文件*.CS

第四讲

ARM :是Advance RISC Machine的简称,英国计算机公司,主要设计ARM系列RISC处理器内核而不生产芯片,授权ARM内核给生产和销售半导体的合作伙伴;处理器内核的名称。

ARM微处理器的特点:低功耗、低成本、高性能;采用RISC体系结构;大量使用寄存器;高效的指令系统;除此以外,ARM体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积,并降低功耗。

ARM微处理器的主要系列 ARM7系列, ARM9系列, ARM9E系列,ARM10E系列, SecurCore系列,Cortex系列, Intelstrong ARMXscale系列,其中,ARM7ARM9ARM9EARM104个通用处理器系列,每一个系列提供一套相对独特的性能来满足不同应用领域的需求。SecurCore系列专门为安全要求较高的应用而设计。

ARM7TDMI含义T:支持16位压缩指令集ThumbD:支持片上DebugM:内嵌硬件乘法器(MultiplierI:嵌入式ICE硬件,支持片上断点和调试点;

Thumb技术产生的原因或特点原因1.高端消费类产品需要32RISC处理器性能和更优于16位的CISC处理器的代码密度。这就要求要以更低的成本取得更好的性能和更优于16位的CISC处理器的代码密度。2. 为了满足嵌入式技术不断发展的要求,ARMRISC体系结构的发展中已经提供了低功耗、小体积、高性能的方案。同时为了解决代码长度的问题,ARM体系结构又增加了T变种,开发了一种新的指令体系,这就是Thumb指令集。特点1.支持Thumb的核有2套独立的指令集,它使设计者得到ARM32位指令的性能,又能享有Thumb指令集产生的代码方面的优势。可以在性能和代码大小之间取得平衡;2. 在需要较低的存储代码时采用Thumb指令系统,但有比纯粹16位系统高的实现性能,因为实际执行的是32位指令,用Thumb指令编写最小代码量的程序,却取得以ARM代码执行的最好性能;3. 独立的两套指令集也使得解码逻辑极其的简单,从而维持了较小的硅片面积,保证了领先的“低功耗、高性能、小体积”的技术要求,满足了对嵌入式系统的设计需求。

第五讲

ARMTHUMB的切换方法:进入Thumb状态: 1.当操作数寄存器Rm的状态位bit0]为1时,执行 BX Rm 指令进入 Thumb状态(指令详细介绍见后面)。2. 所有的异常都是在ARM状态下进行,如果处理器在Thumb状态进入异常,则当异常处理(IRQFIQUndefAbortSWI)返回时,自动切换到Thumb状态。进入ARM状态: 1.当操作数寄存器Rm的状态位bit0]为0时,执行 BX Rm 指令进入ARM状态。2. 如果处理器进行异常处理(IRQFIQUndefAbortSWI),在此情况下,把PC放入异常模式链接寄存器LR中,从异常向量地址开始执行也可以进入ARM状态。

ARM状态切换到Thumb状态:LDR    R0,=Label+1  BX       R0

Thumb状态切换到ARM状态:LDR   R0,=Label     BX      R0

ARM 7个基本工作模式: 1.User:非特权模式,大部分任务执行在这种模式,正常程序执行的模式2. FIQ:当一个高优先级(fast)中断产生时将会进入这种模式,高速数据传输和通道处理3.IRQ:当一个低优先级(normal)中断产生时将会进入这种模式,通常的中断处理4.Supervisor:当复位或软中断指令执行时将会进入这种模式,供操作系统使用的一种保护模式5. Abort: 当存取异常时将会进入这种模式,虚拟存储及存储保护6. Undef: 当执行未定义指令时会进入这种模式,软件仿真硬件协处理器7.System: 使用和User模式相同寄存器集的特权模式,特权级的操作系统任务

ARM寄存器ARM处理器总共有37个寄存器,这37个寄存器按它在用户编程中的功能划分,可以分为以下两类寄存器:131个通用寄存器,包括了程序计数器(PC,这些寄存器都是32位的。 R0~R15R13_svcR14_svcR13_abtR14_abtR13_undR14_undR13_irqR14_irqR8_frq~R14_frq26个状态寄存器CPSRSPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq6个状态寄存器也是32位的,但目前只使用了其中的12~14位。

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

ARM异常定义:当正常的程序执行流程发生暂时的停止时,称之为异常。

ARM异常的分类1.同步异常是由内部事件(如处理器指令运行产生的事件)引起的异常;2.异步异常是由外部事件(如处理器指令执行不相关的事件)引起的异常,一般这些外部事件与硬件信号相关,又称中断。具体分为:4类:中断(interrupt) 来自I/O设备的信号、陷井(trap)有意的异常、故障(fault) 潜在可恢复的错误和终止(abort) 不可恢复的错误。按照引起异常的事件不同分为3类:1.指令执行引起的直接异常;2.指令执行引起的间接异常;3.外部产生的与指令流无关的异常。

ARM异常响应过程1.CPSR的内容保存到将要执行的异常中断对应的SPSR中,以实现对处理器当前状态、中断屏蔽位以及各条件标志位的保存。2.设置当前状态寄存器CPSR中的相应位:设置CPSR模式控制位CPSR40],使处理器进入相应的执行模式;设置中断标志位(CPSR7=1),禁止IRQ中断;当进入ResetFIQ模式时,还要设置中断标志位(CPSR6=1),禁止FIQ中断。3.将引起异常指令的下一条指令的地址保存到新的异常工作模式的R14R14_mode中,使异常处理程序执行完后能正确返回原程序。4.给程序计数器(PC)强制赋值,使程序从相应的矢量地址开始执行中断处理程序。

伪代码如下

R14_ = Return Link

SPSR_ = CPSR

CPSR[4:0] = Exception Mode Number

CPSR[5] = 0//保障在ARM状态下执行

CPSR[7] = 1//禁止新的IRQ中断

If == Reset or FIQ then             

CPSR[6] = 1//ResetFIQ时,禁止新的FIQ中断

PC = Exception Vector Address//转入异常入口地址

用户程序运行时发生IRQ中断,硬件完成以下动作1.CPSR寄存器内容存入IRQ模式的SPSR寄存器;2.置位I位(禁止IRQ中断);3.清零T位(进入ARM状态);4.设置MOD位,切换处理器模式至IRQ模式;5.将下一条指令的地址存入IRQ模式的LR寄存器;6.将跳转地址存入PC,实现跳转

异常中断的返回1.所有修改过的用户寄存器必须从处理程序的保护堆栈中恢复(即出栈);2.SPSR_mode寄存器内容复制到CPSR中,使得CPSR从相应的SPSR中恢复,即恢复被中断程序的工作状态;3.根据异常类型将PC变回到用户指令流中相应指令处;4.最后清除CPSR中的中断禁止标志位I/F

在异常处理结束后,异常处理程序完成以下动作1.SPSR寄存器的值复制回CPSR寄存器;2.LR寄存的值减去一个常量后复制到PC寄存器,跳转到被中断的用户程序。

 

你可能感兴趣的:(嵌入式系统学习笔记(一))