资源描述
按照章节进行分类,嵌入式系统总结,嵌入式系统的概念及现实中的实例,两种比较合理定义: 从技术的角度定义:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 从系统的角度定义:嵌入式系统是设计完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统。,第一章嵌入式系统概述,2.1 ARM简介,ARM公司简介,ARM是Advanced RISC Machines的缩写,它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC (精简指令集)处理器。 公司的特点是只设计芯片,而不生产。它将技术授权给世界上许多著名的半导体、软件和OEM厂商,并提供服务。,ARM两大处理器状态特点及其关系,ARM7TDMI处理器内核包含2套指令系统,分别为ARM指令集和Thumb指令,并且各自对应1种处理器的状态: ARM状态:32位,处理器执行字方式的ARM指令,处理器默认为此状态; Thumb状态:16位,处理器执行半字方式的Thumb指令。,第3章 ARM7TDMI(-S)指令系统,简介,ARM处理器是基于精简指令集计算机(RISC)原理设计的,指令集和相关译码机制较为简单。ARM7TDMI(-S)具有32位ARM指令集和16位Thumb指令集,ARM指令集效率高,但是代码密度低;而Thumb指令集具有较高的代码密度,却仍然保持ARM的大多数性能上的优势,它是ARM指令集的子集。所有的ARM指令都是可以有条件执行的,而Thumb指令仅有一条指令具备条件执行功能。ARM程序和Thumb程序可相互调用,相互之间的状态切换开销几乎为零。,第3章 ARM7TDMI(-S)指令系统,ARM指令集与Thumb指令集的关系,Thumb指令集具有灵活、小巧的特点,ARM指令集支持ARM核所有的特性,具有高效、快速的特点,3.1 ARM处理器寻址方式,寻址方式分类,寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。ARM处理器具有8种基本寻址方式。 1.寄存器寻址;2.立即寻址; 3.寄存器移位寻址;4.寄存器间接寻址; 5.基址寻址;6.多寄存器寻址; 7.堆栈寻址;8.相对寻址。,3.2 指令集,常用指令的使用,3.2 指令集介绍,ARM存储器访问指令单寄存器存取,思考与练习,?,1.MOV指令与LDR指令都是往目标寄存器中传送数据,但是它们有什么区别吗? MOV指令用于将数据从一个寄存器传送到另一个寄存器中,或者将一个常数传送到一个寄存器中,但是不能访问内存。LDR指令用于从内存中读取数据放入寄存器中。,3.2 指令集介绍,算术逻辑运算指令,算术逻辑运算指令包括“加/减”以及“与/或/异或”等指令,它们的格式如下:,1.LPC2000系列简介 2.引脚描述 3.存储器寻址 4.系统控制模块 5.存储器加速模块 (MAM) 6.外部存储器控制器(EMC) 7.引脚连接模块 8.GPIO,第四章LPC2000系列ARM硬件结构,9.向量中断控制器 10.外部中断输入 11.定时器0和定时器1 12.SPI接口 13.I2C接口 14.UART(0、1) 15.A/D转换器 16.看门狗 17.脉宽调制器(PWM) 18.实时时钟,4.3.1 片内存储器,片内Flash编程方法,1. 使用JTAG仿真/调试器,通过芯片的JTAG接口下载程序;,2. 使用在系统编程技术(即ISP),通过UART0接口下载程序;,3.使用在应用编程技术(即IAP),在用户程序运行时对Flash进行擦除和/或编程操作,实现数据的存储和固件的现场升级。,JTAG,UART0,4.3.1 片内存储器,片内Flash编程方法,2. 使用在系统编程技术(即ISP),通过UART0接口下载程序;,3. 使用在应用编程技术(即IAP),在用户程序运行时对Flash进行擦除和/或编程操作,实现数据的存储和固件的现场升级。,1. 使用JTAG仿真/调试器,通过芯片的JTAG接口下载程序;,4.3.2 片外存储器,片外Flash编程方法,Flash的擦写操作需要配合一段符合Flash编程时序的代码,这段代码称为装载程序,一般由用户编写。,程序代码(源),程序代码(目标),Loader,下载用户代码时,首先得在CPU内运行装载程序,通过它把从串口(或其它接口)接收的代码写到片外Flash中。,概述,4.3.3 存储器映射,ARM芯片可以存在片内和片外存储器,这些存储器本身不具有地址信息,它们在芯片中的地址是由芯片厂家或用户分配的,那么给物理存储器分配逻辑地址的过程称为存储器映射。通过这些逻辑地址就可以访问到相应存储器的物理存储单元。,4.3.5 存储器重映射及引导块,存储器重映射,将已经过映射的存储器再次映射的过程称为存储器重映射,它使同一物理存储单元出现多个不同的逻辑地址。这些存储单元主要包括引导块“Boot Block”和用于保存异常向量表的少量存储单元。,Addr1,0 x1234,0 x1234,注意:存储器重映射并不是对映射单元的内容进行了复制,而只是将多个地址指向了同一个存储单元,这种效果是通过芯片内部的“存储器管理部件”实现的。,4.4.2 时钟系统,时钟系统结构,LPC2000系列微控制器的时钟系统包括四个部分:晶体振荡器、唤醒定时器、锁相环(PLL)和VPB分频器。,外接晶体或外接时钟源,产生稳定的时钟信号,将Fosc提升到合适的频率,1,3,4,2,4.5 存储器加速模块(MAM),概述,LPC2000微控制器扩展了器件内部Flash总线宽度为128位,用于提高处理器的指令执行速度。这个接口通过存储器加速模块(MAM)来控制。,3,1,2,4,关闭MAM指令执行情况,所有存储器操作请求都会直接对Flash操作,由此产生了CPU停止,等待若干周期的情况。,开启MAM指令执行情况,只要指令存在两个组的指令缓存区中,CPU的指令执行是连续的,由此大大提高了指令执行效率。,4.9 向量中断控制器,概述,ARM7TDMI内核具有两个中断输入,分别为IRQ中断和FIQ中断。向量中断控制器(VIC)负责管理芯片的中断源,最多可以管理32个中断输入请求。,CPU 内核 ARM7TDMI-S,4.9 向量中断控制器,FIQ中断硬件处理流程,将当前的程序状态寄存器的内容备份 即,SPSR_fiq = CPSR,处理器切换到FIQ模式,禁止IRQ和FIQ中断,即,I = F = 1,保存返回地址 LR_fiq = PC,设置FIQ异常入口地址 PC = 0 x1C,发生FIQ异常事件,说明:ARM7不支持FIQ中断嵌套,4.9 向量中断控制器,IRQ中断相应流程,将当前的程序状态寄存器的内容备份 即,SPSR_irq = CPSR,处理器切换到IRQ模式,禁止IRQ中断,即,I = 1,保存返回地址 LR_irq = PC,设置IRQ异常入口地址 PC = 0 x18,发生IRQ异常事件,说明:ARM7不支持IRQ中断嵌套,4.10 外部中断输入,概述,LPC2000系列ARM具有4路外部中断,可以设置为2种类型: 边沿触发: 上升沿触发 下降沿触发 电平触发: 高电平触发 低电平触发,4.12 SPI接口,(Serial Peripheral Interface-串行外设接口),SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT或INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。,4.13 I2C接口,概述,I2C总线是Philips推出的串行传输总线,它以2根连线实现了完善的全双工同步数据传送,可以极方便地构成多机系统和外围器件扩展系统。,I2C总线采用了器件地址的硬件设置方法,通过软件寻址完全避免了期间的片选线寻址方法,从而使硬件系统具有最简单而灵活的扩展方法。 I2C总线的两根线(串行数据SDA,串行时钟SCL)连接到总线上的任何一个器件,每个器件都应有一个唯一的地址,而且都可以作为一个发送器或接收器。此外,器件在执行数据传输时也可以被看作是主机或者从机。,I2C总线规范传输协议,主机发送数据到从机,I2C总线规范传输协议,主机读取从机数据,复合格式,对从机进行寻址,同时R/W = 0,发送1字节数据,发送应答信号,UART简介,UART: Universal Asynchronous Receiver/Transmitter,通用异步接收/发送装置,UART是一个并行输入成为串行输出的芯片,通常集成在主板上,多数是16550AFN芯片。因为计算机内部采用并行数据,不能直接把数据发到Modem,必须经过UART整理才能进行异步传输,其过程为:CPU先把准备写入串行设备的数据放到UART的寄存器(临时内存块)中,再通过FIFO(First Input First Output,先入先出队列)传送到串行设备,若是没有FIFO,信息将变得杂乱无章,不可能传送到Modem。,应用示例,4.16 看门狗,看门狗简介,在嵌入式应用中,CPU必须可靠工作,即使因为某种原因进入了一个错误状态,系统也应该可以自动恢复。看门狗的用途就是使微控制器在进入错误状态后的一定时间内复位。 其原理是在系统正常工作时,用户程序每隔一段时间执行喂狗动作(一些寄存器的特定操作),如果系统出错,喂狗间隔超过看门狗溢出时间,那么看门狗将会产生复位信号,使微控制器复位。,4.16 看门狗,看门狗简介,看门狗分硬件看门狗和软件看门狗。硬件看门狗是利用一个定时器电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时器清零(俗称“喂狗”),因此程序正常工作时,定时器总不能溢出,也就不能产生复位信号。如果程序出现故障,不在定时周期内复位看门狗,就使得看门狗定时器溢出产生复位信号并重启系统。,4.17 脉宽调制器,PWM简介,LPC2000的PWM基于标准的定时器模块,具有定时器的所有特性,它是定时器匹配功能的扩展。使用PWM功能,可以在指定引脚输出需要的波形。输出波形可分为两类: 单边沿输出; 双边沿输出。,5.1 最小系统,框图,可选,因为许多面向嵌入式领域的微控制器内部集成了程序和数据存储器,可选,但是在样品阶段通常都会设计这部分电路,C/OS-II程序设计基础,September,2007,任务设计| C/OS-II程序设计基础,任务的分类,任务,按照执行方式分类,一般的操作系统都提供时间管理的函数,最基本的就是延时函数,C/OS-II也不例外,C/OS-II所具有的时间管理函数见下表。,C/OS-II具有简单的动态内存管理能力。C/OS-II的动态内存管理函数见下表。,任务管理函数是操作与任务相关功能的函数,详见下表。,系统管理函数是一些与C/OS-II内核或功能相关的一些函数,详见下表。,C/OS-II的初始化函数有2个:OSInit()和OSStart(),它们不能在任何任务和中断服务程序中使用,仅在main()函数中按照一定的规范被调用,其中OSInit()函数初始化C/OS-II内部变量,OSStart()函数启动多任务环境。,C/OS-II把信号量等都称为事件,管理它们的就是事件管理函数。C/OS-II V2.52具有的事件有普通信号量、互斥信号量、事件标志组、消息邮箱和消息队列,这些都是C/OS-II用于同步与通讯的工具,本章后述的内容将会详细介绍。,系统函数概述| C/OS-II程序设计基础,系统函数的分类,根据功能分类,C/OS-II程序设计基础,互斥信号量,简介,资源同步,函数列表,互斥信号量 | C/OS-II程序设计基础,简介,互斥信号量也称为mutex,专用于资源同步。互斥信号量具有一些特性:占用一个空闲优先级,以便解决优先级反转问题。,在日常生活中,出租车是一种常用的共享资源,当出租车载客时,从外面可以看到标识为载客;当空闲时,标识为空车。这样等车的人就可以根据标识知道出租车的当前状态,判断是否能够座上这辆车。这个标识牌就是一个二值信号量。由于这种二值信号量可以实现对共享资源的独占式处理,所以叫做互斥信号量。,二值信号量,可以实现对共享资源的独占式处理,互斥信号量,互斥信号量 | C/OS-II程序设计基础,简介,优先级列表,任务1,任务2,任务3,假设任务1和任务3共享一个资源,任务2为优先级介于任务1和任务3之间的一个与该共享资源无关任务,分析优先级反转问题。,任务2优先级高于任务3而进入运行状态,任务1申请共享资源而处于等待状态,此时,虽然任务1比任务2优先级更高,但却在任务2之后运行,这种现象就是优先级反转。,任务3得到共享资源而处于运行状态,互斥信号量 | C/OS-II程序设计基础,简介,综上所述,可以说能防止优先级反转现象的信号就是互斥信号量。,优先级列表,互斥信号量,任务1,任务2,任务3,任务3,假设任务1和任务3共享一个资源,使用互斥信号量进行资源同步,任务2为优先级介于任务1和任务3之间的一个与该共享资源无关任务,通过互斥信号量解决优先级反转问题。,任务2优先级不够高无法获得CPU,任务1申请互斥信号量而处于等待状态,任务3,此时,任务2无法在任务1之前得到运行,不发生优先级反转,任务1,任务3获得CPU,且优先级升到互斥信号量优先级,任务1获得CPU,且优先级升到互斥信号量优先级,祝大家考试顺利!,
展开阅读全文