嵌入式软件测试(一)

上传人:正** 文档编号:50452067 上传时间:2018-08-08 格式:PPT 页数:44 大小:613KB
返回 下载 相关 举报
嵌入式软件测试(一)_第1页
第1页 / 共44页
嵌入式软件测试(一)_第2页
第2页 / 共44页
嵌入式软件测试(一)_第3页
第3页 / 共44页
嵌入式软件测试(一)_第4页
第4页 / 共44页
嵌入式软件测试(一)_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《嵌入式软件测试(一)》由会员分享,可在线阅读,更多相关《嵌入式软件测试(一)(44页珍藏版)》请在金锄头文库上搜索。

1、嵌入式软件测试王海鹏第一部分 嵌入式系统基本概念嵌入式系统IEEE定义根据IEEE(国际电气和电子工程师协会)的定义:嵌入式系统是“用于控制、监视或者辅助操作 机器和设备的装置”(原文为devices used to control, monitor, or assist the operation of equipment, machinery or plants)。可以看出此定义是从应用上考虑的,嵌入式系 统是软件和硬件的综合体,还可以涵盖机电等附属 装置。一般定义“以应用为中心、以计算机技术 为基础、软件硬件可裁剪、功能、 可靠性、成本、体积、功耗严格要 求的专用计算机系统。”一、嵌入式

2、系统的几个重要特征(1)系统内核小由于嵌入式系统一般是应用于小型电子 装置的,系统资源相对有限,所以内核 较之传统的操作系统要小得多。比如ENEA公司的OSE分布式系统,内核只 有5K,而Windows的内核则要大得多。)专用性强 嵌入式系统的个性化很强,其中的软件系统和硬件 的结合非常紧密,一般要针对硬件进行系统的移植 。即使在同一品牌、同一系列的产品中也需要根据系 统硬件的变化和增减不断进行修改。同时针对不同的任务,往往需要对系统进行较大更 改,程序的编译下载要和系统相结合,这种修改和 通用软件的“升级”是完全不同的概念。()系统精简嵌入式系统一般没有系统软件和应用软 件的明显区分,不要求

3、其功能设计及实 现上过于复杂,这样一方面利于控制系 统成本,同时也利于实现系统安全。()高实时性OS这是嵌入式软件的基本要求,而且软件 要求固态存储,以提高速度。软件代码 要求高质量和高可靠性、实时性。(5)嵌入式软件开发走向标准化嵌入式系统的应用程序可以没有操作系统直接在芯 片上运行。为了合理地调度多任务、利用系统资源、系统函数 以及和专家库函数接口,用户必须自行选配RTOS( RealTime Operating System)开发平台,这样才 能保证程序执行的实时性、可靠性,并减少开发时 间,保障软件质量。(6)嵌入式系统需要开发工具和环境由于其本身不具备自主开发能力,即使设计完成以 后

4、,用户通常也是不能对其中的程序功能进行修改 ,必须有一套开发工具和环境才能进行开发。这些工具和环境一般是基于通用计算机上的软硬件 设备以及各种逻辑分析仪、混合信号示波器等。开发时往往有主机和目标机的概念,主机用于程序 的开发,目标机作为最后的执行机,开发时需要交 替结合进行。 二、嵌入式系统的架构处理器存储器输入输出操作系统软件 结构硬件 结构CISC和RISKCISC:复杂指令集(Complex Instruction Set Computer)具有大量的指令和寻址方式 8/2原则:80%的程序只使用20%的指令大多数程序只使用少量的指令就能够运行。 RISC:精简指令集(Reduced I

5、nstruction Set Computer)在通道中只包含最有用的指令确保数据通道快速执行每一条指令 使CPU硬件结构设计变得更为简单三、嵌入式系统软件基础操作系统的分类嵌入式实时操作系统前台与后台多任务,任务优先级,调度非占先式与占先式、可重入型函数3.1操作系统的分类(1)顺序执行系统:系统内只含有一个程序,独占 CPU的运行时间,按语句顺序执行该程序,直至执行 完毕,另一程序才能启动运行。如DOS操作系统。(2)分时操作系统:系统内同时可以有多个程序运行 ,把CPU的时间分按顺序分成若干片,每个时间片内 执行不同的程序。如UNIX(3)实时操作系统:系统内有多个程序运行,每个程 序有

6、不同的优先级,只有最高优先级的任务才能占 有CPU的控制权。按实时性分类强实时系统,其系统响应时间在毫秒或微秒 级(数控机床);一般实时系统,其系统响应时间在毫秒几 秒的数量级上,其实时性的要求比强实时系 统要差一些(电子菜谱的查询)。弱实时系统,其系统响应时间约为数十秒或 更长(工程机械)。按软件结构分类1)循环轮询系统:(Polling Loop)最简单的软件结构是循环轮询,程序依次检查系统的每一个输 入条件,一旦条件成立就进行相应的处理。 Initialize() While(true)if(condition_1) action_1();if(condition_2) action_2

7、();if(condition_n) acition_n(); 2)事件驱动系统:(Event-Driven system)事件驱动系统是能对外部事件直接响应的系统。它包括前后台 、实时多任务、多处理器等,是嵌入式实时系统的主要形式 。 应用程序是一个无限的循环,循环中调用相应的函数完成相应 的操作,这部分可以看成后台行为(background)。中断服 务程序处理异步事件,这部分可以看成前台行为( foreground)。 后台也可以叫做任务级,前台也叫中断级。例如,很多基于微处理器的产品采用前后台系统设计,如微波 炉、电话机、玩具等。从省电的角度出发,平时微处理器处 在停机状态,所有的事都

8、靠中断服务来完成。前后台系统(后台循环、前台中断)ISRISR后台 前台ISR时间3.2代码的临界区代码的临界区也称为临界区,指处理时 不可分割的代码。一旦这部分代码开始 执行,则不允许任何中断打入。在进入临界区之前要关中断,而临界区 代码执行完以后要立即开中断(在任务 切换时,地址、指令、数据等寄存器堆 栈保护)。3.3多任务(任务、进程和线程)CPU寄存器任务 控制 块1任务 控制 块2任务 控制 块n休眠、就绪、运行、挂起、被中断任务 1任务 2任务 nCPU寄存器一个任务,也称作一个线程,是一个简单的运行程序 。每个任务都是整个应用的某一部分,每个任务被 赋予一定的优先级, 有它自己的

9、一套CPU寄存器和 自己的栈空间。多任务运行的实现实际上是靠CPU(中央处理单元)在 许多任务之间转换、调度。CPU只有一个,轮番服务于一系列任务中的某一个。 多任务运行使CPU的利用率得到最大的发挥,并使应 用程序模块化。 在实际应用中,多任务的最大特点是,开发人员可以 将很复杂的应用程序层次化。3.4系统内核(Kernel)与调度( Scheduler)多任务系统中,内核负责管理各个任务,或者说为 每个任务分配CPU时间,并且负责任务之间的通信。内核提供的基本服务是任务切换。内核本身也增加 了应用程序的额外负荷,代码空间增加ROM用量,内 核本身的数据结构增加了RAM的用量。内核本身对 C

10、PU的占用时间一般在2到5个百分点之间。调度(Scheduler)是内核的主要职责之一,就是要 决定该轮到哪个任务运行了。多数实时内核是基于 优先级调度法的。每个任务根据其重要程度的不同 被赋予一定的优先级。基于优先级的调度法指,CPU 总是让处在就绪态的优先级最高的任务先运行。非占先式与占先式非占先式(non-preemptive) 非占先式调度法也称作合作型多任务(cooperative multitasking),各个任务彼此合作共享一个CPU。 中断服务可以使一个高优先级的任务由挂起状态变为就绪状态 。但中断服务以后控制权还是回到原来被中断了的那个任务 ,直到该任务主动放弃CPU的使用

11、权时,那个高优先级的任 务才能获得CPU的使用权。 非占先式内核的一个特点是几乎不需要使用信号量保护共享数 据。运行着的任务占有CPU,而不必担心被别的任务抢占。 非占先式内核的最大缺陷在于其响应高优先级的任务慢,任务 已经进入就绪态,但还不能运行,也许要等很时间,直到当 前运行着的任务释放CPU。内核的任务级响应时间是不确定 的,不知道什么时候最高优先级的任务才能拿到CPU的控制 权,完全取决于应用程序什么时候释放CPU。非占先式(Non-Preemptive)低优先级任务ISR高优先级任务(1)(2)(3)(4)(5)(6)(7)中断服务程序使 高优先级任务就绪低优先级任务释放 CPU使用

12、权TIME占先式(preemptive)当系统响应时间很重要时,要使用占先式( preemptive)内核。最高优先级的任务一旦就绪, 总能得到CPU的控制权。 当一个运行着的任务使一个比它优先级高的任务进入 了就绪态,当前任务的CPU使用权就被剥夺了,或者 说被挂起了,那个高优先级的任务立刻得到了CPU的 控制权。 使用占先式内核时,应用程序不应直接使用不可重入 型函数。如果调入可重入型函数时,低优先级的任 务CPU的使用权被高优先级任务剥夺,不可重入型函 数中的数据有可能被破坏。低优先级任务ISR高优先级任务(1)(2)(3)(4)(5)(6)中断服务程序使 高优先级任务就绪高优先级任务得

13、到 CPU使用权TIME3.5可重入型函数可以被一个以上的任务调用,而不必担心数据的破坏。可重 入型函数任何时候都可以被中断,一段时间以后又可以运行 ,而相应数据不会丢失。可重入型函数或者只使用局部变量 ,即变量保存在CPU寄存器中或堆栈中。一个不可重入型函数的例子 int Temp; Void swap (int *x,int*y) Temp=*x; *X=*Y; *y=Temp; 一个可重入型函数的例子 Void swap (int *x,int*y) int Temp; Temp=*x; *X=*Y; *y=Temp; 3.6任务优先级静态优先级应用程序执行过程中诸任务优先级不变, 则称

14、之为静态优先级。在静态优先级系统中 ,诸任务以及它们的时间约束在程序编译时 是已知的 动态优先级应用程序执行过程中,任务的优先级是可 变的,则称之为动态优先级。实时内核应当 避免出现优先级反转问题。优先级反转3.7信号量(Semaphore)信号量是60年代中期Edgser Dijkstra 发明 的。信号量实际上是一种约定机制,在多任 务内核中普遍使用.信号量用于:u控制共享资源的使用权(满足互斥条件)u标志某事件的发生u使两个任务的行为同步信号与信号量在英文中都叫做Semaphore,并 不加以区分,而说它有两种类型,二进制型 (binary)和计数器型(counting) 二进制信号量计

15、数式信号量监视某一资源的多个实例3.8任务间的通讯(Intertask Communication)全程变量或共享内存邮箱或消息队列全程变量用全程变量时,必须保证每个任务或中断服 务程序独享该变量。中断服务中保证独享的唯一办法是关中断。如果两个任务共享某变量,各任务实现独享 该变量的办法可以是关中断再开中断,或使 用信号量 消息邮箱消息队列四、BSP的基本概念BSP(板级支持包)是介于底层硬件和操作系统之间的 软件层次,它完成系统上电后最初的硬件和软件初 始化,并对底层硬件进行封装,使得操作系统不再 面对具体的操作。BSP的特点: 硬件相关性:因为嵌入式实时系统的硬件环境具有 应用相关性,所以

16、,作为高层软件与硬件之间的接 口,BSP必须为操作系统提供操作和控制具体硬件的 方法。 操作系统相关性:不同的操作系统具有各自的软件 层次结构,因此,不同的操作系统具有特定的硬件 接口形式。BSP的功能嵌入式系统初始化A、片级初始化B、板级初始化C、系统级初始化硬件相关的设备驱动程序嵌入式系统初始化1)片级初始化:主要完成微处理器的初始化, 包括设置微处 理器的核心寄存器和控制寄存器,微处理器核心工作模式以 及其局部总线模式等。片级初始化把微处理器从上电时的缺 省状态逐步设置成为系统所要求的工作状态。这是一个纯硬 件的初始化过程 2)板级初始化:完成微处理器以外的其他硬件设备的初始化 。除此之外,还要设置某些软件的数据结构和参数,为随后 的系统级初始化和应用程序的运行建立硬件和软件环境。这 是一个同时包含软硬件两部分在内的初始化过程。 3)系统级初始化:这是一个以软件初始化为主的过程, 主要 进行操作系

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 工程造价

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号