CN113360431A - 一种在Linux操作系统用户空间下控制GPIO端口的方法和设备 - Google Patents
一种在Linux操作系统用户空间下控制GPIO端口的方法和设备 Download PDFInfo
- Publication number
- CN113360431A CN113360431A CN202110686067.5A CN202110686067A CN113360431A CN 113360431 A CN113360431 A CN 113360431A CN 202110686067 A CN202110686067 A CN 202110686067A CN 113360431 A CN113360431 A CN 113360431A
- Authority
- CN
- China
- Prior art keywords
- gpio
- control
- gpio port
- fire
- operating system
- 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.)
- Pending
Links
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/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
-
- 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Devices For Indicating Variable Information By Combining Individual Elements (AREA)
Abstract
本发明公开了一种在Linux操作系统用户空间下控制GPIO端口的方法和设备,应用于消防图形显示装置,包括:消防图形显示装置根据当前系统的运行状态,生成对应的GPIO端口控制信息,将所述GPIO端口控制信息发送给C拓展的Python模块。本发明通过控制参数发送给使用C/C++开发的Python拓展模块,由该C拓展模块改变当前进程的I/O特权级别,以实现对GPIO端口的完全控制,避免相关技术中消防图形显示装置直接与GPIO驱动程序进行通讯的方式,减少Linux系统从用户态到内核态的切换开销,从而降低GPIO端口状态控制的复杂度,解决了以接口的方式实现控制过程,需要用户程序频繁从用户态到内核态的切换,存在上下文切换的开销,进而造成GPIO操作响应不及时、延误等的问题。
Description
技术领域
本发明涉及消防控制室通用技术领域,具体为一种在Linux操作系统用户空间下控制GPIO端口的方法和设备。
背景技术
GB50116标准规定,集中火灾报警系统、控制中心报警系统中的消防控制室或消防控制中心,至少由火灾报警控制器、消防联动控制器、消防控制室图形显示装置或其他组合设备组成,消防控制室应能监控并显示建筑消防设施运行状态信息、显示消防安全管理信息,并向城市消防远程监控系统传输相关信息,消防图形显示装置是常用的设备之一,消防控制室应有信息传输指示灯,在处理和传输信息时,该指示灯应闪亮,在得到监控中心的正确接收确认后,该指示灯常亮并保持直至该状态复位,当信息传送失败时应有声、光指示。
目前,消防图形显示装置实现对Linux操作系统下GPIO操作的方式存在三种:编写GPIO字符驱动程序,加载到内核中,通过字符文件控制GPIO端口;应用层利用mmap函数,获得GPIO物理基地址对应的虚拟地址指针,然后操作虚拟地址指针实现对GPIO端口的控制;利用文件IO操作GPIO/sys/class/gpio的设备文件节点文件,以控制对应的GPIO端口状态。
由于上述控制过程中消防图形显示装置是以接口的方式提供控制接口,通过控制接口实现对GPIO端口的控制,但是以接口的方式实现控制过程,需要用户程序频繁从用户态到内核态的切换,存在上下文切换的开销,进而造成GPIO操作响应不及时、延误等,因此,目前急需一种能够在Linux操作系统用户空间下控制GPIO端口的方法。
发明内容
本发明的目的在于提供一种在Linux操作系统用户空间下控制GPIO端口的方法和设备,具备稳定性和及时性的优点,解决了以接口的方式实现控制过程,需要用户程序频繁从用户态到内核态的切换,存在上下文切换的开销,进而造成GPIO操作响应不及时、延误等的问题。
为实现上述目的,本发明提供如下技术方案:一种在Linux操作系统用户空间下控制GPIO端口的方法,应用于消防图形显示装置,包括:消防图形显示装置根据当前系统的运行状态,生成对应的GPIO端口控制信息,将所述GPIO端口控制信息发送给C拓展的Python模块,以控制对应GPIO端口的状态,所述Python(C+C++)拓展模块包括解析控制指令、改变当前进程的I/O特权级别、进入IO配置空间、获取GPIO寄存器基地址、根据控制信息,控制对应的GPIO口和恢复当前进程的I/O特权级别。
优选的,所述GPIO端口与数据传输LED连接,所述消防图形显示装置根据系统当前状态,生成对应的GPIO端口控制信息。
优选的,所述GPIO端口控制信息发送给C拓展模块,包括:将控制命令发送给C拓展模块,C拓展模块改变当前进程的I/O特权级别,来控制GPIO端口。
优选的,所述还包括利用Python(C/C++)拓展模块命令对所述GPIO端口控制方法进行调试。
优选的,所述消防图形显示装置通过控制指令与C+C++Python拓展模块连接并传输至数据传输LED。
优选的,所述设备包括外壳、电路板、存储器和用于存储的计算机程序,计算机程序通过处理器完成控制方法。
优选的,所述设备包括权利要求1-6中任意一项所述的一种在Linux操作系统用户空间下控制GPIO端口。
与现有技术相比,本发明的有益效果如下:
1、本发明通过控制参数发送给使用C/C++开发的Python拓展模块,由该C拓展模块改变当前进程的I/O特权级别,以实现对GPIO端口的完全控制,避免相关技术中消防图形显示装置直接与GPIO驱动程序进行通讯的方式,减少Linux系统从用户态到内核态的切换开销,从而降低GPIO端口状态控制的复杂度,提高代码的可维护性,消防图形显示装置根据当前的状态,构造对应的控制参数,将GPIO端口需要的能够直接通过C拓展模块控制GPIO端口状态,减少用户进程在用户态到内核态之间的切换,提高了程序的稳定性和及时性,采用ioplt函数改变当前进程的I/O特权级别,以较高级别的I/O权能级别控制GPIO端口,并将GPIO操作函数以PythonC/C++AP接口的形式封装成拓展模块,供消防图形显示装置,因此在消防图形显示装置的运行过程中,即可快速消防控制室应有信息传输指示灯,在处理和传输信息,解决了以接口的方式实现控制过程,需要用户程序频繁从用户态到内核态的切换,存在上下文切换的开销,进而造成GPIO操作响应不及时、延误等的问题。
附图说明
图1为本发明消防图形显示装置系统示意图;
图2为本发明Python(C+C++)拓展模块方法示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的部件均为通用标准件或本领域技术人员知晓的部件,其结构和原理都为本技术人员均可通过技术手册得知或通过常规实验方法获知。
请参阅图1-2,一种在Linux操作系统用户空间下控制GPIO端口的方法,应用于消防图形显示装置,包括:消防图形显示装置根据当前系统的运行状态,生成对应的GPIO端口控制信息,将GPIO端口控制信息发送给C拓展的Python模块,以控制对应GPIO端口的状态,Python(C+C++)拓展模块包括解析控制指令、改变当前进程的I/O特权级别、进入IO配置空间、获取GPIO寄存器基地址、根据控制信息,控制对应的GPIO口和恢复当前进程的I/O特权级别,通过控制参数发送给使用C/C++开发的Python拓展模块,由该C拓展模块改变当前进程的I/O特权级别,以实现对GPIO端口的完全控制,避免相关技术中消防图形显示装置直接与GPIO驱动程序进行通讯的方式,减少Linux系统从用户态到内核态的切换开销,从而降低GPIO端口状态控制的复杂度,提高代码的可维护性,消防图形显示装置根据当前的状态,构造对应的控制参数,将GPIO端口需要的能够直接通过C拓展模块控制GPIO端口状态,减少用户进程在用户态到内核态之间的切换,提高了程序的稳定性和及时性,采用ioplt函数改变当前进程的I/O特权级别,以较高级别的I/O权能级别控制GPIO端口,并将GPIO操作函数以PythonC/C++API接口的形式封装成拓展模块,供消防图形显示装置,因此在消防图形显示装置的运行过程中,即可快速消防控制室应有信息传输指示灯,在处理和传输信息,解决了以接口的方式实现控制过程,需要用户程序频繁从用户态到内核态的切换,存在上下文切换的开销,进而造成GPIO操作响应不及时、延误等的问题。
本实施例中,具体的,GPIO端口与数据传输LED连接,消防图形显示装置根据系统当前状态,生成对应的GPIO端口控制信息,其中,所属GPIO端口控制信息包含LED点亮控制信息,LED熄灭控制信息以及LED闪烁控制信息。
本实施例中,具体的,GPIO端口控制信息发送给C拓展模块,包括:将控制命令发送给C拓展模块,C拓展模块改变当前进程的I/O特权级别,来控制GPIO端口。
本实施例中,具体的,还包括利用Python(C/C++)拓展模块命令对GPIO端口控制方法进行调试。
本实施例中,具体的,消防图形显示装置通过控制指令与C+C++Python拓展模块连接并传输至数据传输LED。
本实施例中,具体的,设备包括外壳、电路板、存储器和用于存储的计算机程序,计算机程序通过处理器完成控制方法。
本实施例中,具体的,设备包括权利要求1-6中任意一项的一种在Linux操作系统用户空间下控制GPIO端口。
使用时,通过控制参数发送给使用C/C++开发的Python拓展模块,由该C拓展模块改变当前进程的I/O特权级别,以实现对GPIO端口的完全控制,避免相关技术中消防图形显示装置直接与GPIO驱动程序进行通讯的方式,减少Linux系统从用户态到内核态的切换开销,从而降低GPIO端口状态控制的复杂度,提高代码的可维护性,消防图形显示装置根据当前的状态,构造对应的控制参数,将GPIO端口需要的能够直接通过C拓展模块控制GPIO端口状态,减少用户进程在用户态到内核态之间的切换,提高了程序的稳定性和及时性,采用ioplt函数改变当前进程的I/O特权级别,以较高级别的I/O权能级别控制GPIO端口,并将GPIO操作函数以PythonC/C++AP接口的形式封装成拓展模块,供消防图形显示装置,因此在消防图形显示装置的运行过程中,即可快速消防控制室应有信息传输指示灯,在处理和传输信息,解决了以接口的方式实现控制过程,需要用户程序频繁从用户态到内核态的切换,存在上下文切换的开销,进而造成GPIO操作响应不及时、延误等的问题。
本申请文件中使用到的标准零件均可以从市场上购买,而且根据说明书和附图的记载均可以进行订制,各个零件的具体连接方式均采用现有技术中成熟的螺栓、铆钉、焊接等常规手段,机械、零件和设备均采用现有技术中常规的型号,控制方式是通过控制器来自动控制,控制器的控制电路通过本领域的技术人员简单编程即可实现,属于本领域的公知常识,并且本申请文主要用来保护机械装置,所以本申请文不再详细解释控制方式和电路连接。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
在本发明的描述中,需要说明的是,术语“上”、“下”、“内”、“外”“顶/底端”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“设置有”、“套设/接”、“连接”等,应做广义理解,例如“连接”,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (7)
1.一种在Linux操作系统用户空间下控制GPIO端口的方法,其特征在于:应用于消防图形显示装置,包括:消防图形显示装置根据当前系统的运行状态,生成对应的GPIO端口控制信息,将所述GPIO端口控制信息发送给C拓展的Python模块,以控制对应GPIO端口的状态,所述Python(C+C++)拓展模块包括解析控制指令、改变当前进程的I/O特权级别、进入IO配置空间、获取GPIO寄存器基地址、根据控制信息,控制对应的GPIO口和恢复当前进程的I/O特权级别。
2.根据权利要求1所述的一种在Linux操作系统用户空间下控制GPIO端口的方法,其特征在于:所述GPIO端口与数据传输LED连接,所述消防图形显示装置根据系统当前状态,生成对应的GPIO端口控制信息。
3.根据权利要求1所述的一种在Linux操作系统用户空间下控制GPIO端口的方法,其特征在于:所述GPIO端口控制信息发送给C拓展模块,包括:将控制命令发送给C拓展模块,C拓展模块改变当前进程的I/O特权级别,来控制GPIO端口。
4.根据权利要求1所述的一种在Linux操作系统用户空间下控制GPIO端口的方法,其特征在于:所述还包括利用Python(C/C++)拓展模块命令对所述GPIO端口控制方法进行调试。
5.根据权利要求1所述的一种在Linux操作系统用户空间下控制GPIO端口的方法,其特征在于:所述消防图形显示装置通过控制指令与C+C++Python拓展模块连接并传输至数据传输LED。
6.根据权利要求1所述的一种在Linux用户空间下控制GPIO的设备,其特征在于:所述设备包括外壳、电路板、存储器和用于存储的计算机程序,计算机程序通过处理器完成控制方法。
7.一种在Linux操作系统用户空间下控制GPIO端口的设备,其特征在于:所述设备包括权利要求1-6中任意一项所述的一种在Linux操作系统用户空间下控制GPIO端口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110686067.5A CN113360431A (zh) | 2021-06-21 | 2021-06-21 | 一种在Linux操作系统用户空间下控制GPIO端口的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110686067.5A CN113360431A (zh) | 2021-06-21 | 2021-06-21 | 一种在Linux操作系统用户空间下控制GPIO端口的方法和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113360431A true CN113360431A (zh) | 2021-09-07 |
Family
ID=77535341
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110686067.5A Pending CN113360431A (zh) | 2021-06-21 | 2021-06-21 | 一种在Linux操作系统用户空间下控制GPIO端口的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113360431A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111338777A (zh) * | 2020-02-26 | 2020-06-26 | 山东超越数控电子股份有限公司 | 一种低延时高稳定性的自主平台中断响应方法及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593189A (zh) * | 2013-11-14 | 2014-02-19 | 昆明理工大学 | 一种嵌入式Linux下用户态驱动程序的实现方法 |
CN104424034A (zh) * | 2013-09-04 | 2015-03-18 | 华为技术有限公司 | 硬件资源访问方法及装置 |
CN106502930A (zh) * | 2016-10-27 | 2017-03-15 | 福建星网视易信息系统有限公司 | 基于windows平台的GPIO模拟串行接口的方法和装置 |
CN111857839A (zh) * | 2020-06-05 | 2020-10-30 | 北京航天测控技术有限公司 | 一种基于Linux的PXI/PXIe总线设备驱动系统 |
-
2021
- 2021-06-21 CN CN202110686067.5A patent/CN113360431A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104424034A (zh) * | 2013-09-04 | 2015-03-18 | 华为技术有限公司 | 硬件资源访问方法及装置 |
CN103593189A (zh) * | 2013-11-14 | 2014-02-19 | 昆明理工大学 | 一种嵌入式Linux下用户态驱动程序的实现方法 |
CN106502930A (zh) * | 2016-10-27 | 2017-03-15 | 福建星网视易信息系统有限公司 | 基于windows平台的GPIO模拟串行接口的方法和装置 |
CN111857839A (zh) * | 2020-06-05 | 2020-10-30 | 北京航天测控技术有限公司 | 一种基于Linux的PXI/PXIe总线设备驱动系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111338777A (zh) * | 2020-02-26 | 2020-06-26 | 山东超越数控电子股份有限公司 | 一种低延时高稳定性的自主平台中断响应方法及设备 |
CN111338777B (zh) * | 2020-02-26 | 2023-07-07 | 超越科技股份有限公司 | 一种低延时高稳定性的自主平台中断响应方法及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106528097B (zh) | 一种双bios固件的版本同步方法及电子设备 | |
JP4886601B2 (ja) | Usbインタフェース設備に対して操作を行う装置及び方法 | |
CN203416283U (zh) | 基于实时性操作系统的消防信息远程传输系统 | |
US20050251697A1 (en) | Information processing apparatus and method of controlling the same | |
CN113360431A (zh) | 一种在Linux操作系统用户空间下控制GPIO端口的方法和设备 | |
CN105336084A (zh) | 一种消防报警联动控制器 | |
CN105927919A (zh) | 无线智能应急照明灯及无线智能应急照明系统 | |
WO2023178975A1 (zh) | 机箱管理系统及机箱管理方法 | |
CN202512789U (zh) | 继电保护装置的实训装置 | |
CN107728946A (zh) | 磁盘阵列的挂载方法、Android设备和存储介质 | |
CN110147303A (zh) | 一种基于输入输出控制器中心的串口硬盘点灯的方法 | |
CN110677329A (zh) | 一种智能家居控制与监测系统 | |
JP2005134940A (ja) | 記憶制御装置及び記憶制御装置の保守システム | |
CN216927836U (zh) | 一种消防模拟训练控制装置 | |
CN111007815A (zh) | 一种支持双机热备的集中控制主机 | |
CN108200713A (zh) | 远程灯具监控系统 | |
CN213339096U (zh) | 一种有线转无线消防系统 | |
CN218298819U (zh) | 一种可扩展智能设备监控器 | |
CN213750697U (zh) | 一种基于风机水泵控制的嵌入式智能操作面板 | |
CN208224792U (zh) | 一种总线嵌入式工业控制系统 | |
CN2372720Y (zh) | 计算机主机板故障排除的语音装置 | |
CN218065301U (zh) | 一种消防余压控制主机 | |
JP2001248876A (ja) | 空気調和装置のメンテナンスシステム | |
JPH0196725A (ja) | マルチウインドウ制御装置 | |
JPS626269B2 (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 |