嵌入式系统概论
嵌入式系统介绍
- 嵌入式系统与通用计算机系统软件的相同之处,指的是嵌入式系统通常也具备引导加载程序,外设驱动程序,操作系统,文件系统,网络协议栈,图形用户界面,数据库,以及各种各样的应用程序等。
- 嵌入式系统由硬件和软件两部分组成。硬件的主体是CPU和存储器,它们通过I/O接口和I/O设备与外部世界联系。嵌入式系统的软件配置有多种情况,有些简单,有些比较复杂。
嵌入式系统的开发过程,通常分为:需求分析与规格说明、系统设计、构件设计、系统集成与测试等4个阶段。
嵌入式系统的特点:
- 专用性:与具体应用紧密结合,具有很强的专用性
- 隐蔽性:嵌入式系统是被包装在内部
- 资源受限:要求小型化、轻型化、低功耗及低成本,因此软硬件资源受到限制
- 高可靠性:任何误动作都可能会产生致命的后果
- 实时性:需要实时数据
- 软件固化:软件都固化在只读存储器ROM中,用户不能随意更改其程序功能
嵌入式系统的应用 嵌入式处理器的结构类型的4种分类方式 1.按指令集划分 CISC(复杂指令集结构)和RISC(简单指令集结构) 2.按存储机制划分 冯洛伊曼结构和哈佛结构 3.按指字长划分 8位,16位,32位,64位 4.按不同内核划分 51,AVR,PIC,MSP430,PowerPC,MC68K,ColdFire和ARM
嵌入式系统硬件的核心是CPU,其特点是:支持实时处理、低功耗、字长有4位、8位、16位、32位和64位(通用计算机64位为主)、集成了测试电路。
嵌入式处理芯片4种产品类型:片上系统(SoC)、微控制器(单片机又称MCU)、数字信号处理器(DSP)、微处理器。
**数字信号处理器(DSP)**支持单指令多数据(SIMD)并行处理的指令。
微控制器:一种将整个计算机硬件的大部分甚至全部电路集成在一块芯片中。它们的工作频率不高,存储容量较小,功耗很低。
片上系统(SoC)称为系统级芯片:可以分为单核与多核SoC、通用与专用SoC芯片、定制的嵌入式处理芯片与现场可编程嵌入式处理芯片。
ARM处理器
- 复位后总处于ARM状态。
- ARM采用RISC精简指令集
- 采用冯诺依曼体系或哈佛结构
- ARM的总线结构称为AMBA (先进微控器制总线结构),是ARM推出的开放式总线结构, 是目前流行的一种工业标准片上结构
- ARM处理器具有耗电省、功能强、成本低等特点。
- ARM11以后改为**Cortex-**系列。
- ARM7- ARM11位经典ARM处理器。
- 内部的模拟组件包括ADC和DAC,有的还带有比较器等,既能够处理数字信号又能处理模拟信号。
CPSR程序状态寄存器:选择ARM处理器处于外部中断模式、允许外部中断IRQ、进制快速中断FIQ、使用Thumb状态。记录当前运算所产生的标志位。
多媒体
数码相机:
- 前端负责数字图像获取,后端负责数字图像的处理(以DSP为核心的SoC芯片)。
- 负责进行数码相机操作控制的如变焦、快门控制等是一个超低功耗的8位MCU。
- 高端的数码相机配有实时操作系统和图像处理软件
- 目前数码相机中用于存储所拍摄相片的大多是Flash存储器(闪存卡)
照片计算题:65536色、1024 x 1024、80张、数据压缩比4,求存储器容量MB。
65536色的图像是16位的,所以数据量=1024x1024x16/8=2MB,压缩比为4,所以80张所占存储容量为80x2/4=40MB。
电子书计算题:大小128KB,求含有汉字(2个字节)数量。
128*1024=131,072B
131,072/2=65536
汉字编码国家标准有GB2312和GB18030,常用汉字采用2个字节表示。
计算机网络
IP地址
- 分为A类、B类、C类3个基本类。另有两类分别作为组播地址和备用地址(D类和E类)。
- A类从1.0.0.0/8到126.0.0.0/8;B类从128.0.0.0/16到191.255.0.0/16;C类从192.0.0.0/24到223.255.255.0/24;D类从224.0.0.0到239.255.255.255。E类从240.0.0.0到255.255.255.255。
- A类:二进制表示中最高位一定是“0”,一个A类IP地址由1字节(每个字节是8位)的网络地址和3个字节主机地址组成,网络地址的最高位必须是“0",即第一段数字范围为1~ 127。每个A类地址可连接16387064台主机,Internet有126个A类地址。
- C类网络地址数量较多,适用于小规模的局域网络,每个网络最多只能包含254台计算机,二进制表示中最高3位一定是“101”。
- IPv6协议已经把IP地址的长度扩展到128位,使用32位二进制数表示。IPv4的长度为64位,使用16字节表示一个ip地址。
无线局域网(WLAN) 无线局域网(WLAN)是以太网与无线通信技术相结合的产物。它借助无线电波进行数据传输,所采用的通信协议主要是802.11, 数据传输速率可以达到11Mbps、54Mbps、 108Mbps甚至更高。
TCP/IP协议簇中的IP协议,在Internet中负责选择合适的路由,使发送的数据分组能够正确无误地按照地址找到目的计算机。
以太网 以太网数据帧:前导码(7字节)、帧起始定界符(1字节)、目的MAC地址(6字节)、 源MAC地址(6字节)、类型长度(2字节)、数据(46~1500字节)、帧校 验序列(4字节)。
嵌入式Web服务环境 构件设计阶段需要设计支持以太网通信的电路,包括以太网控制电路及以太网驱动电路;AX88796芯片内部寄存器的读/写地址,其首地址一般是0x10000000。
Thumb指令集
- 8位立即数通过循环左移可间接得到32位有效立即数。
- 指令代码只有16位,相对于32位的ARM状态,代码密度更大,占用空间更小。
嵌入式系统常用的电源模块有AC-DC模块、DC-DC模块或LDO模块 若嵌入式处理器芯片的系统复位引脚为nRESET,则表示低电平复位 基于ARM处理器内核的嵌入式处理器芯片都有调试接口
开关中断指令属于程序状态类指令,用于更改处理器状态。关外部中断使用的指令为: CPSID I,开外部中断的指令为: CPSIE I。
接线部分
AMBA
- 先进的微控制器总线体系结构,是ARM公司公布的用于连接和管理片上系统中各功能模块的开放标准和片上互连规范
- AMBA规定了ARM处理器内核与处理器内部RAM、DMA以及高带宽外部存储器等快速组件的接口标准
- ARM处理器内核与外围端口及慢速设备接口组件的接口标准包含在AMBA规范中
- 系统总线与外围总线两层结构的方式构建片上系统
- AMBA有多个版本,性能随版本的发展而逐步提高
- 系统总线通过桥接器与外围总线互连,外围总线连接的硬件组件包括: GPIO、UART、 SPI、I2C、 RTC、USB设备ADC、DAC等等。
- 连接到系统总线上高带宽组件主要包括:电源管理与时钟控制器、测试接口、外部存储器控制接口、DMA控制器、USB主机、中断控制器等。
DMA (Direct Memory Access)控制器是一种在系统内部转移数据的独特外设,可以将其视为一种能够通过一组专用总线将内部和外部存储器与每个具有DMA能力的外设连接起来的控制器。
UART:
- UART由发送器、接收器、控制单元及波特率发生器等构成。
- UART为标准的串行通信接口,字符格式按照低位在前、高位在后的次序进行传输,1位起始位,5-8位数据位,1位奇偶校验位,1-2位停止位
- 可以采用FIFO模式,也可以采用普通模式
SPI:
- SPI一般使用4条信号线: SCK、 MISO(主入从出)、MOSI(主出从入)和SSEL(芯片选择)、采用SPI可以构成"一主一从式"系统、"一主多从式"系统、多主多从式系统、互为主从式系统。
- 全双工同步串行通信。
I2C:
- 只有两根信号线,一根是时钟线SCL,一根是数据线SDA(双向三态),操作具有特定的起始位和终止位,同步半双工串行通信
- I2C总线被启动后,多个主机在每发送一个数据位时都要对SDA信 号线电平进行检测,只要检测的电平与自已发出的电平相同就会继续占用总线。总线的控制遵循“低电平优先”的原则。
- 集成电路互联总线
- 每次传送的字节没有限制
- 多主总线
USB采用的半双工差分方式。
JTAG指令:是一种嵌入式测试技术,多个器件可以通过JTAG接口串联在一起进行测试。
存储器
存储器的分类 嵌入式系统的存储器以半导体存储器为主,FRAM(铁电随机存取存储器),MRAM(磁性随机存取存储器)。
Flash存储器
- 分为NOR Flash和NAND Flash两种。
- NOR Flash按字节为单位随机存取,NAND Flash以页为单位随机存取。
- ARM9、ARM11高性能嵌入式处理器使用的Cache存储器。
存储器的容量取决于存储单元的个数和存储器各单元的位数,而单元个数与存储器的地址总线有密切关系,因此存储器芯片的容量完全取决于存储器芯片的地址线的条数和数据线的位数。
存储器的带宽=工作频率*数据线宽度/8×传输数据次数(B)
IEEE的实时UNIX分委会认为实时操作系统应该具备若干特 征:具有异步I/O和中断处理能力、任务切换时间和中断延迟时间确定、优先级中断和调度。
操作系统与内核
硬实时操作系统:VxWorks(抢占式优先级调度)、RTEMS、QNX、uC/OS-II、Nucleus,主要用于通信、军事、航空控制等领域
软实时操作系统或普通实时操作系统:主要用于类PC手持设备、家用电器、个人通信终端、智能移动电话、机顶盒、MP3/MP4播放器、家庭媒体网关、WinCE、多户嵌入式
单内核(宏内核)结构:
- Unix、BSD Unix、Linux、MS-DOS、Windows 9x、Windows CE、Android、WinCE、Mac OS
- 优点
性能较好,系统调用,功能切换和通信开销比较小 - 缺点
即使不使用的功能组件和设备驱动程序也常驻在内存中,占用资源较多、占用内存空间大、维护工作量大、缺乏可扩展性而不方便移植、可靠性较低
微内核结构:
- AIX、Mach、Minix、VxWorks、QNX、Symbian、uC-OS-II、iOS
- 优点
内核精巧,结构紧凑,占用内存少 开发和维护方便,系统可以动态更新服务模块 接口一致,用户态任务不需要区分是内核级服务还是用户级服务 可扩展性与可配置性强,很合嵌入式系统的可裁剪要求 可靠性高,各服务进程在用户态运行,有自己的内存空间 支持分布式系统,服务器可以在不同的处理机上运行 - 缺点
效率较低、性能相对较差,因为通信和上下文切换的开销大大增加
Linux内核
- 进程调度模块负责控制进程对CPU资源的使用,所采取的调度策略是使得各个进程能够公平访问CPU,但并不保证内核能及时地执行硬件操作
- Linux内存管理模块的功能之一是屏蔽各种硬件内存结构的差异并向上返回统一的访问接口
- 网络接口模块包含网络接口驱动程序
- 支持进程之间各种通信机制,其通信机制主要包括信号、管道、消息队列、信号量、共享内存和套接字
引导加载程序Bootloader
执行过程 系统中引导加载程序主要完成加电自检、外设存在自检、内存地址映射、初始化外围设备、内存寻址定位、加载并启动操作系统。
执行阶段 大多数Bootloader都分成两个执行阶段,依赖于CPU体系结构的代码,比如设备初始化代码等,通常都放在stage1中,且使用汇编语言来实现,以达到短小精悍的目的;而stage2则通常用C语言来实现,这样可以实现更复杂的功能,而且代码会具有更好的可读性和可移植性。
U-Boot简介
- 全称Universal BootLoader,U-Boot是公认的功能最强、最具弹性以及更新最快的开放源码BootLoader,是遵循GPL条款的代码资源最完整的一个通用BootLoader
- U-Boot支持的处理器体系结构有PowerPC、ARM、MIPS系列、X86系列等处理器
- U-Boot支持的嵌入式操作系统有Linux、VxWorks、QNX、NetBSD、RTEMS、ARTOS、LynxOS、Windows CE等
- 它既支持启动加载模式,也支持下载模式
- 采用两个阶段完成操作系统的引导加载
uC/OS-II操作系统的任务及其管理
任务状态
- 休眠态:任务驻留在内存中,但还没交给内核管理
- 就绪态:任务已经准备好可以运行了,但由于优先级正在运行的低,暂时还不能运行
- 运行态:任务得到了CPU的控制权正在运行中
- 等待态|挂起态
- 被中断态:发送中断时执行相应的中断服务,原来正在运行的任务暂时停止运行,进入被中断状态。中断嵌套可达255层。
- 系统总是运行处于就绪态任务中优先级最高的任务
main函数后跟着的是:OSInit()、OSTaskCreate()、OSStart()
任务构成 程序代码、任务控制块、任务堆栈。任务是操作系统的基本调度单位。
基本特点 uC/OS-II内核只提供任务调度、任务间通信与同步、任务管理、时间管理和存储管理等基本功能,资源消耗非常小。
OSCtxSw():任务切换函数 OSIntExit():中断级调度函数 OSSched():上下文切换函数 OSQCreate():创建事件控制块
uC/OS-III增加的主要特性 1.时间片轮转调度 2.内核对象的数量无限制 3.任务级的时钟节拍处理:节拍率10Hz-100Hz。 4.可针对处理器体系结构进行优化 5.时间戳 6.增强的内置性能测试功能
NiOS II HAL
ARM处理器的7种异常及相应优先级。经典ARM处理器有7种异常:主要包括复位RESET、未定义指令UND、 软件中断SWI、指令预取中止PABT、数据访问中止DABT、外部中断请求IRQ以及快速中断FRQ,其中优先级最高的异常是复位。
某ARM汇编语言程序要调用子程序,子程序名为MySubrutine,则调用该子程序的指令为BL MySubrutine,子程序返回调用程序的指令为MOV PC,LR。
实时系统(RTOS)
- 主要特征是能够及时响应外部发生的随机任务请求并且能够在规定的时限内完成任务。
- 任务时限有两种: 截止时间,也就是任务开始执行时间到任务必须完成的时间间隔;任务执行预设时间,或者叫做任务最快完成时间,这是无中断响应情况下的任务最快执行时间。
- 实时系统对时间约束要求的严格性,使可预测性成为实时系统的一项重
要性能要求,它是指RTOS能够对外部事件的响应时间和实时任务的执行时间进行判断,以确定被事件触发的实时任务能否在规定的时间内完成。 - 响应时间是计算机从识别—个外部事件到做出响应的时间,其具体指标包括:中断延迟时间和任务切换时间。
- RTLinux基本的设计理念就是"架空"Linux内核,以便让其他实时进程能尽快地被执行。‘将Linux的任务以及Linux内核本身作为一个低优先级的任务,而实时任务作为最高优先级的任务。
RVDS
- RVDS中包括工程管理器、编译连接器、调试器和指令集仿真器
- RVDS支持所有ARM微处理器芯片
- RVDS支持对Flash存储器的编程
- RVDS编译的代码比ADS1.2编译的代码执行效率高
|