计算机三级考试嵌入式系统重点精简汇总
计算机三级考试嵌入式系统重点精简汇总
第一章 嵌入式系统概论
1.1.1嵌入式系统
(1)特点:(1)专用性;(2)隐蔽性;(3)资源受限;(4)高可靠性;(5)实时性;(6)软件固化。
(2)应用:(1)冰箱、洗衣机、电饭煲、空调、摄影机、DVD播放器等;(2)数控机床、飞机、汽车、电梯、X光机、血压计等;(3)电话机、传真机、打印机、pos机、GPS导航仪、路由器等。
1.1.2嵌入式系统组成与分类
(1)逻辑组成:硬件和软件,分为处理器、存储器、I|0设备与I|O接口,数据总线;
(2)处理器:分为主处理器(CPU)和协处理器,由运算器、控制器、寄存器、高速缓冲存储器组成。
(3)CPU:4、8、16、32位都有。8和16使用最多,32和64发展主流。决定嵌入式系统性能,因素有:主频、指令系统、高速缓冲存储器的容量和结构、逻辑结构。
(4)I|O设备及接口:人机交互有按键、键盘、鼠标、触摸板、发光二极管、液晶显示器等;机机交互有各种传感器和电机。
(5)通用串行总线接口:USB、IEEE 1394、以太网等;异步串行接口:RS-232-C、RS-485.
串行:I2C(半双工)、SPI(同步)、UART(全双工异步)、USB。
(6)嵌入式芯片:支持实时处理;低功耗;结构可扩展;集成测试电路。
嵌入式处理芯片包括:微处理器,数字信号处理器(DSP),微控制器(单片机,MCU),片上系统(SoC)。
(7)微控制器(MCU):将整个计算机硬件的大部分甚至全部电路集成在一块芯片中。工作频率不高、存储容量小、功耗低。
(8)片上系统(SoC):将计算机或电子系统集成在芯片内。部分soc有多个处理器。大部分高端嵌入式系统都采用soc。
(9)嵌入式系统:按用途分类:军用、工业、民用;按实时性分类:非实时、软实时、硬实时;按产品形态:系统级产品、板级产品、片级产品;按技术复杂程度分类:低端(4|8位单片机)、中端(8|16)、高端(32|64)。
(10)应用举例:数码相机:低功耗8位MCU、实时操作系统和图像音频处理软件、简单的用户界面软件、图像大多采用JPEG标准。
1.1.3 Soc芯片
(1)SoC芯片分为通用和专用SoC芯片。
(2)IP核分为:软核、固核、硬核。
1.2.1数字电子文本
(1)我国汉字编码采用GB2312和GB18030标准.1个汉字=2字节。
UTF-8是单字节可变长编码;UTF-16是双字节可变长编码。这些都可以互相兼容。
(2)字符的形状的描述方法:点阵法和轮廓法。
1.2.2数字图像
(1)数字图像的获取:扫描、分色、取样、量化。
(2)颜色数目=2^像素深度。图像数据量=水平分辨率竖直分辨率像素深度/8/压缩比例.
(3)图像文件格式:BMP(Windows程序)、TIF(桌面出版)、GIF(网页、剪贴画)、JPEG(互联网和数码相机)、PNG(互联网和桌面出版),除JPEG大部分为有损外,其余均为无损。
(4)数字音频文件格式:WAV(未压缩)、FLAC(无损压缩)、APE(无损)、M4A(无损)、MP3(有损)、WMA(有损)、AC3(有损)、AAC(有损)。
(5)视频压缩:MPEG-1(应用于VCD、数码相机)、H.261(视频通话)、MPEG-2(DVD,数字卫星有线电视)、MPEG-4 ASP(低分辨率如手机、监控、MP4播放器)、MPEG-4 AVC(蓝光光盘、iphone、ipad等)。
1.3.1数字通信
(1)有线通信如光纤;无线通信借助无线电波传播,如卫星通信、蜂窝式移动通信。
1.3.2计算机网络
(1)以太局域网:数据传输速率10Mb/s~10Gb/s。
(2)无线局域网:11Mbps(802.11b)、54Mbps(802.11a和802.11g)、108Mbps(802.11n)、1000Mbps(802.11ac)。
采用IEEE 802.11协议 。
蓝牙(IEEE 802.15协议);短距离、低速率、低成本。
(3)以太网帧数据内容包括:MAC地址、控制信息、有效载荷、校验信息。
1.3.3互联网
(1)每个IP地址使用32个进制(4B),其中含有网络号和主机号两部分。A类以0开头,B类以10开头,C类以110开头。
(2)IP地址分为A类、B类、C类。
A类以0开头,7位网络号,24位主机号,故最多连接2^24-2=16777214台主机,适用大型网络;
B类以10开头,15位网络号,16位主机号,故最多连接2^16-2=65534台主机,适用中型网络;
C类以110开头,21位网络号,8位主机号,故最多连接2^8-2=254台主机,适用小型网络。
(3)IP地址可以多目的地址发送,即组播。
第二章
嵌入式处理器
2.1.1嵌入式处理器的结构类型
(1)体系结构分类:按指令集分类:复杂指令集(CISC),精简指令集(RISC);存储机制分类:冯诺依曼结构和哈佛结构;字长分类:8、16、32、64位结构;不同内核分类:51、AVR、MIPS、PowerPC等
(2)RISC的寻址模式单纯,指令简单,执行时间短(1个周期);只采用加载和存储两个指令对存储器读写操作。
(3)冯诺依曼结构对指令和数据分别存储,两条总线分别读取;哈佛结构将两者分开存储,但可以同时读取。
冯诺依曼结构:MSP430、少部分ARM;
和佛结构:51(CISC,其它均为RISC)、AVR、PIC、MIPS、PowerPC、MC68K、ColdFire、大部分ARM。
2.1.3 ARM处理器概述
(1)技术特征:单周期操作;只使用加载、存储;指令长度固定;三地址指令格式;低功耗;指令流水线技术。
(2)ARM9、ARM10、ARM11、Cortex系列均支持thumb指令集。
(3)Thumb-2指令集既有16位指令又有32位指令。
2.2.1 ARM处理器分类
(1)ARMv1、ARMv2、ARMv3都被淘汰。ARM7、ARM9和ARM11为经典ARM处理器。
(2)Cortex-A为应用处理器,面向高端应用,A=Application;
Cortex-R为实时嵌入式处理器,面向实时控制,R=Real time;
Cortex-M为嵌入式处理器,面向微处理器。
Cortex-R和Cortex-M被时常合并称为嵌入式处理器。
2.3.1 ARM处理器体系结构
(1)处理器可以工作在3种状态:ARM状态,Thumb及Thumb-2状态,调试状态。
(2)ARM和Thumb间的切换:当R0【0】=1时,执行BX R0指令使得ARM状态切换到Thumb状态;当R0【0】=0时,执行BX R0指令使得Thumb状态切换到ARM状态。
(3)工作模式:用户模式User、快速中断模式FIQ、外部中断模式IRQ、管理模式SVC、中止模式ABT、未定义指令模式UND,系统模式SYS。工作模式由当前程序状态寄存器CPSR的后五位决定。
2.3.2 ARM处理器的寄存器组织
(1)通用寄存器:R0-R15;均为32位。其中R0-R7无快速中断模式寄存器,R8-R12有,且不提供给Thumb模式使用,ARM和Thumb-2模式可以使用;R13可用作栈顶指针,R14可用作LR(程序链接寄存器),R15记录PC值;SPSR为备份程序状态寄存器,可以备份CPSR的数据。
(2)CPSR(简称状态寄存器):31位-26位分别为:
N:符号位,1表示负数,0表示正数;
Z:全0标志,1表示全0;
C:进借为标志,加法时1表示进位,减法时0表示借位;
V:溢出标志,1表示溢出;
Q:增强溢出,1表示溢出;
7-5位分别为:
I:中断禁止控制位,1表示禁止IRQ中断,0表示允许;
F:禁止快速中断控制位,1表示禁止FIQ中断,0表示允许;
T:ARM与Thumb指令切换位,1表示Thumb指令,0表示ARM指令。
2.3.3 ARM处理器的异常
(1)异常类型:复位RESET(0x00)、未定义指令UND(0x04)、软件中断SWI、指令预取中止PABT、数据访问中止DABT、外部中断请求IRQ(0x18)、快速中断请求FIQ(0x1C);
其中复位异常的优先级最高,任何情况下进入复位状态,系统会无条件跳转到地址0x00000000处执行程序第一条指令(此处通常放无条件跳转到初始化程序那里去)。
(3)中断响应过程:1.保存CPSR到SPSR中;2.设置CPSR后五位以设置工作模式(IRQ还是FIQ);3.将本来要执行的下一条地址(断点地址)保存到LR(即R14中);4.给PC赋值对应的中断向量地址。
从异常返回:恢复用户寄存器;复制SPSR到CPSR;恢复PC成断点地址;设置CPSR,开放中断。
2.3.4 ARM的处理器格式及数据类型
(1)大端模式:数据的高字节存储在低地址中;小端模式:数据的低字节存储在低地址中;系统复位一般默认为小端模式。
2.3.5 ARM处理器中的MMU和MPU
(1)MMU(存储器管理单元)功能:虚拟地址到物理地址的映射;存储器访问权限控制。
(2)MPU为存储器保护单元。
2.4.1 ARM指令分类及指令格式
(1)对于ARM指令集:8位立即数可以经过循环右移任意偶数位次得到32位操作数;
对于Thumb指令集:8位立即数可以经过左移任意位次得到32位操作数。(#表示立即数,#imm8#表示8位立即数)
(2)常用指令:ADD、LDR、STR、MOV、B、AND、ORR、LSL、LSR。
(3)指令条件码:
EQ:相等;
NE:不相等;
CS:无符号大于等于;
HI:无符号大于;
LS:无符号小于等于;
CC:无符号小于;
GE:有符号大于等于;
GT:有符号大于;
LE:有符号小于等于;
LT:有符号小于。
2.4.2 ARM指令的寻址方式
(1)寻址方式有:1.立即寻址(如MOV);2.寄存器寻址(如ADD两个寄存器得到地址);3.
寄存器间接寻址(如LDR R5,【R4】);4.基址加变址寻址(如LDR R5,【R4,#4】)等等。
第 三 章
嵌入式系统硬件组成
3.1.1嵌入式最小硬件系统
(1)嵌入式最小硬件系统由嵌入式处理器、存储器、复位电路、时钟电路、电源电路、调试测试接口组成。
(2)电源电路:嵌入式系统常用的电源模块时交流变直流(AC-DC)模块、直流到交流模块(DC-AC)以及低压差稳压器(LDO)。其中稳压器包括普通稳压器和低差压稳压器LDO。
(3)时钟电路:大部分嵌入式处理器为同步时序电路,且大部分内部装置了时钟信号发生器。无源晶振有两只引脚,有源晶振有四只引脚。
(4)复位电路:系统复位引脚为nRESET(n表示低电平复位)或RESET(不带n为高电平复位);ARM复位后指向唯一的地址0x00000000。
3.1.2基于ARM内核的典型嵌入式应用系统硬件组成
(1)嵌入式系统硬件由最小硬件系统、前向通道、后向通道、人机交互通道、相互互联通道组成。
(2)前向通道:输入接口,负责模拟量输入和数字量接入;
后向通道:输出接口;人机交互通道:键盘或触摸屏输入接口及LED显示的输出接口;
相互互联接口:RS-232串行通信接口、CAN通信接口、以太网通信接口、USB通信接口等。
3.2.1 ARM的AMBA总线体系结构及标准
(1)AMBA是用于连接和管理Soc中功能模块的开放标准和片上互连规范。
(2)AMBA1总线标准规定了两种类型总线:先进系统总线(ASB,连接高性能系统模块)和先进外围总线(APB,连接低性能外部接口),可使用两者构成来连接高速系统组件和低速外围组件。ASB和APB通过桥接器相连,
(3)AHB为先进高性能总线,用于连接高性能系统组件或高带宽组件。
3.2.3基于ARM内核的嵌入式芯片的硬件组成
(1)系统总线:电源管理及时钟控制器、测试接口、ARM内核、DMA控制器、USB主机、片上SRAM及Flash、中断控制器、LCD控制器;
外围总线:GPIO、UART、SPI、
C、
S、CAN、Ethernet、ADC、DAC、USB设备、WDT、Timer、RTC、PWM……
(2)定时计数组件:主要包括WDF(看门狗定时器)、Timer、RTC、PWM等;
WDF:在死机的时候复位;Timer:一般的定时;RTC:提供年月日时分秒;
PWM:用于脉冲宽度的调制。
(3)模拟通道组件:包括ADC和DAC,有的还带有比较器。ADC:模拟到数字;DAC:数字到模拟。
(4)互联通信组件:包括UART、
C、SPI、CAN、USB、Ethernet等
3.2.3常用ARM嵌入式处理芯片
(1)选择ARM芯片的原则:ARM内核;系统时钟频率(越高则ARM芯片处理速度越快);芯片内部存储器的容量;片内外围电路等。
(2)片内外围电路的选择包括下列方面:GPIO外部引脚条数;定时计数器;LCD液晶显示控制器;多核处理器;ADC;通信接口等。
3.3.1存储器层次结构
(1)三层:主存(内部由SRAM和Flash,片外扩展DRAM和Flash);缓存(即Cache,内部由SRAM等)、外存(由磁盘、CF卡等)。
3.3.2存储器分类
(1)按存取特性分类:随机存取存储器(RAM)和只读存储器(ROM);
按所处物理位置分类:片内存储器和片外存储器(片指的是芯片);
按存储信息的不同分类:程序存储器和数据存储器;
(2)DDR是Dual Data Rate的缩写,意思为双倍速率;DDR2是四倍速率;DDR3是八倍,DDR4是16倍。常用于Cortex系列高端应用市场。
(3)半导体存储器分为RAM和ROM;
RAM有SRAM(静态随机存取存储器)和DRAM(动态随机存取存储器);
ROM有MROM(掩模型只读存储器,信息不可改变)和PROM(一次可编程只读存储器,只能一次编程)和EPROM(紫外线可擦除可编程存储器,可10万次编程,编程速度慢)和
PROM(电可擦除可编程只读存储器,多次编程)和Flash(闪速存储器)。
Flash包括NOR Flash(以字节为单位随机存取)和NAND Flash(以页或行为单位随机存取)。
(4)新型存储器包括FRAM(铁电随机存取存储器,多次读写,使用广泛)和MRAM(磁性随机存取存储器,几乎无限次写入)。
3.3.3存储器的主要性能指标
(1)对于内存,1KB=1024B;对于外存,1KB=1000B。
(2)当地址线条数为m,数据线条数为n时,存储容量为
×n。
(3)并行总线带宽=总线频率数据宽度/8传输次数/总线周期 B/s;
串行总线带宽=总线频率/10 B/s。
3.4.1通用I|O接口GPIO
(1)GPIO接口提供的输入具备缓冲功能,输出具备所存功能;GPIO一般有三态,0态,1态和高阻态。
(2)GPIO的引脚一般有多种功能可供选择,可通过相关控制寄存器来控制引脚功能。
3.4.2集成电路互联总线接口
C
(1)全名为集成电路互联。串行半双工传输的总线标准,可以将微控制器和外围组件连接。
(2)
C总线的操作时序:
C总线只有两条信号线:一条是数据线SDA,一条是时钟线SCL;SDA上的数据必须在时钟的高电平周期保持稳定,它的高|低状态只会在SCL低电平时改变。
2.启动和终止:当SCL为高,SDA由高到低时启动;当SCL为高,SDA由低到高时工作停止,恢复空闲状态。
3.数据传输模式:传送时高位在前,低位在后,传送字节无限制。
4.总线仲裁:总计启动后,当主机发送的电平与自己发出的电平 相同 时,会继续占用主线。制裁发生在SCL高电平。
3.4.3串行外设接口SPI
(1)同步串行外设接口,使用四条线SCK(串行时钟线)、MISO(主机输入|从机输出数据线)、MOSI(主机输出|从机输入数据线)、SSEL(从机选择线)。
(2)每次从接收缓冲区读出1字节的数据;8个时钟周期完成一个字节。
(3)可以形成:
一主一从式系统:所有线(即所有接收和发送)都是单向的;
互为主从式系统:MISO、MOSI及SCK都是双向的;
一主多从式系统;
多诸多从式系统。
3.4.4串行异步通信接口UART
(1)全名为通用异步收发器。用于全双工串行异步通信。UART由发送器、接收器、控制单元、波特率发生器等构成。
(2)发送器可采用先进先出(FIFO)模式,也可采用普通模式;
接收器可以是FIFO模式接收,也可普通模式。接受和发送的字节可选择,有8B、12B、16B、32B、64B等。
(3)字符总以起始位为开始,停止位结束;起始位以0位标志,停止位以1为标志;数据位可为5位、6位、7位、8位。
3.4.5通用串行总线USB
(1)USB 2.0速度480Mb/s, USB 3.0速度5Gb/s;
(2)USB的端口可以连接一个USB集线器或一个USB设备使得最多可以支持127个外部设备。
(3)USB软件包括USB设备驱动程序、USB驱动程序和USB主控制器驱动程序。
(4)USB总线有四根信号线,采用半双工差分方式,用来传送信号并提供电源;
USB总线常采用主从方式,有一个主机负责管理所有USB设备的连接和删除、发起与USB设备的通信等。
3.4.6 高清多媒体接口HDMI
(1)HDMI是一种数字化音频/视频接口,适合影像传输,可不经过AD和DA转换就同时传送音频和视频信号。最高数据传输速度为10.2Gb/s。
(2)有两种连接口形式,一种是19针(Type A),另一种是29针(Type B)。
(3)具有即插即用的特点,可以自己选择合适的视频/音频格式。
3.4.7常用简单输入设备
(1)触摸屏分为电阻式触摸屏(软屏)和电容式触摸屏(硬屏);硬笔写字的属于电阻式,带多点触摸或滑动的为电容式。
(2)电阻式触摸屏属于电阻传感器,原理为:将触摸点(X,Y)的物理位置转换成代表X坐标和Y坐标的电压;电容式触摸屏的原理:当触摸屏幕时,人体手指会与导体层间形成一个耦合电容,四边电极发出的电流会流向触点。
3.4.8常用简单输出设备
(1)共阳极LED数码管的段电平为低电平则亮;共阴极则为高电平则亮。其中dp对应D7,a对应D0.
(2)LCD显示设备可分为LCD显示屏、LCD显示模块(LCM)和LCD显示器。
LCD显示屏自身不带控制器,没有驱动电路,仅仅是显示器件,价格最低;
LCD显示模块内置了LCD显示屏、控制器和驱动木块。
(3)PC机通常使用的是LCD显示器,除了显示屏还包括驱动器、控制器和外壳,是完备的LCD显示设备,价格最高。
嵌入式系统中使用比较多的是LCD显示屏和LCD显示模块,通国GPIO以并行方式连接或通过串行方式连接。
通用计算机使用的LCD显示器,包括显示屏、驱动电路、接口、电源和外壳,是完整的;接口又VGA、DVI标准。
3.5.1 S3C2410/S3C2440芯片的内部结构
(1)S3C2410/S3C2440是三星公司基于ARM920T核的两块嵌入式微处理器。
(2)特点:1.内部具有分离的16KB大小的指令Cache和16KB大小的数据Cache;
2.采用哈佛体系,程序存储器与数据存储器分开,分别具有各自的MMU;
3.采用五级指令流水线;
4.使用AMBA总线,对于高速组件采用AHB总线,低速则采用APB总线。AHB通过桥接器连接APB。
(3)S3C2410/S3C2440的SDI/MMC组件用于驱动SD存储卡和MMC存储卡;
S3C2440在S3C2410基础上增加了视频和音频接口。
3.5.3 S3C2410的时钟及电源管理组件
(1)MPLL(锁相环时钟)输入时钟可由引脚OM[3:2]来选择是采用外部时钟EXTCLK还是外接晶体利用内部震荡电路输出的时钟。
(2)四种模式:
1.正常模式:电源管理模块为内核及ARM芯片内部所有硬件组件提供时钟源,即所有设备处于开启状态,因此功耗比较大;
2.慢速模式:不使用PLL时钟,功耗降低,仅使用外部晶体或外部时钟提供给其他组件使用;
3.休眠模式:电源管理模块仅断开ARM内核时钟FCLK,让CPU处于休眠,但仍为外围组件提供时钟;
4.掉电模式:电源管理模块断开内部电源,除非唤醒逻辑有效,否则内核无功耗。
3.5.6 S3C2410的实时时钟RTC
(1)RTC主要功能包括:BCD数据、闰年产生器、告警功能、独立的电源端口、循环复位功能等。
(2)RTC采用单独的供电引脚和单独的时钟源。
(3)RTC组件的寄存器读/写有一个使能位,访问RTC之前需要打开它,它的功能是保护系统的实时时钟不被误写。
(4)RTC组件的寄存器只能以8位方式访问。
3.5.7 S3C2410的通用I/O接口GPIO
(1)GPIO端口有多个并行I/O接口。
GPA:仅作为地址线的控制线;
GPB:可作为输出或PWM输出;
GPC和GPD:可作LCD引脚;
GPE:可作为输入/输出,或I2C等串行总线引脚;
GPF和GPG:可作输入/输出,或设置外部中断;
GPH:可作输入/输出,主要作为UART引脚。
(2)每个端口都有控制寄存器、数据寄存器、上拉寄存器;
控制寄存器:决定引脚功能;
数据寄存器:存放输入数据或输出数据;
上拉寄存器:决定引脚是否要被内部上拉。
3.5.8 S3C2410的串行异步通信接口UART
(1)S3C2410有三个UART接口UART1、UART2、UART3,分别对应三个线路控制寄存器,三个的地址分别为0x50000000,0x50004000,0x50008000.
(2)UART的波特率:
UBRDIVn=INT(UCLK/(波特率×16))-1
UCLK也可以是PCLK等。
3.5.10 S3C2410的看门狗定时器WDT
(1)WDT的计数周期为:
t_watchdog=1/(PCLK/(预分频值+1)/分频值)
如果希望T时间内看门狗能复位,则计数初值为:
WTCON=T/t_watchdog.
其中WTCON为看门狗定时器的控制寄存器。
3.6.1基于UART的RS-232/RS-485接口
(1)RS-232采用负逻辑传输;RS-485采用差分信号传输(可消除共模干扰),且它的互联为同名端相连,即A与A相连。
第 四 章
嵌入式系统软件
4.1.1嵌入式系统软件特点
(1)嵌入式软件的特点:
软件硬件一体化;
软件代码时空效率要求高,实时性要求高;
软件可裁剪,去冗余;
软件应用环境复杂;
软件开发难度大;
软件面向用户、面向产品、面向应用,受限于功能和具体应用环境;
软件产业高度分散;
软件生命周期长。
4.1.2嵌入式系统的软件结构
(1)结构分为:简单的轮询结构;带中断的轮询结构;监控室操作系统和应用软件的结构;通用嵌入式操作系统+应用软件的结构。
4.1.3硬件抽象层和板级支持包
(1)硬件抽象层(HAL)是在操作系统和硬件之间设置的独立接口软件层。作用:对硬件进行抽象,支持上层软件在不同体系结构和硬件平台之间的移植。
(2)板级支持包(BSP)的功能:系统复位时的硬件初始化,包括处理器芯片和电路板的初始化;位操作系统提供硬件相关的驱动程序支持;引导加载操作系统。
(3)NiosⅡ是Altera公司推出的32位哈佛结构的通用RISC软件处理器。
它的HAL系统提供的服务有:
ANSI C标准库;外设驱动;HAL API;系统初始化;设备初始化
(4)BSP的调试分为两步:最小系统的调试;外围设备驱动程序的调试。
4.1.4引导加载程序
(1)bootloader(引导加载程序)负责系统的上电自检、硬件初始化、建立存储空间映射、配置系统参数、建立上层软件的运行环境并加载和启动操作系统。
(另一说法是 内存加电自检、外设存在自检、内存地址映射、初始化外围设备、内存寻址定位、加载和启动操作系统) 不同的bootloader功能不同,但核心都是引导和加载功能。
(2)嵌入式操作系统的加载方式
方式一:在ROM中直接运行操作系统代码;
方式二:在RAM中运行操作系统代码;
方式三:从外存储器中加载操作系统代码;
方式四:从通信端口加载操作系统代码。
(3)bootloader的启动过程可以是单阶段或者多阶段;
第一阶段:关闭中断;对硬件环境进行初始化(包括处理器内部的基本寄存器设置、系统基本参数设置和时钟;存储器等相关硬件)。常使用汇编语言实现。
第二阶段(通常采用c语言实现):进一步初始化;将内核代码和根文件系统映像从ROM复制到RAM;向内核传递启动参数;调用内核代码。
(4)U-boot(Universal Bootloader)是:开源bootloader软件;
支持:PowerPC、ARM7、ARM9、Xscale、MIPS系列、X86系列;
也支持下列嵌入式系统:Linux、VxWorks、NetBSD、QNX、RTEMS、ARTOS、LynxOS等。
4.1.5嵌入式系统的设备驱动程序
(1)VxWorks操作系统由高性能实时内核Wind、文件系统、I/O系统、网络协议栈和班级支持包组成(包括bootloader)。
4.2.1实时系统和实时操作系统
(1)实时系统评判关键是可预见性和确定性;时限是最重要指标。
(2)实时任务包括:硬实时任务;软实时任务;准实时任务。
(3)嵌入式系统和实时系统的关系是部分重合但不完全重合,像自然数和非正数间的关系。
(4)实时系统的关键特性:时间约束性(必须在规定时间内完成任务);可预测性(可以预测任务得完成时间);可靠性;交互性。
(5)实时操作系统(RTOS)采用机制:事件驱动;多级中断嵌套处理;任务优先级控制;实时抢占式调度。
(6)衡量实时操作系统性能的指标:中断延迟时间、任务切换时间、任务抢占时间。
(7)实时操作系统的实时指标:吞吐量;生存时间;响应时间。
(8)实时操作系统有VxWorks、RTEMS、RTLinux、RTAI等
(9)UNIX分委会认为实时操作系统应该具备7个特征:具有异步I/O和中断处理能力;任务切换时间和中断延迟时间确定;优先级中断和调度;抢占式调度;内存锁定;连续文件;同步。
4.2.2嵌入式操作系统概述
(1)突出特点:代码固化存储;可裁剪性;实时性;强稳定性,若交互性;硬件适应性。
(2)按实时性分类可分为:
硬实时操作系统,包括VxWorks、RTEMS、QNX、 μ c/OS-Ⅱ、Nuleus等;
软(或非)实时操作系统,包括WinCE和许多Linux。
按开发方式分类:专门为嵌入式环境开发;从通用计算机系统移植而来。
按商业模式分类:免费嵌入式操作系统;商业嵌入式操作系统。
(3)单(或宏)内核结构
优点:模块间可相互自由调用,功能切换和通信开销小;
缺点:占用内存资源多,维护工作量大。
单内核操作系统有: Unix 、 BSD Unix 、 Linux 、MS-DOS、Windows 9x、 Windows CE 、 Android 。
(4)微内核结构
优点:内核占用内存资源少;开发维护简单;可扩展性和可配置性高;可靠性强;支持分布式系统。
缺点:上下文切换和通信开销大,故效率较低、性能相对较差;
微内核操作系统有:AIX、Mach、Minix、VxWorks、QNX。
(5)Vxworks简介:
商用嵌入式实时操作系统;广泛用于通信、军事、航天等高新技术;采用微内核结构。
(6)QNX简介:
商业分布式可扩充实时操作系统;包含汽车、网络通信、核电站等;同时支持进程和线程两种任务实现方式。
4.2.3 Linux内核
(1)Linux没使用任务版本Unix的源码,但成功仿照并拥有了它的全部功能。
(2)自由软件必定是开源软件,功能和使用自由;但免费软件通常功能和使用时间受限、也不一定式开源软件。
(3)类Unix有:Linux、QNX、VxWorks、Android、IOS等。
4.2.4嵌入式Linux操作系统
(1)Linux的内核空间可分为三层:
最上层是系统调用接口(负责内核与应用程序进行交互,应用程序/GLIBC通过系统调用访问内核中的特定函数);
中间是内核的核心组件(支持引导加载程序、与DMA、MMU设置、中断处理相关的代码等);
最下层是BSP。
其中内核包含:1.初始化组件;2.进程调度器;3.内存管理器;4.虚拟文件系统;5.网络接口(例如在网络层支持IP协议,在传输层支持TCP协议,在TCP之上提供socket支持);6.进程间通信(IPC) (如管道、命名管道、信号、消息队列、共享内存、信号量、socket) ;7.可加载模块;8.设备驱动程序。
(2)Linux的构建:
常见的Linux发行版有: μ CLinux、RTlinux、MontaVista Linux、Wind River Linux、Xenomai、RATI、中科院红旗嵌入式Linux。
4.2.5 Android操作系统
(1)Android系统特点:高自由度、对第三方软件完全开放。
1.提供优秀的网络、绘图、3D处理能力;
2.免费和开放的操作系统平台,可由设备制造商任意修改;
3.Andorid上的应用程序可以兼容Andorid各种型号。
4.2.6 IOS操作系统
(1)原名iPhone OS,属于类Unix的商业操作系统。它的前身是UNIX-BSD。
4.3.1 μ c/OS嵌入式操作系统
(1) μ c/OS的特点:公开源码;
可移植(大部分代码由ANSI C语言编写);
可裁剪,可固化;时间确定性;
可多任务处理(最多可以管理255个任务);
抢占式内核;
多种系统服务(如任务管理、时间管理、信号量、事件标志组、互斥信号量、消息队列、内存分区管理)。
(2) μ c/OS-Ⅱ内核可以划分为:任务调度、任务管理、时间管理、任务间同步与通信、内存管理、系统管理。
源代码有下列组成:系统核心;任务管理;时钟管理;任务同步与任务间通信;内存管理;处理器相关代码。
4.3.2 μ c/OS-Ⅱ的任务及其管理
(1) μ c/OS-Ⅱ的任务构成:任务程序代码;任务堆栈;任务控制块(TCB)。
1.任务代码是没有返回值的C函数;
2.每个都有独立的栈空间,每个栈空间大小不同;
3.多个任务的TCB构成双向循环链表。
(2)任务状态:
休眠态:任务代码在内存中但还没交给 内核 调度;
就绪态:任务已具备运行条件但因为优先级比正在运行的任务低而暂不能运行;
运行态:任务获得处理器权限正在运行;(任何时刻下都只有一个任务处于运行态)
等待态(挂起态):正在运行的任务因为等待某一事件发生而将处理器使用权让给其他任务,自身挂起;
被中断态:因处理器执行中断服务程序而被暂停运行。
(3)任务调度: μ c/OS-Ⅱ最多可以管理64(后增加至255)个任务,0是最高优先级别,用户任务最多可以有56个;每个任务优先级唯一。
(4)OS_ENTER_CRITICAL()使系统进入临界状态,关闭中断;
OS_EXIT_CRITICAL()使系统退出临界状态,打开中断。
OSSchedlock()给调度器上锁,OSSchedUnlock给调度器解锁。
(5) μ c/OS-Ⅱ可通过全局变量OSIntNesting标识当前是否处于中断以及中断嵌套的层数,最多255层中断嵌套。
4.3.3 μ c/OS-Ⅱ的系统服务
(1)任务创建:OSStart()函数开启任务调度;OSTaskCreate()函数创建任务。
(2)任务删除:OSTaskDel()可以删除任务自身,也可以删除其他任务。
(4)创建事件控制块:OSSemCreate()、OSMutexCreate()、OSMboxCreate()、OSQCreate()。
(3) μ c/OS-Ⅱ实现任务间共享数据和任务间通信可以使用:信号量、消息邮箱、消息队列、互斥信号量、事件标志组。
(4) μ c/OS-Ⅱ启动过程中调用main函数,依次调用下列函数:
1.OSInit()函数:内核初始化;
2.OSTaskCreate()函数:任务创建;
3.OSStart():启动多任务调度功能。
第 五 章
嵌入式系统的开发
5.1.1嵌入式系统的开发过程
(1)嵌入式系统开发过程分为:需求分析与规格说明;系统设计;构件设计;系统集成与测试。
5.1.2嵌入式系统的开发平台与工具
(1)嵌入式系统开发特点:使用宿主机-目标机架构;与底层硬件控制程序关系密切;
软硬件资源受限;需要固化程序。
5.1.3嵌入式系统的调试
(1)JTAG的研究成果被接纳位IEEE 1149.1-1990规范,用于芯片和电路板的测试。
(2)JTAG标准规定TAP接口使用5根线:TCK,TMS,TDI,TDO,TRST。
(3)JTAG标准允许多个芯片的BSR(边界扫描寄存器)通过JTAG接口 串联 在一起,实现对多个器件的测试。
(4)JTAG标准规定TAP控制器终于有两种寄存器:数据寄存器和命令寄存器。
(5)程序调试不占用目标机资源,因此目标机的初始启动程序调试和硬件接口的调试,一般都采用JTAG,逻辑状态的目标机也采用JTAG调试。
(6)部分JTAG适配器也支持多种芯片的烧写功能,且速度较快。
(7)嵌入式系统的调试工具有:在线仿真器、JTAG适配器、驻留监控软件、指令模拟器。
5.2.1 ADS1.2工具软件
(1)嵌入式应用程序的源文件、库文件、头文件以及其他输入文件,可以按照 某种逻辑关系 进行分组,没有严格的规定。
(2)一个工程项目至少包含一个生成目标,可以是Debug、Release或DebugRel;且通常一个生成目标对应一个可执行的输出文件。
(3)当地址映射关系比较简单时,使用编译、连接选项来确定输入文件的连接顺序。
当地址映射关系比较复杂时,使用scatter格式的文件来确定连接顺序。
(4)建立工程项目的目的是生成一个能运行的输出文件,它是一个二进制文件。
(5)ADS 1.2把编译后的目标文件中的信息按照存储区域分为三类:
RO段(存储代码和常数)、RW段(存储初始值非0的全局变量)、ZI段(存储初始值为0的全局变量)。
(6)下载时域就是下载时的存储空间,运行时域就是运行时的存储空间。
5.2.2 RVDS
(1)RVDS支持所有ARM芯片,与ADS相比,生成的代码紧凑、执行效率高。
(2)RVDS开发工具套件包括:
工程管理器(IDE):用于源文件代码的编辑,并用工程项目的方式对源文件进行管理;
编译连接器(RVCT):对源文件进行编译连接,支持ARM和Xscale架构和 汇编、c/c++ 语言。
调试器(RVD):除了模拟器调试和在线仿真调试,还 支持多核调试和Flash ROM烧写功能。
指令集仿真器(RVISS):可以使嵌入式系统软件和硬件同时开发。
5.2.3 GNU
(1)GNU是GNU’s NOT Unix的首字母组合,是工具套件。
(2)GCC是GNU中的核心套件,是编译器。它能将C语言、c++语言和汇编语言编写的源程序以及库文件编译连接成执行文件。过程为:预处理、编译、汇编、连接。
(3)所有被编译和连接的源文件中必须且仅有一个main函数,因为main函数是整个应用程序的入口。
(4)-g使得编译器在编译时产生一个用于调试的符号表,可以用于对源程序进行调试。
命令为arm-linux-gcc-g-o test test.c,该文件名为test.c。
(5)GDB是GNU中的程序调试工具,基本命令有:
file:装入需要调试的可执行文件;
run:执行当前被调试的程序。
kill:终止当前被执行程序;break:设置断点,执行到断点时被挂起;quit:中止GDB。