提高LINUX下GPIO输入输出效率的系统和方法.pdf

上传人:xia****o6 文档编号:4041874 上传时间:2018-08-12 格式:PDF 页数:8 大小:453.39KB
返回 下载 相关 举报
摘要
申请专利号:

CN201410800151.5

申请日:

2014.12.22

公开号:

CN104516853A

公开日:

2015.04.15

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效 IPC(主分类):G06F 13/42申请日:20141222|||公开

IPC分类号:

G06F13/42

主分类号:

G06F13/42

申请人:

厦门雅迅网络股份有限公司

发明人:

任赋; 陈华云; 李培明; 郑福弟; 杨磊

地址:

361000福建省厦门市软件园二期观日路46号

优先权:

专利代理机构:

厦门市精诚新创知识产权代理有限公司35218

代理人:

巫丽青

PDF下载: PDF下载
内容摘要

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

权利要求书

权利要求书
1.  一种提高linux下GPIO输入输出效率的系统,其特征在于:包括设置在内核空间部分的:
引脚复用控制驱动模块,用于对硬件控制的引脚复用控制驱动,用以实现芯片级引脚的复用控制,
芯片级GPIO控制模块,用于汇总有效的GPIO引脚号,实现对GPIO接口的输入输出控制,
输入检测模块,用于定时对输入信号进行采集和处理,并将处理后的稳定的电平信号提供给应用层,
周期输出控制模块,用于实现GPIO接口的周期性的输出控制,
直接输出控制模块,用于实现GPIO接口的单次性输出控制,
文件接口模块,用于以设备节点的方式统一管理分发应用发起的各种GPIO控制操作,并根据功能调用输入检测模块,周期输出控制模块,直接输出控制模块实现具体的输入输出控制,
还包括设置在用户空间部分的:
GPIO直接控制模块,用于分类各GPIO接口功能,提供输入检测、周期输出控制、直接输出控制的注册,实现GPIO引脚号和业务功能的对应关系,提供初始化时GPIO的默认值,定时读取输入检测模块暂存的各输入信号的状态,
GPIO接口封装模块,用于实现具体的GPIO的输出控制。

2.  根据权利要求1所述的一种提高linux下GPIO输入输出效率的系统,其特征在于:输入检测模块通过一个32位变量来汇总各输入信号的状态,并进行暂存,等待应用层的读取。

3.  根据权利要求1所述的一种提高linux下GPIO输入输出效率的系统,其特征在于:周期输出控制模块根据应用设置的高低电平的持续时间、翻转次数进行周期性的控制。

4.  一种提高linux下GPIO输入输出效率的方法,其特征在于,包括以下步骤:
将linux系统进行分层,分为用户空间和内核空间,在内核空间设置:
引脚复用控制驱动模块,用于对硬件控制的引脚复用控制驱动,用以实现芯片级引脚的复用控制,
芯片级GPIO控制模块,用于汇总有效的GPIO引脚号,实现对GPIO接口的输入输出控制,
输入检测模块,用于定时对输入信号进行采集和处理,并将处理后的稳定的电平信号提供给应用层,
周期输出控制模块,用于实现GPIO接口的周期性的输出控制,
直接输出控制模块,用于实现GPIO接口的单次性输出控制,
文件接口模块,用于以设备节点的方式统一管理分发应用发起的各种GPIO控制操作,并根据功能调用输入检测模块,周期输出控制模块,直接输出控制模块实现具体的输入输出控制,
在用户空间设置:
GPIO直接控制模块,用于分类各GPIO接口功能,提供输入检测、周期输出控制、直接输出控制的注册,实现GPIO引脚号和业务功能的对应关系,提供初始化时GPIO的默认值,定时读取输入检测模块暂存的各输入信号的状态,
GPIO接口封装模块,用于实现具体的GPIO的输出控制。

5.  根据权利要求4所述的一种提高linux下GPIO输入输出效率的方法,其特征在于,包括以下步骤:输入检测模块通过一个32位变量来汇总各输入信号的状态,并进行暂存,等待应用层的读取。

6.  根据权利要求4所述的一种提高linux下GPIO输入输出效率的方法,其特征在于,周期输出控制模块根据应用设置的高低电平的持续时间、翻转次数进行周期性的控制。

说明书

说明书提高linux下GPIO输入输出效率的系统和方法
技术领域
本发明涉及计算机技术领域 ,具体涉及一种提高linux下GPIO输入输出效率的系统和方法。
背景技术
随着嵌入式技术的发展,嵌入式LINUX已经广泛应用在车载设备中特别是行车记录,我们知道行车记录仪需要采集和控制的数字信号很多,一般都有20多个输入检测(点火信号,刹车信号,转向灯信号等),10多个输出控制(油路电路控制、各种外设的上电、复位控制等)。
linux操作系统对系统进行了分层,分为用户空间和内核空间,驱动硬件的驱动程序,运行于内核空间,而应用程序运行于用户空间,应用程序如果要和驱动程序进行交互,需要通调用系统化的I/O接口,进行包括系统模式切换等一系列的处理,代价比较高。
而在行车记录仪等车载设备中,对各种传感信号的采集都是百毫秒甚至10毫秒级的,如果按照普通的方案针对每个GPIO(通用输入/输出)进行独立管控,那么每秒中需要几十甚至上百次的I/O调用,效率低下。
发明内容
解决上述技术问题,本发明提供了一种提高linux下GPIO输入输出效率的系统,对嵌入式LINUX车载设备特别是行车记录仪的GPIO使用进行了分类,把输入检测、独立输出控制以及周期输出控制分类抽取出来,分别设计成驱动模块,在内核空间建立通用设备模型,在用户空间建立动态库调用适配接口。极大的降低了系统I/O的调用,提高了系统的效率,保证了硬件平台不变的条件下,内核空间代码的一致性。
本发明还提供了一种提高linux下GPIO输入输出效率的方法,将输入检测、独立输出控制以及周期输出控制分类抽取出来,在内核空间建立通用设备模型,在用户空间建立动态库调用适配接口。
为了达到上述目的,本发明所采用的技术方案是,一种提高linux下GPIO输入输出效率的系统,包括设置在内核空间部分的:
引脚复用控制驱动模块,用于对硬件控制的引脚复用控制驱动,用以实现芯片级引脚的复用控制,
芯片级GPIO控制模块,用于汇总有效的GPIO引脚号,实现对GPIO接口的输入输出控制,
输入检测模块,用于定时(比如100MS一次)对输入信号进行采集和处理,并将处理后的稳定的电平信号提供给应用层,
周期输出控制模块,用于实现GPIO接口的周期性的输出控制,
直接输出控制模块,用于实现GPIO接口的单次性输出控制,
文件接口模块,用于以设备节点的方式统一管理分发应用发起的各种GPIO控制操作,并根据功能调用输入检测模块,周期输出控制模块,直接输出控制模块实现具体的输入输出控制,
还包括设置在用户空间部分的:
GPIO直接控制模块,用于分类各GPIO接口功能,提供输入检测、周期输出控制、直接输出控制的注册,实现GPIO引脚号和业务功能的对应关系,提供初始化时GPIO的默认值,定时(100MS)读取输入检测模块暂存的各输入信号的状态,
GPIO接口封装模块,用于实现具体的GPIO的输出控制。
进一步的,输入检测模块通过一个32位变量来汇总各输入信号的状态,并进行暂存,等待应用层的读取。
进一步的,周期输出控制模块根据应用设置的高低电平的持续时间、翻转次数进行周期性的控制。
一种提高linux下GPIO输入输出效率的方法,包括以下步骤:
将linux系统进行分层,分为用户空间和内核空间,在内核空间设置:
引脚复用控制驱动模块,用于对硬件控制的引脚复用控制驱动,用以实现芯片级引脚的复用控制,
芯片级GPIO控制模块,用于汇总有效的GPIO引脚号,实现对GPIO接口的输入输出控制,
输入检测模块,用于定时(比如100MS一次)对输入信号进行采集和处理,并将处理后的稳定的电平信号提供给应用层,
周期输出控制模块,用于实现GPIO接口的周期性的输出控制,
直接输出控制模块,用于实现GPIO接口的单次性输出控制,
文件接口模块,用于以设备节点的方式统一管理分发应用发起的各种GPIO控制操作,并根据功能调用输入检测模块,周期输出控制模块,直接输出控制模块实现具体的输入输出控制,
在用户空间设置:
GPIO直接控制模块,用于分类各GPIO接口功能,提供输入检测、周期输出控制、直接输出控制的注册,实现GPIO引脚号和业务功能的对应关系,提供初始化时GPIO的默认值,定时(100MS)读取输入检测模块暂存的各输入信号的状态,
GPIO接口封装模块,用于实现具体的GPIO的输出控制,其通过函数名的形式向上提供接口,封装了下层的名字信息,提供上次容易识别和理解的接口,比如硬盘的上电掉电接口。
进一步的,输入检测模块通过一个32位变量来汇总各输入信号的状态,并进行暂存,等待应用层的读取。
进一步的,周期输出控制模块根据应用设置的高低电平的持续时间、翻转次数进行周期性的控制。
本发明通过采用上述技术方案,与现有技术相比,具有如下优点:
本发明的系统对嵌入式LINUX车载设备特别是行车记录仪的GPIO使用进行了分类,把输入检测、独立输出控制以及周期输出控制分类抽取出来,分别设计成驱动模块,在内核空间建立通用设备模型,在用户空间建立动态库调用适配接口。极大的降低了系统I/O的调用,提高了系统的效率,保证了硬件平台不变的条件下,内核空间代码的一致性。
本发明的方法对GPIO空间进行分类和抽象,提取出不变的部分,设计成通用系统模型,对输入输出进行统一管控,降低了系统I/O调用的次数,极大地提高了系统的效率;把变的东西抽象出来设计注册表项,提高了GPIO的可维护性。
附图说明
图1是本发明的实施例的结构示意图。
具体实施方式
现结合附图和具体实施方式对本发明进一步说明。
作为一个具体的实施例,如图1所示,本发明的一种提高linux下GPIO输入输出效率的系统,包括设置在内核空间部分的:
引脚复用控制驱动模块,用于对硬件控制的引脚复用控制驱动,用以实现芯片级引脚的复用控制,
芯片级GPIO控制模块,用于汇总有效的GPIO引脚号,实现对GPIO接口的输入输出控制,具有硬件相关性,
输入检测模块,用于定时,比如100MS一次对输入信号进行采集和处理,并将处理后的稳定的电平信号提供给应用层,输入检测模块通过一个32位变量来汇总各输入信号的状态,并进行暂存,等待应用层的读取。
周期输出控制模块,用于实现GPIO接口的周期性的输出控制,周期输出控制模块根据应用设置的高低电平的持续时间、翻转次数进行周期性的控制。比如一闪一闪的指示灯控制,本模块按照应用设置的高低电平的持续时间、翻转次数进行周期性的控制,应用只需一次性的设置好这些参数,具体的实施由本模块完成,直到应用需要更改闪烁方式;
直接输出控制模块,用于实现GPIO接口的单次性输出控制,
文件接口模块,用于以设备节点的方式统一管理分发应用发起的各种GPIO控制操作,并根据功能调用输入检测模块,周期输出控制模块,直接输出控制模块实现具体的输入输出控制,
驱动的输入检测(sensor)、周期输出控制、直接输出控制,设计成平台无关性,可以看做是“容器”,在没有被应用进行引脚映射之前,没有和硬件有具体的联系。具有不同平台的完全可复用性。
还包括设置在用户空间部分的:
GPIO直接控制模块,用于分类各GPIO接口功能,提供输入检测、周期输出控制、直接输出控制的注册,实现GPIO引脚号和业务功能的对应关系,提供初始化时GPIO的默认值,定时(100MS)读取输入检测模块暂存的各输入信号的状态,
GPIO接口封装模块,用于实现具体的GPIO的输出控制。
一种提高linux下GPIO输入输出效率的方法,包括以下步骤:
将linux系统进行分层,分为用户空间和内核空间,在内核空间设置:
引脚复用控制驱动模块,用于对硬件控制的引脚复用控制驱动,用以实现芯片级引脚的复用控制,
芯片级GPIO控制模块,用于汇总有效的GPIO引脚号,实现对GPIO接口的输入输出控制,
输入检测模块,用于定时(比如100MS一次)对输入信号进行采集和处理,并将处理后的稳定的电平信号提供给应用层,输入检测模块通过一个32位变量来汇总各输入信号的状态,并进行暂存,等待应用层的读取。
周期输出控制模块,用于实现GPIO接口的周期性的输出控制,周期输出控制模块根据应用设置的高低电平的持续时间、翻转次数进行周期性的控制。
直接输出控制模块,用于实现GPIO接口的单次性输出控制,
文件接口模块,用于以设备节点的方式统一管理分发应用发起的各种GPIO控制操作,并根据功能调用输入检测模块,周期输出控制模块,直接输出控制模块实现具体的输入输出控制,
在用户空间设置:
GPIO直接控制模块,用于分类各GPIO接口功能,提供输入检测、周期输出控制、直接输出控制的注册,实现GPIO引脚号和业务功能的对应关系,提供初始化时GPIO的默认值,定时(100MS)读取输入检测模块暂存的各输入信号的状态,
GPIO接口封装模块,用于实现具体的GPIO的输出控制,其通过函数名的形式向上提供接口,封装了下层的名字信息,提供上层容易识别和理解的接口,比如硬盘的上电掉电接口。
void YX_PLT_HDPowerOn(void);
void YX_PLT_HDPowerOff(void);
用户空间部分,实现为动态库,基于线程来实施。
为了进一步说明本实施例的优点,对效率的提升:下面结合常规方法和本实施例的方法运用具体实例说明。
常规方法:
假设应用层有4个进程,有20个输入检测GPIO信号,3个周期输出控制信号,最小控制周期为100毫秒,如果单独进行驱动控制,则对于20个输入检测信号,单个进程每秒钟需要的I/O调用次数为20 * 6 =120次,4个进程就需要480次,同理对于3个周期输出信号,每秒钟的I/O调用次数为3 * 6 = 18次。那么每秒钟对这些I/O的调用次数为120+18=138次。
本方法:
由于把输入信号集中在驱动模块中采集滤波,一次性就把整体20个信号读出来,那么每秒钟只需要I/O6次,而对于周期性的输出,只需一次控制,在不改变输出周期的情况下,而这种情况也不是很频繁,I/O的调用几乎可以忽略,那么每个进程只需要每秒钟6次的I/O即可以完成。4个进程总共24次I/O调用。
尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。

提高LINUX下GPIO输入输出效率的系统和方法.pdf_第1页
第1页 / 共8页
提高LINUX下GPIO输入输出效率的系统和方法.pdf_第2页
第2页 / 共8页
提高LINUX下GPIO输入输出效率的系统和方法.pdf_第3页
第3页 / 共8页
点击查看更多>>
资源描述

《提高LINUX下GPIO输入输出效率的系统和方法.pdf》由会员分享,可在线阅读,更多相关《提高LINUX下GPIO输入输出效率的系统和方法.pdf(8页珍藏版)》请在专利查询网上搜索。

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1