CN107967223B - 一种多产品线通用代码架构系统 - Google Patents
一种多产品线通用代码架构系统 Download PDFInfo
- 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
Links
- 238000013461 design Methods 0.000 claims description 5
- 238000011161 development Methods 0.000 abstract description 2
- 230000004069 differentiation Effects 0.000 abstract description 2
- 238000012827 research and development Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000000034 method Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000012356 Product development Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software 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设备的驱动,通过创建设备节点,使用链表的方式进行管理。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110990303B (zh) * | 2019-11-05 | 2021-05-25 | 北京华商三优新能源科技有限公司 | 充电桩的数据处理方法、装置、存储介质和处理器 |
CN114546500B (zh) * | 2022-01-28 | 2024-06-21 | 郑州信大捷安信息技术股份有限公司 | 一种支持多设备的密码卡驱动实现方法和系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104375841A (zh) * | 2014-12-03 | 2015-02-25 | 广州广电运通金融电子股份有限公司 | 一种基于linux系统的CEN/XFS标准的架构以及实现方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
MXPA01011903A (es) * | 1999-05-21 | 2002-06-21 | Gen Instrument Corp | Interfaz de programacion para un software del sistema nucleo para descodificador de television. |
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 | 深圳市华威世纪科技股份有限公司 | 跨平台可信中间件的实现系统及实现方法 |
-
2017
- 2017-12-07 CN CN201711286652.6A patent/CN107967223B/zh active Active
Patent Citations (1)
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) | 用于向多核环境中的应用程序提供实时线程服务的方法、装置 | |
CN103150279B (zh) | 一种主机与基板管理控制器共享设备的方法 | |
TWI496076B (zh) | 上下文狀態管理技術 | |
CN103412769A (zh) | 外接卡参数配置方法、设备以及系统 | |
WO2012150608A1 (en) | Peripheral device sharing in multi host computing systems | |
CN1737780A (zh) | 从一个设备驱动程序向另一个传送信息的系统和方法 | |
CN103645945A (zh) | 一种虚拟网卡的自动探测及驱动加载方法 | |
CN112000593B (zh) | 一种PCIe设备管理方法及其运行系统 | |
CN110098946A (zh) | 虚拟化网元设备的部署方法以及装置 | |
CN103873489A (zh) | 具有PCIe接口的装置共享系统及方法 | |
CN104111867B (zh) | 一种虚拟机迁移装置及方法 | |
CN112000594B (zh) | 一种PCIe设备管理方法及其运行系统 | |
CN1650276B (zh) | Ata/sata组合控制器 | |
CN107967223B (zh) | 一种多产品线通用代码架构系统 | |
CN105051682A (zh) | 用于硬件设备的软件接口 | |
CN104050118A (zh) | 提供对设备功能的访问的装置、系统和方法 | |
US9280493B2 (en) | Method and device for enumerating input/output devices | |
US9584268B2 (en) | Device level enablement of a communications protocol | |
CN105229600A (zh) | 基于能力的设备驱动程序框架 | |
CN103731375B (zh) | 一种fc端口虚拟化方法、装置 | |
US7958514B2 (en) | Apparatus, system, and method for managing tray devices | |
US10402454B1 (en) | Obtaining platform-specific information in a firmware execution environment | |
CN114706715B (zh) | 一种基于bmc的分布式raid的控制方法、装置、设备及介质 | |
CN105051683A (zh) | 用受管代码实现的高吞吐量低等待时间用户模式驱动程序 | |
KR101265233B1 (ko) | 초기 저장장치 생산 및 테스트용 호스트 버스 아답터 |
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 |