2020计算机软件水平《嵌入式系统设计师》考点:嵌入式软件开发
1、嵌入式平台选型
嵌入式设计分三个阶段:分析、设计和实现。
分析阶段:是确定要解决的问题及需要完成的目标,也称需求阶段;
设计阶段:主要是解决如何在给定的约束条件下完成用户的需求;
实现阶段:主要是解决如何在所选择的硬件和软件的基础上进行整个软硬件系统的协调和实现。
硬件的选择包括:处理器、硬件部件
软件的选择包括:操作系统、编程语言、软件开发工具、硬件调试工具和软件组件。
2、软件设计
⑴、软件设计任务:准备一个工作计划;确定软件的结构;设计评审;维护工作计划;与硬件部门密切合作、相互协调;控制工作的结果、把工作记录存档。
⑵、模块结构设计
模块结构设计的任务:将系统划分为模块,确定软件的结构,模块的功能和模块间的接口,以及全局数据结构设。
模块:是组成系统的基本单位,它的特点是可以组合、分解和更换。
模块的四要素:输入和输出;处理功能;内部数据;程序代码。
模块结构设计应遵守的原则:所划分的模块其内部凝聚性要强,模块之间的联系要少,即要有很强的独立性;模块之间的连接只能存在上下级之间的调用关系,不能有同级之间的横向关系;整个结构呈树状结构,不允许网状结构或交叉调用关系;所有模块必须严格地分类编码并建立归档文件。
⑶、结构化设计的方法
结构化设计的方法是一种面向数据流的设计方法,基本思想是将系统设计成由相对独立、功能单一的模块组成的结构。
信息流的类型:变换流和事务流。
结构化设计方法的步骤:复查并精化数据流图;确定DFD的信息流类型(变换型或事务型);根据流类型分别实施变换分析或事务分析;根据系统设计的原则,对程序结构图进行优化。
3、嵌入式程序设计
⑴、bootloader的设计
步骤;stage1和stage2两大部
Stage1步骤:硬件设备初始化;为加载bootloader的stage1准备内存空间;复制bootloader的stage1到内存;设置好堆栈;跳转到stage1的C入口点。
Stage2步骤:初始化本阶段要使用的硬件设备;检测系统内存映射;将内核映像和根文件系统映像到flash上读入到内存中;为内核设置启动参数,并调用内核。
⑵、设备驱动程序设计
⑶、网络应用程序设计
4、编码
四个步骤:确定源程序的标准格式、制定编程规范;准备编程环境;编写代码;进行代码审查,提高编码质量。
5、测试
⑴、概述
软件测试:是从经济和效率的角度出发,对软件代码进行质量和正确性保证的一个过程。
系统测试的目的:是为了发现至今尚未发现的错误。
规范化的测试过程:拟定测试计划;编制测试大纲;根据测试大纲设计和生产测试用例;实施测试;生成测试报告。
⑵、测试方法
分类:人工测试和机器测试
人工测试的三种方法:个人复查、抽查、会审
机器测试分成:黑盒测试和白盒测试
黑盒测试:也称功能测试,将软件看成黑盒子,在完成不考虑软件内部结构和特性的情况下,测试软件的外部特性。包括:极限情况测试;边界测试;异常测试;随机测试;性能测试。
白盒测试:也称结构测试,将软件看成透明的的盒,根据程序的内部结构和逻辑来设计测试用例。原则:程序模块中的所有独立路径至少执行一次;在所有的逻辑判断中,取“真”“假”的两种情况至少都要执行一次;每个循环都应在边界条件和一般条件下各执行一次;测试程序内部的数据结构的有效性。
⑶、测试步骤:
①、系统平台测试:包括硬件电路测试、操作系统及底层驱动程序测试;
②、单元测试:也称模块测试。一般采用白盒测试法。主要测试模拟块接口、局部数据结构、重要的执行路径、出错处理、边界条件。
测试时需要开的模块包括:驱动模块(相当于一个程序,负责接收测试用例的数据,将这些数据送到测试模块,并输出结果)和桩模块(也称为存根模块,用来代替测试模块中所调用的子模块,其内可进行少量的数据处理,目的是为了检验入口,并输出调用和返回的信息)
③、集成测试:也称组装测,就是把各个模块按照系统设计说明书的要求组合起来进行测试。
两种方法:一种是分别测试各个模块,再把这些模块组合起来进行整体测试,即非增量式集成;另一种是把下一个要测试的模块组合到已测试好的模块中,测试完成再将下一个模块组合进来,进行测试,这样逐步把所有的模块组合在一起,并完成测试,即增量式集成。
④、系统测试:将嵌入式软件、硬件,外设和网络等各种因素结全在一起,进行整个系统的组装测试和确认测试。一般采用黑盒测试法。
主要测试内容:恢复测试、强度测试、性能测试、可靠性测试。
⑤、测试结果分析
对测试结果分析和比较帮助错误的定位,指导程序员修改代码。
⑷、覆盖测试:是一种白盒测试法,测试人员必须拥有程序的规格说明书和程序清单。其基本思路是以程序的内部结构为基础来设计测试用例,以覆盖尽可能多的程序内部逻辑结构,发现其中的错误和问题,一般用在单元测试阶段。