计算机三级考试嵌入式系统开发技术复习资料整理大全.docx
- 文档编号:8768852
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:20
- 大小:248.44KB
计算机三级考试嵌入式系统开发技术复习资料整理大全.docx
《计算机三级考试嵌入式系统开发技术复习资料整理大全.docx》由会员分享,可在线阅读,更多相关《计算机三级考试嵌入式系统开发技术复习资料整理大全.docx(20页珍藏版)》请在冰豆网上搜索。
计算机三级考试嵌入式系统开发技术复习资料整理大全
2014年计算机三级考试嵌入式系统开发技术复习资料整理大全
1.嵌入式系统的定义嵌入式计算机系统简称为嵌入式系统,将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。
嵌入式系统:
、以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
嵌入式操作系统的特点:
可固化、可配置、可剪裁、独立的板级支持包,可修改、不同的CPU有不同的版本、应用的开发需要有集成的交叉开发工具
嵌入式操作系统的组成:
嵌入式操作系统、操作系统内核、文件系统、网络协议栈、GUI、USB协议栈等
2.通用计算机系统与嵌入式系统的比较
形式和类型看得见的计算机。
按其体系结构、运算速度和结构规模等因素分为大、中、小型机和微机。
组成通用处理器、标准总线和外设。
软件和硬件相对独立。
开发方式开发平台和运行平台是通用计算机
二次开发应用程序可重新编程
形式和类型看不见的计算机形式多样应用领域广泛,按应用来分类
组成面向应用的嵌入式微处理器,总线和外部接口多集成在处理器内部,软件与硬件是紧密集成在一起的。
开发方式采用交叉开发方式,开发平台一般是通用计算机,运行平台是嵌入式系统。
二次开发一般不能在编程
微处理器构成的嵌入式系统(以家电为例)
4位、8位、16位、32位处理器
简单的冰箱、洗衣机、微波炉、电视机(CRT电视)
80-90年代的发达国家的高端家电=2010年的家电下乡产品
4位处理器固化的专用嵌入式芯片
除了媒体播放器和LCD电视机以外的量产的智能家电
8位处理器、需要写程序进去的产品
3.单片机又称微控制器(Microcontroller)(MCU)将嵌入式应用所需要的微处理器、I/O接口、A/D、D/A转换、串行接口以及RAM、ROM通通集成到一个VLSI中,制造出面向I/O设计的微控制器,就是我们俗称的单片机
DSP数字信号处理器与CPU(MCU)相比:
有更多的硬件运算单元乘除法、矩阵数字运算速度快存储和外设管理相对简单
适合数字滤波器和媒体编解码算法的运算音频、视频处理智能仪表调制解调器
ARM
32位RISC嵌入式处理器
ARM公司负责研发处理器内核的IP
众多的公司购买IP的知识产权后制造出形式多样的MCU,如:
不同档次手机的处理器
上网本、PSP、平板电脑
嵌入式工业终端和银行ATM机
4.嵌入式系统的特点
(1)形式多样、面向特定应用硬件和软件都必须高效率地设计,避免冗余低功耗的需求低成本高可靠软件的一体化(OS&APP
多种类型的处理器和处理器体系结构MCU&DSPMCU:
ARMMIPSPowerPC
实时性和可靠性要求较高
操作系统可剪裁、轻量型、实时可靠、可固化
(5)嵌入式系统开发需要专门工具和特殊方法
5.嵌入式系统的发展趋势
更高的集成度更低功耗普遍的网络支持更加标准化
6.ARM经典处理器:
ARM11、ARM9™和ARM7™处理器系列
Cortex-A系列:
共享同一体系结构,因此具有完整的应用兼容性,支持传统的ARM、Thumb®指令集和新增的高性能紧凑型Thumb-2指令集
Cortex-R系列:
快速-以高时钟频率获得高处理性能。
确定性-处理在所有场合都必须符合硬实时限制。
安全-系统必须可靠且可信。
某些系统将是安全关键系统。
成本效益-在处理器及其内存系统中都具有竞争力的成本和功耗。
ARM7指令流水线技术
ARM编程模型的存储器格式
大 小
7.常用串行接口
(1)SPI:
SerialPeripheralInterface--串行外设接口,主要应用在EEPROM,FLASH,实时时钟,AD转换器.(片间通信),是以主从方式工作的,这种模式通常有一个主器件和一个或多个从器件
(2)UART UART即通用异步收发器,可设置成全双工异步通讯方式;或设置成半双工同步模式
(3)I2C Inter-IntegratedCircuit 时序信号说明开始信号:
SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
结束信号:
SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
应答信号:
接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。
8.嵌入式系统软件的构成方式
(1)专用应用的软件结构 (硬件描述和驱动层,应用软件) 特点:
资源占用小特定应用的针对性强系统稳定性高
(2)简单操作系统平台结构 特点:
可根据应用需求定制的底层,降低开发难度,合理的利用已有第三方资源资源占用略大
(3)通用操作系统平台 适合更改多应用程序运行的多应用平台具有更加通用的GUI、网络互联、存储支持如:
Linux、WinCE、iOS、Symbian、Android
10 嵌入式系统软件分类
系统软件:
控制、管理计算机系统的资源应用运行平台数据库管理系统
如嵌入式操作,系统嵌入式中间件(.NetFramwork、Java)等等
支撑软件:
辅助软件开发工具 如系统分析设计工具、仿真开发工具、交叉开发工具
测试工具、配置管理工具、维护工具等
应用软件:
面向应用领域 如手机软件、路由器软件、交换机软件、游戏、阅读器、移动办公、远程控制
9.嵌入式软件系统的体系结构如下图所示:
硬件设备驱动:
操作系统:
包括嵌入式内核、嵌入式TCP/IP网络系统、嵌入式文件系统、嵌入式GUI系统和电源管理等部分,其中嵌入式内核是基础和必备的部分,其他部分要根据嵌入式系统的需要来定制
中间件和基础构架软件:
承载通用应用的应用框架 如java虚拟机和.net框架
承载通用应用的GUI外壳 如Android Web浏览器
高层协议栈
应用层 应用层软件主要由多个相对独立的应用任务组成,每个应用任务完成特定的工作,如I/O任务、计算的任务、通信任务等,由操作系统调度各个任务的运行
13、嵌入式文件系统,(常用嵌入式文件系统FATFs、JFFS2、YAFFS、UBIFS)
通用文件系统功能如下:
提供用户对文件操作的命令
提供用户共享文件的机制
管理文件的存储介质
提供文件的存取控制机制,保障文件及文件系统的安全性
提供文件及文件系统的备份和恢复功能
提供对文件的加密和解密功能
而嵌入式文件系统,相比之下较为简单,主要具有文件的存储、检索、更新等功能,一般不提供保护和加密等安全机制。
它以系统调用和命令方式提供对文件的各种操作,主要有:
设置和修改对文件和目录的存取权限
提供建立、修改、改变、删除目录等服务
提供创建、打开、读、写、关闭、撤消文件等服务
11.嵌入式软件运行流程如下:
上电复位、板级初始化阶段:
嵌入式系统上电复位后需要进行硬件的初始化工作。
不同的系统,初始化时要完成的工作具有一定的特殊性,但以下工作一般是必须完成的:
CPU中堆栈指针寄存器的初始化。
BSS段(BlockStorageSpace表示未被初始化的数据)的初始化。
CPU芯片级的初始化:
中断控制器、定时器、接口、内存等的初始化
系统引导\升级阶段:
根据需要分别进入系统软件引导阶段或系统升级阶段。
软件可通过测试通信端口数据或判断特定开关的方式分别进入不同阶段。
引导:
操作系统装,分为下列情况:
将系统软件从NORFlash中读取出来加载到RAM中运行:
这种方式可以解决成本及Flash速度比RAM慢的问题。
软件可压缩存储在Flash中。
不需将软件引导到RAM中而是让其直接在NorFlash上运行,进入系统初始化阶段。
将软件从外存(如NandFlash、CF卡、MMC等)中读取出来加载到RAM中运行:
这种方式的成本更低
升级:
又称为固件更新
进入系统升级阶段后系统可通过网络进行远程升级或通过串口进行本地升级。
远程升级一般支持TFTP、FTP、HTTP等方式。
本地升级可通过Console口使用超级终端或USB的升级软件进行。
系统初始化阶段
在该阶段进行操作系统等系统软件各功能部分必需的初始化工作,如根据系统配置初始化数据空间、初始化系统所需的接口和外设等。
系统初始化阶段需要按特定顺序进行,如首先完成内核的初始化,然后完成网络、文件系统等的初始化,最后完成中间件等的初始化工作。
应用初始化阶段
在该阶段进行应用任务的创建,信号量、消息队列的创建和与应用相关的其它初始化工作。
多任务应用运行阶段
各种初始化工作完成后,系统进入多任务状态,操作系统按照已确定的算法进行任务的调度,各应用任务分别完成特定的功能
12。
嵌入式系统内核 内核是嵌入式操作系统的基础,也是必备的部分。
内核还提供特定的应用编程接口,但目前没有统一的标准。
(1)任务管理:
内核的核心部分,具有任务调度、创建任务、删除任务、挂起任务、解挂任务、设置任务优先级等功能。
通用计算机的操作系统追求的是最大的吞吐率,为了达到最佳整体性能,其调度原则是公平,采用Round-Robin或可变优先级调度算法,调度时机主要以时间片为主驱动。
而嵌入式操作系统多采用基于静态优先级的可抢占的调度,任务优先级是在运行前通过某种策略静态分配好的,一旦有优先级更高的任务就绪就马上进行调度。
(2)内存管理:
通常不采用虚拟存储管理,而采用静态内存分配和动态内存分配(固定大小内存分配和可变大小内存分配)相结合的管理方式。
有些内核利用MMU机制提供内存保护功能。
通用操作系统广泛使用了虚拟内存的技术,为用户提供一个功能强大的虚存管理机制。
(3)通信 同步 和互斥机制
这些机制提供任务间、任务与中断处理程序间的通信、同步和互斥功能。
一般包括信号量、消息、事件、管道、异步信号和共享内存等功能。
与通用操作系统不同的是,嵌入式操作系统需要解决在这些机制的使用中出现的优先级反转问题。
(4)中断管理 其功能如下:
安装中断服务程序
中断发生时,对中断现场进行保存,并且转到相应的服务程序上执行
中断退出前,对中断现场进行恢复
中断栈切换
中断退出时的任务调度
时间管理:
提供高精度、应用可设置的系统时钟,该时钟是嵌入式系统的时基,可设置为十毫秒以下。
提供日历时间,负责与时间相关的任务管理工作如任务对资源有限等待的计时、时间片轮转调度等,提供软定时器的管理功能等。
通用操作系统的系统时钟的精度由操作系统确定,应用不可调,且一般是几十个毫秒
任务扩展管理:
任务扩展功能就是在内核中设置一些Hook的调用点,在这些调用点上内核调用应用设置的、应用自己编写的扩展处理程序,以扩展内核的有关功能。
Hook调用点有任务创建、任务切换、任务删除、出错处理等
14、嵌入式TCP/IP协议
特点如下:
可剪裁:
能根据嵌入式系统的功能的要求选择所需的协议,对完整的TCP/IP协议簇进行剪裁,以满足用户的需要。
采用“零拷贝”(ZeroCopy)技术,提高实时性,所谓“零拷贝”技术,是指TCP/IP协议栈没有用于各层间数据传递的缓冲区,协议栈各层间传递的都是数据指针,只有当数据最终要被驱动程序发送出去或是被应用程序取走时,才进行真正的数据搬移
采用静态分配技术 在网络初始化时就静态分配通信缓冲区,设置了专门的发送和接收缓冲(其大小一般小于或等于物理网络上的MTU值),从而确保了每次发送或接收时处理的数据不会超过MTU值,也就避免了数据处理任务的阻塞等待。
15、嵌入式实时操作系统µC/OS-II简介
µC/OS-II是一个抢占式实时多任务内核。
它是用ANSI的C语言编写的,包含一小部分汇编语言代码,使之可以提供给不同架构的微处理器使用。
至今,从8位到64位,µC/OS-II已经在40多种不同架构的微处理器上使用。
使用µC/OS的领域包括:
照相机行业、航空业、医疗器械、网络设备、自动提款机以及工业机器人等。
µC/OS-II全部以源代码的方式提供,大约有5500行。
CPU相关的部分使用的是针对Intel80x86微处理器的代码。
µC/OS-II可以很容易地移植到不同架构的嵌入式微处理器上。
特点如下
:
源代码 ――可确定性
可移植性 ――任务栈
可固化 ――系统服务
可裁减 ――中断管理
可抢占
支持多任务 ――稳定性 可靠性
16.实时操作系统的基本概念是指能对外部事件在限定的时间内完成及时响应的多任务操作系统,往往采用微内核结构,就有实时性、可靠性和可剪裁性的特点
(1)多任务 任务的调度 CPU控制下的任务的状态转移和切换
时间片轮转 优先加 抢先
优先级不可抢夺的调度 优先级可被抢夺的调度
(2)任务间通信
事件 信号量
(3)可重入 可重入函数是指函数代码在运行过程中被中断,在中断返回时仍然能够恢复到原来的状态,并能准备无误的执行的函数.
(4)临界区(Critical) 处理时不可分割的代码 每个进程中访问临界资源的那段代码称为临界区(CriticalSection)(临界资源是一次仅允许一个进程使用的共享资源)。
每次只准许一个进程进入临界区
(5) 资源(Resource) 变量、数组、输入输出设备、网络…
共享资源 被一个以上任务使用的资源使用时的独占
(7)互斥 两个或两个以上的进程,不能同时进入关于同一组共享变量的临界区域,否则可能发生与时间有关的错误,这种现象被称作进程互斥.
17任务管理与调度
进程(process)和线程(thread)的统称任务是调度的基本单位
进程主要包括以下内容:
一个正在执行的程序;计算机中正在运行的程序的一个实例;可以分配给处理器,并由处理器执行的一个实体;由一个顺序的执行线程、一个当前状态和一组相关的系统资源所刻画的活动单元。
采用多任务的好处
任务的规模较小
每个任务更容易编码和调试,其质量也更容易得到保证
不少应用本身就是由多个任务构成的
如一个应用可能需要进行以下任务的处理:
计算、从网络获取数据和刷新显示屏幕
采用多任务的处理方式是应用问题的一个非常自然的解决方式
任务之间具有较高的独立性,耦合性小
通过增加新的任务就能方便的扩充系统功能
实时和优先级
保证紧急事件得到优先处理成为可能
进程和线程
线程:
调度执行的单位,线程是进程内部一个相对独立的控制流,由线程上下文和需要执行的一段程序指令构成
进程:
资源分配的单位,在进程中,所有线程共享该进程的状态和资源,可以访问相同的数据
使用进程的好处
创建:
在一个已有进程中创建一个新线程比创建一个全新的进程所需的时间开销少;
终止:
终止一个线程比终止一个进程所花费的时间少;
切换:
线程切换比进程切换所花费的时间少;
使用线程的好处
通信:
使同一进程内部不同线程之间的通信效率得到显著提高。
在大多数操作系统中,不同进程之间的通信需要内核的干预,而同一进程内部不同线程之间则可直接通信。
操作系统的进程模型
单进程单线程MS-DOS
单进程多线程:
或简单地称为任务模型,把整个应用当作一个没有定义的进程来对待;应用则被划分为多个任务的形式来进行处理,适用于实时性要求较高的、相对简单的应用
多进程单线程、传统的linux
多进程多线程:
多功能设备采用的嵌入式实时操作系统。
系统中包含多个进程,每个进程对应又包含多个线程。
适合于处理复杂的应用
18μC/OS-II任务控制块:
当一个事件发生后,等待事件列表中优先级最高的任务(即在.OSEventTbl[]&OSEventGrp中所有被置1的位中优先级数值最小的任务)得到该事件。
μC/OS-II采用双向链表来管理所有任务的TCB
TCB(TaskControlBlock)用来存储一个任务的当前属性。
任务的主要属性包括:
(1)任务栈空间位置,即前节所述该任务的栈空间。
(2)任务与其它任务通信的数据空间,在μC/OS-II中称为事件(3)任务的当前状态,标识当前任务是在运行还是在等待某个事件发生;(4)任务的优先级,任务的标识,全系统唯一,此值是任务调度的依据。
μC/OS-II任务优先级
μC/OS-II操作系统进行任务调度所采用的算法是基于优先级的调度算法
任何一个任务有唯一的一个任务优先级值
INT8UOSTCBPrio;//优先级值,如果为0表示优先级最高
typedefunsignedcharINT8U;//INT8U类型就是unsignedchar
在μC/OS-II操作系统中,优先级值越大,优先级越低,因此,优先级值为0的任务优先级最高。
因为优先级类型为unsignedchar(范围为0~255),因此,定义μC/OS-II操作系统优先级值最大为255,也就是说,最多允许创建256个任务(一个任务有唯一的优先级)。
在目前的μC/OS-II版本中,仅允许创建64个任务,最低优先级值为63
µC/OS-II调度算法和调度方式
优先级调度算法原理为:
给每一个任务分配一个惟一优先级,各优先级用一个整形数值标识,某优先级的值越大,其优先级越低;某优先级的值越小,其优先级越高。
也就是说,如果当前操作系统准备进行调度,当有两个任务处于就绪状态,系统将优先执行优先级别高的任务。
µC/OS-II操作系统有两种调度方式:
任务级任务调度和中断级任务调度,
µC/OS-II操作系统在完成中断后允许进行新的调度,因此,µC/OS-II操作系统是可抢占性的,是强实时性操作系统,这是µC/OS-II操作系统内核的重要特性。
调度的主要功能
(1)查找当前就绪表中最高优先级任务的优先级值;
(2)调用OS_SchedNew()函数进行任务切换,切换到新任务执行。
µC/OS-II操作系统使用OS_Sched()函数来执行任务级任务调度。
任务的基本信息
CPU中的PC寄存器:
任务(程序)当前执行的位置;
CPU中的通用寄存器:
任务当前执行代码所涉及的临时数据;
CPU中的状态寄存器:
存储当前CPU的状态。
任务级任务切换:
任务级任务切换是指从一个任务直接切换到另一个任务,引起该次切换是由于某一个非中断引起的事件(关于事件的概念请参阅后结章节)使一个更高优先级的任务处于就绪状态,暂停正在运行着的任务,转而切换去执行更高优先级任务。
在整个过程中,不涉及到CPU状态的切换,µC/OS-II操作系统使用汇编程序来实现OS_TASK_SW()函数。
切换过程如下:
1)将当前任务的PC位置、通用寄存器数据、CPU的状态入栈;
(2)修改全局变量OSPrioCur(当前任务优先级变量)的值为全局变量OSPrioHighRdy(最高优先级任务优先级)的值,即把最高就绪任务优先级设置为新的当前任务优先级;
(3)修改原任务TCB的第1个成员(指向栈顶的指针*OSTCBStkPtr)的值为当前SP寄存,以便再次返回;
(4)获取最高优先级的任务控制块中第1个成员(指向堆栈栈顶指针*OSTCBStkPtr)的值到sp寄存器;
(5)修改OSTCBCur的值为新就绪最高优先级任务的任务控制块地址;
(6)将新任务的PC位置、通用寄存器数据、CPU的状态出栈,开始执行新的任务。
调度器上锁和解锁
µC/OS-II操作系统使用OSSchedLock()函数和OSSchedUnlock()函数进行锁定(不允许任务级调度)和解锁(重新允许任务级调度)调度器,在用户应用程序中,OSSchedLock()和OSSchedUnlock()是成对出现的,否则系统有可能出错。
在调用函数OS_Sched()进行调度时,要求没有进入中断,因为操作系统期望中断处理程序执行时间尽可能短。
µC/OS-II中断管理
(1)硬件中断一般是由外部(相对CPU内核而言)的硬件引起的事件,比如串口接收到数据、键盘击键以及时钟中断等;
(2)软件中断(SoftInterrupt)通过在程序中执行的中断指令引起的中断,又叫软中断,软中断指令一般用于操作系统的系统调用入口,软中断是用户访问操作系统提供的服务(API函数)的惟一途径。
中断响应的过程:
(1)硬件中断一般是由外部(相对CPU内核而言)的硬件引起的事件,比如串口接收到数据、键盘击键以及时钟中断等;
(2)软件中断(SoftInterrupt)通过在程序中执行的中断指令引起的中断,又叫软中断,软中断指令一般用于操作系统的系统调用入口,软中断是用户访问操作系统提供的服务(API函数)的惟一途径。
ARM处理器中断响应:
(1)拷贝当前CPSR到对应模式的SPSR寄存器中以存储当前程序状态,这些信息包括当前处理器模式、中断屏弊位以及控制标识。
(2)改变CPSR寄存器的模式位使处理器工作于对应模式、禁止中断位,其中,在任何异常情况下都将禁止IRQ请求位,当复位中断和FIQ中断发生时还将禁止FIQ请求位。
(3)保存返回地址到对应模式链接寄存器(LR)。
(4)设置当前程序PC寄存器到中断向量地址以处理异常。
这将强制跳转到相应的中断处理程序中。
ARM处理器中断返回:
(1)从相应模式的SPSR寄存器中恢复CPSR寄存器内容;
(2)恢复存储在栈中的普通寄存器数据;(3)从相应模式的链接寄存器LR中恢复PC寄存器以使程序从中断处重新执行。
RTOS信号量的操作过程:
创建信号量、获取(申请)信号量、释放信号量、删除信号量、清除信号量的任务等待列表、获取有关信号量的各种信息
获取信号量:
如果任务等待一个使用优先级继承算法的互斥信号量,且它的优先级高于当前正占有此信号量的任务的优先级,那么占有信号量的任务将继承这个被阻塞的任务的优先级。
如果任务成功地获得一个采用优先级天花板算法的互斥信号量,它的优先级又低于优先级天花板,那么它的优先级将被抬升至天花板。
当所申请的信号量不能被立即获得时,可以有以下几种选择:
永远等待
不等待,立即返回,并返回一个错误状态码
指定等待时限(可有效避免死锁)
注意:
不允许在ISR中选择等待;当任务选择等待时,将被按FIFO或优先级顺序放置在等待队列中
释放信号量:
功能:
释放一个应用指定的信号量。
if没有任务等待这个信号量
then信号量的值加1
else将信号量分配给一个等待任务(将相应的任务移出等待队列,使其就绪)
如果使用了优先级继承或优先级天花板算法,那么执行该功能(系统调用)的任务的优先级将恢复到原来的高度。
删除信号量:
功能:
从系统中删除应用指定的一个信号量
内核动作:
将信号量控制块返还给系统
删除信号量的不一定是创建信号量的任务
如果有任务正在等待获得该信号量,执行此功能将使所有等待这个信号量的任务回到就绪队列中,且返回一个状态码指示该信号量已被删除
企图获取已删除的信号量将返回一个错误;
在互斥信号量正被使用时(已经被某任务获取),不能删除它。
因为该信号量正在保护一个共享资源或临界代码段,该动作可能造成数据崩溃或其他严重问题。
信号量实现生产-消费问题应用实例
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 三级 考试 嵌入式 系统 开发 技术 复习资料 整理 大全