0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式系统底层软件可移值性设计及开发流程分析

牵手一起梦 来源:单片机与嵌入式系统应用 作者:v 2020-10-04 18:02 次阅读

在阐述嵌入式系统软件设计方法的基础上,介绍嵌入式系统底层软件可移值性设计和硬件抽象层的建立;举例说明利用此思想的嵌入式软件的设计及测试过程。

1 嵌入式系统设计

由于嵌入式系统有着体积小、功能集中、可靠性高等优点,已被广泛地应用到日常生活的各个方面,如移动通信工业控制、医疗器械,家用电器等。如何缩短嵌入式系统的开发周期,降低开发成本,以及提高产品的可靠性已成为嵌入式行业普遍关注的问题。在嵌入式系统设计中,通常采用以下设计方法。

(1)瀑布模式开发过程

瀑布模式开发过程工作模式简单,任务的划分协调及人员安排、物质材料的分配管理都比较容易。如图1所示,开发过程为从硬件到软件的流水线式进行。此类开发方式有以下特点:

◇ 小系统,如利用8051控制的低速率信号采集等;

◇ 开发所需人力、物力资源有限,一般1个或几个人即可完成;

◇ 要求开发人员对软、硬件设计和制作都比较熟悉;

◇ 对开发周期要求不高,此类开发过程无疑会使用最长的开发周期;

◇ 在开发过程中,任一环节的阻塞都会影响其它环节的开发。

嵌入式系统底层软件可移值性设计及开发流程分析

(2)V模式开发过程

V模式开发过程为一种并行的工作方式,任务的划分协调及人员安排、物质材料的分配都必须考虑不同工作内容,如图2 所示。

开发过程为硬件和软件同时进行,最后联合调试。此类开发方式有以下特点:

◇ 大系统,如利用PowerPC等处理器设计的网络交换/访问设备;

◇ 开发人力、物力资源比较丰富;

◇ 开发人员分工比较明确,软件开发者可不需了解太多的硬件信息,而硬件开发人员对软件也可不做太多了解;

◇ 有利于缩短开发周期;

◇ 在开发过程中,软、硬件设计独立进行。 硬件开发的阻塞不会影响软件开发过程,同样,软件开发的阻塞不会影响硬件的开发过程。

但在V模式开发过程中,仍存在以下问题:

◇ 设备驱动程序的可移值性差,与硬件和操作系统均有密切相关性;

◇ 软件测试需要等硬件完成以后才能进行;

◇ 对于每个设备驱动程序设计人员都需有软件和硬件的知识背景;

◇ 在测试过程中,很难判断错误是由硬件还是由软件造成的。

为了克服V模式开发过程中的上述问题,本文将V模式开发过程稍作改进,增加了硬件抽象层,对系统软硬件起到隔离作用,从而提高系统软件的可移值性及有效地利用人力资源、缩短开发周期和提高产品的可靠性。

2 基于硬件抽象层的系统软件设计特性

(1)包含硬件抽象层的系统结构

比较图3和图4,硬件抽象层完全把系统软件和硬件部分隔离开来,这样就使得系统的设备驱动程序与硬件设备无关,从而大大提高了系统的可移植性。从软硬件测试角度来看,软硬件的测试工作都可分别基于硬件抽象层来完成,使得软硬件的测试工作的并行进行成为可能。在抽象层的定义方面,需要规定统一的软硬件接口标准,其设计工作需要基于系统需求来做,代码工作可由对硬件比较熟悉的人员来完成。抽象层一般应包含相关硬件的初始化、数据的输入/输出操作、硬件设备的配置操作等功能。

(2)包含硬件抽象层的系统开发过程

如图5给出的包含硬件抽象层V模式开发过程,在系统需求分析并定义了软硬件各自的设计要求以后,就需要花费一定的时间来定义硬件抽象层的接口,以确保硬件设计和测试与软件设计和测试工作能够在相同的接口上进行,从而有利于最终的软硬件集成测试。

从图5可以看出,在基于硬件抽象层的V模式开发过程,软硬件的设计和调试具有无关性,并可完全地并行进行。硬件的错误不会影响到系统软件的调试,同样软件设计的错误也不会影响硬件的调试工作,这样就可大大缩短系统的测试周期和提高系统的可靠性。

(3)硬件抽象层的特点

硬件抽象层接口的定义和代码设计应具有以下特点:

◇ 硬件抽象层具有与硬件密切相关性;

◇ 硬件抽象层具有与操作系统无关性;

◇ 接口定义的功能应包含硬件或系统所需硬件支持的所有功能;

◇ 接口定义简单明了,太多接口函数会增加软件模拟的复杂性;

◇ 具有可测性的接口设计有利于系统的软硬件测试和集成。

3 硬件抽象层的设计示例

硬件抽象层接口的设计一般应包含以下几个步:

◇ 分析接口的数据传输特性(双向/单向数据传输,字节型/数据帧型传输模式);

◇ 分析接口配置属性;

◇ 定义接口所需的相关函数。

下面给出以字符为单位进行数据传输的UART接口硬件抽象层的接口定义内容:

◇ 设备初始化函数

BOOL InitDevice(Device_Register *regs, Device_Attribute *attr)

① 第一个参数为指向设备寄存器结构的指针,用来索引设备的相关寄存器。

② 第二个参数为一个设备属性的结构,用于描述设备初始化设置的属性(波特率、校验位等等)。

③ 函数返回一个布尔类型,用于描述初始化过程的正确性。

◇ 设备字符输入

BOOL ReadDevice(Device_Register *regs, unsigned char *c)

① 第一个参数为指向设备寄存器结构的指针,用来索引设备的相关寄存器。

② 第二个参数为指向字符的地址空间,用于保存设备输入的字符。

③ 函数返回一个布尔类型,用于描述设备字符输入的正确性。

◇ 设备字符输出

BOOL WriteDevice(Device_Register *regs, unsigned char c)

① 第一个参数为指向设备寄存器结构的指针,用来索引设备的相关寄存器。

② 第二个参数为设备所要输出的字符。

③ 函数返回一个布尔类型,用于描述设备字符输出的正确性。

◇ 设备属性设置

BOOL SetDevice(Device_Register *regs, Device_Attribute *attr)

① 第一个参数为指向设备寄存器结构的指针,用来索引设备的相关寄存器。

② 第二个参数为一个设备属性的结构,用于描述设备初始化设置的属性(波特率、校验位等等)。

③ 函数返回一个布尔类型,用于描述设备属性设置的正确性。

4 结 论

以上所述的是作者在多年嵌入式系统开发中所总结出的开发流程,并在实践应用中起到了很好的效果。相信在一个较为复杂的嵌入式系统开发过程中,很好地利用上述开发流程,将会有利于提高系统的可移植性、减少产品的开发和测试周期,并能很好地保证产品的可靠性。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5082

    文章

    19111

    浏览量

    304842
  • 医疗
    +关注

    关注

    8

    文章

    1822

    浏览量

    58739
  • 工业控制
    +关注

    关注

    37

    文章

    1453

    浏览量

    85832
收藏 人收藏

    评论

    相关推荐

    嵌入式系统的定义与开发框架 流程

    及实现上过于复杂,这样一方面利于控制系统成本,同时也利于系统安全实时操作系统:这是嵌入式软件
    发表于 07-09 10:14

    嵌入式系统开发流程是怎样的

    嵌入式系统开发流程嵌入式系统的一般开发可以参照下图所示流程
    发表于 10-27 06:12

    嵌入式系统软件开发环境

    嵌入式系统的概念嵌入式系统的基本架构嵌入式操作系统的基本组成和分类
    发表于 11-08 08:37

    底层驱动开发底层软件开发到底有何不同

    嵌入式入门学习笔记4:[转]什么是嵌入式底层驱动开发嵌入式底层
    发表于 12-17 07:44

    嵌入式底层开发为什么选择C语言

    一、嵌入式系统开发概述1、传统开发模式的缺点:软件直接和硬件打交道,软件移植差。
    发表于 12-17 08:32

    进行嵌入式操作系统和应用软件开发

    我们知道嵌入式操作系统(Embedded System)是指以应用为中心、以计算机技术为基础,软件硬件裁剪、适应应用系统对功能、可靠
    发表于 12-17 08:25

    嵌入式软件系统设计中的正交分析

    嵌入式软件系统设计中的正交分析 嵌入式软件
    发表于 03-29 15:09 668次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b><b class='flag-5'>系统</b>设计中的正交<b class='flag-5'>性</b><b class='flag-5'>分析</b>

    嵌入式软件开发流程_嵌入式软件的调试

    本文首先介绍了嵌入式软件的发展,其次阐述了嵌入式软件开发流程,最后介绍了
    发表于 08-31 16:02 6289次阅读

    嵌入式系统中数字滤波的算法及软件流程

    嵌入式系统中数字滤波的算法及软件流程(嵌入式开发工具软件是什么)-嵌入式
    发表于 07-30 12:45 15次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>中数字滤波的算法及<b class='flag-5'>软件</b><b class='flag-5'>流程</b>

    嵌入式底层开发为什么选择C语言

    嵌入式底层开发为什么选择C语言嵌入式系统的编写语言主要是C语言,部分底层代码会用到汇编语言。
    发表于 10-20 13:35 2次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>底层</b><b class='flag-5'>开发</b>为什么选择C语言

    嵌入式Linux(基础篇)】嵌入式Linux底层系统开发流程和应用开发流程

    介绍了嵌入式Linux系统体系架构,以及每一层开发人员的开发流程
    发表于 11-02 14:51 21次下载
    【<b class='flag-5'>嵌入式</b>Linux(基础篇)】<b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>底层系统开发</b><b class='flag-5'>流程</b>和应用<b class='flag-5'>开发</b><b class='flag-5'>流程</b>

    嵌入式软件开发的特点、设计流程嵌入式软件的结构

           嵌入式软件开发的特点、设计流程嵌入式软件的结构 一:嵌入式
    发表于 11-03 15:21 37次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b>的特点、设计<b class='flag-5'>流程</b>、<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>的结构

    嵌入式产品开发流程

    嵌入式产品,与普通电子产品一样,开发过程都需要遵循一些基本的流程,都是一个从需求分析到总体设计,详细设计到最后产品完成的过程。但是,与普通电子产品相比,
    发表于 11-04 10:06 36次下载
    <b class='flag-5'>嵌入式</b>产品<b class='flag-5'>开发</b><b class='flag-5'>流程</b>

    嵌入式软件开发流程

    电子发烧友网站提供《嵌入式软件开发流程.ppt》资料免费下载
    发表于 11-17 14:37 3次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b><b class='flag-5'>流程</b>

    嵌入式软件开发流程

    电子发烧友网站提供《嵌入式软件开发流程.doc》资料免费下载
    发表于 11-17 14:39 0次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>的<b class='flag-5'>开发</b><b class='flag-5'>流程</b>