嵌入式系统概论
嵌入式系统介绍
- 嵌入式系统与通用计算机系统软件的相同之处,指的是嵌入式系统通常也具备引导加载程序,外设驱动程序,操作系统,文件系统,网络协议栈,图形用户界面,数据库,以及各种各样的应用程序等。
- 嵌入式系统由硬件和软件两部分组成。硬件的主体是CPU和存储器,它们通过输入/输出与外部世界联系。嵌入式系统的软件配置有多种情况,有些简单,有些比较复杂。
- 按系统的软硬件技术复杂度,嵌入式系统分为低端系统、中端系统和高端系统。其中低端嵌入式系统,其硬件的核心大多是4位/8位单片机;一般不使用操作系统,由监控程序对系统进行控制;在工控领域和白色家电领域占主导地位,如计算器、遥控器、空调等。
- 服务器是高性能计算机
嵌入式系统的开发过程,通常分为:需求分析与规格说明、系统设计、构件设计、系统集成与测试等4个阶段。
嵌入式系统的特点:
- 专用性:与具体应用紧密结合,具有很强的专用性
- 隐蔽性:嵌入式系统是被包装在内部
- 资源受限:要求小型化、轻型化、低功耗及低成本,因此软硬件资源受到限制
- 高可靠性:任何误动作都可能会产生致命的后果
- 实时性:需要实时数据
- 软件固化:软件都固化在只读存储器ROM中,用户不能随意更改其程序功能
嵌入式最小硬件系统一般包括嵌入式处理器、时钟电路、电源电路、复位电路、存储器和调试测试接口。
嵌入式系统的应用
嵌入式处理器的结构类型的4种分类方式
1.按指令集划分
CISC(复杂指令集结构)和RISC(简单指令集结构)
2.按存储机制划分
冯洛伊曼结构(一套总线,3级流水线)和哈佛结构(两套总线,程序与数据分离,13级流水线),哈佛更有执行效率
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)并行处理的指令。
嵌入式操作系统的基本组成
在嵌入式操作系统的核心部分称为内核(kernel), 而对硬件设备进行控制和管理的程序模块称为驱动程序(driver)。
微控制器:一种将整个计算机硬件的大部分甚至全部电路集成在一块芯片中。它们的工作频率不高,存储容量较小,功耗很低。
实时时钟模块RTC
- 实时时钟模块RTC具有的主要功能包括BCD数据、闰年产生器、告警功能、独立的电源端口、支持毫秒滴答时钟中断作为RTOS核的滴答时钟、循环复位功能等。
- 采用单独的供电引脚和单独的时钟源;
- 实时时钟控制寄存器RTCCON共4位,控制时钟计数复位、BCD计数、时钟选择以及确定是否允许RTC读/写等;
- RTC内部的数据寄存器都是8位寄存器,存放相应的BCD码值。
片上系统(SoC)
- 又称为系统级芯片
- 可以分为单核与多核SoC、通用与专用SoC芯片、定制的嵌入式处理芯片与现场可编程嵌入式处理芯片。
- 随着电子设计自动化水平的提高和VLSI制造技术的飞速发展,半导体加工已经从微米、亚微米进入到深亚微米的时代,单个芯片上可以集成几亿个甚至几十亿个晶体管,因而能够把计算机或其他一些电子系统的全部电路都集成在单个芯片上,这种芯片就是所谓的片上系统。
- SoC芯片中既包含数字电路,也可以包含模拟电路,甚至还能包含数字/模拟混合电路和射频电路。
- 由于SoC将嵌入式系统的几乎全部功能都集成在一块芯片中,单个芯片就能实现数据的采集、转换、存储、处理和I/O等多种功能。
- 目前,大多数32位的嵌入式处理芯片均为SoC,SoC逐渐成为集成电路设计的主流发展趋势。
- 是电子设计自动化水平提高和大规模集成电路制造技术发展的成果
- 片上系统(SoC)的开发大多以IP核为基础,在单个芯片上集成处理器、存储器、各种接口电路等组件,组成一个较为完整的计算机系统。IP核中的IP是中文知识产权的英文缩写;目前SoC芯片中32/64位CPU大多数采用的是 ARM内核。
ARM处理器
- 复位后总处于ARM状态,平复位,不带n的表示高电平复位;ARM复位后PC无条件的指向0x00000000处。
- ARM采用RISC精简指令集
- 采用冯诺依曼体系或哈佛结构
- ARM的总线结构称为AMBA (先进微控器制总线结构),是ARM推出的开放式总线结构, 是目前流行的一种工业标准片上结构
- ARM处理器具有耗电省、功能强、成本低等特点。
- ARM11以后改为Cortex-系列。
- ARM7- ARM11位经典ARM处理器。
- 有ARM处理器都可以工作在ARM状态,而Cortex-M3只有Thumb-2状态和调试状态。
- 内部的模拟组件包括ADC和DAC,有的还带有比较器等,既能够处理数字信号又能处理模拟信号。
- 用户模式是ARM处理器正常的程序执行状态;系统模式是运行具有特权的操作系统任务;快中断模式支持高速数据传输或通道处理;管理模式(SVC)即操作系统保护模式。管理模式是操作系统的保护模式,处理软中断。除此之外还有数据访问终止模式(ABT)、中断模式(IRQ)、未定义指令终止模式(UND)。中止模式处理存储器故障。
- 通用寄存器 R0-R15的宽度为32位。
- 存储器保护单元(MPU)是对存储器进行保护的可选组件。它允许ARM处理器的4GB地址空间定义8对域,分别控制8个指令和8个数据内存区域。
7种异常及相应优先级
- 经典ARM处理器有7种异常:复位RESET、未定义指令UND、 软件中断SWI、指令预取中止PABT、数据访问中止DABT、外部中断请求IRQ以及快速中断FRQ,其中优先级最高的异常是复位。
寄存器与硬件
CPSR程序状态寄存器:
- 选择ARM处理器处于外部中断模式、允许外部中断IRQ、进制快速中断FIQ、使用Thumb状态。记录当前运算所产生的标志位。
- T为ARM与Thumb指令切换,T=1时执行Thumb指令,否则执行ARM指令。
- CPSR中的控制位中,l是外部IRQ中断禁止控制位,l=1禁止外部IRQ中断,I=O允许IRQ中断;F为禁止快速中断FIQ的控制位,F=1禁止FIQ中断,F=0允许FIQ中断。
- N为符号标志,N=1表示运算结果为负数,N=0表示运算结果为正数;F为禁止快速中断FIQ的控制位,F=0允许FIQ中断;V为溢出标志,加减法运算结果有溢出时V=1,否则V=0;Z为全0标志,运算结果为0,则Z=1,否则Z=0。
- ARM体系结构支持7种工作模式,工作模式之间可以切换,切换条件取决于当前程序状态寄存器CPSR的低5位值。用户模式是程序正常执行工作模式,如果没有异常发生不能改变工作模式;快速中断模式(FIQ)用来处理高速中断;中止模式处理存储器故障;系统模式运行特权级的操作系统任务。
汇编
ARM指令集
条件域:HI为无符号数大于、CC为无符号数小于、GT为带符号数大于、LE为带符号数小于或等于、CS为无符号数大于等于、 LT为带符号数小于、vS为溢出
Thumb指令集
- 8位立即数通过循环左移可间接得到32位有效立即数。
- 指令代码只有16位,相对于32位的ARM状态,代码密度更大,占用空间更小。
伪指令
- DCD用于分配一片连续的字存储单元并用指定的数据初始化,属于数据定义伪指令;
- CODE16伪指令通知编译器,其后的指令序列为16位的Thumb指令。
某ARM汇编语言程序要调用子程序,子程序名为MySubrutine,则调用该子程序的指令为BL MySubrutine,子程序返回调用程序的指令为MOV PC,LR。
开关中断指令属于程序状态类指令,用于更改处理器状态。关外部中断使用的指令为: CPSID I,开外部中断的指令为: CPSIE I。
复位
- 若嵌入式处理器芯片的系统复位引脚为nRESET,则表示低电平复位。
- 嵌入式系统常使用外接复位芯片提供的复位信号来实现系统的可靠复位
- 有些微处理器用复位芯片可通过两个不同引脚分别输出高电平或低电平有效的复位信号
- ARM复位后PC指针指向某个唯一的地址
中断控制器
支持所有内置硬件各组件的硬件中断,包括24个外部可屏蔽中断EINTO~EINT23以及ADC、RTC、SPI、 I2C、UARTO/UART1、 SDI、USB、DMA0/1/2/3、LCD、 WDT、TIMER0/1/2/3、 电池错误中断等。
ARM Cortex-M3实现中断嵌套过程:中断可以改为使用比之前服务程序更高的优先级,而且可以在运行时改变优先级状态。使用末尾连锁连续中断技术只需消耗3个时钟周期,相比32个时钟周期的连续压、出堆栈,大大降低了延迟,提高了性能。
指令集模拟器
- 指令集模拟器是在宿主机上模拟应用程序在目标机上运行行为的一个软件工具。指令集模拟器的操作界面与通用机的集成开发环境类似。
- 运行时,它接受编译器或汇编程序生成的目标代码及其指令输入,模仿目标机CPU的取值、译码和执行操作,并将中间执行结果或最终执行结果存入目标机硬件映射数据结构中。
- 调试人员可以在指令集模拟器界面的控制下,通过观察目标机映射寄存器显示框、映射存储器显示框、变量观察窗口等了解目标代码的执行结果。
电源管理模块
- 具有四种模式:正常模式、慢速模式、休眠模式和掉电模式。
- 休眠模式下,电源管理模块仅断开ARM内核时钟FCLK,让CPU处于休眠状态,但仍为外围硬件组件提供时钟;
- 掉电模式下电源管理模块将断开内部电源,除非唤醒逻辑有效,否则内核不产生功耗。
- 慢速模式下不使用PLL时钟(MPLL关闭不使用),这样功耗降低,仅使用外部晶体或外部时钟直接提供给其他组件使用,不通过锁相环电路(低速情况无需锁相处理)。
- 在掉电模式和休眠模式下,只要有任何一个外部中断或RTC时钟中断发生,均将返回到正常模式
- 嵌入式系统常用的电源模块有AC-DC模块、DC-DC模块或LDO模块(低压差稳压器)
GPIO
1.GPAGPB/GPCIGPD/GPE/GPF/GPG/GPH多个并行l/O接口
2. GPIO端口的多个并行l/O接口中,有的接口的功能是单一的,有的接口的功能是复用的
3. GPIO端口的每个并行I/O接口都有控制寄存器、数据寄存器以及上拉寄存器
4. GPIO端口属于芯片内部的低带宽组件
多媒体
数码相机:
- 前端负责数字图像获取,后端负责数字图像的处理(以DSP为核心的SoC芯片)。
- 负责进行数码相机操作控制的如变焦、快门控制等是一个超低功耗的8位MCU。
- 高端的数码相机配有实时操作系统和图像处理软件
- 目前数码相机中用于存储所拍摄相片的大多是Flash存储器(闪存卡)
- 核心是模拟信号的数字化。其处理步骤大体分为4步:扫描,分色,取样,量化。描色样化
照片计算题:65536色、1024 x 1024、80张、数据压缩比4,求存储器容量MB。
图像数据量=图像水平分辨率×图像垂直分辨率×像素深度/8。
65536色的图像是16位的,所以数据量=1024x1024x16/8=2MB,压缩比为4,所以80张所占存储容量为80x2/4=40MB。
电子书计算题:大小128KB,求含有汉字(2个字节)数量。
128*1024=131,072B
131,072/2=65536
数字音频的主要参数包括取样频率、量化位数、声道数目和使用的压缩编码方法以及比特率;比特率又称码率,指的是每秒钟的数据量;数字音频未压缩前,码率计算公式为:
波形声音的码率=取样频率×量化位数×声道数
压缩编码后的码率则为压缩前的码率除以压缩倍数(压缩比)。
音频信息数字化的过程是取样、量化、编码。
- 量化就是把每个样本的模拟量转换成数字量来表示
- 量化过程往往也称为AD转换(模数转换)
- 音频信号量化后的样本一般用8位、12位或16位的二进制整数表示
- 量化精度越高,声音的保真度越好,量化精度越低,声音的保真度越差
- 由于语音信号的频率范围仅为300~3400Hz,因此电话通信语音的取样频率为8kHz,而音乐是全频带信号,取样频率通常在40kHz以上。
数码管
按dp、g、f、e、d、c、b、a的顺序排列
接口
VGA、DVI、HDMI(最高数据传输速度为10.2Gbps)
编码字符
- 目前计算机中使用最广泛的西文字符集及其编码是ASCIl字符集和ASCIl码,即美国标准信息交换码。基本的ASCII字符集共有128个字符,包括96个可打印字符和32个控制字符,每个字符使用7个二进制位进行编码。
- Unicode/UTF-16采用的是双字节可变长编码。ASCII字符、标点符号、希腊字母、阿拉伯文和CJK汉字等均使用双字节编码,其他不常用字符则使用4字节编码。
- 我国目前广泛使用的汉字编码国家标准有GB2312和GB18030。GB2312国标字符集中包含3755个—级常用汉字和3008个二级常用汉字,此外还有682个图形符号(包括拉丁字母、俄文、日文平假名与片假名、希腊字母、汉语拼音等)。这些汉字和图形符号在计算机内部都采用2字节(16个二进制位)来表示。
数字图像的分辨率用水平分辨率x垂直分辨率表示,我国高清电视的图像分辨率大多为1920×1080,其宽高比为16∶9。
计算机网络
用户安装ADSL时,只需在已有电话线的用户端配置一个ADSL MODEM和一个语音分离器,计算机中需要安装一块以太网网卡。
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位,用32位二进制表示,使用16字节表示一个ip地址。
无线局域网(WLAN)
- 无线局域网(WLAN)是以太网与无线通信技术相结合的产物。它借助无线电波进行数据传输,所采用的通信协议主要是802.11, 数据传输速率可以达到11Mbps、54Mbps、 108Mbps(802.11n)甚至更高。
- 所谓"热点”其正式的名称是无线接入点,它实际上是一个无线交换机或无线路由器,室内覆盖距离一般仅为30m左右, 室外通常可达100 ~ 300m。
蓝牙
其最高数据传输速率为1Mbps左右,传输距离大约在10m之内。
TCP/IP协议簇
- IP协议,在Internet中负责选择合适的路由,使发送的数据分组能够正确无误地按照地址找到目的计算机。
- IP地址解决了网络中所有计算机的统一编址问题
- IP数据报是—种独立于各种物理网络的数据包格式
路由器
- 路由器(router)是实现网络与网络互连的关键设备
- 遵循IP协议
- 数据处理,网络管理
以太网
以太网数据帧:前导码(7字节)、帧起始定界符(1字节)、目的MAC地址(6字节)、 源MAC地址(6字节)、类型长度(2字节)、数据(46~1500字节)、帧校
验序列(4字节)。
嵌入式Web服务环境
- 构件设计阶段需要设计支持以太网通信的电路,包括以太网控制电路及以太网驱动电路;AX88796芯片内部寄存器的读/写地址,其首地址一般0x10000000。
- 嵌入式Web服务器与通用Web服务器主要存在以下三个方面的差别:运行的目标环境、在各自系统中的作用、运行的优先级。嵌入式Web服务器不是以提供信息服务为主,而是提供远程操控及配置设备的一种方式。
- 典型的嵌入式WEB服务器应用软件至少有4个重要的组件:客户端浏览器,WVEB服务器、WEB页面、设备操控程序等。其中WEB页面是用于设备操控命令提交或设备状态信息显示的人机界面,它需要通过CGI接口来与设备操控程序进行信息交互。
有线通信的传输介质是金属导体或光导纤维,包括双绞线、同轴电缆和光缆;光缆几乎可以做到不漏光,因此保密性强。光缆的重量轻,便于运输和铺设,但强度稍差。
光纤通信利用光波传输信息,属于有线通信,能量分散,传输效率低;
无线通信是借助自由空间的电磁波传播信息;
系统总线
AMBA
- 先进的微控制器总线体系结构,是ARM公司公布的用于连接和管理片上系统中各功能模块的开放标准和片上互连规范
- AMBA规定了ARM处理器内核与处理器内部RAM、DMA以及高带宽外部存储器等快速组件的接口标准
- ARM处理器内核与外围端口及慢速设备接口组件的接口标准包含在AMBA规范中
- 对于高速组件采用AHB总线,而对于低速外设接口则采用APB总线,AHB通过桥接器链接APB。
- 系统总线与外围总线两层结构的方式构建片上系统
- AMBA有4个版本,性能随版本的发展而逐步提高
- 系统总线通过桥接器与外围总线互连,外围总线连接的硬件组件包括: GPIO、UART、 SPI、I2C、 RTC、USB设备ADC、DAC等等。
- 速度不高的外部接口连接外围总线(APB),包括定时器、并行接口和串行接口等;而电源管理与时钟控制器、测试接口、外部存储器控制接口、DMA控制器、USB主机、中断控制器等都连接在系统总线上。
DMA (中断控制器)
- 直接存储器访问控制器
- 控制器是一种在系统内部转移数据的独特外设,可以将其视为一种能够通过一组专用总线将内部和外部存储器与每个具有DMA能力的外设连接起来的控制器。
- ARM芯片内部的DMA控制器是一种硬件组件,主要用来外设与内存以及内存与内存之间的数据块传输。传输过程不需CPU参与,可显著降低处理器负荷。通过将CPU设为低功率状态并使用DMA传输数据,也降低了系统的功耗。
UART
- UART由发送器、接收器、控制单元及波特率发生器等构成。
- UART为标准的串行通信接口,字符格式按照低位在前、高位在后的次序进行传输,1位起始位,5-8位数据位,1位奇偶校验位,1-2位停止位
- 可以采用FIFO模式,也可以采用普通模式
CAN总线
- 能够实现多主通信;
- 控制器局域网
- CAN总线的数据帧由7个不同的域组成:帧起始、仲裁域、控制域、数据域、CRC域、应答域、帧结尾。其中域的长度可选为0~8位;
- CAN协议采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性;
- 一般面向控制应用领域的ARM芯片内部已经嵌入了CAN总线控制器,外部仅需要连接CAN的收发器即可构建完整的CAN网络。
RS-232接口和RS-485接口
- 采用标准的电平转换电路可以构成RS-232接口和RS-485接口;
- RS-232无法消除共模干扰,且通信距离只有15m左右,RS-485采用差分信号传输方式,因此具有很强的抗共模干扰能力,传输距离可以达到1200m,通常用于主从式多机通信系统,主机可采用轮询方式与各从机建立通信连接。
- RS-485通常用于主从式多机通信系统,采用轮询方式,由主机逐一向从机寻址,当从机地址与主机发送的地址—致时,才建立通信链接,进行有效数据通信。
SPI
- SPI一般使用4条信号线: SCK、 MISO(主入从出)、MOSI(主出从入)和SSEL(芯片选择)、采用SPI可以构成"一主一从式"系统、"一主多从式"系统、多主多从式系统、互为主从式系统。
- 全双工同步串行通信。
- 8个时钟周期完成1字节发送
- 1个时钟信号SCK对应一位数据的发送和另—位数据的接收
- 数据从主机移位寄存器—位一位移入到从机移位寄存器,同时从机移位寄存器中的数据—位一位移入到主机移位寄存器
I2C
- 只有两根信号线,一根是时钟线SCL,一根是数据线SDA(双向三态),操作具有特定的起始位和终止位,同步半双工串行通信
- I2C总线被启动后,多个主机在每发送一个数据位时都要对SDA信号线电平进行检测,只要检测的电平与自已发出的电平相同就会继续占用总线。总线的控制遵循“低电平优先”的原则。
- I2C总线中发起数据传输操作的I2C器件是主控器件。
- 集成电路互联总线
- 每次传送的字节没有限制
- 多主总线,即允许总线上有一个或多个主控制器件和若干从器件同时进行操作,通过总线仲裁的方式确定总线控制权;
- I2C总线只有两条信号线SDA和SCL,当总线上的所有器件都不适用总线时,SCL线和SDA线各自的上拉电阻把电平拉高,使它们均处于高电平。
USB
- USB OTG的作用是可以摆脱主机,直接在具有OTG的USB总线上完成点对点通信,实现在没有主机的情况下从设备之间直接进行数据传送,
- 目前USB2.0的速度为480Mb/s,USB3.0达到5Gb/s即640MB/s
- 半双工差分
- 主从方式通信,
JTAG指令
- 是一种嵌入式测试技术,多个器件可以通过JTAG接口串联在一起进行测试
- 基于ARM处理器内核的嵌入式处理器芯片都有调试接口
存储器
S3C2410存储器
- 控制组件包括存储器控制器、总线控制器、外部主控器、NAND Flash控制器等。
- 存储器控制器提供访问外部存储器所需的存储器控制信号,支持大/小端模式,地址空间共1GB (8个BANK,每个BANK大小为128MB)。
- 以ARM芯片为核心的嵌入式系统其I/O与存储器采用统—编址方式,并不像x86那样采用的是I/O映射编址(独立编址)方式。
- BANK0只能是16位和32位总线宽度的访问,其他所有BANK可访问8位、16位和32位。
- 目前嵌入式处理器内部的Cache采用SRAM
- 嵌入式系统的主存储器是指系统内存。
程序存储
- 对于CPU使用最频繁的少量的程序代码和数据用SRAM作为高速缓冲存储器(Cache)存放
- 系统正在运行中的程序的大部分数据和代码存放在主存储器(内存)中
- 尚未启动运行的其余程序或数据则存放在容量大的外部存储器如磁盘中待命。
- Mask ROM是基于掩膜工艺技术的只读存储器,一旦生产出来信息不可改变,主要用于不可升级的成熟产品。
- 使用Cache的优点是只需要增加少许成本,就能使整个系统的性能得到显著提高。
- DDR是Dual Data Rate的缩写,指双倍数据速率;DDR2使原来DDR可预读取2位变成可预读取4位(或8位),把DDR的数据传输速率又提高了两倍(四倍)。
- FRAM(铁电随机存取存储器),既具有只读存储器非易失性的特点,又具有随机存储器可快速随机读写的特点,而且速度快,功耗低。
- MRAM(磁性随机存取存储器),是一种非易失性存储器,拥有SRAM的高速存取能力,以及DRAM的高集成度。
- 嵌入式系统的存储器以半导体存储器为主
存储器的分类
- 易失性存储器(即掉电后信息丢失)
SRAM(静态随机存取存储器)、DRAM(动态随机存取存储器)
- 非易失性存储器
E2PROM(电可擦可编程只读存储器)、Falsh ROM、磁盘和光盘存储器
1.说明:非易失性存储器有多种类型。以前使用较多的是MaskROM和E2PROM,目前使用较多是闪存,即Falsh Memory。
2.Mask ROM是基于掩膜工艺技术的只读存储器,一旦生产出来信息不可改变,主要用于不可升级的成熟产品存储程序或不变的
参数等信息;
3.Falsh Memory是一种长寿命的非易失性存储器,是近些年应用最广的只读存储器。
- 按照其存取特性可分为随机存取存储器(RAM)和只读存储器(ROM);
- 按照所处物理位置可分为片内存储器(芯片内置的存储器)和片外存储(外部扩展的存储器)以及外部存储设备;
- 按照存储信息的不同可分为程序存储器和数据存储器。
- 对于内存容量而言,1KB=1024B;而对于外存(如磁盘、U盘等)容量而言,1KB=1000B。
- 存储器带宽与存储器总线的工作频率(周期) 有关,也与数据线的位数(位宽、宽度)和每个总线周期的传输次数有关。
- 新型存储器FRAM、MRAM均非传统的半导体存储器。
Flash存储器
- 分为NOR Flash和NAND Flash两种闪存技术。
- NOR Flash按字节为单位随机存取,NAND Flash以页为单位随机存取。
- 数码相机和U盘采用NAND Flash
- ARM9、ARM11高性能嵌入式处理器使用的Cache存储器。
存储器的容量取决于存储单元的个数和存储器各单元的位数,而单元个数与存储器的地址总线有密切关系,因此存储器芯片的容量完全取决于存储器芯片的地址线的条数和数据线的位数。
存储器的带宽=工作频率*数据线宽度/8×传输数据次数(B)
容量V=2mxn,其中m是地址线条数,n是数据线位数
实时系统(RTOS)
- 主要特征是能够及时响应外部发生的随机任务请求并且能够在规定的时限内完成任务。RTOS的特点是响应中断请求并且完成相应中断服务子程序(ISR)的时间非常快。
- 特征:具有异步I/O和中断处理能力、任务切换时间和中断延迟时间确定、优先级中断和调度。
- VxWorks、RTAl和RTLinux
- 实时性能指标:响应时间、吞吐量和生存时间。
- 在实时系统中,在给定时间内系统可以处理的事件总数称为吞吐量(Throughput);实时系统中的另一个指标用于衡量输入数据的有效等待时间是生存时间,超过了这个时间,处理器即使接收到输入数据,也不能够给出有用的输出数据。
- 任务时限有两种: 截止时间,也就是任务开始执行时间到任务必须完成的时间间隔;任务执行预设时间,或者叫做任务最快完成时间,这是无中断响应情况下的任务最快执行时间。
- 可靠性、可预测性和时间约束性
- 实时系统对时间约束要求的严格性,使可预测性成为实时系统的一项重
要性能要求,它是指RTOS能够对外部事件的响应时间和实时任务的执行时间进行判断,以确定被事件触发的实时任务能否在规定的时间内完成。
- 响应时间是计算机从识别—个外部事件到做出响应的时间,其具体指标包括:中断延迟时间和任务切换时间。
- RTLinux基本的设计理念就是"架空"Linux内核,以便让其他实时进程能尽快地被执行。‘将Linux的任务以及Linux内核本身作为一个低优先级的任务,而实时任务作为最高优先级的任务。
- RTOS响应中断请求并且完成相应中断服务子程序的时间非常快,且这个时间必须具有某种程度的一致性。精细衡量这个时间一致性变化的术语是抖动。
操作系统与内核
硬实时操作系统: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、DOS
-
优点
内核精巧,结构紧凑,占用内存少,采取服务器方式实现
开发和维护方便,系统可以动态更新服务模块
接口一致,用户态任务不需要区分是内核级服务还是用户级服务
可扩展性与可配置性强,很合嵌入式系统的可裁剪要求
可靠性高,各服务进程在用户态运行,有自己的内存空间
支持分布式系统,服务器可以在不同的处理机上运行
所有进程请求使用统一接口,进程不需要区分内核模式和用户模式服务。
-
缺点
效率较低、性能相对较差,因为通信和上下文切换的开销大大增加
移植VxWorks操作系统有下列四种操作类型:宿主机移植、体系结构移植、目标板移植和升级以前Tornado集成开发环境版本的BSP到最新版本。
Linux内核
- 它为用户进程提供系统调用
- 系统调用是Linux中用户进程与操作系统之间的重要接口
- 进程调度模块负责控制进程对CPU资源的使用,所采取的调度策略是使得各个进程能够公平访问CPU,但并不保证内核能及时地执行硬件操作
- Linux内存管理模块的功能之一是屏蔽各种硬件内存结构的差异并向上返回统一的访问接口
- 网络接口模块包含网络接口驱动程序
- 支持进程之间各种通信机制,其通信机制主要包括信号、管道、消息队列、信号量、共享内存和套接字
- 5个子系统:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。
Linux操作系统
- Linux系统最初以Unix为原型,以实现POSIX标准作为其目标
- RTAI
- 嵌入式Linux操作系统主要由用户进程、OS服务组件和Linux内核(按照顺序)三大子系统组成。
- 嵌入式Linux的特点是:①开放源代码,不存在黑箱计数;②由于开放源代码,成本低;③内核紧凑,占内存空间最小为140KB;④网络功能强;⑤可移植性强;⑥可裁剪性强;⑦支持多任务;所以成为研发嵌入式软件的重要首选平台。
- 虚拟文件系统(VFS)在系统调用接口和内核所支持的文件系统之间提供了一个交换层
- Linux操作系统内核的网络模块可分为两部分:一部分提供对各种网络资源访问的控制,称为网络协议;另一部分提供对各种网络硬件的支持,称为网络驱动程序。
IOS:
可触摸层、媒体层、核心服务层、核心操作系统层
Android Q:
内核层、应用程序框架层、应用程序层
自由软件是一种可以不受限制地自由使用、复制、研究、修改和分发的软件,并不代表是免费软件。其中Linux遵从GPL授权许可;大部分自由软件通过互联网发布且不收取任何费用。
TinyOS
- UC Berkeley开发的开放源代码操作系统,属于深度轻量级的操作系统;专为嵌入式无线传感网络设计,功耗较低,特别适合传感器这种受内存、功耗限制的设备;
- TinyOS的技术特点是轻线程、主动消息事件驱动和组件化编程。
- 美国加州大学伯克利分校开发的主要用于无线传感器网络(iOS系统的)的操作系统名为Tinyos。
QNX
分布式实时操作系统,符合POSIX基本标准和实时标准,使其应用可以方便的进行移植;它具备一个很小的内核,即微内核的操作系统;内核提供4种服务:进程调度、进程间通信、底层网络通信和中断处理。
安卓采用堆层式软件架构的组成,分为四层,从低层到高层分别是内核、系统运行库、应用程序框架和应用。
硬件抽象层(HAL)
- 定义:嵌入式软件中直接访问底层硬件的例程集合。
- 在嵌入式系统软件结构中增加的HAL位于硬件电路板和内核操作系统之间
- 是嵌入式硬件电路板的最基本软件
- HAL的函数是移植操作系统的基础,装载操作系统映像到内存。
引导加载程序Bootloader
执行过程
系统中引导加载程序主要完成加电自检、外设存在自检、内存地址映射、初始化外围设备、内存寻址定位、加载并启动操作系统。
工作步骤
①初始化处理器及外设的硬件资源配置;
②建立内存空间的映射关系,使能MMU,将系统的外存和内存地址变换激活为最终调用操作系统内核做好准备;
③装载操作系统映像到内存;
④对Flash存储器编程;
⑤运行操作系统;
⑥传递系统启动参数;
⑦命令行解析和输入/输出控制。
在引导加载操作系统时,设置相关的寄存器和资源,跳转到操作系统所在的空间,执行其引导,这个过程中可以给内核传递参数,可以控制系统启动的模式。
执行阶段
- 大多数Bootloader都分成两个执行阶段,stage1和stage2。
- 依赖于CPU体系结构的代码,比如设备初始化代码等,通常都放在stage1中,且使用汇编语言来实现,以达到短小精悍的目的。基本步骤(按执行先后顺序)为:基本硬件初始化,为加载stage2准备RAM空间,拷贝stage2的执行代码到RAM空间中,设置栈区指针SP,跳转到stage2的C程序入口点。
- stage2则通常用C语言来实现,这样可以实现更复杂的功能,而且代码会具有更好的可读性和可移植性。
- 第一条指令一般会存储在某种类型的固态存储设备上,比如ROM、EEPROM或者Flash ROM等。
- 启动嵌入式Linux时,通常Bootloader程序会提供几种不同的OS装载方式:例如通过串口、以太网或USB接口装载。
U-Boot简介
- 全称Universal BootLoader,U-Boot是公认的功能最强、最具弹性以及更新最快的开放源码BootLoader,是遵循GPL条款的代码资源最完整的一个通用BootLoader
- U-Boot支持的处理器体系结构有PowerPC、ARM、MIPS系列、X86系列等处理器。对PowerPC系列处理器支持最为丰富,对Linux操作系统的支持最为完善。
- U-Boot支持的嵌入式操作系统有Linux、VxWorks、QNX、NetBSD、RTEMS、ARTOS、LynxOS、Windows CE等
- 它既支持启动加载模式,也支持下载模式
- 采用两个阶段完成操作系统的引导加载
uC/OS-Il、RTLinux、ECOS等是主要的开源嵌入式操作系统。
uC/OS-II操作系统的任务及其管理
任务状态
- 休眠态:任务驻留在内存中,但还没交给内核管理
- 就绪态:任务已经准备好可以运行了,但由于优先级比正在运行的任务优先级低,暂时还不能运行。不能运行;为确保l临界区代码的执行,在进入临界区之前必须关中断,执行完临界区代码之后要立即开中断;完成任务切换所需要的时间取决于CPU有多少寄存器要入栈。
- 运行态:任务得到了CPU的控制权正在运行中
- 等待态|挂起态
- 被中断态:发送中断时执行相应的中断服务,原来正在运行的任务暂时停止运行,进入被中断状态。中断嵌套可达255层。
- 系统总是运行处于就绪态任务中优先级最高的任务
- uC/OS-II的就绪任务等级在就绪表中,OSRdyTbl[]是就绪表的位图映像矩阵,每一位代表了一个优先级任务的就绪状态,称为就绪位,该矩阵最多可有64位。
- 在uC/OS-ll中,OSInit()函数先建立最初的任务就绪表,然后建立4个空白的数据链表。它们分别是任务控制块链表、事件控制块链表、标志链表和内存控制块链表。
- 当处于运行态的任务执行节拍延时函数OSTimeDly()后,该任务将转入挂起态。—旦预定的延时时间达到,该任务立即转入就绪态。
- 空闲任务是系统创建的第1个任务,它是必不可少的一个系统任务,也是优先级最低的任务
- 任务控制块包括任务的优先级、任务的状态字、指向任务堆栈戈]页的指针等。
main函数后跟着的是:OSInit()、OSTaskCreate()、OSStart()
OSInit():初始化内核
OSStart():启动多任务调度
OSCtxSw():任务切换函数
OSIntExit():中断级调度函数,标志着中断服务子程序的 终结,将中断嵌套层数计数器的值减1。
OSSched():上下文切换函数,判断进行任务调度的条件是否满足(oSlntNesting=0,oSLockNesting=0)
OSSchedLock():给调度器加锁,待当前访问释放锁后,该数据才可以被其他任务访问。
OSQCreate():创建事件控制块
OSSemPost():并不会立即发生任务切换;
中断服务程序只能用OSSenAcept()
任务构成
程序代码、任务控制块、任务堆栈。任务是操作系统的基本调度单位,每个任务都有自用栈。
uC/OS-Il的任务间通信
- uC/OS-Il系统中主要利用信号量、互斥信号量、邮箱或消息队列进行任务间通信。
- 通常用于解决优先级反转问题的是互斥信号量,适合处理多事件同步的是事件标志组。
软件架构
基于uC/OS-ll的嵌入式系统软件架构是一个建立在硬件系统上的四层软件结构,从上到下的顺序是:应用软件层,应用程序接口(API)层,uC/OS-ll内核,设备驱动层。
基本特点
-
uC/OS-II内核只提供任务调度、任务间通信与同步、任务管理、时间管理和存储管理等基本功能,资源消耗非常小。
-
源码公开。
-
uC/OS-II基本不包含设备驱动程序,只是一个纯内核。
-
uC/OS-Il驱动程序属于底层,需要系统开发商自行开发。
-
使用uC/OS-II的栈空间校验函数,可以确定每个任务到底需要多少栈空间。
-
OS_CPU_C.C用于创建任务的自用栈空间、OS_CORE.C为核心调度代码OS_MEM.C为内存管理、OS_TASK.C为任务管理、调用宏OS_ENTER_CRITICAL()执行关中断操作。
-
uC/OS-II操作系统内核进行任务级的调度有三个条件:①所有的中断服务程序均已经执行完毕②调度没有被禁止③任务就绪表中查找到的最高优先级任务的优先级比当前运行任务的优先级高。
uC/OS-III增加的主要特性
1.时间片轮转调度
2.内核对象的数量无限制
3.任务级的时钟节拍处理:节拍率10Hz-100Hz。
4.可针对处理器体系结构进行优化
5.时间戳
6.增强的内置性能测试功能
NiOS II HAL
开发工具
RVDS
- RVDS中包括工程管理器、编译连接器、调试器和指令集仿真器
- RVDS支持所有ARM微处理器芯片
- RVDS支持对Flash存储器的编程
- RVDS编译的代码比ADS1.2编译的代码执行效率高
- 支持硬件在线调试和软件仿真调试
ADS1.2
- ADS1.2把目标文件中的信息按照3种存储区域类型来进行划分,即划分为RO段、RW段、ZI段;
- RO段是指代码存储区和常数存储区,具有只读性质。
- 一个工程项目中至少应包含一个生成目标,ARM提供的可执行输出文件的模板包括了下面3个生成目标:Debug、Release、DebugRel。
- ADS1.2采用工程项目形式来管理应用程序中涉及的源文件、库文件、头文件等。
- 利用ADS1.2工具来进行地址映射,即在编译连接其工程项目时,有两种方式,即Simple连接类型和Scattered连接类型;
- 在采用Scattered连接类型时,需安提供一个scatter格式的配置文件,该配置文件是一个文本文件,描述ARM连接器在完成连接操作时所需要的分组及定位信息等。一个scatter文件中通常要描述一个下载时域的首地址、域的大小、域的属性,以及若干个运行时域的首地址、域的大小、域的属性、包含的输入段等信息。
- 在ADS1.2的集成开发环境中,若生成的输出文件需要包含所有的调试信息,那么,生成目标应该选择为Debug。若目标系统地址映射关系比较复杂时,应使用scatter格式的文件来说明地址映射方式。
调试
- 仿真平台(仿真开发平台)一般指嵌入式系统开发过程中使用的虚拟机管理软件、仿真软件或者指令集模拟器。
- 嵌入式应用程序经过交叉工具链生成映像文件之后,需要下载到目标机进行调试。调试完毕后映像文件必须由专用工具烧写到ROM中去,这种烧写工具俗称编程器。
- 驻留监控软件调试:一段固化在目标机ROM中的程序。 它是一种成本较低的调试方法,不需要专门的硬件调试和仿真设备。
JTAG
- 人们常用JTAG来表示满足IEEE 1149规范的边界扫描测试方法和TAP接口(称为JTAG接口),是一种用于片上调试技术的统称。
- JTAG标佳中规定TAP接口使用以下5根信号线:TCK、TMS、TDI、TDO和TRST,用于芯片和电路板的调试。
- 对于不支持JTAG调试,标准的嵌入式CPU,如MCS-51单片机,其软件固化要使用称为“编程器”的设备来进行。
开发平台
- 嵌入式系统的开发平台包含大量开发工具,软件开发工具通常包括:项目管理器、编辑器、编译器、连接器、定位器等;
- 这些软件开发工具往往都使用统一的用户界面并作为一个整体提供给开发人员使用,以提高开发工作效率;有的开发平台中还包含一些中间件和软件组件,以满足特定应用领域的各种应用开发;
- 嵌入式系统的开发平台大多采用宿主机-目标机的架构,宿主机是开发用机,目前大多数运行Windows操作系统,而应用软件的开发和调试都是通过宿主机开完成。
GCC
- Linux操作系统遵从GNU计划下的通用公共许可协议,而GNU开发的编程语言编译器称为GCC。
- GCC生成可执行文件时若用户未指定文件名,则GCC生成一个名为a.out的可执行文件。
- 针对ARM硬件平台的目标机,其GCC的基本命令格式是:arm_linux_gcc[options][filenames] .