GPIO控制器配置方法和系统与流程

文档序号:23260888发布日期:2020-12-11 18:49阅读:191来源:国知局
本发明涉及计算机
技术领域
:,特别是涉及一种gpio控制器配置方法和一种gpio控制器配置系统。
背景技术
::gpio(general-purposeinput/output)是通用可编程输入输出端口的简称,在操作系统中需要控制很多结构简单的外部设备或者电路,这些设备有些需要通过cpu控制,有些需要cpu提供输入信号。对设备的控制,若使用传统的串口或者并口比较复杂,因此在微处理器上通常使用gpio。其中,gpio控制器是指控制gpio的输入、输出的设备。在操作系统的内核中,所有gpio控制器的多种属性需要进行初始化,然而目前较少针对gpio控制器指定其属性,完成gpio控制器的初始化方案。技术实现要素:鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种gpio控制器配置方法和相应的一种gpio控制器配置系统。为了解决上述问题,本发明实施例公开了一种基于acpi的gpio控制器配置方法,包括:当初始化目标gpio控制器时,获取所述目标gpio控制器对应的目标设备标识;从acpi表中调取与所述目标设备标识对应的目标配置信息;其中,所述目标配置信息为针对所述目标gpio控制器在所述acpi表中预先配置;基于所述目标配置信息配置所述目标gpio控制器的属性,完成所述目标gpio控制器的初始化。可选地,当初始化目标gpio控制器时,获取所述目标gpio控制器对应的设备标识之前,所述方法还包括:在acpi表的dsdt中,基于gpio控制器的设备标识确定对应的配置信息;在所述配置信息中设置所述gpio控制器的属性和对应的属性值。可选地,在所述配置信息中设置所述gpio控制器的属性和对应的属性值,包括:在所述配置信息中确定dsd对象;在所述dsd对象中设置所述gpio控制器的属性和对应的属性值。可选地,所述从acpi表中调取与所述目标设备标识对应的目标配置信息,包括:从acpi表的dsdt中,将与所述目标设备标识匹配的所述设备标识对应的配置信息,作为目标配置信息。可选地,所述基于所述目标配置信息配置所述目标gpio控制器的属性,包括:从所述目标配置信息的所述dsd对象中,获取目标属性对应的目标属性值;将所述目标gpio控制器中与所述目标属性对应的属性的属性值,配置为所述目标属性值。可选地,在基于所述目标配置信息配置所述目标gpio控制器的属性,完成所述目标gpio控制器的初始化之后,所述方法还包括:当初始化所述目标gpio控制器失败时,调取设备树;基于所述设备树中针对目标gpio控制器的目标属性和对应的目标属性值,配置所述目标gpio控制器的属性,完成所述目标gpio控制器的初始化。本发明实施例还公开了一种基于acpi的gpio控制器配置系统,包括:设备标识获取模块,用于当初始化目标gpio控制器时,获取所述目标gpio控制器对应的目标设备标识;配置信息调取模块,用于从acpi表中调取与所述目标设备标识对应的目标配置信息;其中,所述目标配置信息为针对所述目标gpio控制器在所述acpi表中预先配置;属性配置模块,用于基于所述目标配置信息配置所述目标gpio控制器的属性,完成所述目标gpio控制器的初始化。可选地,所述系统还包括:配置信息确定模块,用于在acpi表的dsdt中,基于gpio控制器的设备标识确定对应的配置信息;属性设置模块,用于在所述配置信息中设置所述gpio控制器的属性和对应的属性值。可选地,所述属性设置模块,用于在所述配置信息中确定dsd对象;在所述dsd对象中设置所述gpio控制器的属性和对应的属性值。可选地,所述配置信息调取模块,用于从acpi表的dsdt中,将与所述目标设备标识匹配的所述设备标识对应的配置信息,作为目标配置信息。可选地,所述属性配置模块,用于从所述目标配置信息的所述dsd对象中,获取目标属性对应的目标属性值;将所述目标gpio控制器中与所述目标属性对应的属性的属性值,配置为所述目标属性值。可选地,所述系统还包括:切换模块,用于当初始化所述目标gpio控制器失败时,调取设备树;基于所述设备树中针对目标gpio控制器的目标属性和对应的目标属性值,配置所述目标gpio控制器的属性,完成所述目标gpio控制器的初始化。本发明实施例公开了一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的gpio控制器配置方法的步骤。本发明实施例公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的gpio控制器配置方法的步骤。本发明实施例包括以下优点:在本发明实施例中,当初始化目标gpio控制器时,获取目标gpio控制器对应的目标设备标识,以从acpi表中调取与目标设备标识对应的目标配置信息,从而可以基于目标配置信息配置目标gpio控制器的属性。本发明实施例可以基于高级配置和电源管理接口acip表实现gpio控制器的初始化,使得gpio控制器可以基于指定的配置信息进行正常工作,且由于只需要在操作系统中已有的高级配置和电源管理接口acip表上预先配置gpio控制器的配置信息然后初始化时调取即可,故而不会造成系统额外的负担,保证了系统流畅性。附图说明图1是本发明的一种gpio控制器配置方法实施例的步骤流程图;图2是本发明的一种gpio控制器配置系统实施例的结构框图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例的gpio控制器配置方法和系统,在gpio控制器初始化流程中,可以通过acpi表的dsdt中对应的dsd对象,来指定gpio控制器的多种属性和对应的属性值,从而实现基于acpi的gpio控制器的初始化,gpio控制器可以开始正常运行。参照图1,示出了本发明的一种gpio控制器配置方法实施例的步骤流程图,应用于具有高级配置和电源管理接口acpi表的平台上,具体可以包括如下步骤:步骤101,当初始化目标gpio控制器时,获取所述目标gpio控制器对应的目标设备标识。在具体实现中,在启动设备时需要对设备进行初始化(注册),比如对gpio控制器进行初始化,以使gpio控制器能够开始正常运行。其中,设备标识是指的能够用于唯一识别设备的编码或者名称,例如gpio控制器的设备标识可以为gpo0。在本发明实施例中,进行初始化的gpio控制器为目标gpio控制器,在确定目标gpio控制器时,将获取目标gpio控制器对应的目标设备标识。步骤102,从acpi表中调取与所述目标设备标识对应的目标配置信息;其中,所述目标配置信息为针对所述目标gpio控制器在所述acpi表中预先配置。其中,acpi(advancedconfigurationandpowermanagementinterface)是intel(i386,x86_64,ia64)等平台的标准固件规范,大部分操作系统需要从bios(basicinputoutputsystem,基本输入输出系统)得到的信息都可以从acpi得到。具体地,acpi的信息可以包括:配置信息、acpi相关设备、底层硬件、电源管理、设备热插拔,由多个acpi表组成,这些acpi表存放在内存中,在需要时可以从内存中获取到所有的acpi表。在本发明实施例中,在acpi表中预先配置所有的gpio控制器所分别对应的配置信息。具体地,配置信息可以包括寄存器基地址、寄存器结束地址、控制器包含的管脚数量等属性以及对应的属性值,且配置信息与gpio控制器的设备标识绑定,因此在确定需要进行初始化的目标gpio控制器时,可以根据目标gpio控制器的目标设备标识,从acip表中获取与该目标设备标识对应的目标配置信息。步骤103,基于所述目标配置信息配置所述目标gpio控制器的属性,完成所述目标gpio控制器的初始化。其中,在获取到目标gpio控制器对应的目标配置信息后,就可以基于目标配置信息,对目标gpio控制器相关的属性进行配置,例如配置寄存器地址,从而完成对于目标gpio控制器的初始化。在本发明实施例中,当初始化目标gpio控制器时,获取目标gpio控制器对应的目标设备标识,以从acpi表中调取与目标设备标识对应的目标配置信息,从而可以基于目标配置信息配置目标gpio控制器的属性。本发明实施例可以基于acip表实现gpio控制器的初始化,使得gpio控制器可以基于指定的配置信息进行正常工作,且由于只需要在已有的acip表上更新gpio控制器配置信息,故而不会造成系统额外的负担,保证了系统流畅性。在一示例性实施例中,在所述步骤101,当初始化目标gpio控制器时,获取所述目标gpio控制器对应的设备标识之前,所述方法还可以包括:在acpi表的dsdt中,基于gpio控制器的设备标识确定对应的配置信息;在所述配置信息中设置所述gpio控制器的属性和对应的属性值。其中,在acpi表中有很多的表,其中dsdt(differentiatedsystemdescriptiontable,系统差异描述表)是其中一个最主要的acpi表,dsdt可以提供关于基本系统的执行和配置信息。因此,本发明实施例在acpi表的dsdt中,可以在各个gpio控制器的设备标识所对应的配置信息中,预先设置由用户指定的属性和对应的属性值。在上述示例中,在dsdt预先针对各个gpio控制器配置了对应的配置信息,使得后续在初始化gpio控制器时,可以基于acpi表中dsdt中的配置信息完成。在一示例性实施例中,在所述配置信息中设置所述gpio控制器的属性和对应的属性值,可以包括:在所述配置信息中确定dsd对象;在所述dsd对象中设置所述gpio控制器的属性和对应的属性值。其中,在dsdt具有dsd对象(_dsd),基于dsd对象可以实现数据的传递,例如硬件相关属性配置数据。在本发明实施例中,在dsdt中各个gpio控制器对应的配置信息的dsd对象中,设置由用户指定的该gpio控制器对应的属性和属性值。在上述示例中,在dsdt的dsd对象预先针对各个gpio控制器配置了对应的属性和属性值,使得后续在初始化gpio控制器时,可以基于acpi表中dsdt中,dsd对象中的配置信息完成初始化。在一个具体示例中,固件需要在dsdt的gpio控制器对应的配置信息的_dsd对象中,指定属性和对应的属性值,从而作为内核配置gpio控制器的属性的属性值。具体地,一种dsdt中gpio控制器的配置信息如下所示:device(gpo0){name(_dsd,package()touuid(xxx-xxx-xxx-xxx)package(){package(0x02){"conf_offset"0xxxxx},package(){package(0x02){"ngpios",0xxxxx}}......}在上述示例中,针对一个gpio控制器(gpo0),在其配置信息的_dsd中设置了两个属性和对应的属性值,分别是conf_offse(寄存器偏移地址)和对应的属性值,以及ngpios(gpio的接口数量)对应的属性值。在一示例性实施例中,所述步骤102,从acpi表中调取与所述目标设备标识对应的目标配置信息,可以包括:从acpi表的dsdt中,将与所述目标设备标识匹配的所述设备标识对应的配置信息,作为目标配置信息。在本发明实施例中,在获取目标gpio控制器的目标设备标识后,可以从acpi表的dsdt中调取相应的配置信息,作为该目标gpio控制器的目标配置信息。在上述示例中,在需要初始化目标gpio控制器,只需要基于目标设备标识,即可从dsdt中调取到相应的目标配置信息,数据调取方式简单,易于实现。在一示例性实施例中,所述步骤103,基于所述目标配置信息配置所述目标gpio控制器的属性,可以包括:从所述目标配置信息的所述dsd对象中,获取目标属性对应的目标属性值;将所述目标gpio控制器中与所述目标属性对应的属性的属性值,配置为所述目标属性值。其中,在调取目标gpio控制器的目标配置信息后,可以从目标配置信息中的dsd对象中,进一步获取到目标属性和对应的目标属性值,然后对于目标gpio控制器中与目标属性相同的属性,配置为目标属性值。具体地,内核中解析目标gpio控制器对应的配置信息中的dsd对象,然后使用dsd对象中的目标属性的目标属性值,配置目标gpio控制器对应属性的属性值。例如:device_property_read_u32(dev,"ngpios",(u32*)&lgpio->chip.ngpio);device_property_read_u32(dev,"conf_offset",(u32*)&lgpio->conf_offset)。在上述示例中,如果从目标配置信息获取的属性和属性值为:ngpios:0xxxxx,则可以将目标gpio控制器中chip.ngpio属性的属性值,配置为0xxxxx。如果从目标配置信息获取的属性和属性值为:conf_offse:0xxxxx,则可以将目标gpio控制器中conf_offse属性的属性值,配置为0xxxxx。在一示例性实施例中,在基于所述目标配置信息配置所述目标gpio控制器的属性之后,所述方法还可以包括:当初始化所述目标gpio控制器失败时,调取设备树;基于所述设备树中针对目标gpio控制器的目标属性和对应的目标属性值,配置所述目标gpio控制器的属性,完成所述目标gpio控制器的初始化。在具体实现中,基于acpi表完成了对目标gpio控制器的初始化后,就可以在系统中正常运行目标gpio控制器。但是在实际中,可能由于软件或者硬件方面的原因,导致基于acpi表无法完成对目标gpio控制器的初始化,初始化失败,则可以切换初始化方式,例如切换为基于设备树(devicetree)对目标gpio控制器进行初始化。其中,设备树是一种描述硬件的数据结构,许多硬件信息可以直接透过设备树传递给系统中,因此本发明实施例在设备树的节点中,预先配置了由用户指定的各个gpio控制器的属性和对应的属性值。具体地,在初始化目标gpio控制器失败后,可以调取设备树,然后基于调取设备树中对目标gpio控制器预先设置的目标属性和对应的目标属性值,将目标gpio控制器中的属性,配置为目标属性对应的目标属性值。具体地,一种设备树中gpio控制器的配置信息如下所示:gpiodc:gpio@0{......conf_offset=<0xxxxx>;out_offset=<0xxxxx>;ngpios=<xx>;......}在上述示例中,在设备树中针对gpio控制器gpio@0,设置了属性和属性对应的属性值。在基于设备树初始化目标gpio控制器时,可以从设备树中获取该gpio控制器对应的属性和属性值,以对目标gpio控制器的属性的属性值进行配置,从而完成目标gpio控制器的初始化。可选地,若基于设备树的目标gpio控制器的初始化失败时,还可以基于内核固定配置的gpio控制器的属性的属性值,来实现目标gpio控制器的初始化,进一步提高了系统的健壮性。在一个具体示例中,内核中gpio控制器的配置信息如下所示:voidacpi_loongson_gpio_get_props(structplatform_device*pdev,structloongson_gpio_chip*lgpio){structplatform_gpio_data*gpio_data=(structplatform_gpio_data*)pdev->dev.platform_data;lgpio->chip.ngpio=gpio_data->ngpio;lgpio->chip.base=gpio_data->gpio_base;......}在上述示例中,通过platform的dev.platform_data数据结构传递和配置gpio控制器的属性,使得可以基于内核中的配置信息来实现对于gpio控制器的初始化。应用本发明实施例,在基于acpi表初始化目标gpio控制器失败时,可以切换为基于设备树,或者内核中配置该目标gpio控制器的配置信息实现初始化,无需重启设备,提升了系统的健壮性。需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。参照图2,示出了本发明的一种gpio控制器配置系统实施例的结构框图,应用于具有高级配置和电源管理接口acpi表的平台上,具体可以包括如下模块:设备标识获取模块201,用于当初始化目标gpio控制器时,获取所述目标gpio控制器对应的目标设备标识;配置信息调取模块202,用于从acpi表中调取与所述目标设备标识对应的目标配置信息;其中,所述目标配置信息为针对所述目标gpio控制器在所述acpi表中预先配置;属性配置模块203,用于基于所述目标配置信息配置所述目标gpio控制器的属性,完成所述目标gpio控制器的初始化。在本发明的一个优选实施例中,所述系统还包括:配置信息确定模块,用于在acpi表的dsdt中,基于gpio控制器的设备标识确定对应的配置信息;属性设置模块,用于在所述配置信息中设置所述gpio控制器的属性和对应的属性值。在本发明的一个优选实施例中,所述属性设置模块,用于在所述配置信息中确定dsd对象;在所述dsd对象中设置所述gpio控制器的属性和对应的属性值。在本发明的一个优选实施例中,所述配置信息调取模块202,用于从acpi表的dsdt中,将与所述目标设备标识匹配的所述设备标识对应的配置信息,作为目标配置信息。在本发明的一个优选实施例中,所述属性配置模块203,用于从所述目标配置信息的所述dsd对象中,获取目标属性对应的目标属性值;将所述目标gpio控制器中与所述目标属性对应的属性的属性值,配置为所述目标属性值。在本发明的一个优选实施例中,所述系统还包括:切换模块,用于当初始化所述目标gpio控制器失败时,调取设备树;基于所述设备树中针对目标gpio控制器的目标属性和对应的目标属性值,配置所述目标gpio控制器的属性,完成所述目标gpio控制器的初始化。综上可知,在本发明实施例中,当初始化目标gpio控制器时,获取目标gpio控制器对应的目标设备标识,以从acpi表中调取与目标设备标识对应的目标配置信息,从而可以基于目标配置信息配置目标gpio控制器的属性。本发明实施例可以基于acip表实现gpio控制器的初始化,使得gpio控制器可以基于指定的配置信息进行正常工作,且由于只需要在操作系统上已有的acip表上预先设置gpio控制器的配置信息然后在初始化时调用即可,故而不会造成系统额外的负担,保证了系统流畅性。对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。本发明实施例公开了一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上gpio控制器配置方法实施例所述的步骤。本发明实施例公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上gpio控制器配置方法实施例所述的步骤。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、系统、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的系统。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。以上对本发明所提供的一种gpio控制器配置方法、一种gpio控制器配置系统、电子设备和存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1