CN112988144B - 通用嵌入式事件驱动软件开发框架及使用方法 - Google Patents

通用嵌入式事件驱动软件开发框架及使用方法 Download PDF

Info

Publication number
CN112988144B
CN112988144B CN201911212374.9A CN201911212374A CN112988144B CN 112988144 B CN112988144 B CN 112988144B CN 201911212374 A CN201911212374 A CN 201911212374A CN 112988144 B CN112988144 B CN 112988144B
Authority
CN
China
Prior art keywords
class
event
interface
driving
writing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911212374.9A
Other languages
English (en)
Other versions
CN112988144A (zh
Inventor
竺鑫
杨超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Huahang Radio Measurement Research Institute
Original Assignee
Beijing Huahang Radio Measurement Research Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Huahang Radio Measurement Research Institute filed Critical Beijing Huahang Radio Measurement Research Institute
Priority to CN201911212374.9A priority Critical patent/CN112988144B/zh
Publication of CN112988144A publication Critical patent/CN112988144A/zh
Application granted granted Critical
Publication of CN112988144B publication Critical patent/CN112988144B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种通用嵌入式事件驱动软件开发框架及使用方法,对不同嵌入式平台的外设信息和开发流程进行抽象,实现了基于事件驱动的软件框架。本发明提供统一的高层接口,用户可按照固定的模式进行嵌入式开发和软件编码,极大降低了嵌入式开发的难度,并有效提高了代码的通用性和可维护性。

Description

通用嵌入式事件驱动软件开发框架及使用方法
技术领域
本发明属于嵌入式研发技术领域,具体涉及嵌入式事件驱动软件开发框架。
背景技术
嵌入式系统是为特定应用而设计的、软硬件可裁剪的专用计算机系统,系统适用于对功能、成本、体积和功耗等有严格要求的场景。主流产品包括TMS320、ARM Cortex等系列。
每个用户根据自己的应用需求选择不同的平台,并编写出风格迥异的代码。在团队研发模式下,这导致代码具有较差的一致性、移植性和扩展性,以及较高的维护成本。
考虑到嵌入式系统的工作流程具有普遍的相似性:外设(外围输入输出设备)输入触发对应标志位,表示输入数据就绪。主流程轮询标志位,获取对应的外设输入进行处理,并向外设输出信息。
因此,可以对工作流程逻辑等开展通用软件开发框架设计,进而形成规则约束,来避免上述问题。
发明内容
本发明需解决技术问题是提供一种通用嵌入式事件驱动软件开发框架及使用方法,提供不同平台之上的统一抽象架构层,用户在此基础上实现不同的业务逻辑。
为了解决上述问题,本发明提出了一种通用嵌入式事件驱动软件开发框架,具体包括以下步骤:
S1.事件类编写
编写事件基类,获取嵌入式平台普遍具备的外设项,构建事件类别宏,并提供获取和注册宏的接口。对基类宏的每一项进行派生,得到具体驱动事件类。
S2.高层外设驱动类编写
编写外设驱动基类,包括驱动初始化接口、数据读取接口、数据写入接口和自定义数据处理函数回调接口。对S1中的每一个具体驱动事件类,从驱动基类派生出对应的具体外设驱动类,并对每个驱动编写独有的参数配置接口。
S3.底层外设驱动类编写
对于S2中的每一个具体外设驱动类,在不同的嵌入式平台下,进行派生得到具体平台的底层外设驱动类,对底层外设驱动类中的接口使用平台独有的配置方式进行实现。
基于所述的通用嵌入式事件驱动软件开发框架使用方法,具体为:使用嵌入式平台的编译器对所述平台代码进行库编译,用户编码时加载对应平台的库,注册事件类到外设中断接口中,主循环根据中断触发的事件处理对应的外设。
本发明有益效果:
本发明对不同嵌入式平台的外设信息和开发流程进行抽象,实现了基于事件驱动的软件框架,并提供软件框架了使用方法。本发明基于外设事件,提供统一的高层接口,用户可按照固定的模式进行嵌入式开发和软件编码,极大降低了嵌入式开发的难度,并有效提高了代码的通用性和可维护性。
附图说明
图1是本发明实施例的软件框架编写示意图。
图2是本发明实施例的软件框架使用示意图。
具体实施方式
下面结合附图和实施例对本发明的技术方案进行进一步的解释和说明。
图1是本发明实施例的软件框架编写图,采用面向对象的C++编程技术,将程序和数据封装在对象中。设计基于事件驱动的软件框架,提供不同平台之上的统一抽象架构层,与具体应用解耦和,用户在此基础上实现不同的业务逻辑。具体的,包括以下步骤:
S1.事件类编写
编写事件基类IEvent,获取嵌入式平台普遍具备的Flash等外设项,构建事件类别宏
enumType{Flash,SerialPort,User=1000,MaxUser=65535};
并提供获取宏接口和注册宏接口
Type type();
static int registerType(int hint);
对宏Type的每一项进行派生,得到IFlashPort和ISerialPortEvent外设驱动事件类。
用户可使用registerType对宏Type中不存在的外设项进行全局注册,并通过type()函数进行获取和判断,来实现自定义扩展。
S2.高层外设驱动类编写
编写外设驱动基类IDrive,包括驱动初始化接口、数据读取接口、数据写入接口和自定义数据处理函数回调接口
virtual void init()=0;
virtual void read()=0;
virtual void write()=0;
void setRxFptr(const std::function<void(char*buf,int len)>&ptr);
对S1中的每一个具体驱动事件类,从IDrive派生出对应的IFlashDrive和ISerialPortDirve具体外设驱动类,并对每个驱动编写独有的参数配置接口。
对于Flash存在void setAddress(void*addr);和voiderase();等。
对于SerialPort存在bool setBaudRate(int rate);和boolsetParity(intparity)等。
相应的,S1中的自定义外设事件,需从IDrive中派生自定义驱动类实现。
S3.底层外设驱动类编写
对于S2中的每一个具体外设驱动类,进行派生得到底层外设驱动类FlashDrive和SerialPortDrive。在TigerShark201、TMS320C6678和ARM等嵌入式平台下,对S2中定义的高层接口如init()等,在类中进行各自平台下的底层实现。
图2是本发明实施例的软件框架使用示意图,使用每个嵌入式平台的编译器对该平台代码进行库编译。用户编码时加载对应平台的库,注册事件类到外设中断接口中,主循环根据中断触发的事件处理对应的外设,实现统一高层接口下的通用软件开发框架。
具体如下:
使用每个嵌入式平台的编译器对各自平台代码进行编译,得到ts201.lib、tc6678.lib和arm.lib等库。
用户进行研发时,新建工程,并加载库文件,即可开始统一编码工作。在main()主函数中新建驱动类
完善统一的高层接口和清晰固定的逻辑流程,实现了业务的解耦和,降低了开发者的编程门槛。软件框架的风格一致性和无修改移植性,真正的做到了通用化。
上述具体实施方式仅用于解释和说明本发明的技术方案,但并不能构成对权力要求的保护范围的限定。本领域技术人员应当清楚,在本发明的技术方案的基础上做任何简单的变形或替换而得到的新的技术方案,均将落入本发明的保护范围之内。

Claims (2)

1.一种通用嵌入式事件驱动软件开发方法,具体包括以下步骤:
S1.事件类编写
编写事件基类,获取嵌入式平台普遍具备的外设项,构建事件类别宏,并提供获取和注册宏的接口,对基类宏的每一项进行派生,得到具体驱动事件类;
S2.高层外设驱动类编写
编写外设驱动基类,包括驱动初始化接口、数据读取接口、数据写入接口和自定义数据处理函数回调接口;对S1中的每一个具体驱动事件类,从驱动基类派生出对应的具体外设驱动类,并对每个具体外设驱动类编写独有的参数配置接口;
S3.底层外设驱动类编写
对于S2中的每一个具体外设驱动类,在不同的嵌入式平台下,进行派生得到具体平台的底层外设驱动类,对底层外设驱动类中的接口使用平台独有的配置方式进行实现。
2.根据权利要求1所述的通用嵌入式事件驱动软件开发方法,其特征在于:使用嵌入式平台的编译器对所述平台代码进行库编译,用户编码时加载对应平台的库,注册事件类到外设中断接口中,主循环根据中断触发的事件处理对应的外设。
CN201911212374.9A 2019-12-02 2019-12-02 通用嵌入式事件驱动软件开发框架及使用方法 Active CN112988144B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911212374.9A CN112988144B (zh) 2019-12-02 2019-12-02 通用嵌入式事件驱动软件开发框架及使用方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911212374.9A CN112988144B (zh) 2019-12-02 2019-12-02 通用嵌入式事件驱动软件开发框架及使用方法

Publications (2)

Publication Number Publication Date
CN112988144A CN112988144A (zh) 2021-06-18
CN112988144B true CN112988144B (zh) 2023-09-12

Family

ID=76331054

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911212374.9A Active CN112988144B (zh) 2019-12-02 2019-12-02 通用嵌入式事件驱动软件开发框架及使用方法

Country Status (1)

Country Link
CN (1) CN112988144B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN201039204Y (zh) * 2007-03-30 2008-03-19 上海未来宽带技术及应用工程研究中心有限公司 基于事件驱动原理开发ipmc的系统
CN101551747A (zh) * 2009-04-09 2009-10-07 怯肇乾 Arm系列微处理器的软件体系架构工具
CN101620535A (zh) * 2009-07-29 2010-01-06 北京航空航天大学 一种机载计算机软件通用框架设计方法
CN102081545A (zh) * 2011-01-07 2011-06-01 中国电子科技集团公司第十研究所 在嵌入式平台上实现软件通信架构的方法
CN102253834A (zh) * 2011-07-05 2011-11-23 广东星海数字家庭产业技术研究院有限公司 一种基于数字电视的Linux硬件设备驱动系统
CN102331935A (zh) * 2011-11-07 2012-01-25 广东天波信息技术股份有限公司 一种嵌入式跨系统软件开发平台
CN102662665A (zh) * 2012-03-29 2012-09-12 福州瑞芯微电子有限公司 在安卓系统上实现支持各种传感器的输入子系统
WO2016004587A1 (zh) * 2014-07-08 2016-01-14 北京航空航天大学 一种基于多核处理器架构的机器人混合系统应用框架
CN109508202A (zh) * 2018-09-27 2019-03-22 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 嵌入式操作系统的驱动开发系统、方法及介质
CN109885341A (zh) * 2019-02-20 2019-06-14 无锡宝威电子有限公司 一种通用设备驱动模型、系统及应用
CN110162391A (zh) * 2019-05-27 2019-08-23 浪潮云信息技术有限公司 一种异步框架及其实现方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7739693B2 (en) * 2002-11-25 2010-06-15 Sap Ag Generic application program interface for native drivers
CN1278258C (zh) * 2003-08-21 2006-10-04 杭州天丽科技有限公司 一种开放的gis开发中间件系统
CN1909705A (zh) * 2005-08-05 2007-02-07 杭州波导软件有限公司 一种基于移动终端平台的通用开发平台
US10742524B2 (en) * 2018-01-11 2020-08-11 Monza Cloud, LLC Framework for standardizing development and deployment of services

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN201039204Y (zh) * 2007-03-30 2008-03-19 上海未来宽带技术及应用工程研究中心有限公司 基于事件驱动原理开发ipmc的系统
CN101551747A (zh) * 2009-04-09 2009-10-07 怯肇乾 Arm系列微处理器的软件体系架构工具
CN101620535A (zh) * 2009-07-29 2010-01-06 北京航空航天大学 一种机载计算机软件通用框架设计方法
CN102081545A (zh) * 2011-01-07 2011-06-01 中国电子科技集团公司第十研究所 在嵌入式平台上实现软件通信架构的方法
CN102253834A (zh) * 2011-07-05 2011-11-23 广东星海数字家庭产业技术研究院有限公司 一种基于数字电视的Linux硬件设备驱动系统
CN102331935A (zh) * 2011-11-07 2012-01-25 广东天波信息技术股份有限公司 一种嵌入式跨系统软件开发平台
CN102662665A (zh) * 2012-03-29 2012-09-12 福州瑞芯微电子有限公司 在安卓系统上实现支持各种传感器的输入子系统
WO2016004587A1 (zh) * 2014-07-08 2016-01-14 北京航空航天大学 一种基于多核处理器架构的机器人混合系统应用框架
CN109508202A (zh) * 2018-09-27 2019-03-22 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 嵌入式操作系统的驱动开发系统、方法及介质
CN109885341A (zh) * 2019-02-20 2019-06-14 无锡宝威电子有限公司 一种通用设备驱动模型、系统及应用
CN110162391A (zh) * 2019-05-27 2019-08-23 浪潮云信息技术有限公司 一种异步框架及其实现方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
嵌入式网卡类设备驱动程序模块化开发框架;季义钦;《中国电子商情·通信市场》(第3期);77-83 *

Also Published As

Publication number Publication date
CN112988144A (zh) 2021-06-18

Similar Documents

Publication Publication Date Title
Charles et al. X10: an object-oriented approach to non-uniform cluster computing
US20030229482A1 (en) Apparatus and method for managing integrated circuit designs
JP5244194B2 (ja) ビジネス・プロセスを再使用可能サービスに変換するためのシステム、方法、およびコンピュータ・プログラム
CN103718155A (zh) 运行时系统
CN102298535A (zh) 绑定数据并行设备源代码
US20150324194A1 (en) Method for modeling source code having code segments that lack source location
Rassokhin The C++ programming language in cheminformatics and computational chemistry
Eder et al. Energy-aware software engineering
CN112988144B (zh) 通用嵌入式事件驱动软件开发框架及使用方法
Schultz et al. Compiling java for low-end embedded systems
Chen et al. Modelling with relational calculus of object and component systems-rCOS
Jiao et al. Roccom: an object-oriented, data-centric software integration framework for multiphysics simulations
Pirkelbauer et al. Source code rejuvenation is not refactoring
US20200278876A1 (en) Serialization of objects to java bytecode
Sharp et al. Static analysis of object references in RMI-based Java software
US8135943B1 (en) Method, apparatus, and computer-readable medium for generating a dispatching function
Wolf Object programming for CAD
CN103425461B (zh) 一种编程接口技术实现方法及计算机系统
Broy Object-oriented programming and software development—a critical assessment
Schricker Cobol for the next millennium
Eder et al. Chapter Energy-Aware Software Engineering
Adams An Introduction to the C++ Programming Language (Version: 2015-02-03)
Wrenn et al. Dependently Typing R Vectors, Arrays, and Matrices
Mitchell et al. Checking software contracts
Lemon et al. on object oriented device driver model

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant