上一课:
【小黑嵌入式系统第十六课】PSoC 5LP第三个实验——μC/OS-III 综合实验
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:人工智能
文章目录
- 一、基础知识点
- 1、嵌入式系统的特点(三要素)
- 二、嵌入式系统分类
- 按确定性要求分类
- 按处理速度分类
- 三、嵌入式系统组成
- 1、硬件抽象层HAL(Hardware Abstraction Layer)
- 2、嵌入式系统硬件
- 中央控制部件(嵌入式处理器:MCU、DSP、EMPU、SOC)
- 外围设备(可以根据需要和成本进行裁剪、定制)
- 四、总线
- 两种总线结构
- 总线握手协议
- 五、嵌入式处理器的特点
- 六、ARM处理器的特点
- ARM Cortex系列
- 七、嵌入式系统:存储设备
- RAM
- 静态RAM(Static RAM,SRAM)
- 动态RAM(Dynamic RAM,DRAM)
- 如何选择RAM
- ROM
- Flash
- Flash vs EEPROM
- 八、嵌入式系统外设
- 定时器/计数器
- ADC和DAC
- 人机接口设备
- 九、嵌入式系统通信设备
- 通用异步收发器(Universal Asynchronous Receiver and Transmitter,UART)
- 数据通信方式
- 标准异步串行通信电气接口
- USB
- 蓝牙
- 时钟
- 中断
一、基础知识点
1、嵌入式系统的特点(三要素)
• 嵌入性:嵌入到对象体系中,有对象环境要求。实时操作。体积小、功耗小、可靠性高。
• 专用性:软、硬件按对象要求配置。功能、性能、成本的优化和精简。专用CPU(嵌入式CPU)。精简的实时操作系统。
• 计算机:包括硬件和软件,实现对象的数据处理及智能化功能。
二、嵌入式系统分类
按确定性要求分类
• 硬实时系统:对系统响应时间有严格的要求,如果系统响应时间不能满足,就会引起系统崩溃或致命的错误。 (工业和军工系统)
• 软实时系统:对系统响应时间有要求,但是如果系统响应时间不能满足,不会导致系统出现致命的错误或崩溃。 (消费类产品)
按处理速度分类
• 强实时系统:其系统响应时间在毫秒或微秒级。
• 一般实时系统:其系统响应时间在秒级,其实时性的要求比强实时系统要差一些。
• 弱实时系统:其系统响应时间更长。这种系统的响应时间可能随系统负荷的轻重而变化。
三、嵌入式系统组成
嵌入式硬件平台、硬件抽象层(HAL)、嵌入式操作系统、应用程序。
1、硬件抽象层HAL(Hardware Abstraction Layer)
也称为板级支持包BSP(Board Support Package),是一套软件,主要目的是屏蔽下层硬件,使操作系统不再直接面对具体的硬件环境。HAL通过特定的上层接口与操作系统进行交互,向操作系统提供底层硬件信息,并根据操作系统的要求完成对硬件的直接操作。HAL的引入大大推动了嵌入式系统的通用化,为嵌入式系统的广泛应用提供了可能。
2、嵌入式系统硬件
中央控制部件(嵌入式处理器:MCU、DSP、EMPU、SOC)
- 低端的嵌入式微控制器(MicroController Unit, MCU) ,内部集成ROM/EPROM、RAM、总线逻辑、 I/O口、定时/计数器、串行通信口、A/D、D/A、看门狗等各种常用功能和外设;数据总线宽度一般为8位或16位,处理速度有限,一般在几个~几十个MIPS,进行一些复杂的应用比较困难,运行操作系统更难。例如:51单片机,MSP430等
- 中高端的嵌入式微处理器(Embedded Micro Processor Unit,EMPU) ,由通用计算机中的CPU演变而来的,80386-80387,只保留和嵌入式应用紧密相关的功能硬件,去除其他的冗余功能部分,以最低的功耗和资源实现嵌入式应用的特殊要求
- 用于计算机通信等领域的嵌入式DSP处理器(Embedded Digital Signal Processor,EDSP) ,专门用于信号处理方面的处理器,其在系统结构和指令体系方面进行了针对常用信号处理算法所需的特殊设计,在数字滤波、FFT、频谱分析等方面DSP获得了大规模的应用
- 高度集成的嵌入式片上系统(System On Chip,SOC) ,把整个系统放到一块硅片上
外围设备(可以根据需要和成本进行裁剪、定制)
- 存储设备:静态随机存储器(SRAM)、动态存储器(DRAM)和非易失存储器(ROM、UV EPROM、EEPROM、FLASH)等。
- 通信设备:UART接口(通用异步串行通信接口)、 IrDA(红外线接口)、 SPI(串行外围设备接口)、I2C(INTER IC 总线接口)、USB(通用串行总线接口)、Ethernet(以太网接口)、CAN(现场总线)等。
- 显示设备:数码管(LED)、液晶显示器(LCD)和触摸显示屏(Touch Panel)等。
四、总线
是计算机各种功能部件之间传输信息的公共通信干线,它是由导线组成的传输线束。分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。
两种总线结构
- 冯·诺伊曼总线结构:将程序存储器和数据存储器合在一起管理,采用同一套地址和数据总线对它们进行寻址。因此总线就特别繁忙,成为提高运行速度的“瓶颈”。但在使用上非常灵活。
- 哈佛总线结构:采用两套总线分别控制程序存储器和数据存储器,分别读取程序代码和存取数据。降低了总线繁忙程度和指令执行的时间。使得指令的执行时间相等,提高了控制性能。
- 数据总线
• 数据总线的宽度又称为计算机的“位数” ,表明了计算机系统能够一次(单指令)处理的数据的范围,代表了计算机系统处理数据的能力。如:MCS- 51单片机的数据总线宽度为8位,ARM Cortex-M的数据总线宽度为32位。 - 程序总线
• 决定了CPU每次能够从程序存储器取出多少位的指令,或者说一条指令中能够含有多少信息。因此程序总线的宽度在很大程度上决定了计算机系统指令集的效率。 - 数据地址总线
• 数据地址总线配合数据总线,对数据存储器进行寻址。其宽度决定了CPU能够寻址的数据存储器的多少。 - 程序地址总线
• 程序地址总线配合程序总线,对程序存储器进行寻址。程序地址总线的宽度决定了微处理器理论上能够含有的程序存储器的多少。
总线握手协议
-
总线握手协议的作用是控制每个总线周期中数据传送的开始和结束,从而实现两个设备间协调和配合,保证数据传送的正确和可靠。
-
四周期握手协议
①查询方将请求信号置高;
②应答方将应答信号置高;
动作/读数据
③应答方将应答信号置低,表明应答信息全部发送;
④查询方将请求信号置低,结束流程
-
直接存储器访问(Direct Memory Access,DMA)
• 标准总线事务要求CPU参与每个读写事务,但某些数据传输并不需要CPU介入,如I/O设备和存储器之间的数据交换。
• DMA允许不由CPU控制的总线读写操作,使用一种称为DMA控制器的专用硬件来完成外设与存储器之间的高速数据传送。
• DMA控制器向CPU请求总线控制,当CPU不需使用总线传输数据时,则DMA控制器得到总线控制权,它能像CPU那样提供存储地址和必要的读写控制信号,实现直接在设备和存储器之间执行读写操作。
• 总线在一段时间内只能由一个主设备控制使用,若多个总线主设备同时需要使用总线,此时需要“仲裁”,由仲裁器决定哪一个使用。
-
ARM AMBA总线系统
• AMBA规范主要包括了AHB(Advanced High performance Bus)系统总线和APB(Advanced Peripheral Bus)外围总线。
• AHB(AMBA高性能总线):用于高性能。高数据吞吐部件,如CPU、DMA、DSP之间的连接。
• APB(AMBA外设总线):为系统的低速外部设备提供低功耗的简易互连。
• 系统总线和外设总线之间的桥接器提供AHB/ASB部件与APB部件之间的访问代理与缓冲。
五、嵌入式处理器的特点
• 对实时多任务操作系统具有很强的支持能力。能够实现多任务并且有较短的中断响应时间,从而使内部的代码和实时内核的执行时间减小到最低程度;
• 具有功能很强的存储区保护功能。由于嵌入式系统的软件结构一般为模块化,为了避免在软件模块之间出现错误的交叉作用,需要设计强大的存储区保护功能,同时也有利于软件故障诊断;
• 处理器结构可扩展。能够快速开发出满足各种应用和高性能的嵌入式处理器;
• 低功耗。尤其是在便携式的无线及移动计算和通信设备的嵌入式系统中,其功耗可以达到mW级,甚至uW级。
六、ARM处理器的特点
• 体积小、低功耗、低成本、高性能
• 支持Thumb(16位)/ARM(32位)双指令集,能很好地兼容8位/16位器件
• 大量使用寄存器,指令执行速度快
• 大多数数据操作都在寄存器中完成
• 寻址方式灵活简单,执行效率高
• 采用固定长度的指令格式
• ARM是公司名称。 ARM公司只做设计,本身并不生产和销售芯片,而是采用技术授权的方式,由合作公司生产各具特色的芯片。 • ARM是一种处理器架构 • ARM是一种标准 • “ARM核”并不是芯片,ARM核与其它部件如RAM、ROM、片内外 设组合在一起才能构成现实的芯片。
ARM Cortex系列
• “A”系列面向尖端的基于虚拟内存的操作系统和用户应用;
• “R”系列针对实时系统;
• “M”系列对微控制器和低成本应用提供优化。
七、嵌入式系统:存储设备
• 存储器用来存放计算机工作所必须的数据和程序,在嵌入式系统中普遍使用。
• 存储器子系统设计的首要目标是使存储器在工作速度上很好地与处理器匹配,并满足各种存取需要。其设计指标和方法可以参考通用计算机的方法。
• 分级设计存储器子系统。全部存储系统分为四级,即寄存器组、高速缓存、内存和外存。它们在存取速度上依次递减,而在存储容量上逐级递增。
• 寄存器组:寄存器组是最高一级的存储器;一般是CPU内含的,ARM处理器中有37个寄存器; 有些待使用的数据或者运算的中间结果可以暂存在这些寄存器中; 微处理器在对CPU内的寄存器读写时,速度很快,一般在一个时钟周期内完成;设置一系列寄存器是为了尽可能减少微处理器从外部取数的次数;寄存器组是制作在CPU内部的,受芯片面积和集成度、以及指令系统的限制,寄存器的数量不可能做得很多。
• 高速缓冲存储器(Cache):第二级存储器;一种小型、快速的存储器,其存取速度足以与微处理器相匹配;高速缓存保存部分内存内容的拷贝,这部分内容应是被高频率使用的,能够减少内存平均访问时间。
• 内存:第三级; 运行的程序和数据都放在内存中; 如果微处理器的访问大部分在高速缓存上,内存就可以采用速度稍慢的存储器,对系统性能的影响不会太大,同时又降低了成本; 内存除主要使用RAM外,还要使用一定量的ROM。
• 外存:最低一级;容量大,存取速度比内存要慢得多;目前嵌入式系统中常用闪存作为大容量“硬盘”存储各种程序和数据。
RAM
• 随机存取存储器(Random Access Memory,RAM)能够随时在任一地址读出或写入内容。
• 突出优点是读写方便、使用灵活。缺点是不能长期保存信息,一旦停电,所存信息就会丢失。但维持静态数据所需的功耗通常较低。
RAM用于数据的临时存储或缓冲存储,在嵌入式系统中主要用于:
• 存放当前正在执行的程序和数据,如用户的调试程序、程序的中间运算结果以及掉电时无需保存的I/O数据和参数等。
• 作为I/O数据缓冲存储器,如显示输出缓冲存储器、键盘输入缓冲存储器等。
• 作为函数调用时传递参数和返回值的、以及中断服务中保护CPU现场信息的栈。
静态RAM(Static RAM,SRAM)
• 以双稳态电路为基础,速度快,状态稳定,只要不掉电,信息不会丢失。但集成度低,价格较高。
动态RAM(Dynamic RAM,DRAM)
• 以电容为基础,电路简单、集成度高、价格较低。但速度略慢,不掉电也会因电容放电而丢失信息,需要定时刷新,因此在工作时必须配合DRAM控制器。
如何选择RAM
• 如果系统的随机存储器的容量不是很大(如1M字节以下),一般采用SRAM;反之,选择DRAM。
• 对于特别高速度的应用,使用SRAM。
• 如果嵌入式系统对功耗敏感,可使用SRAM。因为DRAM需要定时刷新,消耗能量相对大;SRAM维持数据的待机电流很小,静态功耗低,但工作时动态功耗不低。
• 对于嵌入式处理器而言,有的嵌入式处理器芯片集成了DRAM控制器,这时选择DRAM比较好。小规模的嵌入式系统不建议使用分离的“DRAM控制器+DRAM”的方案。
• 基于32位嵌入式处理器的嵌入式系统通常会使用DRAM。
• 复杂的嵌入式系统可以采用SRAM和DRAM混合设计的方案。
ROM
• 只读存储器(Read-Only Memory,ROM)中的内容一经写入,在工作过程中就只能读出不能重写,即使掉电,写入的内容也不会丢失。
• ROM在嵌入式系统中非常有用,常常用来存放系统软件(如ROM BIOS)、应用程序等,不随时间改变的代码或数据。
分为两类
• 工厂可编程ROM(即掩模可编程ROM,Mask-Programmable ROM):由半导体厂商按照用户要求掩模制成,之后不能改写,用户只能读出、不能改写。用于大批量生产的计算机产品中。
• 现场可编程ROM(Field Programmable ROM):一些只可编程一次(OTP),而另一些可以被重复编程。用于产品研制和实验室小批量生产。
a. 紫外线可擦可编程ROM(UV Erasable Programmable ROM, UV_EPROM)
b. 电可擦可编程ROM(Electrical Erasable Programmable ROM, EEPROM)
Flash
• 电可擦可编程ROM存储器,被广泛使用于内存和外存。
• 在不加电情况下能长期保存信息,同时又能在线进行快速擦除与重写;从软件的观点来看,Flash和EEPROM的技术十分类似。
Flash vs EEPROM
• 有些EEPROM擦写和编程时要加高电压(如12V),重新编程时必须将芯片从系统中取下来;而Flash使用标准供电电压擦写和编程,允许芯片在标准系统内部编程。
• EEPROM可以单独擦写某个存储单元,操作起来很方便;Flash则必须擦除一个存储块,然后再写入新数据到这个块中,因此需要保存和重写此块中被迫被擦除的内容。
• 大部分Flash允许某些块被保护,这一点对存储空间有限的嵌入式系统非常有用,即将引导代码放进保护块内而允许更新设备上其它的存储块。
• EEPROM通常容量较小,Flash可以有非常大容量。
八、嵌入式系统外设
• 输入设备,如键盘、触摸屏等;输出设备,如显示器等;
• 完成数据控制和转换的设备,如定时器/计数器、模/数转换器、数/模转换器等。
• 有的是集成为片上设备(称为片上外围),有的是片外单独实现。
定时器/计数器
• 由带有保存当前值的寄存器和向当前寄存器值加1(或减1)的一个增量输入的加法器逻辑电路组成。或者说是一种能够累计输入脉冲的个数的数字电路。它由触发器构成,具有记忆功能,除了能够完成计数外,还能够用作分频和定时。
• 所有的嵌入式处理器都集成了定时器/计数器模块;系统中至少有一个定时器,用作系统时钟。
• 定时器的计数装置是连到已知的周期性时钟信号上的,用来测量时间间隔;计数器的计数装置是连到非周期性信号上的,用来计外部事件的发生次数。
ADC和DAC
• 模/数(A/D)转换器和数/模(D/A)转换器是非数字设备(即模拟信号源)和嵌入式系统之间联系的接口。
• D/A转换器的控制相对简单,输入数据值被连续转换成模拟输出信号。
• A/D转换器将连续变化的模拟信号转换为数字信号,以便计算机和数字系统进行存储、处理。
人机接口设备
• 键盘
• LCD显示器
• 触摸屏
九、嵌入式系统通信设备
通用异步收发器(Universal Asynchronous Receiver and Transmitter,UART)
• 用于计算机与异步串行设备的接口。
数据通信方式
单工和双工通信
• 是对相互通信的两台通信设备之间数据流向的描述;包括单工、半双工和全双工三种方式。
串行和并行通信
• 并行通信是构成字符(不必一定8位)的多位二进制代码在并行信道上同时传输的方式;并行传输时,一次传输一个字符,收发双方不存在字符内的位同步问题,传输速度较快;并行传输需要并行信道,所以线路投资大,不太适合小型化产品。
• 串行通信是指构成字符的多位二进制代码在一条信道上以位为单位、按时间顺序且按位传输的方式; 串行传输时,发送端按位发送,接收端按位接收,同时还要对所传输的字符加以确认,所以收发双方要采取同步措施(位同步、帧同步),否则接收端将不能正确区分出所传输的字符;串行通信的速度较慢,但是数据的传输可以只需要一条信道,线路投资少、易于实现,在数据通信吞吐量不是很大的嵌入式系统中显得更加简单、方便。
同步和异步通信
关键差别在于各数据线传输位的定位是否由收发双方共有的时钟信号来定位。
• 同步通信传输不需要在有效数据前后加起、止信号,而是由收发双方共有的时钟信号进行同步。因此传输效率高,适用于高速数据传输,但是实现起来比较复杂。
• 异步通信方式下,传输数据以字符为单位。以串行通信为例:当发送一个字符代码时,在其前面加一个“起” 信号(长1个码元,逻辑0);然后依次发送字符各个数据位;字符后面要加一个“止”信号,其长度为1、1.5或2个码元,逻辑1。自“起”至“止”信号称为一帧。收发双方需约定好波特率(bps),各自独立地由本地产生符合频率误差要求的波特率时钟信号,以作位同步用。帧同步则由“起”“止”信号界定。异步传输方式适用于低速传输,实现简单。由于收发方使用各自独立的波特率时钟,两者频率存在误差,因此一帧不能设计得太长,否则频率误差所导致的帧内累积定时偏差会使得位同步出错。
标准异步串行通信电气接口
RS-232C、RS-422、RS-485
• RS-232C接口的缺点主要表现在两个方面:数据传输速率慢和传输距离短。
• RS-232C规定的20kb/s的传输速率虽然能够满足异步通信要求(通常异步通信速率限制在19.2kb/s以下),但对许多系统来说不能满足传输速率要求。RS-232C接口的一般设备之间电缆长度为15m,最长也不会超过60m。RS-232 只容许一对一的通信,没有考虑构成串行总线。
• RS-422标准是EIA公布的“平衡电压数字接口电路的电气特性”标准
• 为改善RS-232C标准的电气特性、又考虑与RS-232C兼容而制定的。 RS-422与RS-232C的关键不同在于把单端输入改为双端差分输入。与RS-232C相比,RS-422传输信号距离长、速度快。传输率最大为10Mb/s,在此速率下,电缆允许长度为120m。如果采用较低传输速率,如90kb/s,最大距离可达1200m。
• RS-485是RS-422的变型
• RS-422是全双工,可以同时发送与接收;而RS-485是半双工,在某一时刻,一个为发送另一个为接收;RS-485是一种多发送器的电路标准,它扩展了RS-422的性能,允许双线总线上驱动32个负载设备。负载设备可以是被动发送器、接收器或二者组合而成的收发器。当用于多点互连时,可节省信号线,便于高速远距离传送。
UART提供对RS-232C等数据终端设备的接口,提供以下功能
• 将计算机外部传来的串行数据转换为字节,供计算机内部使用并行数据的器件使用;
• 将由计算机内部传过来的并行数据转换为输出的串行数据;
• 在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验;
• 在输出数据流中加入“起”、“止”标记,并从接收数据流中删除“起”、“止”标记;
• 处理计算机与外部串行设备的同步管理问题。
• 注:异步通信过程在UART上几乎是透明地运作。为了收发数据,程序只需简单地对UART相关寄存器执行读写操作。当UART用于嵌入式设计时,嵌入式系统就能够非常方便地利用通信终端、计算机甚至是其它嵌入式微处理器上的数据资源,或实现控制功能。 当前多数PC机已不再配备硬件实现的UART串口,但由于它是PC机与其它设备通信的最便捷方式,故经常采用USB转UART的方式,虚拟出一个UART串口。
USB
• 通用串行总线(Universal Serial Bus,USB)是1995年Intel、Microsoft、Compaq、IBM等公司联合制定的一种计算机外部串行通信标准。
• USB 具有传输速度快、使用方便、支持热插拔、连接灵活、独立供电等优点,可连接键盘、鼠标、大容量存储设备等多种外设,该接口也被广泛用于智能手机中。
• USB是一种将USB外围设备连接到主机的外部总线结构,它通过PCI总线和PC的内部系统数据线连接,实现数据传送。
• USB同时又是一种通信协议,它支持主机系统和USB外围设备之间的数据传送,通过一个4针的标准插头,采用菊花链形式把所有的外设连接起来。
• USB总线是基于令牌的总线,类似于令牌环网络。 USB主控制器广播令牌,总线上的设备检测令牌中的地址是否与自身相符,通过接收或者发送数据来响应主机。
蓝牙
• 蓝牙是一种近距离无线通信技术,运行在2.4GHz免费频段,目前已大量应用于各种移动终端、物联网、健康医疗、智能家居等行业。
• 蓝牙4.0以后的版本分为两种模式,单模蓝牙和双模蓝牙。
• 单模蓝牙,即低功耗蓝牙(BLE),是蓝牙4.0中的重点技术,低成本、低功耗、快连接、长距离。但不支持音频协议。BLE采用非常快速的连接方式,因此平时可以处于“非连接”状态(节省能源),此时链路两端相互间只是知晓对方,只有在必要时才开启链路,然后在尽可能短时间内关闭链路(每次最多传20字节)。
• 双模蓝牙,支持BLE的同时还兼容经典蓝牙。
时钟
• 在嵌入式系统中,处理器需要有一个时钟振荡(clock oscillator)电路。时钟控制着CPU、以及其它同步外设。嵌入式系统通常把时钟发生电路尽可能地集成在嵌入式处理器上,外面只需要接石英晶体和补偿电容即可。高性能的嵌入式处理器会设计多时钟源,分别为CPU、内核、实时时钟电路、不同的I/O电路提供时钟信号。
中断
• 当突发事件发生时提出请求,CPU可以暂时停止当前正在处理的程序,转去处理突发事件,如故障处理、按键字符数据的接收、通信接口数据的接收,等处理这些事务的程序执行完毕后,再回到原先程序被打断的地方去继续执行后续程序。
主要概念
• 中断源:引发中断的事件称为中断源。
• 中断断点(地址):CPU转入中断服务程序前,原来程序将被暂停,暂停点为将执行但没被执行的下一条指令的地址。
• 中断服务程序:为中断事件服务的程序段称为中断服务程序。因此由不同中断源引发的中断需要转到各自对应的中断服务程序来执行。
• 中断向量/中断矢量:中断服务程序的入口地址。
中断的过程
• 请求过程:中断控制器检测到中断事件发生时,向CPU提出中断请求,同时提供给CPU该中断事件对应的中断矢量 。
• 响应过程:CPU在合适的时候向中断控制器返回响应告知将进入中断处理。 CPU执行完当前指令,保存下一条本应执行的指令的地址(断点)至栈中,转入中断矢量处执行中断服务程序。
• 服务过程:执行请求事件的服务程序。结束时向中断控制器返回响应告知将退出中断,从栈中取出之前保存的指令地址,CPU转到该指令地址处执行(即在原被中断的程序位置之后继续执行)。
处理突发事件有两种方式:
• 定时查询方式:定期检测是否有事件发生。这将消耗大量的CPU时间来完成查询工作,从而降低CPU的工作效率。
• 中断方式:由中断系统硬件来实现的,用户程序仅仅是配置中断及编写中断服务程序 。中断服务程序并不能由用户调用。中断请求一般允许用户程序发起。
中断中只能处理最紧要的那部分工作,耗时长的工作内容必须安排在主函数中进行。