当前位置: 首页 > 新闻中心 > 8个步骤了解详细的嵌入式应用软件开发流程

8个步骤了解详细的嵌入式应用软件开发流程

发布时间:2024-01-29 2:52:01

  1. 嵌入式系统的设计流程是什么?
  2. 嵌入式软件的运行流程一般分几个阶段?每个阶段完成的主要工作是什么?
  3. 嵌入式软件开发的流程

一、嵌入式系统的设计流程是什么?

嵌入式计算系统将必须紧密工作的硬件和软件相结合。嵌入式系统设计人员已将擅长的设计方法发展到用软件来体现系统的部分功能。早期的硬件/软件协同设计领域的研究人员强调同时进行设计的重要性。系统体系结构一旦确定,硬件和软件可以相对独立地进行设计。协同设计的目标是做出恰当的体系结构决策,允许在以后的实现阶段中独立完成。好的体系结构决策需要恰当的分析方法,因为它们必须满足严格的度量标准,例如实时性能和功耗。图1-15显示了一般的协同设计方法。给定可行的规格说明,大部分方法进行初始系统分析来确定并行设计的可能性,并可能将规格说明分解为过程。硬件/软件划分选取体系结构,其中一些操作直接由硬件完成,而另一些则由运行在可编程平台上的软件完成。硬件/软件划分生成可以独立实现的模块设计。那些模块随后结合,进行性能或功耗测试,并调试以创建最终的系统。

(点击查看大图)图1-15硬件/软件协同设计的设计流基于平台的设计是片上系统通常采用的方法。平台允许若干用户将相同的基本平台定制成不同的产品。平台对于基于标准的市场尤其有用,在这种市场中,产品必须支持一些基本功能,而其他功能必须进行定制。如图1-16所示,基于平台的设计是一个两阶段过程。首先,平台的设计必须建立在系统总体需求(例如,某种标准)和平台应如何定制之上。平台一旦设计完,就可用于设计产品。产品利用平台的功能并添加自己的功能。图1-16基于平台的设计平台设计需要几个设计阶段:应用特征分析将系统需求和软件模型变为基于平台硬件体系结构的更明确的需求。设计空间搜索评估硬件选项。体系结构模拟帮助评估和优化体系结构的细节。必须为平台开发基础软件(硬件抽象层、操作系统端口、通讯、应用库、调试)。平台的使用比较复杂,因为平台需要用户编程环境。程序员已经习惯了标准平台上丰富的开发环境。那些环境以图形用户界面的方式提供了很多工具—编译器、编辑器、调试器、模拟器。然而丰富的编程环境通常只支持单处理器。多处理器编程更困难,而异构多处理器相比同构多处理器更复杂。平台开发人员必须提供工具使得软件开发人员能够使用平台。有此工具来自cpu组件,其他工具必须从头开发。由于调试访问是依赖于硬件的,因而它尤为重要和困难。进程间通讯也很复杂,但它是应用开发人员的重要工具。

二、嵌入式软件的运行流程一般分几个阶段?每个阶段完成的主要工作是什么?

四个阶段:

1、问题的定义及规划,此阶段是软件开发与需求放共同讨论,主要确定软件的开发目标及其可行性。

2、需求分析,在确定软件开发可行性的情况下,对软件需要实现的各个功能进行详细需求分析,因此,必须定制需求变更计划来应付这种变化,以保护整个项目的正常进行。

3、软件设计此阶段中偶要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计、数据库设计等。

4、程序编码此阶段是将软件设计的结果转化为计算机可运行的程序代码,以保证程序的可读性、易维护性。提高程序的运行效率。

扩展资料:

嵌入式软件具有独特的实用性,嵌入式软件是为嵌入式系统服务的,这就要求它与外部硬件和设备联系紧密。

嵌入式系统以应用为中心,嵌入式软件是应用系统,根据应用需求定向开发,面向产业、面向市场,需要特定的行业经验。每种嵌入式软件都有自己独特的应用环境和实用价值。

2嵌入式软件应有灵活的适用性,嵌入式软件通常可以认为是一种模块化软件,它应该能非常方便灵活的运用到各种嵌入式系统中,而不能破坏或更改原有的系统特性和功能。它要小巧,不能占用大量资源;其次要使用灵活,应尽量优化配置。

三、嵌入式软件开发的流程

搞好开发前的原型设计

原型开发目前在开放流程中受到了更多的重视,同样嵌入式软件也是非常需要的。比如说一个录音机版面的设计,可以定义好版面上面的按键以及每个按键的功能。然后画出状态转化图,写清楚每个按键何时可以触发,触发后由哪个状态转入别的其他状态。原型设计好了,组织专家,工程师进行评审,尽可能多的找出原型中不合理需要改进的地方;改进以后,有必要可以进行再一次的评审工作。每一次评审工作需要记录评审建议是否需要解决?如何解决以及实际解决情况。

进行设计和开发工作

设计和开发工作需要设立里程碑。每个里程碑结束前都需要进行评审工作。由于嵌入式软件的运行环境不同,受到很大的限制,所以在进行开发之前需要进行编程规范工作,编码的时候需要严格按照编码要求进行工作,每一个条款都需要认真执行和审查。现在业界提供许多关于嵌入式软件开发的标准,大家可以通过网站搜索,最好能够购买业界一些比较著名的标准。目前市场上也提供许多关于代码检验的工具。为什么一直提出代码编码规范?这是因为嵌入式软件的质量与代码规范是十分重要的。举个例子,著名的阿里亚火箭失事,专家进行详细的调查工作,最后发现问题出在代码上。代码是符合标准c语言的,但是在运行过程中由于程序员将一个长整形变量赋给了一个短整形变量,造成内存溢出,这是导致火箭失事的关键所在

代码测试

当程序开发完毕,需要进行测试工作,但是在程序烧入或固化芯片之前如何进行测试呢?这里介绍一种方法:比如程序时使用c语言进行开发的,请将所有的操作都封入在函数中,函数的定义都在相应的头文件中定义(.h),然后设计测试用例,书写测试代码,测试代码包含相应头文件,可以对函数进行检测。测试案例往往分为两类:一种是功能测试,主要测试函数的功能;另外一种是错误参数测试,主要检查程序对进行错误参数进行检验。

功能测试

这种测试的运行往往需要通过仿真器辅助完成,比如类似录音机软件程序,分别测试播放,加大(减小)音量,停止,暂停(取消暂停),快速前进,快速后退,录音对应的功能是否能够正常运行。

错误测试

主要测试函数在调用参数无效的时候,系统是否会按照规定返回正确的错误代码。比如

functiontest(inttid)

测试的时候给出一个错误的序列号(tid),看程序是否返回正确的错误代码。

对于函数functiontest1(intt)需要进行特出的处理

t定义为1-100

我们可以按照边界值法和等价分类法进行测试

上边界:-1,0,1

下边界:99,100,101、中边界:50

所以测试用例集合为(-1,0,1,50,99,100,101),其中-1,101为错误测试用例,其他为正确测试用例

功能组合测试

在进行完功能测试后,我们可以进行功能组和测试,还是拿录音机程序做个例子。我们可以定义将音量增加到10,快速前进,检查音量,看是否还是为10;播放,暂停,试图调整音量,检查调整音量的功能是否可以被成功执行。

烧入固化测试

当以上测试都通过后可以将程序烧入芯片或者固化,进行最后在实际环境中进行测试工作。