提高linux下GPIO输入输出效率的系统和方法

文档序号:6639536阅读:559来源:国知局
提高linux下GPIO输入输出效率的系统和方法
【专利摘要】本发明涉及计算机【技术领域】,具体涉及一种提高linux下GPIO输入输出效率的系统和方法。本系统,对嵌入式LINUX车载设备特别是行车记录仪的GPIO使用进行了分类,把输入检测、独立输出控制以及周期输出控制分类抽取出来,分别设计成驱动模块,在内核空间建立通用设备模型,在用户空间建立动态库调用适配接口。极大的降低了系统I/O的调用,提高了系统的效率,保证了硬件平台不变的条件下,内核空间代码的一致性。本方法,将输入检测、独立输出控制以及周期输出控制分类抽取出来,在内核空间建立通用设备模型,在用户空间建立动态库调用适配接口。本发明极大地提高了系统的效率。
【专利说明】提高I inux下GP1输入输出效率的系统和方法

【技术领域】
[0001]本发明涉及计算机【技术领域】,具体涉及一种提高Iinux下GP1输入输出效率的系统和方法。

【背景技术】
[0002]随着嵌入式技术的发展,嵌入式LINUX已经广泛应用在车载设备中特别是行车记录,我们知道行车记录仪需要采集和控制的数字信号很多,一般都有20多个输入检测(点火信号,刹车信号,转向灯信号等),10多个输出控制(油路电路控制、各种外设的上电、复位控制等)。
[0003]I inux操作系统对系统进行了分层,分为用户空间和内核空间,驱动硬件的驱动程序,运行于内核空间,而应用程序运行于用户空间,应用程序如果要和驱动程序进行交互,需要通调用系统化的I/o接口,进行包括系统模式切换等一系列的处理,代价比较高。
[0004]而在行车记录仪等车载设备中,对各种传感信号的采集都是百毫秒甚至10毫秒级的,如果按照普通的方案针对每个GP1 (通用输入/输出)进行独立管控,那么每秒中需要几十甚至上百次的I/O调用,效率低下。


【发明内容】

[0005]解决上述技术问题,本发明提供了一种提高Iinux下GP1输入输出效率的系统,对嵌入式LINUX车载设备特别是行车记录仪的GP1使用进行了分类,把输入检测、独立输出控制以及周期输出控制分类抽取出来,分别设计成驱动模块,在内核空间建立通用设备模型,在用户空间建立动态库调用适配接口。极大的降低了系统I/O的调用,提高了系统的效率,保证了硬件平台不变的条件下,内核空间代码的一致性。
[0006]本发明还提供了一种提高Iinux下GP1输入输出效率的方法,将输入检测、独立输出控制以及周期输出控制分类抽取出来,在内核空间建立通用设备模型,在用户空间建立动态库调用适配接口。
[0007]为了达到上述目的,本发明所采用的技术方案是,一种提高Iinux下GP1输入输出效率的系统,包括设置在内核空间部分的:
弓丨脚复用控制驱动模块,用于对硬件控制的引脚复用控制驱动,用以实现芯片级引脚的复用控制,
芯片级GP1控制模块,用于汇总有效的GP1引脚号,实现对GP1接口的输入输出控制,
输入检测模块,用于定时(比如100MS —次)对输入信号进行采集和处理,并将处理后的稳定的电平信号提供给应用层,
周期输出控制模块,用于实现GP1接口的周期性的输出控制,
直接输出控制模块,用于实现GP1接口的单次性输出控制,
文件接口模块,用于以设备节点的方式统一管理分发应用发起的各种GP1控制操作,并根据功能调用输入检测模块,周期输出控制模块,直接输出控制模块实现具体的输入输出控制,
还包括设置在用户空间部分的:
GP1直接控制模块,用于分类各GP1接口功能,提供输入检测、周期输出控制、直接输出控制的注册,实现GP1引脚号和业务功能的对应关系,提供初始化时GP1的默认值,定时(100MS)读取输入检测模块暂存的各输入信号的状态,
GP1接口封装模块,用于实现具体的GP1的输出控制。
[0008]进一步的,输入检测模块通过一个32位变量来汇总各输入信号的状态,并进行暂存,等待应用层的读取。
[0009]进一步的,周期输出控制模块根据应用设置的高低电平的持续时间、翻转次数进行周期性的控制。
[0010]一种提高Iinux下GP1输入输出效率的方法,包括以下步骤:
将Iinux系统进行分层,分为用户空间和内核空间,在内核空间设置:
弓丨脚复用控制驱动模块,用于对硬件控制的引脚复用控制驱动,用以实现芯片级引脚的复用控制,
芯片级GP1控制模块,用于汇总有效的GP1引脚号,实现对GP1接口的输入输出控制,
输入检测模块,用于定时(比如100MS —次)对输入信号进行采集和处理,并将处理后的稳定的电平信号提供给应用层,
周期输出控制模块,用于实现GP1接口的周期性的输出控制,
直接输出控制模块,用于实现GP1接口的单次性输出控制,
文件接口模块,用于以设备节点的方式统一管理分发应用发起的各种GP1控制操作,并根据功能调用输入检测模块,周期输出控制模块,直接输出控制模块实现具体的输入输出控制,
在用户空间设置:
GP1直接控制模块,用于分类各GP1接口功能,提供输入检测、周期输出控制、直接输出控制的注册,实现GP1引脚号和业务功能的对应关系,提供初始化时GP1的默认值,定时(100MS)读取输入检测模块暂存的各输入信号的状态,
GP1接口封装模块,用于实现具体的GP1的输出控制,其通过函数名的形式向上提供接口,封装了下层的名字信息,提供上次容易识别和理解的接口,比如硬盘的上电掉电接
□O
[0011]进一步的,输入检测模块通过一个32位变量来汇总各输入信号的状态,并进行暂存,等待应用层的读取。
[0012]进一步的,周期输出控制模块根据应用设置的高低电平的持续时间、翻转次数进行周期性的控制。
[0013]本发明通过采用上述技术方案,与现有技术相比,具有如下优点:
本发明的系统对嵌入式LINUX车载设备特别是行车记录仪的GP1使用进行了分类,把输入检测、独立输出控制以及周期输出控制分类抽取出来,分别设计成驱动模块,在内核空间建立通用设备模型,在用户空间建立动态库调用适配接口。极大的降低了系统I/O的调用,提高了系统的效率,保证了硬件平台不变的条件下,内核空间代码的一致性。
[0014]本发明的方法对GP1空间进行分类和抽象,提取出不变的部分,设计成通用系统模型,对输入输出进行统一管控,降低了系统I/o调用的次数,极大地提高了系统的效率;把变的东西抽象出来设计注册表项,提高了 GP1的可维护性。

【专利附图】

【附图说明】
[0015]图1是本发明的实施例的结构示意图。

【具体实施方式】
[0016]现结合附图和【具体实施方式】对本发明进一步说明。
[0017]作为一个具体的实施例,如图1所示,本发明的一种提高Iinux下GP1输入输出效率的系统,包括设置在内核空间部分的:
弓丨脚复用控制驱动模块,用于对硬件控制的引脚复用控制驱动,用以实现芯片级引脚的复用控制,
芯片级GP1控制模块,用于汇总有效的GP1引脚号,实现对GP1接口的输入输出控制,具有硬件相关性,
输入检测模块,用于定时,比如100MS —次对输入信号进行采集和处理,并将处理后的稳定的电平信号提供给应用层,输入检测模块通过一个32位变量来汇总各输入信号的状态,并进行暂存,等待应用层的读取。
[0018]周期输出控制模块,用于实现GP1接口的周期性的输出控制,周期输出控制模块根据应用设置的高低电平的持续时间、翻转次数进行周期性的控制。比如一闪一闪的指示灯控制,本模块按照应用设置的高低电平的持续时间、翻转次数进行周期性的控制,应用只需一次性的设置好这些参数,具体的实施由本模块完成,直到应用需要更改闪烁方式;
直接输出控制模块,用于实现GP1接口的单次性输出控制,
文件接口模块,用于以设备节点的方式统一管理分发应用发起的各种GP1控制操作,并根据功能调用输入检测模块,周期输出控制模块,直接输出控制模块实现具体的输入输出控制,
驱动的输入检测(sensor)、周期输出控制、直接输出控制,设计成平台无关性,可以看做是“容器”,在没有被应用进行引脚映射之前,没有和硬件有具体的联系。具有不同平台的完全可复用性。
[0019]还包括设置在用户空间部分的:
GP1直接控制模块,用于分类各GP1接口功能,提供输入检测、周期输出控制、直接输出控制的注册,实现GP1引脚号和业务功能的对应关系,提供初始化时GP1的默认值,定时(100MS)读取输入检测模块暂存的各输入信号的状态,
GP1接口封装模块,用于实现具体的GP1的输出控制。
[0020]一种提高Iinux下GP1输入输出效率的方法,包括以下步骤:
将Iinux系统进行分层,分为用户空间和内核空间,在内核空间设置:
弓丨脚复用控制驱动模块,用于对硬件控制的引脚复用控制驱动,用以实现芯片级引脚的复用控制, 芯片级GP1控制模块,用于汇总有效的GP1引脚号,实现对GP1接口的输入输出控制,
输入检测模块,用于定时(比如100MS —次)对输入信号进行采集和处理,并将处理后的稳定的电平信号提供给应用层,输入检测模块通过一个32位变量来汇总各输入信号的状态,并进行暂存,等待应用层的读取。
[0021]周期输出控制模块,用于实现GP1接口的周期性的输出控制,周期输出控制模块根据应用设置的高低电平的持续时间、翻转次数进行周期性的控制。
[0022]直接输出控制模块,用于实现GP1接口的单次性输出控制,
文件接口模块,用于以设备节点的方式统一管理分发应用发起的各种GP1控制操作,并根据功能调用输入检测模块,周期输出控制模块,直接输出控制模块实现具体的输入输出控制,
在用户空间设置:
GP1直接控制模块,用于分类各GP1接口功能,提供输入检测、周期输出控制、直接输出控制的注册,实现GP1引脚号和业务功能的对应关系,提供初始化时GP1的默认值,定时(100MS)读取输入检测模块暂存的各输入信号的状态,
GP1接口封装模块,用于实现具体的GP1的输出控制,其通过函数名的形式向上提供接口,封装了下层的名字信息,提供上层容易识别和理解的接口,比如硬盘的上电掉电接
□O
[0023]void YX_PLT_HDPowerOn(void);
void YX_PLT_HDPowerOff(void);
用户空间部分,实现为动态库,基于线程来实施。
[0024]为了进一步说明本实施例的优点,对效率的提升:下面结合常规方法和本实施例的方法运用具体实例说明。
[0025]常规方法:
假设应用层有4个进程,有20个输入检测GP1信号,3个周期输出控制信号,最小控制周期为100毫秒,如果单独进行驱动控制,则对于20个输入检测信号,单个进程每秒钟需要的I/O调用次数为20 * 6 =120次,4个进程就需要480次,同理对于3个周期输出信号,每秒钟的I/O调用次数为3 * 6 = 18次。那么每秒钟对这些I/O的调用次数为120+18=138次。
[0026]本方法:
由于把输入信号集中在驱动模块中采集滤波,一次性就把整体20个信号读出来,那么每秒钟只需要1/06次,而对于周期性的输出,只需一次控制,在不改变输出周期的情况下,而这种情况也不是很频繁,I/O的调用几乎可以忽略,那么每个进程只需要每秒钟6次的I/O即可以完成。4个进程总共24次I/O调用。
[0027]尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。
【权利要求】
1.一种提高Iinux下GP1输入输出效率的系统,其特征在于:包括设置在内核空间部分的: 弓丨脚复用控制驱动模块,用于对硬件控制的引脚复用控制驱动,用以实现芯片级引脚的复用控制, 芯片级GP1控制模块,用于汇总有效的GP1引脚号,实现对GP1接口的输入输出控制, 输入检测模块,用于定时对输入信号进行采集和处理,并将处理后的稳定的电平信号提供给应用层, 周期输出控制模块,用于实现GP1接口的周期性的输出控制, 直接输出控制模块,用于实现GP1接口的单次性输出控制, 文件接口模块,用于以设备节点的方式统一管理分发应用发起的各种GP1控制操作,并根据功能调用输入检测模块,周期输出控制模块,直接输出控制模块实现具体的输入输出控制, 还包括设置在用户空间部分的: GP1直接控制模块,用于分类各GP1接口功能,提供输入检测、周期输出控制、直接输出控制的注册,实现GP1引脚号和业务功能的对应关系,提供初始化时GP1的默认值,定时读取输入检测模块暂存的各输入信号的状态, GP1接口封装模块,用于实现具体的GP1的输出控制。
2.根据权利要求1所述的一种提高Iinux下GP1输入输出效率的系统,其特征在于:输入检测模块通过一个32位变量来汇总各输入信号的状态,并进行暂存,等待应用层的读取。
3.根据权利要求1所述的一种提高Iinux下GP1输入输出效率的系统,其特征在于:周期输出控制模块根据应用设置的高低电平的持续时间、翻转次数进行周期性的控制。
4.一种提高Iinux下GP1输入输出效率的方法,其特征在于,包括以下步骤: 将Iinux系统进行分层,分为用户空间和内核空间,在内核空间设置: 弓丨脚复用控制驱动模块,用于对硬件控制的引脚复用控制驱动,用以实现芯片级引脚的复用控制, 芯片级GP1控制模块,用于汇总有效的GP1引脚号,实现对GP1接口的输入输出控制, 输入检测模块,用于定时对输入信号进行采集和处理,并将处理后的稳定的电平信号提供给应用层, 周期输出控制模块,用于实现GP1接口的周期性的输出控制, 直接输出控制模块,用于实现GP1接口的单次性输出控制, 文件接口模块,用于以设备节点的方式统一管理分发应用发起的各种GP1控制操作,并根据功能调用输入检测模块,周期输出控制模块,直接输出控制模块实现具体的输入输出控制, 在用户空间设置: GP1直接控制模块,用于分类各GP1接口功能,提供输入检测、周期输出控制、直接输出控制的注册,实现GP1引脚号和业务功能的对应关系,提供初始化时GP1的默认值,定时读取输入检测模块暂存的各输入信号的状态, GP1接口封装模块,用于实现具体的GP1的输出控制。
5.根据权利要求4所述的一种提高Iinux下GP1输入输出效率的方法,其特征在于,包括以下步骤:输入检测模块通过一个32位变量来汇总各输入信号的状态,并进行暂存,等待应用层的读取。
6.根据权利要求4所述的一种提高Iinux下GP1输入输出效率的方法,其特征在于,周期输出控制模块根据应用设置的高低电平的持续时间、翻转次数进行周期性的控制。
【文档编号】G06F13/42GK104516853SQ201410800151
【公开日】2015年4月15日 申请日期:2014年12月22日 优先权日:2014年12月22日
【发明者】任赋, 陈华云, 李培明, 郑福弟, 杨磊 申请人:厦门雅迅网络股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1