嵌入式软件开发流程知识讲解Word文档下载推荐.docx
《嵌入式软件开发流程知识讲解Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《嵌入式软件开发流程知识讲解Word文档下载推荐.docx(41页珍藏版)》请在冰豆网上搜索。
![嵌入式软件开发流程知识讲解Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2023-1/22/409c92c2-6700-464d-be1a-2621f6021ae1/409c92c2-6700-464d-be1a-2621f6021ae11.gif)
Logijcope"
Irtuhi-ICE-
ReqiiraaentSoftwffeCodhzTEIh^e
AmVsisDesist
图1・2嵌入式开发不同阶段的常用软件
嵌入式系统的软件开发与通常软件开发的区别主要在于软件实现部分,其中又可以分为编译和调试两部分,下面分别对这两部分进行讲解。
1.交叉編译
嵌入式软件开发所采用的编译为交叉编译。
所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。
在第3童中已经提到,编译的最主要的工作就在将程序转化成运行该程序的CPU所能识别的机器代码,由于不同的体系结构有不同的指令系统。
因此,不同的CPU需要有相应的编译器.而交叉编译就如同翻译一样,把相同的程序代码翻译成不同CPU的对应可执行二进制文件。
要注意的是,编译器本身也是程序,也要在与之对应的某一个CPU平台上运行。
嵌入式系统交叉编译环境如图4.17所刁J
图4.17交叉编译环境
这里一股将进行交叉编译的主机称为宿主机,也就是普通的通用PC,而将程序实际的运行环境称为目标机,也就是嵌入式系统环境。
由于一般通用计算机拥有非常丰富的系统资源、使用方便的集成开发环境和调试工具等,而嵌入式系统的系统资源非常紧缺,无法在其上运行相关的编译工具,因此,嵌入式系统的开发需要借助宿主机(通用计算机)来编译出目标机的可执行代码。
由于编译的过程包括编译、链接等几个阶段,因此,嵌入式的交叉编译也包括交叉编译、交叉链接等过程,通常ARM的交叉编译器为arm-elf-gcc、arm-linux-gcc等,交叉链接器为arm-elf-ld、arm-linux-ld等,交叉编译过程如图4.18所示。
图4.18嵌入式交叉编译过程
2.交叉调试
嵌入式软件经过编译和链接后即进入调试阶段,调试是软件开发过程中必不可少的一个环节,嵌入式软件开发过程中的交叉调试与通用软件开发过程中的调试方式有很大的差别。
在常见软件开发中,调试器与被调试的程序往往运行在同一台计算机上,调试器是一个单独运行着的进程,它通过操作系统提供的调试接口来控制被调试的进程。
而在嵌入式软件开发中,调试时采用的是在宿主机和目标机之间进行的交叉调试,调试器仍然运行在宿主机的通用操作系统之上,但被调试的进程却是运行在基于特定硬件平台的嵌入式操作系统中,调试器和被调试进程通过串口或者网络进行通信,调试器可以控制、访问被调试进程,读取被调试进程的当前状态,并能够改变被调试进程的运行状态。
嵌入式系统的交叉调试有多种方法,主要可分为软件方式和硬件方式两种。
它们一般都具有如下一些典型特点。
•调试器和被调试进程运行在不同的机器上,调试器运行在PC机(宿主机),而被调试的进程则运行在各种专业调试板上(目标板)。
•调试器通过某种通信方式(串口、并口、网络、JTAG等)控制被调试进程。
•在目标机上一般会具备某种形式的调试代理,它负贵与调试器共同配合完成对目标机上运行看的进程的调试。
这种调试代理可能是某些支持调试功能的硬件设备,也可能是某些专门的调试软件(如gdbserver)。
•目标机可能是某种形式的系统仿直器.通过在宿主机上运行目标机的仿真软件,整个调试过程可以在一台计算机上运行。
此时物理上虽然只有一台计算机,但逻辑上仍然存在着宿主机和目标机的区别。
下面分别就软件调试桩方式和硬件片上调试两种方式进行详细介绍。
(1)软件方式。
软件调试主要是通过插入调试桩的方式来进行的。
调试桩方式进行调试是通过目标操作系统和调试器内分别加入某些功能模块,二者互通信息来进行调试。
该方式的典型调试器有gdb调试器。
gdb的交叉调试器分为GdbServer和GdbClient,其中的GdbServer就作为调试桩在安装在目标板上GdbClient就是驻于本地的gdb调试器。
它们的调试原理图如图4.19所示。
AK
gdb
k
目标机
応丄机
图4.19gdb远程调试原理图
gdb调试的工作流程。
•首先,建立调试器(本地gdb)与目标操作系统的通信连接,可通过串口、网卡、并口等多种方式。
•然后,在目标机上开启GdbServer进程,并监听对应端口。
•在宿主机上运行调试器gdb.这时,gdb就会自动寻找远端的通信进程,也就是GdbServer的所在进程。
•在宿主机上的gdb通过GdbServer请求对目标机上的程序发出控制命令。
这时,GdbServer将请求转化为程序的地址空间或目标平台的某些寄存器的访问,这对于没有虚拟存储器的简单的嵌入式操作系统而言,是十分容易的。
•GdbServer把目标操作系统的所有异常处理转向通信模块,并告知宿主机上gdb当前有异常。
宿主机上的gdb向用户显示被调试程序产生了哪一类异常。
这样就完成了调试的整个过程。
这个方案的实质是用软件接管目标机的全部异常处理及部分中断处理,并在其中插入调试端口通信模块,与主机的调试器进行交互。
但是它只能在目标机系统初始化完毕、调试通信端口初始化完成后才能起作用,因此,一般只能用于调试运行于目标操作系统之上的应用程序,而不宜用来调试目标操作系统的内核代码及启动代码。
而且,它必须改变目标操作系统,因此,也就多了一个不用于正式发布的调试版。
(2)硬件调试。
相对于软件调试而言,使用硬件调试器可以获得更强大的调试功能和更优秀的调试性能。
硬件调试器的基本原理是通过仿真硬件的执行过程,让开发者在调试时可以随时了解到系统的当前执行情况。
目前嵌入式系统开发中最常用到的硬件调试器是ROMMonitor、ROMEmulator.In-CircuitEmulator和In・CircuitDebuggero
采用ROMMonitor方式进行交叉调试需要在宿主机上运行调试器,在宿主机上运行ROM监视器(ROMMonitor)和被调试程序,宿主机通过调试器与目标机上的ROM监视器遵循远程调试协议建立通信连接。
ROM监视器可以是一段运行在目标机ROM上的可执行程序,也可以是一个专门的硬件调试设备.它负责监控目标机上被调试程序的运行情况,能够与宿主机端的调试器一同完成对应用程序的调试。
在使用这种调试方式时,被调试程序首先通过ROM监视器下载到目标机,然后在ROM监视器的监控下完成调试。
优点:
ROM监视器功能强大,能够完成设置断点、单步执行、查看寄存器、修改内存空间等各项调试功能。
确定:
同软件调试一样,使用ROM监视器目标机和宿主机必须建立通信连接。
其原理图如图4.20所示。
HtflA
图4.20ROMMomtor调试方式
采用ROMEmulator方式进行交叉调试时需要使用ROM仿真器,并且它通常被插入到目标机上的ROM插槽中,专门用于仿真目标机上的ROM芯片。
在使用这种调试方式时,被调试程序首先下载到ROM仿真器中,因此等效于下载到目标机的ROM芯片上,然后在ROM仿真器中完成对目标程序的调试。
避免了每次修改程序后都必须重新烧写到目标机的ROM中。
缺点:
ROM仿真器本身比较昂贵,功能相对来讲又比较单一,只适应于某些特定场合。
其原理如图4.21所示。
R标机帘上蜒
图4.21ROMEmulator调试方式
采用In-CircuitEmulator(ICE)方式进行交叉调试时需要使用在线仿真器,
它是目前最为有效的嵌入式系统的调试手段。
它是仿照目标机上的CPU而专门
设计的硬件,可以完全仿真处理器芯片的行为。
仿真器与目标板可以通过仿真
头连接,与宿主机可以通过串口、并口、网线或USB口等连接方式。
由于仿真器自成体系,所以调试时既可以连接目标板,也可以不连接目标板。
在线仿真器提供了非常丰富的调试功能。
在使用在线仿真器进行调试的过程中,可以按顺序单步执行,也可以倒退执行,还可以实时查看所有需要的数据,从而给调试过程带来了很多的便利。
嵌入式系统应用的一个显著特点是与现实世界中的硬件直接相关,并存在各种异变和事先未知的变化,从而给微处理器的指令执行带来各种不确定因素,这种不确定性在目前情况下只有通过在线仿真器才有可能发现。
功能强大,软硬件都可做到完全实时在线调试。
价格昂贵。
其原理如图4.22所示。
II标机佈上机
图4.22ICE调试方式
采用In-CircuitDebugger(ICD)方式进行交叉调试时需要使用在线调试
器。
由于ICE的价格非常昂贵’并且每种CPU都需要一种与之对应的ICE,使得开发成本非常高。
一个比较好的解决办法是让CPU直接在其内部实现调试功能,并通过在开发板上引出的调试端口发送调试命令和接收调试信息,完成调试过程。
如使用非常广泛的ARM处理器的JTAG端口技术就是由此而诞生的。
JTAG是1985年指定的检测PCB和IC芯片的一个标准。
1990年被修改成为IEEE的一个标准,即IEEEU49.1OJTAG标准所采用的主要技术为边界扫描
技术,它的基本思想就是在靠近芯片的输入输出管脚上增加一个移位寄存器单
元。
因为这些移位寄存器单元都分布在芯片的边界上(周围),所以被称为边
界扫描寄存器(Boundary・ScanRegisterCell)。
当芯片处于调试状态时候,这些边界扫描寄存器可以将芯片和外围的输入输出隔离开来。
通过这些边界扫描寄存器单元,可以实现对芯片输入输出信号的观察和控制。
对于芯片的输入管脚,可通过与之相连的边界扫描寄存器单元把信号(数据)加载到该管脚中去;
对于芯片的输出管脚,可以通过与之相连的边界扫描寄存器单元'
捕获〃(CAPTURE)该管脚的输出信号。
这样,边界扫描寄存器提供了一个便捷的方式用于观测和控制所需要调试的芯片。
现在较为高档的微处理器都带有JTAG接口,包括ARM7、ARM9、StrongARM.DSP寧通过JTAG接口可以方便地对目标系统进行测试,同时,还可以实现Flash编程,这是非常受欢迎的。
连接简单,成本低。
特性受制于芯片厂商。
其原理如图4.23所示。
图4.23JTAG调试方式
开发流程框图:
阶段
流程图
文档
项目立项阶段
i需求分析报告i需求分析评审报告
产品定义
产品技术规范i项目开发计划|风险控制计划I质量控制计划'
系统分析文档T产岳技采爲袜谡讦芳|案(包括工艺)i系统分析评审报告!
软件设计过程文档!
硬件设计过程文档i结构设计过程文档i工艺设计过程文档|软件V1.0!
PCBV1.0iti设计文档I工艺说明
!
分单元测试报告
i
设计验证阶段
iTi
j
•
—
lT2
[ft
\
A
lT3
ICT
CTA材
软硬件及工艺调
|装机报告
i例试分析报告
整机测试评估报告
软件FTA版本
|硬件FTA版本
软硬件
•—饭甘敝土nmzn
T2谡讦文移
试产报告例试分析报告
I软件CTA版本
|硬件CTA版本
饭2Bit甘
及工艺
结构及
T3设计文档
试产报告例试分析报告整机测试评估报告
产备段
量准阶
全套DVT报告
工艺文件
量产转移
附录:
1、结构设计及制作流程图
2、软件设计流程图3、硬件设计流程图
附录1.结构设计及制作流程图:
表单
3D模型修改
3D模型评估报告结构设计进度表
结构
详细
设计
结构设计进度表
结构设计内部评审记录
workingsample配色表
workingsample验收报告
结构BOM
结构设计外部评审记录
模具制作检讨记录表模具制作申请表模具备品清单
模具制作注意事项表工装夹具制作清单物料进度按排需求表配色方案表
模具制作进度表
参青文件:
《工业设计流程》,《ID设计流程》
附录2.软件设计流程图:
软件需求分析
软件需求规格书软件开发计划软件开发风险控制计划
软件测试计划
软件
单元源代码单元调试报告单元测试用例
单元测试分析报告集成后的软件及源代码
软件集成调试报告软件操作手册系统测试软件系统测试用软件文档软件系统测试分析报告
发布版本
参考文件:
附录3.硬件设计流程图:
阶段流程图表单
硬件
需求
评估
硬件需求分析报告硬件开发计划硬件测试计划
rti加迟亚由
硬件详细设计说明书硬件电路原理图硬件BOM
硬件设计内部评审记录
PCB数据器件规格书硬件子系统软件装配图
硬件单元测试分析报告
电装总结报告硬件系统测试版本硬件系统测试分析报告
硬件评审验证报告发布版本
1、PCB布板流程图2、LCD认证流程图
LCD认证流程图:
硬件[结构[其他各部
ii
样品!
提供i
各部!
确认i
装机
甘•一•……一…••…一•……一•……一*・・一・・一・・一・・一••i
软件开发规范
SoftwareDevelopmentSpecification
Version:
Vl.O
Date:
2010-06-22
Preparedby
DocumentRevisionHistory文档修订记录
VERSION版本
DATE
日期
DESCRIPTION
内容说明
INDIVIDUAL
修订人
1.0
初稿
1Introduction简介
—个成熟稳定的组织或者团队,能够减少风险’经常地成功地达成目标。
成功的含义是:
按时、预算内【即符合成本要求】、符合质量要求。
换言之,成熟稳定的团队,能够避免以下问题:
>组织方面出现问题
>对需求缺乏管理
>缺乏计划和控制
>估算错误
同时,还要在以下几个方面做得比较出色:
>人员调度与工作安排
>工作量估计
>预算管理
>责权分配与平衡
>执行与监控
>沟通
本文档是软件开发规范,力求使团队打下一个良好的基础,以便逐步成长为成熟稳定的团队。
团队需要一个逐步标准、规范的开发过程,在这个过程中’团队得到锻炼’成员能力得到提高,风险得到控制。
主要内容是:
>定义软件开发的流程;
定义软件开发的文档格式;
定义涉及的角色;
定义涉及的信息;
描述开发流程;
1.1Purpose目标
本文档的目标是:
统一软件开发团队的流程、文档;
促进团队成员的沟通,减少误解;
促使程序员书写易维护的代码;
提高代码编写效率;
使每个成员成为一个高效的程序员;
1.2Scope范围
本文档,包含:
>项目管理的流程;
■项目策划
■项目追踪
■配置管理
■质量保证
■同行评审
>涉及文档;
■项目计划mpp
■需求规格说明书SRS
■Delphi估算
■项目状态报告
■配置库样式
■CheckList
■评审表
■变更申请表
>开发工具的规范;
■数据库设计工具
■功能设计工具
■IDE
■配置工具
1.3Definitions,Acronyms,andAbbreviations.术语,缩略词
SPP
项目策划SoftwareProjectPlanning
SPTO
项目追踪SoftwareProjectTracking&
Oversight
SCM
配置管理SoftwareConfigurationManagement
SQA
质量保证SoftwareQualityAssurance
PR
同行评审PeerReview
BaseLine
基线
SCCB
Board
软件配置控制委员会SoftwareConfigurationControl
CR
变更请求ChangeRequest
SDLC
软件开发生命周期SoftwareDevelopmentL辻eCycle
RUP
统一开发过程RationalUnifiedProcess
XP
极限【敏捷方法】eXtremeProgramming
TDD
测试驱动TestDrivenDevelopment
1>
4References引用
《CMM2》
《CMM3》
1.5Overview文档组织
本文档主要分为四大部分:
>概述;
描述了团队组织开发过程的高层视图;
>TSP和PSP;
按照团队和个人描述流程规范;
>工具规范;
描述了开发工具的详细规范;
>文档;
涉及的文档格式;
2TheOverallDescription概述
本部分是开发团队开发过程的高层描述。
它描述了开发过程规范的背景,用来
和所有涉及各方就基本过程达成共识。
2.1SoftwareDevelopmentOrganizing开发团队组织结构
□□□
说明:
1=1表示公司的行政部门表示公司的逻辑部门
实线表示参加产品实现的组织和人员(不表示所属关系)虚线表示工作的汇报关系,如SQAE向SQA经理汇报。
2.2
ProjectBaseProcess项目基本流程
项目定义制定计划计划实施项目终止时间
基本流程说明:
>项目启动:
本阶段主要是进行可行性分析,定义项目,识别需求;
>制定计划:
本阶段主要是计划策划,估算工作量.制定具体的可执行的计
划;
>计划实施:
本阶段主要是实施计划,完成计划中的各项任务,报告计划状
态;
>项目终止:
计划执行完毕,总结项目;
23CMMBaseProcessCMM基本过程
基本过程说明:
>
SCM:
软件配置管理,所有活动的基础,一切制品必须放入配置库;
SPP:
软件项目策划,估算工作量,制定详细计划【项目的制定计划阶段】;
SPTO:
项目追踪,报告项目状态,评估并更新计划【项目的计划实施阶段】;
PR:
同行评审,进入基线的前提条件,降低风险,提高质量的有效手段;
SQA:
质量保证,预防风险的有效手段;
2.3.1SC、I软件配置管理
配置管理主要解决:
版本
施c丽黒结h田丁目►Vss.SVNVSTS
定义配置项
确定记录和报告配
确定基线变更过
2.3.2SPP计划策划
计划策划的核心是工作量估算
在已知的停工和节假
日时间不安排工作;
不考虑加班时间;
考
虑测试及评审中发现
冋题的返工需要的时
间;
考虑客户需求的
稳定情况;
考虑各项
活动的交接和信息的
项目跟踪计划
组织和角色定
2.3.3SPTO项目追踪
2.3.4PR同行评审
2.3.5SOA质量保证
SQA审核
2.4SDLC生命周期选择
当前比较成熟稳定的SDLC是:
WateiFall
其中:
RUP和XP是迭代式开发过程,风险是可控的。
RUP的优点是过程清晰、文档齐全,但是过于庞杂,比较适合大规模的团
队;
XP的优点是过程简洁、推崇简单,但是不注重文档,难于交接,适合小规
对于中等规模的团队来说’应该基于RUP和XP,进行裁剪,找到适合的
SDLC:
SDLC的核心是:
迭代式和TDD
从全局看:
■Use-CaseDriven用例驱动
■基于Aichitectuie
■迭代和递增的
从微观看:
■TDD测试驱动
■ReFactor重构
■Pair结对编程
2.5DevelopmentProcess开发过程
2.5.1DevelopmentPhase开发阶段
>需求分析阶段
■需求收集
■需求总结
>总体设计阶段
■总体架构
■部署模型
>概要设计阶段
■模块划分
■数据库设计
详细设计阶段