CN107967223B - 一种多产品线通用代码架构系统 - Google Patents

一种多产品线通用代码架构系统 Download PDF

Info

Publication number
CN107967223B
CN107967223B CN201711286652.6A CN201711286652A CN107967223B CN 107967223 B CN107967223 B CN 107967223B CN 201711286652 A CN201711286652 A CN 201711286652A CN 107967223 B CN107967223 B CN 107967223B
Authority
CN
China
Prior art keywords
module
resources
drvbox
layer
libdvr
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
CN201711286652.6A
Other languages
English (en)
Other versions
CN107967223A (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.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
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 Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN201711286652.6A priority Critical patent/CN107967223B/zh
Publication of CN107967223A publication Critical patent/CN107967223A/zh
Application granted granted Critical
Publication of CN107967223B publication Critical patent/CN107967223B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management

Landscapes

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

Abstract

本发明公开了一种多产品线通用代码架构系统,所述架构系统包括libdvr、libcom、libres、drvbox,其中:libdvr为架构系统的最上层,包含多个互相独立的模块,每个模块完成各自的功能需求,具体的功能通过调用libcom和libres实现;libcom为libdvr库层与drvbox驱动层的中间层,包含I2C模块,GPIO模块,UART模块,MTD模块,thread模块,为libdvr提供使用;libres作libdvr的库层与drvbox驱动层的中间层,用于资源的管理和获取;drvbox作为底层驱动层,供libcom库调用。本发明针对采用不同主控芯片的硬件产品,使用同一套软件框架进行开发,将硬件、产品资源的差异化进行统一管理,屏蔽到底层,实现不管使用哪家的芯片,对上层开发人员来说,都是使用统一的函数库接口。

Description

一种多产品线通用代码架构系统
技术领域
本发明涉及软件系统设计技术领域,具体涉及一种多产品线通用代码架构系统。
背景技术
传统的硬件产品开发一般都是基于SoC芯片厂商打包的方案,这种做法对于单一产品来说利于缩短研发周期,实现产品快速上线。但随着后期产品采用多家SoC厂商的方案以定位不同的市场需求时,由于不同SoC各家厂商方案不尽相同,因此势必要投入更多的研发人员去维护多条产品线,无形中增大了维护成本,而随着更多新产品的投入研发,这种情况只会越来越糟糕,非常不利于研发工作的可持续推进。
发明内容
本发明要解决的技术问题是:针对上述问题,本发明提供一种多产品线通用代码架构系统。
本发明所采用的技术方案为:
一种多产品线通用代码架构系统,所述架构系统包括libdvr、libcom、libres、drvbox,其中:
libdvr为架构系统的最上层,包含多个互相独立的模块,每个模块完成各自的功能需求,具体的功能通过调用libcom和libres实现;每个模块都是一个独立的整体,模块之间尽量减少互相调用,降低模块的耦合性;
libcom为libdvr库层与drvbox驱动层的中间层,包含I2C模块,GPIO模块,UART模块,MTD模块,thread模块,为libdvr提供使用,可以使结构更加清晰化,方便维护;
libres作libdvr库层与drvbox驱动层的中间层,库的功能较为单一,只是用于资源的管理和获取;在这套软件架构中,资源数据的管理和获取是核心部分;
drvbox作为底层驱动层,供libcom库调用。
所述Libres中的资源来源于drvbox,drvbox中的资源来源于产品资源文件。
所述drvbox的主要功能包括GPIO、I2C、资源和看门狗的驱动加载及功能实现,平台资源和产品资源的设计及获取,HWID号的获取。
所述libdvr中的每个模块都包含API文件,设备文件,功能文件及资源文件4部分。
所述模块的实现包括:
在设备文件部分,首先获取设备资源,根据资源中的配置,对设备进行初始化,完成资源的赋值和功能指针的赋值;
在设备文件中不做任何功能的操作,单纯完成设备的创建和初始化;
在功能文件中完成功能的操作,功能文件可能存在多种,例如alarm设备存在gpio和i2c两种方式,通过资源来判断;
在功能文件中创建相应的gpio或i2c设备,此时的功能接口就调用libcom。
libres层在运行时,所有设备的资源都为空,只有在每个模块初始化完成之后,才会实现相应模块的资源获取,资源获取的是从内核态的拷贝。
所述drvbox的实现包括三个部分:
1)注册GPIO,I2C,RES,Watchdog设备驱动;
2)初始化平台资源;
3)获取HWID,初始化产品资源。
所述I2C设备驱动的实现包括:
1)I2C驱动注册文件,用来注册I2C设备驱动,提供ioctl功能;
2)I2C功能实现文件,具体实现I2C设备的初始化,读写功能;
3)I2C资源文件。
所述I2C设备的驱动,通过创建设备节点,使用链表的方式进行管理,当初始化一个I2C设备时,先在链表中查找是否具有相同资源的I2C设备节点,若存在,即可直接使用,若不存在,则创建节点,初始化后加入链表。
所述架构系统通过在libcom、drvbox添加新的硬件功能模块的支持,将该软件框架快速移植到其他产品线进行应用。
本发明的有益效果为:
本发明针对采用不同主控芯片的硬件产品,使用同一套软件框架进行开发,将硬件、产品资源的差异化进行统一管理,屏蔽到底层,实现不管使用哪家的芯片,对上层开发人员来说,都是使用统一的函数库接口。提高研发效率,降低研发成本。
附图说明
图1为本发明代码架构图;
图2为alarm模块文件结构图;
图3为I2C资源结构图;
图4为I2cDevProbe流程图;
图5为libres资源获取示意图;
图6为drvbox的实现流程图;
图7为I2C初始化流程图。
具体实施方式
根据说明书附图,结合具体实施方式对本发明进一步说明:
实施例1
如图1所示,一种多产品线通用代码架构系统,所述架构系统包括libdvr、libcom、libres、drvbox,其中:
libdvr为架构系统的最上层,上层各API库的统称,提供给应用层调用,包含多个互相独立的模块,每个模块完成各自的功能需求,具体的功能通过调用libcom和libres实现;每个模块都是一个独立的整体,模块之间尽量减少互相调用,降低模块的耦合性;
libcom为libdvr库层与drvbox驱动层的中间层,包含I2C模块,GPIO模块,UART模块,MTD模块,thread模块,为libdvr提供使用,使结构更加清晰化,方便维护;
libres作libdvr库层与drvbox驱动层的中间层,库的功能较为单一,只是用于资源的管理和获取;在这套软件架构中,资源数据的管理和获取是核心部分;
drvbox作为底层驱动层,供libcom库调用。
实施例2
1、libdvr库的模块实现
libdvr每个模块都是一个独立的整体,模块之间尽量减少互相调用,降低模块的耦合性。每个模块都包含API文件,设备文件,功能文件及资源文件4部分,如图2所示,以alarm模块为例:
在device部分,首先获取alarm设备资源,根据资源中的配置,对alarm设备进行初始化,即完成资源的赋值和功能指针的赋值;
在device中不做任何功能的操作,单纯完成设备的创建和初始化;
在fun文件中才会完成功能的操作,功能文件可能存在多种,例如alarm设备存在gpio和i2c两种方式,通过资源来判断。在功能文件中会创建相应的gpio或i2c设备,此时的功能接口就会调用libcom。
2、libcom库的模块实现
libcom库包含多个模块,每个模块的设计思路类似,下面以I2C模块为例:
I2C模块有两种方式实现,分别为芯片自带I2C及GPIO模拟I2C两种方式;
I2C设备采用链表进行管理,查找设备时,若I2C的采用的方式不同,直接返回无法找到,若方式相同,gpio模拟方式需要判断port与bit,芯片自带I2C需要判断Busid是否相同;I2C设备资源如图3所示,I2cDevProbe调用流程如图4所示。
3、libres的实现
libres库的功能较为单一,只是用于资源的管理和获取,在整个软件框架设计中,资源数据的管理和获取是核心部分。libres中的资源来源于drvbox,drvbox中的资源来源于产品资源文件。在drvbox成功加载之后,资源结构体中包含了所有的资源数据。libres层在运行时,所有设备的资源都为空,只有在每个模块初始化完成之后,才会实现相应模块的资源获取,资源获取的时候实际上是从内核态的拷贝,如图5所示。
4、drvbox的实现分为三个部分:
1)注册GPIO,I2C,RES,Watchdog等设备驱动;
2)初始化平台资源;
3)获取HWID,初始化产品资源。
具体的实现流程如图6所示。
获取HWID的方式有多种,例如通过读取8路GPIO引脚的高低电平来获取或者通过I2C读单片机来获取,因此在获取HWID前,必须先初始化GPIO和I2C。
其中,I2C驱动模块实现包括:
1)I2C驱动注册文件,用来注册I2C驱动,提供ioctl功能;
2)I2C功能实现文件,具体实现I2C的初始化,读写功能;
3)I2C资源文件。
其中,为实现I2C驱动设备的良好管理,为其创建了设备节点,使用链表的方式进行管理。当上次初始化一个I2C设备时,会先在链表中查找是否具有相同资源的I2C设备节点,若存在,即可直接使用,若不存在,则创建节点,初始化后加入链表,I2C初始化如图7所示。
I2C的实现方式有GPIO模拟和标准I2C两种,读写协议有标准I2C协议和MCU协议两种。当产品资源配置为GPIO模拟I2C时,I2C设备的读写指针需要赋值为GPIO模拟的读写接口。当配置为标准I2C时,I2C设备的读写指针则赋值为标准的读写接口。同理,读写协议的不同也采用同样的方式。
实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。

Claims (3)

1.一种多产品线通用代码架构系统,其特征在于,所述架构系统包括libdvr、libcom、libres、drvbox,其中:
libdvr为架构系统的最上层,包含多个互相独立的模块,每个模块完成各自的功能需求,具体的功能通过调用libcom和libres实现;
libcom为libdvr库层与drvbox驱动层的中间层,包含I2C模块,GPIO模块,UART模块,MTD模块,thread模块,为libdvr提供使用;
libres作libdvr的库层与drvbox驱动层的中间层,用于资源的管理和获取;
drvbox作为底层驱动层,供libcom库调用;
所述Libres中的资源来源于drvbox,drvbox中的资源来源于产品资源文件;
所述drvbox的主要功能包括GPIO、I2C、资源和看门狗的驱动加载及功能实现,平台资源和产品资源的设计及获取,HWID号的获取;
所述libdvr中的每个模块都包含API文件,设备文件,功能文件及资源文件4部分;
所述模块的实现包括:
在设备文件部分,首先获取设备资源,根据资源中的配置,对设备进行初始化,完成资源的赋值和功能指针的赋值;
在设备文件中完成设备的创建和初始化;
在功能文件中完成功能的操作,功能文件通过资源来判断;
在功能文件中创建相应的设备,功能接口就调用libcom;
所述libres在运行时,所有设备的资源都为空,在每个模块初始化完成之后,实现相应模块的资源获取;
所述drvbox的实现包括三个部分:
1)注册GPIO,I2C,RES,Watchdog设备驱动;
2)初始化平台资源;
3)获取HWID,初始化产品资源;
所述架构系统通过在libcom、drvbox添加新的硬件功能模块的支持,将所述架构系统的软件框架快速移植到其他产品线进行应用。
2.根据权利要求1所述的一种多产品线通用代码架构系统,其特征在于,所述I2C设备驱动的实现包括:
1)I2C驱动注册文件,用来注册I2C设备驱动,提供ioctl功能;
2)I2C功能实现文件,具体实现I2C设备的初始化和读写功能;
3)I2C资源文件。
3.根据权利要求2所述的一种多产品线通用代码架构系统,其特征在于,所述I2C设备的驱动,通过创建设备节点,使用链表的方式进行管理。
CN201711286652.6A 2017-12-07 2017-12-07 一种多产品线通用代码架构系统 Active CN107967223B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711286652.6A CN107967223B (zh) 2017-12-07 2017-12-07 一种多产品线通用代码架构系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711286652.6A CN107967223B (zh) 2017-12-07 2017-12-07 一种多产品线通用代码架构系统

Publications (2)

Publication Number Publication Date
CN107967223A CN107967223A (zh) 2018-04-27
CN107967223B true CN107967223B (zh) 2021-01-08

Family

ID=61998906

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711286652.6A Active CN107967223B (zh) 2017-12-07 2017-12-07 一种多产品线通用代码架构系统

Country Status (1)

Country Link
CN (1) CN107967223B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110990303B (zh) * 2019-11-05 2021-05-25 北京华商三优新能源科技有限公司 充电桩的数据处理方法、装置、存储介质和处理器
CN114546500A (zh) * 2022-01-28 2022-05-27 郑州信大捷安信息技术股份有限公司 一种支持多设备的密码卡驱动实现方法和系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104375841A (zh) * 2014-12-03 2015-02-25 广州广电运通金融电子股份有限公司 一种基于linux系统的CEN/XFS标准的架构以及实现方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1361975A (zh) * 1999-05-21 2002-07-31 通用仪器公司 用于电视顶设核心系统软件的编程接口
US7945807B2 (en) * 2007-09-19 2011-05-17 Universal Scientific Industrial (Shanghai) Co., Ltd. Communication system for a plurality of I/O cards by using the GPIO and a method thereof
CN101551747B (zh) * 2009-04-09 2012-06-20 怯肇乾 Arm系列微处理器的软件体系架构工具
CN102404633B (zh) * 2011-11-04 2014-04-02 Tcl集团股份有限公司 一种监控装置、智能电视系统及电视机
CN102331935A (zh) * 2011-11-07 2012-01-25 广东天波信息技术股份有限公司 一种嵌入式跨系统软件开发平台
CN107066885A (zh) * 2016-10-11 2017-08-18 深圳市华威世纪科技股份有限公司 跨平台可信中间件的实现系统及实现方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104375841A (zh) * 2014-12-03 2015-02-25 广州广电运通金融电子股份有限公司 一种基于linux系统的CEN/XFS标准的架构以及实现方法

Also Published As

Publication number Publication date
CN107967223A (zh) 2018-04-27

Similar Documents

Publication Publication Date Title
CN101268445B (zh) 用于向多核环境中的应用程序提供实时线程服务的方法、装置
CN100367253C (zh) 一种扩展外设的方法及系统
TWI496076B (zh) 上下文狀態管理技術
CN103150279B (zh) 一种主机与基板管理控制器共享设备的方法
CN105051682B (zh) 用于硬件设备的软件接口
CN103412769A (zh) 外接卡参数配置方法、设备以及系统
CN1737780A (zh) 从一个设备驱动程序向另一个传送信息的系统和方法
CN103645945A (zh) 一种虚拟网卡的自动探测及驱动加载方法
CN110098946A (zh) 虚拟化网元设备的部署方法以及装置
CN103873489A (zh) 具有PCIe接口的装置共享系统及方法
CN104111867B (zh) 一种虚拟机迁移装置及方法
CN112000594B (zh) 一种PCIe设备管理方法及其运行系统
CN1650276B (zh) Ata/sata组合控制器
CN112000593B (zh) 一种PCIe设备管理方法及其运行系统
CN107967223B (zh) 一种多产品线通用代码架构系统
CN104050118A (zh) 提供对设备功能的访问的装置、系统和方法
US9280493B2 (en) Method and device for enumerating input/output devices
US20110072153A1 (en) Apparatus, system, and method for device level enablement of a communications protocol
CN105229600A (zh) 基于能力的设备驱动程序框架
CN204189089U (zh) 一种服务器
CN103731375B (zh) 一种fc端口虚拟化方法、装置
CN113515265A (zh) 站点配置方法、装置、设备及计算机可读存储介质
US7958514B2 (en) Apparatus, system, and method for managing tray devices
US10402454B1 (en) Obtaining platform-specific information in a firmware execution environment
CN105051683A (zh) 用受管代码实现的高吞吐量低等待时间用户模式驱动程序

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
TA01 Transfer of patent application right

Effective date of registration: 20201208

Address after: 215100 No. 1 Guanpu Road, Guoxiang Street, Wuzhong Economic Development Zone, Suzhou City, Jiangsu Province

Applicant after: SUZHOU LANGCHAO INTELLIGENT TECHNOLOGY Co.,Ltd.

Address before: 450000 Henan province Zheng Dong New District of Zhengzhou City Xinyi Road No. 278 16 floor room 1601

Applicant before: ZHENGZHOU YUNHAI INFORMATION TECHNOLOGY Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant