嵌入式系统复习资料整理

上传人:jkl****17 文档编号:178901173 上传时间:2022-12-30 格式:DOCX 页数:17 大小:297.06KB
收藏 版权申诉 举报 下载
嵌入式系统复习资料整理_第1页
第1页 / 共17页
嵌入式系统复习资料整理_第2页
第2页 / 共17页
嵌入式系统复习资料整理_第3页
第3页 / 共17页
资源描述:

《嵌入式系统复习资料整理》由会员分享,可在线阅读,更多相关《嵌入式系统复习资料整理(17页珍藏版)》请在装配图网上搜索。

1、1.嵌入式系统的定义 嵌入式计算机系统简称为嵌入式系统,将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。 嵌入式系统 :、以应用为中心、 以计算机技术为基础、 软件硬件可裁剪、 适应应用系统对功能、可靠性、成本、体积、功耗严格要求的 专用计算机系统。 嵌入式操作系统的特点:可固化 、可配置、可剪裁 、独立的板级支持包,可修改 、不同的CPU有不同的版本 、应用的开发需要有集成的交叉开发工具 嵌入式操作系统的组成:嵌入式操作系统、操作系统内核、文件系统、网络协议栈、GUI 、USB协议栈等2. 通用计算机系统与嵌入式系统的比较 形式和类型 看得见的计算机。 按其体系结

2、构、运算速度和结构规模等因素分为大、中、小型机和微机。组成 通用处理器、标准总线和外设。 软件和硬件相对独立。开发方式 开发平台和运行平台是通用计算机二次开发 应用程序可重新编程形式和类型 看不见的计算机 形式多样 应用领域广泛,按应用来分类组成 面向应用的嵌入式微处理器,总线和外部接口多集成在处理器内部,软件与硬件是紧密集成在一起的。开发方式 采用交叉开发方式,开发平台一般是通用计算机,运行 平台是嵌入式系统。二次开发 一般不能在编程微处理器构成的嵌入式系统(以家电为例) 4位、8位、16位、32位处理器 简单的冰箱、洗衣机、微波炉、电视机(CRT电视) 80-90年代的发达国家的高端家电=

3、2010年的家电下乡产品 4位处理器固化的专用嵌入式芯片 除了媒体播放器和LCD电视机以外的量产的智能家电 8位处理器、需要写程序进去的产品3 .单片机 又称微控制器(Microcontroller)(MCU)将嵌入式应用所需要的微处理器、I/O接口、A/D、D/A转换、串行接口以及RAM、ROM通通集成到一个VLSI中, 制造出面向I/O设计的微控制器,就是我们俗称的单片机 DSP 数字信号处理器 与CPU(MCU)相比: 有更多的硬件运算单元 乘除法、矩阵 数字运算速度快 存储和外设管理相对简单 适合数字滤波器和媒体编解码算法的运算 音频、视频处理 智能仪表 调制解调器ARM 32位RIS

4、C嵌入式处理器 ARM公司负责研发处理器内核的IP 众多的公司购买IP的知识产权后制造出形式多样的MCU,如: 不同档次手机的处理器 上网本、PSP、平板电脑 嵌入式工业终端和银行ATM机 4. 嵌入式系统的特点(1) 形式多样、面向特定应用 硬件和软件都必须高效率地设计,避免冗余 低功耗的需求 低成本 高可靠 软件的一体化(OS&APP(2) 多种类型的处理器和处理器体系结构 MCU&DSPMCU:ARMMIPSPowerPC(3) 实时性和可靠性要求较高(4) 操作系统可剪裁、轻量型、实时可靠、可固化(5)嵌入式系统开发需要专门工具和特殊方法5. 嵌入式系统的发展趋势 更高的集成度 更低功

5、耗 普遍的网络支持 更加标准化6. ARM经典处理器 :ARM11、ARM9 和 ARM7 处理器系列 Cortex-A 系列 :共享同一体系结构,因此具有完整的应用兼容性, 支持传统的 ARM、Thumb 指令集和新增的高性能紧凑型 Thumb-2 指令集Cortex-R 系列 :快速 - 以高时钟频率获得高处理性能。确定性 - 处理在所有场合都必须符合硬实时限制。安全 - 系统必须可靠且可信。某些系统将是安全关键系统。成本效益 - 在处理器及其内存系统中都具有竞争力的成本和功耗。 ARM7 指令流水线技术 编程模型的存储器格式大小常用串行接口():Serial Peripheral Int

6、erface-串行外设接口 ,主要应用在EEPROM,FLASH,实时时钟,AD转换器.(片间通信),是以主从方式工作的,这种模式通常有一个主器件和一个或多个从器件()UART即通用异步收发器, 可设置成全双工异步通讯方式; 或设置成半双工同步模式()InterIntegrated Circuit时序信号说明 开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。 结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。 应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。嵌入式系统软件的构成方式()专用应用的软件

7、结构(硬件描述和驱动层,应用软件)特点:资源占用小 特定应用的针对性强 系统稳定性高 ()简单操作系统平台结构特点:可根据应用需求定制的底层,降低开发难度,合理的利用已有第三方资源 资源占用略大()通用操作系统平台适合更改多应用程序运行的多应用平台 具有更加通用的GUI、网络互联、存储支持 如:Linux、WinCE、iOS、Symbian、Android 嵌入式系统软件分类系统软件:控制、管理计算机系统的资源 应用运行平台 数据库管理系统 如嵌入式操作,系统嵌入式中间件(.Net Framwork、Java)等等支撑软件:辅助软件开发工具如系统分析设计工具、仿真开发工具、交叉开发工具测试工具

8、、配置管理工具、维护工具等应用软件:面向应用领域如手机软件、路由器软件、交换机软件 、游戏、阅读器、移动办公、远程控制嵌入式软件系统的体系结构如下图所示:() 硬件设备驱动:() 操作系统:包括嵌入式内核、嵌入式TCP/IP网络系统、嵌入式文件系统、嵌入式GUI系统和电源管理等部分,其中嵌入式内核是基础和必备的部分,其他部分要根据嵌入式系统的需要来定制() 中间件和基础构架软件:承载通用应用的应用框架如虚拟机和框架承载通用应用的外壳如AndroidWeb浏览器高层协议栈() 应用层应用层软件主要由多个相对独立的应用任务组成,每个应用任务完成特定的工作,如I/O任务、计算的任务、通信任务等,由操

9、作系统调度各个任务的运行、嵌入式文件系统,(常用嵌入式文件系统FAT Fs、JFFS2、YAFFS、UBIFS)通用文件系统功能如下: 提供用户对文件操作的命令 提供用户共享文件的机制 管理文件的存储介质 提供文件的存取控制机制,保障文件及文件系统的安全性 提供文件及文件系统的备份和恢复功能 提供对文件的加密和解密功能而嵌入式文件系统,相比之下较为简单,主要具有文件的存储、检索、更新等功能,一般不提供保护和加密等安全机制。它以系统调用和命令方式提供对文件的各种操作,主要有: 设置和修改对文件和目录的存取权限 提供建立、修改、改变、删除目录等服务 提供创建、打开、读、写、关闭、撤消文件等服务 嵌

10、入式软件运行流程如下:() 上电复位、板级初始化阶段:嵌入式系统上电复位后需要进行硬件的初始化工作。不同的系统,初始化时要完成的工作具有一定的特殊性,但以下工作一般是必须完成的:CPU中堆栈指针寄存器的初始化。BSS段(Block Storage Space表示未被初始化的数据)的初始化。CPU芯片级的初始化: 中断控制器、定时器、接口、内存等的初始化() 系统引导升级阶段:根据需要分别进入系统软件引导阶段或系统升级阶段。软件可通过测试通信端口数据或判断特定开关的方式分别进入不同阶段。 引导:操作系统装,分为下列情况:将系统软件从NOR Flash中读取出来加载到RAM中运行:这种方式可以解决

11、成本及Flash速度比RAM慢的问题。软件可压缩存储在Flash中。 不需将软件引导到RAM中而是让其直接在NorFlash上运行,进入系统初始化阶段。将软件从外存(如NandFlash、CF卡、MMC等)中读取出来加载到RAM中运行:这种方式的成本更低升级:又称为固件更新进入系统升级阶段后系统可通过网络进行远程升级或通过串口进行本地升级。远程升级一般支持TFTP、FTP、HTTP等方式。本地升级可通过Console口使用超级终端或USB的升级软件进行。() 系统初始化阶段在该阶段进行操作系统等系统软件各功能部分必需的初始化工作,如根据系统配置初始化数据空间、初始化系统所需的接口和外设等。系统

12、初始化阶段需要按特定顺序进行,如首先完成内核的初始化,然后完成网络、文件系统等的初始化,最后完成中间件等的初始化工作。 () 应用初始化阶段在该阶段进行应用任务的创建,信号量、消息队列的创建和与应用相关的其它初始化工作。() 多任务应用运行阶段各种初始化工作完成后,系统进入多任务状态,操作系统按照已确定的算法进行任务的调度,各应用任务分别完成特定的功能。嵌入式系统内核内核是嵌入式操作系统的基础,也是必备的部分。内核还提供特定的应用编程接口,但目前没有统一的标准。 ()任务管理:内核的核心部分,具有任务调度、创建任务、删除任务、挂起任务、解挂任务、设置任务优先级等功能。 通用计算机的操作系统追求

13、的是最大的吞吐率,为了达到最佳整体性能,其调度原则是公平,采用Round-Robin或可变优先级调度算法,调度时机主要以时间片为主驱动。而嵌入式操作系统多采用基于静态优先级的可抢占的调度,任务优先级是在运行前通过某种策略静态分配好的,一旦有优先级更高的任务就绪就马上进行调度。()内存管理:通常不采用虚拟存储管理,而采用静态内存分配和动态内存分配(固定大小内存分配和可变大小内存分配)相结合的管理方式。有些内核利用MMU机制提供内存保护功能。通用操作系统广泛使用了虚拟内存的技术,为用户提供一个功能强大的虚存管理机制。()通信同步和互斥机制 这些机制提供任务间、任务与中断处理程序间的通信、同步和互斥

14、功能。 一般包括信号量、消息、事件、管道、异步信号和共享内存等功能。 与通用操作系统不同的是,嵌入式操作系统需要解决在这些机制的使用中出现的优先级反转问题。()中断管理其功能如下: 安装中断服务程序 中断发生时,对中断现场进行保存,并且转到相应的服务程序上执行 中断退出前,对中断现场进行恢复 中断栈切换 中断退出时的任务调度 () 时间管理:提供高精度、应用可设置的系统时钟,该时钟是嵌入式系统的时基,可设置为十毫秒以下。提供日历时间,负责与时间相关的任务管理工作如任务对资源有限等待的计时、时间片轮转调度等,提供软定时器的管理功能等。通用操作系统的系统时钟的精度由操作系统确定,应用不可调,且一般

15、是几十个毫秒() 任务扩展管理:任务扩展功能就是在内核中设置一些Hook的调用点,在这些调用点上内核调用应用设置的、应用自己编写的扩展处理程序,以扩展内核的有关功能。Hook调用点有任务创建、任务切换、任务删除、出错处理等、嵌入式协议特点如下:可剪裁:能根据嵌入式系统的功能的要求选择所需的协议,对完整的TCP/IP协议簇进行剪裁,以满足用户的需要。采用“零拷贝”(Zero Copy)技术,提高实时性, 所谓“零拷贝”技术,是指TCP/IP协议栈没有用于各层间数据传递的缓冲区,协议栈各层间传递的都是数据指针,只有当数据最终要被驱动程序发送出去或是被应用程序取走时,才进行真正的数据搬移采用静态分配

16、技术在网络初始化时就静态分配通信缓冲区,设置了专门的发送和接收缓冲(其大小一般小于或等于物理网络上的MTU值),从而确保了每次发送或接收时处理的数据不会超过MTU值,也就避免了数据处理任务的阻塞等待。 、嵌入式实时操作系统C/OS-II简介C/OS-II是一个抢占式实时多任务内核。它是用ANSI的C语言编写的,包含一小部分汇编语言代码,使之可以提供给不同架构的微处理器使用。至今,从8位到64位,C/OS-II已经在40多种不同架构的微处理器上使用。使用C/OS的领域包括:照相机行业、航空业、医疗器械、网络设备、自动提款机以及工业机器人等。 C/OS-II全部以源代码的方式提供,大约有5500行

17、。CPU相关的部分使用的是针对Intel80x86微处理器的代码。C/OS-II可以很容易地移植到不同架构的嵌入式微处理器上。 特点如下:源代码可确定性可移植性任务栈可固化系统服务可裁减中断管理可抢占支持多任务稳定性可靠性实时操作系统的基本概念 是指能对外部事件在限定的时间内完成及时响应的多任务操作系统,往往采用微内核结构,就有实时性、可靠性和可剪裁性的特点()多任务任务的调度CPU控制下的任务的状态转移和切换 时间片轮转优先加抢先优先级不可抢夺的调度优先级可被抢夺的调度 ()任务间通信事件信号量()可重入可重入函数是指函数代码在运行过程中被中断,在中断返回时仍然能够恢复到原来的状态,并能准备

18、无误的执行的函数.()临界区(Critical)处理时不可分割的代码 每个进程中访问临界资源的那段代码称为临界区(Critical Section)(临界资源是一次仅允许一个进程使用的共享资源)。每次只准许一个进程进入临界区()资源(Resource)变量、数组、输入输出设备、网络() 共享资源 被一个以上任务使用的资源 使用时的独占 ()互斥 两个或两个以上的进程,不能同时进入关于同一组共享变量的临界区域,否则可能发生与时间有关的错误,这种现象被称作进程互斥.17 任务管理与调度进程(process)和线程(thread)的统称 任务是调度的基本单位进程主要包括以下内容: 一个正在执行的程序

19、;计算机中正在运行的程序的一个实例;可以分配给处理器,并由处理器执行的一个实体;由一个顺序的执行线程、一个当前状态和一组相关的系统资源所刻画的活动单元。采用多任务的好处任务的规模较小每个任务更容易编码和调试,其质量也更容易得到保证不少应用本身就是由多个任务构成的 如一个应用可能需要进行以下任务的处理:计算、从网络获取数据和刷新显示屏幕 采用多任务的处理方式是应用问题的一个非常自然的解决方式任务之间具有较高的独立性,耦合性小 通过增加新的任务就能方便的扩充系统功能实时和优先级 保证紧急事件得到优先处理成为可能进程和线程线程:调度执行的单位,线程是进程内部一个相对独立的控制流,由线程上下文和需要执

20、行的一段程序指令构成进程:资源分配的单位,在进程中,所有线程共享该进程的状态和资源,可以访问相同的数据使用进程的好处创建: 在一个已有进程中创建一个新线程比创建一个全新的进程所需的时间开销少;终止: 终止一个线程比终止一个进程所花费的时间少;切换: 线程切换比进程切换所花费的时间少;使用线程的好处通信: 使同一进程内部不同线程之间的通信效率得到显著提高。 在大多数操作系统中,不同进程之间的通信需要内核的干预,而同一进程内部不同线程之间则可直接通信。操作系统的进程模型 单进程单线程 MS-DOS 单进程多线程 :或简单地称为任务模型,把整个应用当作一个没有定义的进程来对待;应用则被划分为多个任务

21、的形式来进行处理,适用于实时性要求较高的、相对简单的应用 多进程单线程、传统的linux多进程多线程:多功能设备采用的嵌入式实时操作系统。系统中包含多个进程,每个进程对应又包含多个线程。适合于处理复杂的应用18C/OS-II任务控制块:当一个事件发生后,等待事件列表中优先级最高的任务(即在.OSEventTbl&OSEventGrp中所有被置1的位中优先级数值最小的任务)得到该事件。 C/OS-II采用双向链表来管理所有任务的TCB TCB(Task Control Block)用来存储一个任务的当前属性。任务的主要属性包括:(1)任务栈空间位置,即前节所述该任务的栈空间。(2)任务与其它任务

22、通信的数据空间,在C/OS-II中称为事件 (3)任务的当前状态,标识当前任务是在运行还是在等待某个事件发生;(4)任务的优先级,任务的标识,全系统唯一,此值是任务调度的依据 。C/OS-II任务优先级 C/OS-II操作系统进行任务调度所采用的算法是基于优先级的调度算法 任何一个任务有唯一的一个任务优先级值 INT8U OSTCBPrio; /优先级值,如果为0表示优先级最高 typedef unsigned char INT8U; / INT8U类型就是unsigned char 在C/OS-II操作系统中,优先级值越大,优先级越低,因此,优先级值为0的任务优先级最高。 因为优先级类型为u

23、nsigned char(范围为0255),因此,定义C/OS-II操作系统优先级值最大为255,也就是说,最多允许创建256个任务(一个任务有唯一的优先级)。 在目前的C/OS-II版本中,仅允许创建64个任务,最低优先级值为63 C/OS-II调度算法和调度方式 优先级调度算法原理为: 给每一个任务分配一个惟一优先级,各优先级用一个整形数值标识,某优先级的值越大,其优先级越低;某优先级的值越小,其优先级越高。也就是说,如果当前操作系统准备进行调度,当有两个任务处于就绪状态, 系统将优先执行优先级别高的任务。 C/OS-II操作系统有两种调度方式: 任务级任务调度和中断级任务调度, C/OS

24、-II操作系统在完成中断后允许进行新的调度,因此,C/OS-II操作系统是可抢占性的,是强实时性操作系统,这是C/OS-II操作系统内核的重要特性。 调度的主要功能 (1)查找当前就绪表中最高优先级任务的优先级值; (2)调用OS_SchedNew()函数进行任务切换,切换到新任务执行。 C/OS-II操作系统使用OS_Sched()函数来执行任务级任务调度。 任务的基本信息 CPU中的PC寄存器:任务(程序)当前执行的位置; CPU中的通用寄存器:任务当前执行代码所涉及的临时数据; CPU中的状态寄存器:存储当前CPU的状态。任务级任务切换:任务级任务切换是指从一个任务直接切换到另一个任务,

25、引起该次切换是由于某一个非中断引起的事件(关于事件的概念请参阅后结章节)使一个更高优先级的任务处于就绪状态,暂停正在运行着的任务,转而切换去执行更高优先级任务。在整个过程中,不涉及到CPU状态的切换,C/OS-II操作系统使用汇编程序来实现OS_TASK_SW()函数。切换过程如下:1)将当前任务的PC位置、通用寄存器数据、CPU的状态入栈; (2)修改全局变量OSPrioCur(当前任务优先级变量)的值为全局变量OSPrioHighRdy(最高优先级任务优先级)的值,即把最高就绪任务优先级设置为新的当前任务优先级; (3)修改原任务TCB的第1个成员(指向栈顶的指针*OSTCBStkPtr)

26、的值为当前SP寄存,以便再次返回; (4)获取最高优先级的任务控制块中第1个成员(指向堆栈栈顶指针*OSTCBStkPtr)的值到sp寄存器; (5)修改OSTCBCur的值为新就绪最高优先级任务的任务控制块地址; (6)将新任务的PC位置、通用寄存器数据、CPU的状态出栈,开始执行新的任务。调度器上锁和解锁C/OS-II操作系统使用OSSchedLock()函数和OSSchedUnlock()函数进行锁定(不允许任务级调度)和解锁(重新允许任务级调度)调度器,在用户应用程序中,OSSchedLock()和OSSchedUnlock()是成对出现的,否则系统有可能出错。 在调用函数OS_Sch

27、ed()进行调度时,要求没有进入中断,因为操作系统期望中断处理程序执行时间尽可能短 。C/OS-II中断管理 (1)硬件中断一般是由外部(相对CPU内核而言)的硬件引起的事件,比如串口接收到数据、键盘击键以及时钟中断等; (2)软件中断(Soft Interrupt)通过在程序中执行的中断指令引起的中断,又叫软中断,软中断指令一般用于操作系统的系统调用入口,软中断是用户访问操作系统提供的服务(API函数)的惟一途径。 中断响应的过程:(1)硬件中断一般是由外部(相对CPU内核而言)的硬件引起的事件,比如串口接收到数据、键盘击键以及时钟中断等; (2)软件中断(Soft Interrupt)通过

28、在程序中执行的中断指令引起的中断,又叫软中断,软中断指令一般用于操作系统的系统调用入口,软中断是用户访问操作系统提供的服务(API函数)的惟一途径。 ARM处理器中断响应 :(1)拷贝当前CPSR到对应模式的SPSR寄存器中以存储当前程序状态,这些信息包括当前处理器模式、中断屏弊位以及控制标识。(2)改变CPSR寄存器的模式位使处理器工作于对应模式、禁止中断位,其中,在任何异常情况下都将禁止IRQ请求位,当复位中断和FIQ中断发生时还将禁止FIQ请求位。(3)保存返回地址到对应模式链接寄存器(LR)。(4)设置当前程序PC寄存器到中断向量地址以处理异常。这将强制跳转到相应的中断处理程序中。 A

29、RM处理器中断返回 :(1)从相应模式的SPSR寄存器中恢复CPSR寄存器内容;(2)恢复存储在栈中的普通寄存器数据;(3)从相应模式的链接寄存器LR中恢复PC寄存器以使程序从中断处重新执行。 RTOS信号量的操作过程:创建信号量、获取(申请)信号量、释放信号量、删除信号量、清除信号量的任务等待列表 、获取有关信号量的各种信息 获取信号量:如果任务等待一个使用优先级继承算法的互斥信号量,且它的优先级高于当前正占有此信号量的任务的优先级,那么占有信号量的任务将继承这个被阻塞的任务的优先级。 如果任务成功地获得一个采用优先级天花板算法的互斥信号量,它的优先级又低于优先级天花板,那么它的优先级将被抬

30、升至天花板。 当所申请的信号量不能被立即获得时,可以有以下几种选择: 永远等待 不等待,立即返回,并返回一个错误状态码 指定等待时限(可有效避免死锁)注意:不允许在ISR中选择等待;当任务选择等待时,将被按FIFO或优先级顺序放置在等待队列中 释放信号量:功能:释放一个应用指定的信号量。 if 没有任务等待这个信号量then 信号量的值加1 else 将信号量分配给一个等待任务(将相应的任务移出等待队列,使其就绪) 如果使用了优先级继承或优先级天花板算法,那么执行该功能(系统调用)的任务的优先级将恢复到原来的高度。 删除信号量:功能:从系统中删除应用指定的一个信号量 内核动作:将信号量控制块返

31、还给系统 删除信号量的不一定是创建信号量的任务 如果有任务正在等待获得该信号量,执行此功能将使所有等待这个信号量的任务回到就绪队列中,且返回一个状态码指示该信号量已被删除 企图获取已删除的信号量将返回一个错误; 在互斥信号量正被使用时(已经被某任务获取),不能删除它。因为该信号量正在保护一个共享资源或临界代码段,该动作可能造成数据崩溃或其他严重问题。 信号量实现生产-消费问题应用实例 生产者消费者在固定的仓库空间条件下, 生产者每生产一个产品将占用一个仓库空间,生产者生产的产品库存不能越过仓库的存储量, 消费者每消费一个产品将增加一个仓库空间,消费者在仓库产品为0时不能再消费。 对于生产者来说

32、,其需要申请的资源为仓库中的剩余空间,因此,生产者在生产一个产品前,申请sem_produce信号量,当此信号量的值大于0,即有可用空间,将生产产品,并将sem_produce的值减去1(因为占用了一个空间);同时,当其生产一个产品后,当前仓库的产品数量增加1,需要将sem_custom信号量自动加1。 对于消费者来说,其需要申请的资源为仓库中的产品,因此,消费者在消费一个产品前,将申请sem_custom信号量,当此信号量的值大于0时,即有可用产品,将消费一个产品,并将sem_custom信号量的值减去(因为消费了一个产品),同时,当消费一个产品,当前仓库的剩余空间增加1,需要将sem_pr

33、oduce信号量自动加1。 任务间通信:任务间的通信方式 直接通信。在通信过程中双方必须明确地知道(命名)彼此: Send (P,message) 发送一个消息到任务P Receive(Q,message) 从任务Q接收一个消息 间接通信。通信双方不需要指出消息的来源或去向,而通过中间机制来通信。如: send(A,message) 发送一个消息给邮箱A receive(A,message) 从邮箱A接收一个消息消息和消息队列: 消息:内存空间中一段长度可变的缓冲区,其长度和内容均可以由用户定义,其内容可以是实际的数据、数据块的指针或空。 对消息内容的解释由应用完成。 从操作系统观点看,消息没

34、有定义的格式,所有的消息都是字节流,没有特定的含义。 从应用观点看,根据应用定义的消息格式,消息被解释成特定的含义。 应用可以只把消息当成一个标志,这时消息机制用于实现同步 事件 在嵌入式实时内核中,事件是指一种表明预先定义的系统事件已经发生的机制。 事件机制用于任务与任务之间、任务与ISR之间的同步。其主要的特点是可实现一对多的同步。 一个事件就是一个标志,不具备其它信息。 一个或多个事件构成一个事件集。事件集可以用一个指定长度的变量(比如一个8bit, 16bit或32bit的无符号整型变量,不同的操作系统其具体实现不一样)来表示,而每个事件由在事件集变量中的某一位来代表。 事件及事件集有

35、以下特点: 事件间相互独立 事件仅用于同步,不提供数据传输功能 事件无队列,即多次发送同一事件,在未经过任何处理的情况下,其效果等同于只发送一次。 提供事件机制的意义在于: 当某任务要与多个任务或中断服务同步时,就需要使用事件机制。 若任务需要与一组事件中的任意一个发生同步,可称为独立型同步(逻辑“或”关系)。 任务也可以等待若干事件都发生时才同步,称为关联型同步(逻辑“与”关系)。 发送事件集 。指在一次发送过程中发往接收者(比如任务)的一个或多个事件的组合。 待处理事件集。指已被发送到一个接收者但还没有被接收(即正在等待处理)的所有事件的集合。 事件条件。指事件接收者在一次接收过程中期待接

36、收的一个或多个事件的集合。 “或”同步:待处理事件集只要包括事件条件中的任一事件即可满足要求;“与”同步:其二是待处理事件集必须包括事件条件中的全部事件方可满足要求 时间管理: 时间管理一般具有以下功能: 维持日历时间; 任务有限等待的计时; 软定时器的定时管理; 维持系统时间片轮转调度实时内核的时间管理以系统时钟为基础,系统时钟一般定义为整数或长整数,提供给应用程序所有和时间有关的服务。 系统时钟是由定时/计数器产生的输出脉冲触发中断而产生的。 输出脉冲的周期叫做一个“时钟滴答”,也称为时标、tick tick为系统的相对时间单位,也被称为系统的时基,来源于定时器的周期性中断,一次中断表示一

37、个tick。 一个tick与具体时间的对应关系可在初始化定时器时设定,也就是说,tick所对应的具体时间长度是可以调整的。 一般来说,实时内核都提供相应的调整机制,应用可以根据特定情况改变tick对应的时间长度。例如,可以使系统5毫秒产生一个tick,也可以是10毫秒产生一个tick。tick的大小决定了整个系统的时间粒度。RTOS的时间管理 通常来说,实时内核提供以下主要与时间相关的管理: 维持相对时间(时间单位为tick)和日历时间;任务有限等待的计时;定时功能;时间片轮转调度的计时。 管理功能是通过tick处理程序来实现的。 定时器发生中断后,执行系统时钟中断处理程序,并在中断处理程序中

38、调用tick处理程序,实现系统中与时间和定时相关的操作。 tick处理程序作为实时内核的一部分,与具体的定时器/计数器硬件无关,由系统时钟中断处理程序调用,使实时内核具有对不同定时器/计数器硬件的适应性。 在时间方面,内核通常提供以下功能: 设置系统时间。使应用能够设置当前系统的日期和时间(uC/OS不提供)。 获得系统时间。以日历时间、系统启动以来所经历的tick数等形式获得当前的系统时间。 维护系统时基、处理定时事件。通过时钟中断,维持系统日志时间、任务延迟时间、超时、单调速率周期、实现时间片等内容。 C/OS-II时钟概念 任何实时系统的时钟硬件设备每隔一段时间(即一个系统tick)产生

39、的一个硬件中断,操作系统接收到该硬件中断后,更新时间计数器,更新所有对时钟依赖的程序代码,从而维持系统有序而稳定的运行。 C/OS-II定义了宏OS_TICKS_PER_SEC来标识来当前系统时钟中断产生的时间间隔,如果该值定义为100,即标识0.01秒产生一个时钟中断。 #define OS_TICKS_PER_SEC 100 /* Set the number of ticks in one second */ 另外,系统定义了全局时钟变量来记录系统运行的时间值,该变量定义如下: OSTime为32位系统时钟变量,标识系统运行时间: OS_EXT volatile INT32U OSTim

40、e; /* Current value of system time (in ticks) */创建系统时钟任务 (1)在系统启动前,创建系统时钟任务,使其处于最高优先级执行,因为时钟任务比所有任务更重要,2)因时钟任务是因产生中断而执行,因此,其为中断服务子程序内容,在timer_Task()函数中安装时钟中断服务程序,在安装时钟中断处理程序中启动系统时钟,即系统硬件时钟中断到来时就执行该中断服务程序, 不适合C/OS-II ( C/OS-II 通过设置延时来实现类似功能) 在定时方面,内核通常提供以下功能: 创建软件定时器。分配一个定时器数据结构,创建一个软件定时器,并为这个定时器分配用户

41、指定的名字。新创建的定时器没有被激活,且没有相应的定时器服务例程。软件定时器创建成功后,将为该定时器分配一个ID标识。启动软件定时器。 使定时器在给定的时间过去后,触发定时器服务例程。 对于软件定时器,通常还可以指定是单次触发还是周期触发。 在单次触发中,只触发执行一次挂接的定时服务例程; 周期触发则可以在每次触发服务例程后,经过相同的时间间隔又会触发挂接在该定时器上的服务例程。 使软件定时器停止计时。 使指定的软件定时器停止工作。因此,对应的定时器服务例程不再被触发,除非定时器被重新激活; 复位软件定时器。把定时器的定时值恢复到原来设定的值。 删除软件定时器。用来删除一个软件定时器。如果定时

42、器还在工作,则其自动停止。该定时器对应的数据结构被返回给系统。 RTOS内存管理 动态分配 堆(heap):应用通过分配(malloc)与释放(free)操作来使用内存。堆会带来碎片:内存被逐渐划分为位于已被使用区域之间的越来越小的空闲区域。垃圾回收:对内存堆进行重新排列,把碎片组织成为大的连续可用内存空间。但垃圾回收的时间长短不确定:不适合于处理实时应用。在实时系统中,避免内存碎片的出现,而不是在出现内存碎片时进行回收。 常用管理方式:固定大小存储区:在指定边界的一块地址连续的内存空间中,实现固定大小内存块的分配。可变大小存储区:在指定边界的一块地址连续的内存空间中,实现可变大小内存块的分配

43、。应用根据需要从固定大小存储区或者可变大小存储区中获得一块内存空间,用完后将该内存空间释放回相应的存储区。内存保护 在嵌入式实时操作系统中,MMU通常被用来进行内存保护: 实现操作系统与应用程序的隔离 应用程序和应用程序之间的隔离 防止应用程序破坏操作系统的代码、数据以及应用程序对硬件的直接访问。 对于应用程序来讲,也可以防止别的应用程序对自己的非法入侵,从而破坏应用程序自身的运行。 创建内存分区 基本流程如下: (1)参数检查。检查是否有错误标志存储空间,是否指定确定的欲创建内存分区起始位置、块大小是否合法、块个数是否大于等于2。 (2)申请内存控制块存储内存基本信息。如果申请成功,将更新空

44、闲内存控制块链表。如果未申请成功,返回OS_MEM_INVALID_PART。 (3)从指定起始位置申请大小为nblks* blksize的内存空间。 (4)更新内存分区控制块成员变量信息,返回该内存分区控制块位置。申请内存分区块(1)参数检查。检查是否指定了错误标志存储位置,是否指定了欲申请空间的内存分区对象。(2)如果条件满足,将在该内存分区中申请一个内存块,更新内存控制块的空闲指针和空间块个数,返回申请到的内存空间起始地址释放内存分区块 (1)参数检查。检查两个参数是否满足要求。 (2)如果参数合法,满足要求,将该内存块加入到内存块管理对象中,同时更新内存控制块成员变量。嵌入式软件开发的分类 嵌入式软件的开发可以分为以下几种 : 编写简单的板级测试软件,主要是辅助硬件的调试 开发基本的驱动程序 开发特定嵌入式操作系统的驱动程序(板级支持包) 开发嵌入式系统软件,如:嵌入式操作系统等 开发应用软件 开发工具的分类 从以上嵌入式软件开发分类来看,嵌入式软件开发工具可以分为: 与嵌入式OS相关的开发工具,用于开发: 基于嵌入式OS的应用 部分驱动程序等 与嵌入式OS无关的开发工具,用于开发: 基本的驱动程序 辅助硬件调试程序 系统软件等

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!