软考嵌入式系统设计师考试学习笔记_精品文档Word下载.doc
《软考嵌入式系统设计师考试学习笔记_精品文档Word下载.doc》由会员分享,可在线阅读,更多相关《软考嵌入式系统设计师考试学习笔记_精品文档Word下载.doc(5页珍藏版)》请在冰豆网上搜索。
⑷、支撑软件的设计与调试;
⑸、应用程序的设计与调试;
⑹、系统联调、样机交付。
2、嵌入式软件开发的特点:
⑴、需要交叉编译工具;
⑵、通过仿真手段进行调试;
⑶、开发板是中间目标机;
⑷、可利用的资源有限;
⑸、需要与硬件打交道;
3、嵌入式开发遇到的问题:
⑴、软件硬协同设计;
⑵嵌入式操作系统;
⑶、代码优化;
⑷、有限的I/O资源;
二、嵌入式程序设计语言
1、程序设计语言概述
⑴机器语言:
是与计算机硬件关系最为密切的计算机语言,在计算机硬件上执行的就是一条条用机器语言来编写的指令;
汇编语言:
基本思路是用符号的形式来代替二进行的指令。
低级语言:
通常将机器语言和汇编语言统称为低级语言。
⑵语言处理程序
语言处理程序:
担任翻译任务的程序称为语言处理程序。
包括:
汇编程序、解释程序、编译程序。
源程序:
用汇编语言或某程高级语言编写的程序。
源程序不能直接在计算机上运行。
解释程序:
也称解释器,它直接解释执行源程序、或将源程序翻译成某种中间表示形式后再执行。
编译程序:
是将源程序翻译成目标语言程序,然后在计算机上运行。
区别:
在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行;
而在解释方式下,解释程序和源程序要参与程序的运行过程中,运行控制权在解释程序。
程序设计语言的定义
⑶包括:
语法、语义、语用、语境。
2、汇编语言
⑴、基本原理:
为特定计算机或计算机系统设计的面向机器的符号化程序设计语言。
包括三类语句:
指令语句、伪指令语句、宏指令语句。
指令语句:
又称机器指令语句,将其汇编后能产生相应的机器代码,这些代码能被CPU直接识别并执行相应的操作;
伪指令语句:
指示汇编程序在对源程序进行汇编时完成某些工作。
区别:
伪指令在汇编后不产生机器代码,而指令语句产生机器代码。
常用:
定义伪指令EQU;
存储定义伪指令DCB;
汇编控制伪指令IF、ELSE、ENDIF,WHILEWEND;
开始伪指令ENTRY;
结束伪指令END。
宏指令:
将多次重复使用的程序段定义为宏
⑵、ARM汇编语言
格式:
ARM语言以段为单位组织源文件。
段是相对独立的、具有特定名称的、不可分割的指令或数序列。
段可以分为代码段和数据段,代码段存放执行代码、数据段存放代码运行时用到的数据。
一个ARM源程序至少要一个代码段。
ARM汇编语言程序经过汇编处理后生成一个可执行的映像文件,包括:
一个或多处代码段,代码段通常是只读的;
0个或多个包含初始值的数据段,通常可读写;
0个或多处不含初始值的数据段,可读写;
3、面向过程的语言
定义:
也叫命令式语言或强制式语言,通过一系列可执行的运算及运算的先后次序来描述计算的过程。
过程序式语言包括:
数据、运算、控制、函数。
数据成分:
是一种程序语言的数据类型。
数据属性:
包括名称、类型、存储类别、作用域、生存周期。
运算成份:
算术运算、关系运算、逻辑运算。
控制成份:
顺序、选择、重复;
函数:
是程序模块的主要成份,它是一段具有独立功能的程序,包括三个概念:
函数定义,函数声明、函数调用。
一次函数调用的步骤:
⑴、在内存的栈空间当中为其分配一个栈帧,用来存放该函数的形参变量和局部变量;
⑵、把实参变量的值复制到相应的形参变量中;
⑶、控制流转移到该函数的起始位置;
⑷、该函数开始执行;
⑸、当这个函数执行完成后,控制流和返回值返回到函数调用点。
4、面向对象的语言
面向对象=对象+分类+继承+通过消息的通信
对象:
是基本运行时的实体,包括数据(属性),数据操作的行为,所以一个对象将属性和行为封装成一个整体。
由对象名、属性、操作三个部分组成。
方法:
在对象内的操作称为方法;
消息:
对象之间进行通信的一种构造;
类:
定义了一组大体上相似的对象,类是在对象之上的抽象,对象是类的具体化。
继承:
父类和子类之间共享数据和方法的机制。
多态:
不同的对象收到同一消息可以产生完成不同的结果,这一现象称为多态。
动态绑定:
是一个把过程调用和响应调用所需要执行的代码加以结全的过程。
C++:
一种面向对象的语言,支持面向对象,也支持面向过程。
5、汇编、编译、解译程序的基本原理
⑴、汇编程序:
是将汇编语言源程序翻译成机器语言程序。
汇编程序一般至少需要两次扫描源程序才能完成翻译过程:
第一次主要工作是定义符号的值并创建一个符号表ST;
第二次是扫描的任务产生目标程序。
⑵、编译程序:
功能是把某些高级语言编写的源程序翻译成与之等价的目标语言程序。
分成六个阶段:
词法分板阶段、语法分板阶段、语议分析阶段、中间代码生成阶段、代码优化阶段、目标代码生成阶段。
⑶、解释程序:
是另一种语言处理程序,在词法、语法、语议分析方面与编译程序,它直接执行源程序或源程序的内部形式。
因此解释程序不产生源程序的目标程序,这是与编译程序的主要区别。
三、嵌入式软件开发环境
宿主机:
是用于开发嵌入式系统的计算机,运行的工具包括:
文本编辑器、交叉调试器、集成环境以及各种分析工具。
目标机一般在嵌入式应用软件的开发和调试期使用,它可以是嵌入式应用软件的实际运行环境,也可以是能够代替实际运行环境的仿真系统。
常用的调度方法:
直接测试法、调试监控器法、ROM仿真器法、在线仿真器法、片上调试法及模拟法。
四、嵌入式软件开发
1、嵌入式平台选型
嵌入式设计分三个阶段:
分析、设计和实现。
分析阶段:
是确定要解决的问题及需要完成的目标,也称需求阶段;
设计阶段:
主要是解决如何在给定的约束条件下完成用户的需求;
实现阶段:
主要是解决如何在所选择的硬件和软件的基础上进行整个软硬件系统的协调和实现。
硬件的选择包括:
处理器、硬件部件
软件的选择包括:
操作系统、编程语言、软件开发工具、硬件调试工具和软件组件。
2、软件设计
⑴、软件设计任务:
准备一个工作计划;
确定软件的结构;
设计评审;
维护工作计划;
与硬件部门密切合作、相互协调;
控制工作的结果、把工作记录存档。
⑵、模块结构设计
模块结构设计的任务:
将系统划分为模块,确定软件的结构,模块的功能和模块间的接口,以及全局数据结构设。
模块:
是组成系统的基本单位,它的特点是可以组合、分解和更换。
模块的四要素:
输入和输出;
处理功能;
内部数据;
程序代码。
模块结构设计应遵守的原则:
所划分的模块其内部凝聚性要强,模块之间的联系要少,即要有很强的独立性;
模块之间的连接只能存在上下级之间的调用关系,不能有同级之间的横向关系;
整个结构呈树状结构,不允许网状结构或交叉调用关系;
所有模块必须严格地分类编码并建立归档文件。
⑶、结构化设计的方法
结构化设计的方法是一种面向数据流的设计方法,基本思想是将系统设计成由相对独立、功能单一的模块组成的结构。
信息流的类型:
变换流和事务流。
结构化设计方法的步骤:
复查并精化数据流图;
确定DFD的信息流类型(变换型或事务型);
根据流类型分别实施变换分析或事务分析;
根据系统设计的原则,对程序结构图进行优化。
3、嵌入式程序设计
⑴、bootloader的设计
步骤;
stage1和stage2两大部
Stage1步骤:
硬件设备初始化;
为加载bootloader的stage1准备内存空间;
复制bootloader的stage1到内存;
设置好堆栈;
跳转到stage1的C入口点。
Stage2步骤:
初始化本阶段要使用的硬件设备;
检测系统内存映射;
将内核映像和根文件系统映像到flash上读入到内存中;
为内核设置启动参数,并调用内核。
⑵、设备驱动程序设计
⑶、网络应用程序设计
4、编码
四个步骤:
确定源程序的标准格式、制定编程规范;
准备编程环境;
编写代码;
进行代码审查,提高编码质量。
5、测试
⑴、概述
软件测试:
是从经济和效率的角度出发,对软件代码进行质量和正确性保证的一个过程。
系统测试的目的:
是为了发现至今尚未发现的错误。
规范化的测试过程:
拟定测试计划;
编制测试大纲;
根据测试大纲设计和生产测试用例;
实施测试;
生成测试报告。
⑵、测试方法
分类:
人工测试和机器测试
人工测试的三种方法:
个人复查、抽查、会审
机器测试分成:
黑盒测试和白盒测试
黑盒测试:
也称功能测试,将软件看成黑盒子,在完成不考虑软件内部结构和特性的情况下,测试软件的外部特性。
极限情况测试;
边界测试;
异常测试;
随机测试;
性能测试。
白盒测试:
也称结构测试,将软件看成透明的的盒,根据程序的内部结构和逻辑来设计测试用例。
原则:
程序模块中的所有独立路径至少执行一次;
在所有的逻辑判断中,取“真”“假”的两种情况至少都要执行一次;
每个循环都应在边界条件和一般条件下各执行一次;
测试程序内部的数据结构的有效性。
⑶、测试步骤:
①、系统平台测试:
包括硬件电路测试、操作系统及底层驱动程序测试;
②、单元测试:
也称模块测试。
一般采用白盒测试法。
主要测试模拟块接口、局部数据结构、重要的执行路径、出错处理、边界条件。
测试时需要开的模块包括:
驱动模块(相当于一个程序,负责接收测试用例的数据,将这些数据送到测试模块,并输出结果)和桩模块(也称为存根模块,用来代替测试模块中所调用的子模块,其内可进行少量的数据处理,目的是为了检验入口,并输出调用和返回的信息)
③、集成测试:
也称组装测,就是把各个模块按照系统设计说明书的要求组合起来进行测试。
两种方法:
一种是分别测试各个模块,再把这些模块组合起来进行整体测试,即非增量式集成;
另一种是把下一个要测试的模块组合到已测试好的模块中,测试完成再将下一个模块组合进来,进行测试,这样逐步把所有的模块组合在一起,并完成测试,即增量式集成。
④、系统测试:
将嵌入式软件、硬件,外设和网络等各种因素结全在一起,进行整个系统的组装测试和确认测试。
一般采用黑盒测试法。
主要测试内容:
恢复测试、强度测试、性能测试、可靠性测试。
⑤、测试结果分析
对测试结果分析和比较帮助错误的定位,指导程序员修改代码。
⑷、覆盖测试:
是一种白盒测试法,测试人员必须拥有程序的规格说明书和程序清单。
其基本思路是以程序的内部结构为基础来设计测试用例,以覆盖尽可能多的程序内部逻辑结构,发现其中的错误和问题,一般用在单元测试阶段。
主要策略:
语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖。
6、下载运行