三级嵌入式系统.docx
- 文档编号:7982967
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:15
- 大小:29.57KB
三级嵌入式系统.docx
《三级嵌入式系统.docx》由会员分享,可在线阅读,更多相关《三级嵌入式系统.docx(15页珍藏版)》请在冰豆网上搜索。
三级嵌入式系统
三级嵌入式系统学习总结
一第一章
1.嵌入式系统概论
嵌入式系统中的软件一般都固化在只读存储器中,用户不能随意更改其中的程序功能。
嵌入式系统的逻辑组成:
1)处理器2)存储器3)I/O设备与I/O接口4)数据总线5)软件
嵌入式处理芯片有四种类型:
1)微处理器2)数字信号处理器3)微控制器(单片机)4)片上系统
微控制器MCU的低端产品并不会因为高端产品的出现而衰落
在32位MCU中,绝大多数使用RAM内核
EDA:
电子设计自动化
IP核可以分为三种:
软核、硬核、固核
2.嵌入式系统与数字媒体
计算机中常用的最广泛的西文字符及其编码是ASCII字符集和ASCII码,即美国标准信息交换码,共有128个字符,一个字符占一个字节。
我国目前广泛使用的汉字编码国家标准有GB2312和GB18030
GB2312只有6763个汉字,不够用
GB18030字符集与国际标准UCS/Unicode字符集基本兼容。
GB18030采用不等长的编码方法,单字节编码表示ASCII码,双字节编码表示汉字,与GB2312保持向下兼容,四字节编码表示其他字符
Unicode最新版本是6.3。
UCS/Unicode在计算机中具体实现时采用不同的编码方案,最常用的是UTF-8和UTF-16,UTF-8采用的是单字节可变长编码;UTF-16采用的是双字节可变长编码
文本的类型可以分为简单文本、丰富格式文本、超文本
图像的数据量=图像水平分辨率*图像垂直分辨率*像素深度/8(像素深度指的是每个像素用多少个二进制数来表示)
数字视频的数据量非常大,在进行传输时必须进行压缩,压缩编码标准是国际标准化组织(ISO)制定的,其名称为MPEG。
无线局域网采用的协议主要是IEEE802.11(俗称WIFI)
3.数字通信与计算机网络
微波是一种300MHz-300GHz的电磁波
计算机网络的组成:
1)计算机等智能电子设备2)数据通信链路3)通信协议4)网络软件
以太局域网:
1)发送数据设备必须把要传输的数据分成小块(帧)进行传输,一次只能传输1帧;
2)局域网中的每一个终端都有自己唯一的标识,称为物理地址或MAC地址,在发送的每一帧数据中,必须包含自己的MAC地址和接收终端的MAC地址
3)IP协议定义了主机的概念,所有主机及使用一种统一格式的地址标识,称为IP地址。
4)以太局域网大多是由集线器或者交换机组网
计算机网络的类型:
1)局域网2)城域网2)广域网
IP地址分为A、B、C三类。
IP是由四段数字组成,共32位,8位一段。
A类IP段 到段和127段不使用)
B类IP段 到
C类IP段 到
XP默认分配的子网掩码每段只有255或0
A类的默认子网掩码 一个子网最多可以容纳1677万多台电脑
B类的默认子网掩码 一个子网最多可以容纳6万台电脑
C类的默认子网掩码 一个子网最多可以容纳254台电脑
二第二章
1.嵌入式处理器
嵌入式处理器按照指令集可以分为复杂指令集结构和精简指令集结构,按存储机制可以分为冯诺依曼结构及哈佛结构,按字长可以分为8位、16位、32位等
精简指令集结构采用加载和存储两种指令对存储器进行读写操作。
ARM内核采用多层次的存储结构,在处理器与主存储器之间加入CACHE,综合了哈佛结构和冯诺依曼结构的优点。
ARM处理器的主流为32位,其主要特征如下:
1)单周期操作2)只是用加载/存储指令访问内存3)指令长度固定4)三地址指令格式5)指令流水线格式6)低功耗设计ARM由三种指令集,分别是:
1)ARM指令集2)Thumb指令集3)Thumb-2指令集
2.典型ARM处理器介绍
ARM处理器分为5类,分别是:
1)经典ARM处理器2)ARMCortex嵌入式处理器3)ARMCortex实时嵌入式处理器4)ARMCortex应用处理器5)ARM专家处理器
ARMCortex处理器包括:
1)Cortex-A面向高端应用的处理器2)Cortex-R面向实时控制的处理器3)Cortex-M面向微控制器的处理器
3.ARM处理器体系结构
ARM处理器的工作状态:
1)ARM状态,即32位状态2)Thumb状态,即16位状态3)调试状态
ARM处理器有7种工作模式,分别是1)用户模式User2)快速中断模式FIQ3)外部中断模式IRQ4)管理模式SVC5)中止模式ABT6)未定义指令模式UND7)系统模式SYS
ARM处理器由37个寄存器,包括31个通用寄存器和6个状态寄存器,通用寄存器中不分组的有8个,即R0-R7。
ARM处理器用两种模式存储数据,一是大端模式,即32位的高字节存放在低地址中,低字节存放在高字节中;二是小端模式,即32位的高字节存放在高地址中,低字节存放在低字节中。
MMU,即存储器管理模块,作用是进行虚拟地址到物理地址的映射、存储器访问权限控制
MPU是存储器保护单元
4.ARM处理器指令集
指令的条件码:
EQ:
相等
NE:
不相等
CS:
无符号数大于或等于
CC:
无符号数小于
HI:
无符号数大于
LS:
无符号数小于或等于
GE:
带符号数大于或等于
LT:
带符号数小于
GT:
带符号数小于或等于
LE:
带符号数小于或等于
PL:
正数或0
块拷贝寻址举例:
LDMIAR0,{R1,R2,R5,R9}R1✍[R0],R2✍[R0+4],R3✍[R0+8],R4✍[R0+12]
STMIAR0,{R1-R7}[R0]✍R1,[R0+4]✍R2,[R0+8]✍R3,[R0+12]✍R4,[R0+16]✍R5……
程序状态寄存器访问指令举例:
MRSR0,CPSR传送CPSR中的值到R0
MSRCPSR,R0传送R0的值到CPSRs
5.ARM汇编语言程序设计
意会
三第三章
1.嵌入式系统硬件组成概述
最小系统的构成:
嵌入式处理器、存储器、复位电路、电源电路、时钟电路、调试测试接口
典型嵌入式应用系统的硬件组成:
最小硬件系统、前向通道、后向通道、人机交互通道以及相互互联通信通道。
前向通道即输入接口,由模拟量输入接口和数字量输入接口组成;后巷通道即输出接口,由模拟输出接口和数字输出接口组成;人机交互通道即输入输出接口;
2.嵌入式处理芯片
AMBA(AdvancedMicrocontrollerBusArchitecture)先进微控制器总线体系结构
AMBA规定了两种类型的总线,分别是系统总线和外围总线,通过桥接器进行连接
与系统总线连接的部件:
电源及时钟控制器、内核、DMA、外部存储器控制接口、USB主机、SRAM、中断控制器、LCD控制器;
与外围总线连接的部件:
GPIO、UART、SPI、IIC、IIS、USB设备、WDT、TIMER、RTC、PWM、ADC/DAC、CAN、Ethernent。
片内程序存储器常用FlashROM,片内数据存储器常用SRAM。
3.嵌入式系统的存储器
嵌入式系统的存储器结构:
嵌入式处理器(内部L1/L2Cache)、主存储器(内存)、外部存储器(外存),Cache由SRAM承担
MROM:
掩膜只读存储器,出厂后信息确定,无法改变;
PROM:
一次可编程存储器
EPROM:
紫外线可擦除的只读存储器
EEPROM:
电擦除可编程存储器
FLASHROM:
闪存;NORFLASH和NANDFLASH是流行的闪存
新存储器:
FRAM(铁电存储器)、MRAM(磁性存储器)
存储器容量=单元总数*数据位数/单元
并行总线的存储器带宽=总线频率*数据宽度/8*传输次数/总线周期
串行总线的存储器带宽=总线频率/10
4.I/O接口及常用的GPIO
GPIO提供的输入具有缓冲功能,输出有锁存功能
IIC总线有两条数据线,分别是数据线SDA和时钟线SCL。
SCL为高,SDA由高变低时启动传输,SCL为高,SDA由高变低时停止传输。
传输时高位在前,低位在后,传输的第一个字节为地址,地址的最后一位指示数据传输方向,第9位为应答位。
总线控制遵循低电平优先的原则。
SPI是同步串行接口,一般使用四条线,分别是时钟、输入、输出、片选。
SPI发送数据时,数据从主机中从左向右发送给从机(主机数据左对齐),从机数据从右向左发送给主机(从机数据右对齐),发送数据时,高位在前,低位在后
UART:
常用于全双工串行异步通信,发数据时,低位在前,高位在后
USB:
最多可以连接127个设备。
USB系统由USB硬件和USB软件组成。
硬件中的主控制器包括一个根集线器,传输时采样翻转不归零。
采用半双工差分方式传输数据。
触摸屏分为电阻式和电容式
5.ARM内核典型处理器芯片
S3C2410是韩国三星公司制造的微处理器,以下都是S3C2410的有关介绍
电源管理模块有正常模式、慢速模式、休眠模式、掉电模式。
任何情况下复位操作均进入正常模式,在掉电模式和休眠模式下,只要有任何一个外部中断EINT或者RTC时钟中断发生,均将返回到正常模式。
总共由5个16位定时器timer,4个具备PWM的功能。
定时器输入时钟频率=PCLK/(预分频值+1)*时钟因子
有三个UART,UBRDIV=INT(UCLK/(波特率*16))-1,UCLK可以是PCLK,也可以是UEXTCLK。
看门狗定时器的技术脉冲周期为:
t_watchdog=1/(PCLK/(预分频值+1)/分频系数),计数初值为WTCON=T/t_watch_dog
6.嵌入式系统外部通信接口
RS-485采用差分信号传输方式
CAN总线也使用差分的方式传输
四第四章
在uC/OS-II中,任务或者中断服务可以通过事件控制模块(ECB)相其他任务发出信号
1.嵌入式系统的软件组成
嵌入式系统的特点:
软件与硬件一体化、软件代码时空效率要求高、软件可剪裁、软件应用环境复杂、软件开发难度大、软件面向用户、面向产品、面向应用、软件产业高度分散、软件具有较长的生命周期。
嵌入式系统的软件结构:
简单的轮询结构(只进行查询操作)、带中断的轮询结构、监控式操作系统+应用软件的结构、通用嵌入式操作系统+应用软件的结构。
高端嵌入式系统的软件结果层次示例:
硬件层、硬件抽象层、操作系统层、中间件层、应用软件层。
中间件是指除了操作系统内核、设备驱动程序和应用软件之外的系统软件。
硬件抽象层(HardwareAbstractLayerHAL)和板极支持包(BoardSupportPackageBSP)是嵌入式系统的底层软件,引入HAL对硬件进行抽象,通过硬件抽象层应用编程接口(HALAPI)向上提供服务。
BSP在系统复位之后负责系统软硬件环境的初始化,包括三个方面的内容,一是系统复位时的硬件初始化,包括处理器芯片的初始化和电路板的初始化,二是为操作系统提供硬件相关的驱动程序支持,三是引导加载操作系统。
BSP是操作系统正常运行的前提,其效率和稳定性直接影响整个系统的性能及稳定性。
引导加载程序(引导程序)bootloader是底层软件的一部分,嵌入式系统上电后首先运行引导加载程序,进行系统上电自检、硬件初始化、建立存储空间映射、配置系统参数、建立上层软件运行环境,加载和启动操作系统等等。
嵌入式操作系统的加载方式:
1)在ROM中直接运行操作系统代码2)在RAM中运行操作系统代码3)从外存储器加载操作系统代码运行4)从通信端口加载操作系统代码运行。
引导加载程序的运行过程,一是让嵌入式系统正常运起来,与处理器体系结构相关的硬件初始化和板极初始化等操作通常在第一步完成,一般用汇编语言来写。
第二是实现操作系统加载的功能,用C语言实现。
设备驱动程序是指直接与硬件相互作用并控制硬件的软件,是对硬件操作的抽象。
2.嵌入式操作系统
实时系统(Real-TimeSystem)是必须在有限和确定的时间内对外部事件做出响应的信息系统。
实时系统的关键特性:
1)时间约束性2)可预测性3)可靠性4)交互性
硬实时任务:
必须在给定的时间内完成,超过时限会引起重大的错误
软实时任务:
超过时限不会引发致命错误,而是造成任务的服务质量下降
准实时任务:
通常允许偶尔错过最后时限,若超过时限,所进行的操作或计算没有任何意义。
实时操作系统采用如下的机制来保持对实时任务的响应和处理的时间确定性:
1)事件驱动2)多级中断嵌套处理3)细粒度的任务优先级控制4)实施抢占式调度。
实时操作系统的实时性指标:
评价实时操作系统的实时性最重要的指标是响应时间,即系统从事件请求开始到任务完成的时间间隔。
除此之外,还有以下的几点:
1)中断延迟时间:
从接收到可屏蔽中断请求到操作系统做出响应并转入中断服务程序所需要的最长时间
2)任务切换时间:
操作系统在两个独立且具有相同优先级的就绪态任务之间切换所需要的时间
3)任务抢占时间:
系统将优先权从低优先级的任务转移到高优先级任务所需要花费的时间。
嵌入式操作系统的特点:
代码固化存储、可裁剪、实时性、强稳定性、硬件适应性。
嵌入式操作系统的分类:
1)按实时性分
硬实时操作系统:
如VxWorks、RTEMS、QNX、uC/OS-II、Nucleus;
软实时操作系统:
如WinCE、多种嵌入式Linux系统
2)按开发方式:
专门为嵌入式环境开发的嵌入式操作系统
从通用计算机操作系统移植而来的嵌入式系统
3)按商业模式:
免费的嵌入式操作系统
商业嵌入式操作系统
操作系统是由内核、用户界面、中间件、使用程序等组件组成的,内核起着最重要的作用,其作用是管理系统资源,支持多任务并发执行。
单内核可以分为整体结构和分层结构两种类型。
单内核的优点是性能较好系统各个组件可以相互调用。
缺点是占用资源多,维护工作量大。
单内核的操作系统有:
Unix、BSDUnix、Linux、MS-DOS、Windows9x(Windows95/98/ME)、WindowsCE、Android操作系统。
微内核结构:
操作系统仅仅将必须的基本功能放入内核,其他功能在内核之外。
采用纯粹微内核的操作系统有AIX、Mach、Minix、VxWorks、QNX等。
常见的嵌入式操作系统:
VxWorks:
采用的是微内核结构
QNX:
类Unix的实时操作系统,是非常成功的微内核操作系统,其内核仅仅提供进程调度、进程间通信、底层网络通信和中断处理。
NucleusPLUS:
抢占式多任务商业操作系统内核
RTEMS:
实时多处理器系统
TinyOS:
专门为硬件资源极为有限的无线传感器网络应用而量身定制的操作系统
eCOS:
嵌入式可配置操作系统
Linux是单内核结构,采用模块化设计,支持内核线程。
Linux内核可以分为三个层次:
最上层是系统调用接口、中间层是内核的核心部分、最下层是BSP。
Linux内核内部包含了若干相关的组成部件,包括1)初始化部件2)进程调度器3)内存管理器4)虚拟文件系统5)网络接口6)进程间通信7)可加载模块8)设备驱动程序
Linux实时化技术的三个途径:
1)内核补丁方式2)双内核方式3)超微内核方式
嵌入式linux发行版本:
uClinux、RTlinux、MontaVistaLinux、WindRiverLinux、RTAI、Xenomai。
Android系统采用堆层式软件架构,分为四层,从底层到高层分别是Linux内核、系统运行库、应用程序框架和应用程序。
其中,系统运行库由android运行环境和组件库两部分组成。
IOS操作系统架构分为四个层次,分别是核心操作系统层、核心服务层、媒体层、触控界面层。
3.uC/OS-II嵌入式操作系统
uC/OS-II的特点:
1)公开源码的高质量实时内核
2)可以移植
3)可裁剪、可固化
4)时间确定性
5)多任务
6)抢占式内核
7)多种系统服务
uC/OS-II的源代码主要有以下几部分构成:
1)系统核心
2)任务管理
3)时钟管理
4)任务同步与任务间通信
5)内存管理
6)处理器相关代码
在uC/OS-II中,任务是操作系统的基本调度单位,由操作系统内核管理。
任务由三部分构成,分别是任务的程序代码、任务堆栈和任务控制块。
每一个任务的栈空间大小不同,在文件OS_CPU.H中定义了一个数据类型OS_STK,在应用程序中定义任务堆栈的栈区只需要声明一个OS_STK即可,如OS_STKTaskStk[TASK_STK]。
uC/OS-II的任务处于五种状态之一,分别是等待态、休眠态、就绪态、运行态和被中断态。
休眠态指任务代码驻留在内存中还没有交给内核调度的状态;就绪态指任务已经具备运行的条件但因优先级比正在运行的任务低而暂时不能运行的状态;运行态指任务已获得处理器使用权而正在运行的状态;等待态也称为挂起,指正在运行的程序因为等待某一事件发生而将处理器的使用权让出给其他任务而自身挂起;被中断态指因处理器执行中断而被暂停运行的任务状态。
uC/OS-II可以管理64个任务,有64个优先级,0是最高优先级别。
最低优先级别由OS_LOWEST_PRIO来定义。
任务分为用户任务和系统任务,系统预定义了两个系统任务为应用程序服务,即空闲任务和统计任务。
系统总是把最低优先级固定赋给空闲任务。
uC/OS-II采用的是基于优先级的任务调度。
内核通过OSIntExit()判断是否存在更高优先级的就绪任务。
利用宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()实现关中断和开中断。
利用函数OSSchedLock()和OSSchedUnLock()给调度器上锁和解锁。
通过函数OSStart()开始任务调度之前创建
函数OSTaskCreate()和OSTaskCreateExt()都可以创建任务
函数OSTaskDel()既可以删除任务本身,也可以删除其他的任务。
删除自己的调用形式为:
OSTaskDel(OS_PRIO_SELF)
函数OSTaskDelRel()的作用是让某个任务使用完资源后先释放资源,再执行OSTaskDel来删除自己
函数OSTaskSuspend()可以挂起一个任务,被挂起的任务只能等待其他的任务调用OSTaskResume()函数才能实现任务恢复
函数OSTimeTick()返回是否等待超时或等待事件的任务是否超时
用UNIT32UOSTimeGet()获得tick计数器的当前值,可以调用OSTimeSet()改变tick计数器的当前值。
通过OSTimeDly()或者OSTimeDlyHMSM()延迟处于运行态的任务
由OSSemCreate()函数创建信号量
由OSSemDel()函数删除一个信号量
由OSSemPost()释放信号量
由OSSemPend()等待信号量
由OSSemAccept()无等待的请求信号量
由OSSenQuery()查询信号量状态
调用OSInit()进行内核初始化
五第五章
1.开发嵌入式系统的基础知识
(1)嵌入式系统的开发过程
1)需求分析与规格说明
2)系统设计:
根据规格说明书中所描述的系统需要实现的功能,确定如何实现这些功能的硬件和软件结构。
3)构件设计:
设计或者选择符合系统结构和规格说明中所需要的具体构件,有通用的构件,如CPU、存储器芯片,也有专用的构件,如AX88796(不知道是什么玩意)
4)系统集成与测试
(2)嵌入式系统的开发平台与工具
嵌入式系统的开发特点
1)使用宿主机-目标机的开发架构
2)与底层硬件控制程序的关系密切
3)软硬件资源受到限制
4)需要固化程序
IDE(IntegratedDevelopmentEnvironment):
集成开发环境
(3)嵌入式系统的调试
四种调试技术:
1)在线仿真器(In-CircuitEmulatorICE):
ICE具有与索要开发的嵌入式系统相同的嵌入式处理器,进行调试时,用在线仿真器取代被调试系统的处理器。
2)片上调试技术JTAG
3)驻留监控软件调试:
使用驻留监控软件(ResidentMonitors),即固化在目标机ROM中的程序,在目标机中运行。
4)指令集模拟器(InstructionSetSimulatorISS)在宿主机上模拟应用程序在目标机上润兴行为的一个软件工具。
主要应用于没有目标机开发板硬件、有开发板硬件,但使用开发板成本高、被调试的程序模块不需要在实际开发板上执行、对模块代码进行语法检查、避免因对硬件不熟悉而在调试硬件方面耗费过多精力。
常用的两种指令集模拟器:
ARMulator、SkyEye
2.系统开发工具软件
(1)ADS1.2工具软件(ARMDeveloperSuite):
支持开发的嵌入式应用软件通常是无操作系统的,即使有,也是uC/OS-II这样的小型系统。
ADS1.2的工程项目:
一个工程项目至少应包括一个生产目标,即用于生成特定输出文件的生成选项以及所用的全部文件的集合。
生成选项包括汇编选项、编译选项、连接选项和连接后选项。
三个可执行文件的模板:
1)Debug:
生成的额输出文件包括所有调试信息,用于在开发过程中使用;
2)Release:
生成的输出文件中不包括调试信息,用于生成实际发行的软件
3)DebugRel:
生成的输出文件包含了基本的调试信息。
当地址映射关系比较简单时,使用编译、连接选项来确定输入文件的连接顺序
当地址映射关系比较复杂时,使用scatter(分散加载)格式的文件来确定输入文件的连接顺序。
连接中的地址映射:
ADS把编译后的目标文件信息按照3种存储区域类型进行划分,分别是:
1)RO端段:
代码存储区和常数存储区,具有只读的性质
2)RW段:
指初始值为非0的全局变量数据区,具有可读可写的性质
3)ZI段:
指初始值为0的全局变量数据区,包括未初始化的全局变量,具有可读可写的性质。
下载时域和运行时域:
下载时域是下载时的存储空间;运行时域是运行时的存储空间。
1)simple连接类型:
应用于地址映射简单的工程项目。
RWbase文本框配置的是RW字段的和ZI字段运行时域的地址,输入的地址值必须是字对准的,即能被4整除。
2)对地址映射关系较为复杂的项目,使用scatter连接类型,需要提供一个scatter格式的文件(.scf)。
配置文件是一个文本文件,使用BNF语法来进行描述。
在scatter类型下,下载时域的语法结构如下:
Load_nameBase_AddAttributesize{…}
Load_name是下载时域的名称,是下载时域的唯一标识。
Base_Add是下载时域的首地址,Attribute是下载时域的数属性,可省略。
size是下载时域的容量大小。
在scatter类型下,运行时域的描述语法结构如下:
Exec_nameBase_AddAttributeSize
Exec_name是运行时域的名称。
属性可省略。
在scatter类型下,输入端的描述结构如下:
*代表若干个任意字符,?
代表一个任意字符
Load_10x00000x8000
{
Exec_10x00000x8000
{
*(+RO)
}
Exec_20x100000x6000
{
*(+RW,+ZI)
}
}
上述是一个简单的配置文件,定义了一个下载时域,名称为Load_1,首地址是0x0000,域的容量是0x8000,定义了两个运行时域,第一个名称为Exec_1,首地址为0x0000,容量为0x8000,域中包含了所有的代码和常数,即包含了所有RO属性的输入段。
第二个域中包含了所有的RW、ZI属性的输入段。
(2)RVDS(RealViewDevelopmentSuite)
要使用RVDS来调试程序,必须使用RealView-ICE仿真器
RVDS的功能模块包括工程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 三级 嵌入式 系统