第八章嵌入式系统设计

上传人:少*** 文档编号:243129932 上传时间:2024-09-16 格式:PPT 页数:57 大小:1.95MB
返回 下载 相关 举报
第八章嵌入式系统设计_第1页
第1页 / 共57页
第八章嵌入式系统设计_第2页
第2页 / 共57页
第八章嵌入式系统设计_第3页
第3页 / 共57页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,微型计算系统原理及接口技术,电子科技大学,通信与信息工程学院,林水生,2010,1,第八章 嵌入式系统设计,4,学时,2,8.1,嵌入式系统简介,嵌入式系统:,嵌入,到各种控制应用系统、各类电子系统和电子产品中,实现嵌入式应用,的计算机系统,嵌入式系统是以,应用为核心,,以,计算机技术为基础,,,软硬件可剪裁,,适用于应用系统对功能、可靠性、成本、体积、功耗有,严格要求的专用计算机,系统,Embedded system is devices used to control, monitor, or assist the operation of equipment, machinery or plants,IEEE,嵌入式系统的,主要特征,面向控制对象,对多种不同的控制对象能灵活地进行实时控制,嵌入到应用系统中,在工业现场环境中可靠地运行,3,嵌入式系统的主要特点,软件硬件,协同并行开发,多种多样的微处理器,实时操作系统,的多样性,(RTOS),与台式机相比,可利用,系统资源,有限,应用,支持很少,要求,特殊的开发工具,代码固化,运行,调试手段有限,软件硬件的,鲁棒性,(健壮性,,Robust,),嵌入式系统的,体积和功耗,4,8.2,设计方法及设计流程,嵌入式系统要解决的,主要问题,需要用什么样的,系统结构,来实现?,如何,满足时限,要求,如何处理多项功能在时间上的协调一致关系?,如何保证,系统可靠,地工作?,如何满足,系统接口,要求,嵌入式应用直接和系统接口输入输出信息?,如何,降低系统的功耗,?,如何使系统,可升级,?,5,设计流程,自顶向下或自底向上设计,需求,设计说明,体系结构,构件设计,系统集成,自顶向下设计,自底向上设计,6,单片机系统的开发流程,用户需求,开发结束,整个系统测试,按照设计的硬件平台编写软件,软件测试通过,选择处理器设计硬件平台,否,是,遇到硬件问题,修改硬件平台,否,是,7,嵌入式系统开发流程,用户需求,开发结束,整个系统测试,选择合适的嵌入式操作系统,在操作系统上开发应用程序,应用程序测试通过,选择嵌入式处理器,及硬件平台,否,是,8,需求分析,作用,使用户和设计者有效交流、沟通,,明确设计目标,设计者 设计什么?有哪些要求?,用户 将得到的系统是什么样的?,目标,形成,需求文档,内容,功能性需求,做什么?,输入,输出,功能,,非功能性需求,其他属性,可靠性,速度,功耗,,成本,大小,重量,设计时间,,9,评价标准,正确性,无二义性,完整性,可检验性,一致性,可修改性,可追踪性,10,例:,GPS,移动地图的需求,11,设计规格说明,规格说明与需求的,比较,需求的提炼,需求的,精确描述,是可用来创建体系结构的关于,系统的更详尽、更精确、更一致的描述,目标,形成,规格说明书,内容,包含系统,体系结构设计,的足够信息,统一描述,系统的硬件和软件,12,例:,GPS,系统的规格说明,从,GPS,卫星接收到的数据。,地图数据。,用户界面。,必须执行的满足客户需求的操作。,保持系统运行所需的后备动作,如操纵,GPS,接收机。,13,系统结构设计,作用,实现系统的蓝图,系统,整体结构,的一个计划,目标,形成,结构设计文档,内容,系统分析,系统,软硬件,整体结构的,设计,软硬件,划分,标准构件,和,自行设计构件,的确定,14,系统结构设计,系统,如何实现,设计说明书描述的功能,基于组件,的系统结构,软件,/,硬件划分,嵌入式系统中软件和硬件协同完成系统的功能,软件硬件划分通常由速度、灵活性以及开销来决策,硬件,单片机, X86, PowerPC, ARM, MIPS,板级支持程序,嵌入式操作系统,应用软件,监控程序,15,嵌入式系统硬件组成,16,例:,GPS,系统的硬件体系结构,GPS,接受信号,数据库,显示器,搜索引擎,转换器,用户界面,17,嵌入式系统软件的特征,操作系统,功能,任务调度,资源管理,设备驱动,协议栈,TCP,IP,应用软件框架,软件要求,固态化,存储,软件代码,高质量、高可靠性,系统软件,(OS),的,高实时性,是基本要求,多任务,操作系统是知识集成的平台和走向工业标准化道路的基础,18,例:,GPS,系统的软、硬件,数据库搜索,转换器,位置,用户界面,时钟,像素,软件,显示器,帧,缓冲器,信号接收器,/,面板,存储器,硬件,19,标准构件和自行设计构件,构件,的实现,选择标准,自行设计,标准构件 ?现成构件,已经产品化,形成规模生产,标准构件 自行设计构件 用户系统,构件包括了硬件构件和软件构件,构件本身可以是层次性的,可以由子构件组成,20,构件,标准硬构件,标准,IC,CPU, DSP,RAM, ROM,接口控制器,,ASIC,标准,IP,CPU,核,,标准模块,GPRS,模块,GSM,模块,蓝牙模块,显示模块,,标准计算平台,基于,PC104,的嵌入式计算机,基于,Compact PCI,的嵌入式计算机,SOC,21,构件,标准软构件,OS / RTOS,协议栈,TCP/IP,路由协议,H.323,图形开发包,VxWorks,的,ZINK,驱动程序,22,构件,自研硬构件,内容,逻辑电路,专用加速器,,实现方式,PCB,:,IC,:,PLD FPGA ASIC,EDA,设计工具,板级:,原理图设计工具,PCB,设计工具,IC,硬件描述语言,: VHDL,Verilog,原理图描述工具,综合仿真工具,布线器,自研软构件,BSP,驱动程序,应用程序,23,8.3,嵌入式处理器,嵌入式处理器种类,嵌入式微处理器,(,MPU,):由通用计算机中的,CPU,演变而来,intel x86,、,IBM PowerPC,、,motorola 68K/coldfire,、,MIPS,、,ARM,、,Hitachi SuperH,等系列,嵌入式微控制器,(,MCU,):即单片机,芯片内部集成,ROM/EPROM,,总线,总线逻辑,定时器,,I/O,单元,串口,,A/D,D/A,,,flash,等,intel 8051,,,P51XA,,,MCS,系列,,motorola 68300,等,嵌入式,DSP,处理器,Texas Instruments,公司的,TMS320,系列和,Motorola,的,DSP56000,系列,嵌入式片上系统,(,SoC,),24,典型的嵌入式系统组成,处理器,MMU,GPIO,USB,LCD,CAN,DMA,以太网,LCD/,触摸屏,/,鼠标,Flash,SDRAM,SRAM,看门狗,复位电路,电源管理,驱动层,OS,应用,BSP/driver/HAL,Linux,、,u/COS,、,Wince,文件系统,/GUI/API,软件,硬件,输入,输出,25,嵌入式系统手机的一般组成,26,8.4,嵌入式软件,简单,的嵌入式应用,若嵌入式系统的功能需求比较简单,如电动玩具、空调、冰箱等,则嵌入式系统软件只需完成较简单的功能,就,不需要嵌入式操作系统,的支持。,如:基于,8051,的应用,儿童玩具、汽车系统等等,复杂,的嵌入式应用,若功能比较复杂,需要网络功能、存储器管理、进程,/,线程管理等,则通过,嵌入式操作系统,的帮助,可以加快嵌入式系统软件的开发进度和可靠性,27,简单的嵌入式系统软件开发,简单的嵌入式应用,不需要使用操作系统,当系统上电后,,main,函数将被调用,,首先初始化,,然后进入,循环,直到系统停电或者出现重大错误。,超级循环,void main(void),/prepare for function X,X_init();,While(1) X();,简单的嵌入式应用的,开发过程,在个人电脑上配置,交叉开发环境,、安装,仿真器,,,编写程序,,交叉编译,在仿真器上,运行测试并修改,直到软件满足需求;,利用面包板,开发和调试软、硬件,利用,编程器将软件烧,到开发好的,系统,中进行现场运行测试,28,8.4.1,嵌入式软件系统的一般结构,29,8.4.2,嵌入式软件工作流程,上电复位、,板级初始化,阶段,系统引导,,,软件加载,系统,初始化,应用,初始化,多任务应用,30,8.4.3,嵌入式操作系统,31,8.4.3,嵌入式操作系统,嵌入式,实时,操作系统,RTlinux,及其他嵌入式实时,Linux,uC/OS II,wind river systems,公司的,Vxworks,QNX software systems,公司的,QNX,。,pSOS,OS/9,VRTX,eCOS,ThreadX,嵌入式,非实时,操作系统,Microsoft,公司的,windows CE,、,Embedded windows xp,Palm,公司的,Palm OS,symbian,公司的,EPOC,一些嵌入式,linux,系统,32,8.4.6,常用的嵌入式实时操作系统,1.,VxWorks,嵌入式实时操作系统,风河(,WindRiver,)公司开发的一款商用硬实时操作系统,,不公开源码,支持主流的,32,位,CPU,,包括,x86,、,68K,、,PowerPC,、,MIPS,、,ARM,等,基于,微内核,结构,由,400,多个相对独立的,短小精悍的目标模块组成,,可裁剪性和可配置,性相当出色,为追求系统的,实时性,而设计的,并不是以通用,OS,为设计目标,任务调度采用的是基于,优先级的抢占式任务调度,模式,优先级分,256,级,(0-255,),Vxworks,的基本,构成模块,包括以下部分:,高效实时,微内核,wind,:,Vxworks,实时微内核,wind,以灵活性和可配置性为设计目标,它主要包括,基于优先级的,任务调度,任务同步和通信,中断处理,定时器,内存管理,兼容,POSIX(Portable Operating System Interface Standard),实时系统标准,33,1. VxWorks,嵌入式实时操作系统,Vxworks,的基本,构成模块,:,I/O,处理,系统:,Vxworks,提供与,ANSIC,兼容的,I/O,处理系统,主要包括,UNIX,缓冲,I/O,处理,系统,面向,实时,的异步,I/O,处理系统,本机,文件系统,网络处理,模块:,Vxworks,网络处理模块能与许多运行其他协议的网络进行通信,如,TCP/IP,、,NFS,、,UDP,、,SNMP,、,FTP,等,虚拟内存,模块,VxVMI,:,VxVMI,主要用于对指定内存区的保护,如内存块只读等,共享内存,模块,VxMP,:主要用于多处理器行运行任务之间的共享信号量、消息队列、内存块管理,板级支持包,BSP,:提供各种,硬件的初始化、中断的建立、定时器、内存映象,34,3. uC/OS II,免费,的,公开源码,实时操作系统,内核提供,任务调度和管理,、,时钟管理,、,任务间同步与通信,、,内存管理和中断服务,等功能,最多支持,64,个任务,分别对应优先级,0,63,,其中,0,为最高优先级,可剥夺,实时多任务,内核,调度工作的内容分为两部分:最高优先级任务的寻找和任务切换,内核是,针对实时系统,的要求来设计实现的,相对比较简单,可以满足较高的实时性要求,但是,没有网络功能和文件系统,,对于像媒体播放、需要网络和图形界面支持的应用就比较差,35,4. Windows CE,主要,用于,PDA,,,smartphone,等个人手持终端上,支持,多线程,支持,多种软硬件,最大的特点就是能提供与,PC,机类似的图形界面,和主要的应用程序,商业化,操作系统,主要模块,内核模块,:支持,进程和线程处理及内存管理,等基本服务,内核系统调用,接口模块,:运行应用程序访问操作系统提供的服务,文件系统模块,:支持,dos,,,fat,等格式的文件系统,图形窗口和事件子系统,模块:控制图形显示,并提供,windows GUI,界面,通信模块,:运行同其他设备进行信息交换,36,更强的功能,笔记本,PC,复杂的文档编辑和读写,桌面键盘输入,键盘和鼠标输入法,完整的,.NET framework,支持,Windows XP/XPE,平板电脑,复杂的文档编辑和读写,桌面键盘输入,支持数字墨水,可以支持键盘,也可以把键盘拿走,键盘、鼠标、数字墨水和语音输入,完整的,.NET framework,支持,提供笔,数字墨水,手写和语音识别,API,Windows CE,小型个人产品,单向网络,信息消费,Windows Mobile,Smartphone,信息消费,基本数据浏览,把,PDA,融入电话,可以与,Exchange,交互,.NET Compact Framework,ASP.NET,移动控件,Pocket PC,信息消费,浏览和输入数据,把电话融入,PDA,可以与,Office, Exchange,和,SQL Server,交互,.NET Compact Framework,ASP.NET,移动控件,微软的移动平台,37,8.5 LINUX,嵌入式操作系统,Linux,是一个,类似,Unix,(,Unix-like,)的操作系统,在,1991,年发行了它的第一个版本,在不同的语境下,,“,Linux,”,具有不同的内涵,Linux,内核,、,Linux,系统,或,Linux,开发套件,等术语。,严格来说,,Linux,指的是,Linux Torvalds,维护的(及通过主要和镜像网站发布的)内核。,GNU/Linux,GNU/Linux,的拥护者们认为,,Linux,仅仅是指,Linux,内核,,而整个,Linux,系统的大部分都建立在,GNU,软件之上,Linux,是,免费,的、,源代码开放,的、符合,POSIX(Portable Operating System Interface Standard),标准规范的操作系统,38,LINUX,发展历史,1991,年,11,月,芬兰赫尔辛基大学的学生,Linus Torvalds,写了个小程序,取名为,Linux,,放在互联网上。他表达了一个愿望,希望借此搞出一个操作系统的,“,内核,”,来,这完全是一个偶然事件,1993,,在一批高水平黑客的参与下,诞生了,Linux 1.0,版,1994,年,,Linux,的第一个商业发行版,Slackware,问世,1996,年,美国国家标准技术局的计算机系统实验室确认,Linux,版本,1.2.13,(由,Open Linux,公司打包)符合,POSIX,标准,2001,年,,Linux2.4,版内核发布,2003,年,,Linux2.6,版内核发布,Linux,内核版本号由,3,位数字组成,r.x.y,第,1,位数字,r,为主版本号,第,2,位数字,x,为说明版本类型的次版本号,如果,x,为偶数,则表示为产品化版本,为奇数时表示为实验版本,第,3,位数字,y,为修改号,表示错误修补的次数,39,几种流行的,Linux,发行版本,40,8.5.1,嵌入式,LINUX,操作系统,什么是嵌入式,Linux,嵌入式,Linux,内核,为特殊的硬件配置、或为了支持特别的应用而经过特别的裁剪的修改过的,Linux,内核,通常具有不同于工作站与服务器的内核配置,嵌入式,Linux,系统,基于,Linux,内核的嵌入式系统,嵌入式,Linux,发行套件,开发嵌入式,Linux,系统的平台,各种为了在嵌入式系统中使用而剪裁过的应用软件,基于,Linux,的嵌入式操作系统,uCLinux,ARMLinux,RT-Linux/RTAI,Embedix,Blue Cat Linux,Hard Hat Linux,等等,41,嵌入式,Linux,的典型应用,42,8.5.2,嵌入式,LINUX,的移植,Bootloader,移植,引导加载程序,bootloader,是系统加电后运行的,第一段代码,,功能,类似,pc,机的,BIOS,位于,地址,0x00000000,实现,初始化硬件,设备,,建立内存,空间,映射,图,为调用操作系统内核和用户应用程序准备好正确的环境,Bootloader,的启动可分为,两个阶段,stage1,用汇编编写,,依赖于体系结构,,完成,CPU,及存储设备,相关的,初始化,如,初始化,CPU,运行的,时钟频率,,初始化,Flash,和内存,的,数据宽度,、,读,/,写访问周期,和刷新周期,初始化,中断系统,,初始化系统中各种,片内片外设备和,I/O,口,初始化系统各种运行模式下的,寄存器和堆栈,,,跳转到,stage2,的,C,程序入口点,等,stage2,用,C,语言编写,,实现对,板级驱动,的支持,如初始化要用到的,内核映像和文件系统映像,并将,PC,指针指向操作系统内核的入口处,为操作系统的运行作好准备,43,Bootloader,的,stage1,的初始化过程,44,Bootloader,的,stage1,设计,1.,在,RAM,中,建立一个二级中断向量表,,起始地址为,0x33ffff00,,加快中断响应,#define _ISR_STARTADDRESS,(SDRAM_END-0x100),/0x33ffff00,define pISR_RESET (*(unsigned *)(_ISR_STARTADDRESS+0x0)/x33ffff00,#define pISR_UNDEF,(*(unsigned *)(_ISR_STARTADDRESS+0x4)/ x33ffff04,Flash,异常向量表,SDRAM,异常向量表,0x0000,Reset,0x33ffff00,HandleReset,Reset,0x0004,Undef,0x33ffff04,HandleUndef,Undefined,0x0008,SWI,0x33ffff08,HandleSWI,SWI,0x000c,Prefetch abort,0x33ffff0c,HandlePrefetch abort,Pabort,0x0010,Data abort,0x33ffff10,HandleData abort,Dabort,0x0014,Reserved,0x33ffff14,HandleReserved,Reserved,0x0018,IRQ,0x33ffff18,HandleIRQ,IRQ,0x001c,FIQ,0x33ffff1c,HandleFIQ,FIQ,45,Bootloader,的,stage1,设计,2.,拷贝,Stage2,至,RAM,的最顶部,1MB,开始的空间,,RAM,的起始地址为,0x30000000,/*,计算,stage2,在,flash,中的位置,假设该映像不超过,64K,,自行可修改该值*,/,Adr r0,_start,Add r2,r0,#(64*1024),Add r0,r0,#0x1000,Ldr r1 ,BLOB_START,/*,开始复制,stage2,到,RAM,,,R0=,源起始地址,,R1=,目的地址,,r2,源结束地址*,/,copy_loop:,ldmia r0!,r3-r10,stmia r1!, r3-r10,cmp r0,r2,ble copy_loop,ldr r0,BLOB_START /,复制完跳转到,RAM,执行由此入口进入,stage2,46,Bootloader,的,stage1,设计,3.,设置堆栈指针,系统堆栈初始化取决于用户使用了哪些中断,以及系统需要处理哪些错误类型。一般情况下,管理模式堆栈必须设置,如果使用了,IRQ,中断,则,IRQ,堆栈也必须设置,下面以,IRQ,堆栈为例进行设置。,IRQMode,堆栈,orr r1,r0,#IRQMODE|NOINT,msr cpsr_cxsf,r1 ; IRQMode,ldr sp,IRQStack,47,Bootloader,的,stage2,设计,1.,可执行映像,stage2,的入口,编译和链接,Bootloader,的,c,程序时不能使用,glibc,库支持的函数,所以直接把,main(),函数的起始地址作为第二阶段的入口点,用汇编编写一段,trampoline,(弹簧床)小程序用,CPU,跳转指令跳到,main(),函数去执行,当,mian(),函数返回时会再次回到,trampoline,程序,,具体汇编代码如下:,get read to call c functionsldr sp DW_STACK_START, setup stack pointermov fp ,#0, no previous frame,so fp=0mov a2, #0,set argv to NULL bl,main,call mainmov pc,#FLASH_BASE,otherwise,reboot,如果正常不出错就不会再回到,trampoline,程序,否则就会回到最后一条语句重起系统,48,Bootloader,的,stage2,设计,2.,内存影射,若配置的,SDRSAM,大小为,64M,则物理地址范围是,0x3000 00000x33FF FFFF,,由于,1,个,Section,的大小是,1M,,所以该物理空间可以被分成,64,个物理段,49,虚拟地址到物理地址的映射代码,void mem_mapping_linear(void),unsigned long descriptor_index, section_base, sdram_base, sdram_size;sdram_base=0x30000000;sdram_size=0x 4000000;for(section_base=sdram_base,descriptor_index=section_base20;,section_base20)|MMU_OTHER_SECDESC;,50,Bootloader,的,stage2,设计,3,装载,内核映像和根文件系统,映像像,ARM,这样的嵌入式,CPU,通常都是在统一的内存地址空间中寻址,Flash,等固态存储设备的,因此从,Flash,上读取数据与从,RAM,单元中读取数据用一个简单的循环就可以完成从,Flash,设备上拷贝映像的工作: 其中,count,为根文件系统映像的大小或内核映像的大小。,While(count),*dest+=*src+;/src,为,fash,中的地址,,dest,为,RAM,中的地址,count-=4;,51,Bootloader,的,stage2,设计,4,置内核的,启动参数,内核启动可以从,Nand Flash,或,Nor Flash,中启动运行,linux,,需要修改启动命令如下:,#ifdef CONFIG_S3C2410_NAND_BOOTChar Linux_cmd=,“,noinit root=/dev/bon/2 init =/Linuxrc console=tty0 console=ttys0,”,;#elseCharLinux_cmd=,“,CharLinux_cmd=,”,noinit root=/dev/bon/3 init =/Linuxrc console=tty0 console=ttys0,”,;,其中,noinitrd,不使用,ramdisk,。,root,根文件系统所在,MTD,分区。,Init,内核运行入口命令文件。,console,内核信息控制台,,ttys0,表示串行口,0,。,tty0,表示虚拟终端,LCD,启动参数一般都包括,root,、,init,和,console,52,嵌入式,LINUX,内核移植,内核,启动方式,非压缩,非,XIP,(eXecute In Place),:内核以非压缩方式存放在,Flash,中,启动时由,Bootloader,加载到内存后运行,非压缩,,XIP,:内核以非压缩格式存放在,ROM/Flash,中,不需要加载到内存,由,Bootloader,直接跳转到其存放地址执行,RAM,自解压,:内核以压缩格式存放于,ROM/Flash,中 ,只能以非,XIP,方式运行;由开头的一段自解压代码和压缩内核数据组成,Bootloader,启动后加载到内存中的临时空间,跳转到压缩内核入口地址执行自解压代码,内核被解压到最终的目的地址,然后运行,ROM,自解压,:压缩内核存放在,ROM/Flash,中,不需要加载到内存就能运行;解压缩代码也能够以,XIP,的方式在,ROM/Flash,中运行,Bootloader,直接跳转到自解压代码的存放地址处执行,将压缩内核解压到最终的目的地址并运行,53,内核启动地址的确定,arch/armnommu/boot/Makefile,定义,自解压代码的起始地址,ZTEXTADDR,和,内核启动地址,ZRELADDR,自解压代码将内核解压到,ZRELADDR,后运行,内核最先执行的文件,head-armv.S,,包括内核入口,ENTRY,到,start_kernel,间的初始化代码,主要作用是检查,CPU ID,,,Architecture Type,,初始化,BSS,等操作,并跳到,start_kernel,在执行前,处理器应满足以下状态:,r0 - should be 0 r1 - unique architecture number MMU - off I-cache - on or off D-cache,off,54,内核入口部分源代码分析,ENTRY(stext),mov r0, #F_BIT | I_BIT | MODE_SVC make sure svc mode,;禁止,FIQ,、,IRQ,,设定,SVC,模式,msr cpsr_c, r0 and all irqs disabled,;置当前程序状态寄存器,/*,判断,CPU,类型,查找运行的,CPU ID,值与,Linux,编译支持的,ID,值是否支持 *,/,bl _lookup_processor_type,teq r10, #0 invalid processor?,moveq r0, #,p, yes, error,p,beq _error,;跳到,_error,/*,判断体系类型,查看,R1,寄存器的,Architecture Type,值是否支持 *,/,bl _lookup_architecture_type,teq r7, #0 invalid architecture?,moveq r0, #,a, yes, error,a,beq _error,;不支持,跳到出错,/*,创建核心页表 *,/ bl _create_page_tables adr lr, _ret return address add pc, r10, #12 initialise processor,b start_kernel,;跳转到,start_kernel,函数,内核分析,55,8.6,嵌入式系统的测试,单元测试,硬件测试,:硬件电路的功能和指标的测试,可靠性测试和电磁兼容性测试,软件测试,测试实例或测试序列,功能测试和覆盖测试,找出哪个函数没有被功能测试完全覆盖;,找出各函数的哪一段没有被执行;,找出需要哪一个附加覆盖测试;,运行附加测试;,重复以上步骤,56,测试方法,功能测试称为,黑盒测试,:测试实例在设计时不引用程序的实际代码,极限情况测试,边界测试,异常测试,性能测试,随机测试,覆盖测试称为,白盒测试,:尽可能使每条代码语句、判定点或判定路径都最少被执行一次,语句测试,判定或分支覆盖,条件覆盖,灰盒测试,:仅仅知道程序内部细节的测试方法,灰盒测试与错误猜测结合,覆盖代码中的特定部分,57,习题,P314,8.1,;,8.3,;,8.4,;,8.6,;,8.8,;,8.10,;,8.12,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


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

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


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