嵌入式软件开发方法分析论文

论文范文 时间:2019-12-01 我要投稿
【www.unjs.com - 论文范文】

  摘要:随着信息化技术的快速发展,嵌入式软件组件开发方法因其具备针对性的软件开发能力而受到业界广泛关注,相关研究也因此大量涌现。基于此,笔者简单分析了基于组件的嵌入式软件开发方法,并详细论述了Qt下基于组件的嵌入式软件开发方法。

  关键词:组件;嵌入式软件;Qt

  1、引言

  随着科学技术的快速发展,传统代码式软件开发方法已难以满足电子产品的复杂性功能需要,使得业界对扩展性好的软件开发方法需求程度不断提升。为了最大化发挥该开发方法的优势、推动我国嵌入式软件开发领域快速发展,本文围绕基于组件的嵌入式软件开发方法进行了深入探讨。

  2、基于组件的嵌入式软件开发方法

  2.1组件架构

  “控制、监视或辅助装置、机器和设备运行装置”被称作嵌入式系统,该系统由硬件与软件共同构成,其中的软件正是本文研究的嵌入式软件。嵌入式软件具备灵活性强、运行效率高等优势,为了保证嵌入式软件的应用效率与应用质量,基于组件的嵌入式软件开发必须重点关注系统组件架构设计,系统的整体资源配置效率也将因此得到提升。具体来说,组件架构设计需要遵循重用原则、信息传递原则和闭包原则。此外,模板的完整性和耦合性也需要得到设计人员的重点关注[1]。

  2.2接口设计

  该设计需在完成各类系统组件划分后结合接口、逻辑操作一一对应原则开展。基于组件的嵌入式软件组件接口设计属于灵活性较高的工作,为提升设计的专业性和针对性,需重点关注设计中的实际情况;为提升嵌入式组件结构的抽象性,需要采用接口与实际相分离的方式进行设计;为提高设计的准确性和规范性控制,需要避免出现私自改动接口设计方案的行为。

  2.3开发流程

  传统的嵌入式软件开发流程可概况为:需求分析→设计→实现→测试→运行。虽然该流程可最终满足开发需求,但其中存在大量的重复劳动,使得传统嵌入式软件开发流程效率较低、开发流程较繁琐。基于组件的嵌入式软件开发流程可概括为:应用系统/应用系统/应用系统→抽取领域共性→组件库→新应用系统/新应用系统/新应用系统。其中组件库为组件构成的组件仓库,可有效解决传统嵌入式软件开发存在的不足,具有较高的实用价值[2]。

  3、基于组件的嵌入式软件开发方法应用实例分析

  3.1开发环境

  为提升研究的实践价值,本文选择了智能气象站的嵌入式软件设计作为研究对象。在基于组件的嵌入式软件开发方法应用中,引入了Qt这一跨平台C++开发环境,moc(元对象编译器)负责C++语言的扩展。在具体设计中,Qt的良好封装机制、“信号与槽”新消息机制大大提升了嵌入式软件的实用性。前者的程序开发和配置不受平台限制;后者拥有面向对象、真正信息封装和连接灵活等优势,共同为基于组件的嵌入式软件开发提供了有力支持。

  3.2框架设计

  在智能气象站的嵌入式软件设计中,需首先开展功能需求分析,考虑到智能气象站主要通过ZigBee(无线)和RS232(有线)方式进行智能传感器上传数据信息的接收。图1为系统组成及数据流图。结合图1发现,该系统由主控单元、两个数据采集单元(通信器)、传感器(软)、日志处理单元、数据存储单元和状态处理单元组成,各模块功能如下所示:(1)主控单位。主要根据配置信息设置工作路径,启动系统、同步时钟、连接信号与槽、创建单元实例和停止系统也属于其功能范畴;(2)通信器、传感器(软)。主要负责数据采集,其中传感器(软)指的是软件中定义的一个组件;(3)存储器模块。负责接收TCP模块指令、传感器模块指令及数据,将数据存储至数据库也属于该模块功能组成;(4)日志模块。负责接收并记录信息,以此实现设备运行状态的诊断;(5)状态模块。负责接收各模块的心跳信息、状态信息,并以此控制LED闪烁;(6)通信器。由ZigBee通信器、串口通信器组成,主要针对通信通道设计,负责通道的开闭、数据发送、数据获取,并与传感器(软)共同完成数据采集,具体采集流程可描述为:外部时钟→时钟信号→传感器(软)→采集指令→通信器→硬件,其中传感器(软)向通信器发出采集指令,通信器则向传感器(软)传递数据信号。

  3.3框架实现

  3.3.1单元间通信方式单元间通信需要对单元进行抽象处理,所有单元均拥有2路输入和输出,分别用于指令和数据的传输。为实现从CUnitBase继承来的各单元间指令格式、信号格式的统一,需要进行单元通用信号和槽的定义(CUnitBase)。具体设计存在四种信号和槽,分别对应通用信息、状态信息、数据信息、指令信息的信号与槽。3.3.2类的继承关系在Qt中,基类QObject继承属于所有类的来源,Qt自带的线程类QThread、设计采用的单元基础类CUnitBase便属于其中典型。类的继承关系可概括为:QObjec类→QThread类→CUnitBase类→具体功能类,其中非线程类继承属于QObject类。在具体设计中,CUnitBase类的定义必须得到重点关注,每一个组件的细化、具体功能类的派生也在设计中占据重要位置。如CControlCenter类,围绕其开展的设计需涉及数据连接、日志连接、指令连接和状态连接等重要内容。CLedControl类、CHYTcpServer类、CHYStatusMonitor类和CHYDataStorag类等在设计中同样占据重要地位。3.3.3系统配置系统启动流程为:开始→创建核心应用程序→创建主控单元实例→调用主控单元配置函数,实现系统配置→遍历、开始所有线程→运行核心运行程序,启动事件循环。系统配置流程为:开始→读取配置文件→根据配置文件创建相应单元→连接单元间信号和槽→设置同步时钟→结束。其中的调用主控单元配置函数步骤,需先后调动setWorkPath()函数、loadConfiguration()函数。3.3.4其他设计ZigBee通信器模块、ZigBee传感器模块、串口通信器模块、串口传感器模块和存储器模块同样属于设计的关键内容。存储模块的存储器接收信息处理流程为:开始→接收到数据→数据→计算QC→存储到临时缓冲区,以及:开始→接收到数据→指令→标记发送者→读取数据库并打包数据→发送报告到发送者,由此可更深入了解基于组件的嵌入式软件开发方法。

  4、结语

  综上所述,基于组件的嵌入式软件开发方法具备较为广阔的应用前景。在此基础上,本文涉及的开发环境、框架设计、单元间通信方式、类的继承关系、系统配置和其他设计内容,提供了可行性较高的基于组件的嵌入式软件开发路径。为更好地推动嵌入式软件领域发展,Qt下的系统实时性必须得到重点关注。

  参考文献

  [1]王小锋.基于组件的嵌入式软件开发方法[J].电子技术与软件工程,2018(8):53.

  [2]戴巍,霍亚,马尚昌,等.Qt下基于组件的嵌入式软件框架设计及实现[J].计算机应用,2016,36(S1):257-261.

  作者:王浩 吴晓玲 单位:北京动力机械研究所