CN109062615A - 一种驱动程序的归一化方法及设备 - Google Patents

一种驱动程序的归一化方法及设备 Download PDF

Info

Publication number
CN109062615A
CN109062615A CN201810616024.8A CN201810616024A CN109062615A CN 109062615 A CN109062615 A CN 109062615A CN 201810616024 A CN201810616024 A CN 201810616024A CN 109062615 A CN109062615 A CN 109062615A
Authority
CN
China
Prior art keywords
driver
equipment
normalization
spi
parameter
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
Application number
CN201810616024.8A
Other languages
English (en)
Inventor
彭凡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Silead Inc
Original Assignee
Silead Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Silead Inc filed Critical Silead Inc
Priority to CN201810616024.8A priority Critical patent/CN109062615A/zh
Publication of CN109062615A publication Critical patent/CN109062615A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请的目的是提供一种驱动程序的归一化方法及设备,本申请对SPI设备原有的驱动程序中的驱动参数进行归一化处理,得到归一化驱动参数和对应的归一化驱动程序,其中,所述归一化驱动程序中通过宏定义对不同类型的设备进行区分;当用户需要对一设备而进行驱动时,根据确定的待驱动的设备类型在归一化驱动程序中创建对应的宏定义,并为归一化驱动参数调用对应的设备驱动参数;基于设备驱动参数编译归一化驱动程序,实现了将SPI设备原有的一份驱动程序通过归一化处理后,可以适用于不同类型的设备所需的驱动程序,从而简化了代码维护,并节省了人力物力和时间投入。

Description

一种驱动程序的归一化方法及设备
技术领域
本申请涉及计算机领域,尤其涉及一种驱动程序的归一化方法及设备。
背景技术
现有技术中,在智能终端平台中为了进一步保护终端用户的个人隐私和数据,引入了芯片级的安全技术可信赖区域(Trust Zone,TZ)技术,通过硬件和系统软件、驱动以及上层应用的合作,实现了一整套安全机制。对重要数据的访问被转移到可信执行环境(Trusted Execution Environment,TEE)中进行,其最终执行结果被返回到富裕执行环境(Rich Execution Environment,REE),供正常使用。
由于TZ技术的出现,导致串行外围接口(Serial Peripheral Interface,SPI)通信所依赖的SPI驱动通信功能部分从嵌入式Linux内核驱动架构中移出,作为替代,采用客户应用-可信赖应用(Client Applicatin-Trusted Applicatin,CA-TA)机制来实现。即用户在CA中发起命令,TA中做出响应,并执行SPI通信相关的操作,获取到相关的结果后再返回给CA端使用,而在TA端运算的数据和一些中间结果通常都属于秘密信息,不会共享给CA端。
这样,在新的TZ机制下,原有Linux内核驱动架构中的SPI驱动通信部分已经失去了原有的存在价值,新的SPI通信部分已经放在TEE端实现,且通常都是以库文件的形式提供,在TA端只要调用相应的接口即可访问SPI。作为结果,原有Linux内核驱动架构中的SPI驱动仅保留一些初始化操作以及对GPIO的操作、对外部中断响应的操作即可。而这些操作已经和SPI设备没有关系,所以,为了与原有的传统SPI驱动保持区分,将SPI设备用平台设备代替,这样便形成了TZ引入后Linux内核中SPI驱动的一般架构,即平台驱动方式。但由于在某些场景下,如智能终端只有REE环境,没有TEE环境,传统SPI驱动还有其存在的价值,故将普通SPI驱动和TZ环境下的平台驱动统一起来成为业界研究的主要课题。
发明内容
本申请的一个目的是提供一种驱动程序的归一化方法及设备,以解决现有技术中对不同的设备驱动形式下的驱动代码的维护繁琐且费时费力的问题。
根据本申请的一个方面,提供了一种驱动程序的归一化方法,其中,所述方法包括:
对SPI设备原有的驱动程序中的驱动参数进行归一化处理,得到归一化驱动参数和对应的归一化驱动程序,其中,所述归一化驱动程序中通过宏定义对不同类型的设备进行区分;
确定待驱动的设备类型;
根据所述设备类型在所述归一化驱动程序中创建对应的宏定义,并为所述归一化驱动参数调用对应的设备驱动参数;
基于所述设备驱动参数编译所述归一化驱动程序。
进一步地,上述方法中,所述归一化驱动参数包括设备相关参数和设备相关操作函数。
进一步地,上述方法中,所述确定待驱动的设备类型,包括:
根据用户需求确定待驱动的设备类型。
进一步地,上述方法中,所述待驱动的设备类型包括SPI设备和平台设备。
进一步地,上述方法中,若所述待驱动的设备类型为平台设备,则在所述归一化驱动程序中取消原有的宏定义,并创建用于指示所述平台设备的宏定义。
根据本申请的另一方面,还提供了一种驱动程序的归一化设备,其中,所述设备包括:
归一化装置,用于对SPI设备原有的驱动程序中的驱动参数进行归一化处理,得到归一化驱动参数和对应的归一化驱动程序,其中,所述归一化驱动程序中通过宏定义对不同类型的设备进行区分;
确定装置,用于确定待驱动的设备类型;
调用装置,用于根据所述设备类型在所述归一化驱动程序中创建对应的宏定义,并为所述归一化驱动参数调用对应的设备驱动参数;
编译装置,用于基于所述设备驱动参数编译所述归一化驱动程序。
进一步地,上述设备中,所述归一化驱动参数包括设备相关参数和设备相关操作函数。
进一步地,上述设备中,所述确定待驱动的设备类型,包括:
根据用户需求确定待驱动的设备类型。
进一步地,上述设备中,所述待驱动的设备类型包括SPI设备和平台设备。
进一步地,上述设备中,若所述待驱动的设备类型为平台设备,则在所述归一化驱动程序中取消原有的宏定义,并创建用于指示所述平台设备的宏定义。
与现有技术相比,本申请通过对SPI设备原有的驱动程序中的驱动参数进行归一化处理,得到归一化驱动参数和对应的归一化驱动程序,其中,所述归一化驱动程序中通过宏定义对不同类型的设备进行区分,以便基于不同类型的设备对应在归一化驱动程序中的宏定义,来指示该归一化驱动程序被编译适用于对应类型的设备;当用户需要编译并驱动某设备时,则根据用户需求确定待驱动的设备类型;根据该设备类型在归一化驱动程序中创建对应的宏定义,并为归一化驱动参数调用对应的设备驱动参数;最后基于所述设备驱动参数编译所述归一化驱动程序,实现了在归一化驱动程序的编译过程中控制其编译为适用于待驱动的设备类型,以满足用户的不同需求,使得SPI设备原有的一份驱动程序通过归一化处理后,可以适用于不同类型的设备所需的驱动程序,从而简化了代码维护,并节省了人力物力和时间投入。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个方面的一种驱动程序的归一化方法的流程示意图;
图2示出根据本申请一个方面的一种驱动程序的归一化方法的一实际应用场景示意图;
图3示出根据本申请一个方面的一种驱动程序的归一化设备的结构示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
图1示出根据本申请一个方面的一种驱动程序的归一化方法,该方法包括:步骤S11、步骤S12、步骤S13和步骤S14,其中,具体包括:
所述步骤S11,对SPI设备原有的驱动程序中的驱动参数进行归一化处理,得到归一化驱动参数和对应的归一化驱动程序,其中,所述归一化驱动程序中通过宏定义对不同类型的设备进行区分,以便基于不同类型的设备对应在归一化驱动程序中的宏定义,来指示该归一化驱动程序被编译成适用于对应类型的设备。
在所述步骤S11中,该SPI设备原有的驱动程序中的驱动参数可以包括但不限于该SPI设备原有的驱动程序中的、与该SPI设备相关的变量名称及相关操作函数等。所述步骤S11中的对SPI设备的原有的驱动程序中的驱动参数进行的归一化处理,用于指示将SPI设备的原有的驱动程序中的、与该SPI设备相关的变量名称及相关操作函数等进行抽象处理,以得到抽象处理后的且能够用于兼容SPI设备和与该SPI设备相互独立的其他设备(例如平台设备)的归一化驱动参数,当然,归一化驱动参数包括但不限于设备相关参数和设备相关操作函数。在对该SPI设备原有的驱动程序中的驱动参数进行抽象处理之后,得到包含有归一化驱动参数的该SPI设备原有的驱动程序对应的归一化驱动程序,即该SPI设备原有的驱动程序经过对驱动参数的抽象处理之后,归一化为包含有归一化驱动参数的归一化驱动程序,以满足不同类型的设备(例如,SPI设备及平台设备等)对驱动程序的驱动需求。
本实施例中,下面以代码的形式来进一步解释说明所述步骤S11中的对SPI设备原有的驱动程序中的驱动参数进行归一化处理后得到归一化驱动参数:
spi_device--->GSL_DEV_SEL_device
spi_driver--->GSL_DEV_SEL_driver
spi_dev_put--->GSL_DEV_SEL_dev_put
spi_set_drvdata--->GSL_DEV_SEL_set_drvdata
spi_get_drvdata--->GSL_DEV_SEL_get_drvdata
spi_register_driver--->GSL_DEV_SEL_register_driver
spi_unregister_driver--->GSL_DEV_SEL_unregister_driver
本实施例中,所述步骤S11中的归一化驱动程序中通过宏定义对不同类型的设备进行区分。例如,若在归一化驱动程序中定义有“#define SLPT”,则用于指示需要将该归一化驱动程序编译为平台设备对应的平台模式驱动;若在归一化驱动程序中没有定义上述SLPT则用于指示需要将归一化驱动程序编译为原有的SPI设备对应的SPI模式驱动,以实现通过宏定义来对SPI设备与平台设备的对应的驱动模式的区分。
当用户需要编译并驱动某设备时,所述步骤S12,根据用户需求(例如,用户当前需要驱动的设备类型或驱动模式等)来确定待驱动的设备类型;在此,待驱动的设备类型可以包括但不限于SPI设备及平台设备等,当然,其他能够适用于本申请的待驱动的设备类型且与该SPI设备的设备相关参数和设备相关操作函数大体相似的其他任何驱动设备,都可以引用的形式包含于此。
所述步骤S13,根据该设备类型在归一化驱动程序中创建对应的宏定义,并为归一化驱动参数调用对应的设备驱动参数;
所述步骤S14,基于所述设备驱动参数编译所述归一化驱动程序,实现了在归一化驱动程序的编译过程中控制其编译为适用于待驱动的设备类型,以满足用户的不同需求,使得SPI设备原有的一份驱动程序通过归一化处理后,可以适用于不同类型的设备所需的驱动程序,从而简化了代码维护,并节省了人力物力和时间投入。
在本实施例中,通过在归一化驱动程序中的Makefile中的归一化驱动参数对原有的SPI设备和平台设备进行区分。例如,如下代码用于指示需要驱动SPI设备,并为归一化驱动参数调用该SPI设备对应的设备驱动参数:
KBUILD_CFLAGS+=-DGSL_DEV_SEL_device=spi_device
-DGSL_DEV_SEL_driver=spi_driver
-DGSL_DEV_SEL_dev_put=spi_dev_put
-DGSL_DEV_SEL_set_drvdata=spi_set_drvdata
-DGSL_DEV_SEL_get_drvdata=spi_get_drvdata
-DGSL_DEV_SEL_register_driver=spi_register_driver
-DGSL_DEV_SEL_unregister_driver=spi_unregister_driver
在基于调用的与待驱动的设备类型对应的设备驱动参数后,通过编译Flag将该设备驱参数传递至该归一化驱动程序,以使该归一化驱动程序能够驱动该待驱动的设备类型对应的驱动设备。例如,上述代码中的驱动参数的调用,使得得到的归一化驱动程序被编译为了原有的SPI模式驱动,能够驱动SPI设备,实现了通过归一化驱动参数的对应调用,使得归一化驱动程序满足驱动SPI设备的用户需求。
本实施例中,为了启动该归一化驱动程序的不同驱动模式以满足驱动对应的不同驱动设备,则在该归一化驱动程序中对应的Makefile中,当出现代码:“SPI_DRV_MODE_SEL:=PT”时,用于指示该归一化驱动程序的驱动模式为平台模式,即此时该归一化驱动程序用于驱动平台设备;当归一化驱动程序中出现:“SPI_DRV_MODE_SEL:=”时,用于指示该归一化驱动程序的驱动模式保持编译为原有的SPI模式,即此时该归一化驱动程序用于驱动SPI设备,以使该归一化驱动程序能够满足不同设备类型的驱动需求。
本申请一实施例中,由于归一化驱动程序是由SPI设备的原有的驱动程序中的驱动参数等进行归一化处理后得到的,为了避免该归一化驱动程序默认的驱动模式为SPI模式驱动,当所述待驱动的设备类型为平台设备时,则在所述归一化驱动程序中取消原有的宏定义(例如原有的用于指示驱动SPI设备的宏定义),并创建用于指示所述平台设备的宏定义;之后,重新为该归一化驱动程序中的归一化驱动参数调用该平台设备对应的设备驱动参数(例如,平台设备相关的设备相关参数和设备相关操作函数等),使得该归一化驱动程序能够满足驱动平台设备的设备驱动需求。下面以代码的形式对将归一化驱动程序编译为平台设备对应的驱动模式进行进一步说明:
ifeq($(SPI_DRV_MODE_SEL),PT)
KBUILD_CFLAGS+=-DSLPT
KBUILD_CFLAGS+=-UGSL_DEV_SEL_device
-UGSL_DEV_SEL_driver-UGSL_DEV_SEL_dev_put
-UGSL_DEV_SEL_set_drvdata
-UGSL_DEV_SEL_get_drvdata
-UGSL_DEV_SEL_driver
-UGSL_DEV_SEL_register_driver
-UGSL_DEV_SEL_unregister_driver
-DGSL_DEV_SEL_device=platform_device
-DGSL_DEV_SEL_driver=platform_driver
-DGSL_DEV_SEL_dev_put=platform_dev_put
-DGSL_DEV_SEL_set_drvdata=platform_set_drvdata
-DGSL_DEV_SEL_get_drvdata=platform_get_drvdata
-DGSL_DEV_SEL_register_driver=platform_register_driver
-DGSL_DEV_SEL_unregister_driver=platform_unregister_driver
-Dplatform_register_driver=platform_driver_register
-Dplatform_unregister_driver=platform_driver_unregister
-Dplatform_dev_put=platform_device_put
endif
在此,上述实施例中对SPI设备原有的驱动程序中的驱动参数进行归一化处理后得到归一化驱动参数,并为归一化驱动参数调用平台设备对应的设备驱动参数时,并不是简单的将SPI设备对应的驱动参数替换为归一化驱动参数再调用平台设备对应的设备驱动参数,可能会涉及到设备相关操作函数的函数名内的单词等的顺序调整,以满足不同设备类型对应的驱动参数需求,如下所示:
spi_register_driver--->GSL_DEV_SEL_register_driver--->
platform_driver_register
如图2所示,本申请实施例中在对SPI设备的原有的驱动程序中的驱动参数进行归一化处理之后,当根据用户对设备的驱动需求,确定待驱动的设备类型,即确定用户对归一化驱动程序中的待驱动的驱动模式的选择,之后通过在Makefile中以命令行宏定义的形式将该驱动模式对应的设备类型传递至归一化驱动程序中,使得归一化驱动程序能够将当前的归一化驱动参数调用并编译为待驱动的设备类型对应的模式,例如SPI驱动模式或者平台驱动模式,以得到为归一化驱动参数调用了与该所述待驱动的设备类型对应的设备驱动参数的归一化驱动程序,并对该归一化驱动程序进行编译,实现对该待驱动的设备类型(例如,SPI设备或平台设备等)对应的驱动设备的驱动。
图3示出根据本申请一个方面的一种驱动程序的归一化设备的结构示意图,该设备包括:归一化装置11、确定装置12、调用装置13和编译装置14,其中,具体包括:
所述归一化装置11,对SPI设备原有的驱动程序中的驱动参数进行归一化处理,得到归一化驱动参数和对应的归一化驱动程序,其中,所述归一化驱动程序中通过宏定义对不同类型的设备进行区分,以便基于不同类型的设备对应在归一化驱动程序中的宏定义,来指示该归一化驱动程序被编译成适用于对应类型的设备。
在所述归一化装置11中,该SPI设备原有的驱动程序中的驱动参数可以包括但不限于该SPI设备原有的驱动程序中的、与该SPI设备相关的变量名称及相关操作函数等。所述归一化装置11中的对SPI设备的原有的驱动程序中的驱动参数进行的归一化处理,用于指示将SPI设备的原有的驱动程序中的、与该SPI设备相关的变量名称及相关操作函数等进行抽象处理,以得到抽象处理后的且能够用于兼容SPI设备和与该SPI设备相互独立的其他设备(例如平台设备)的归一化驱动参数,当然,归一化驱动参数包括但不限于设备相关参数和设备相关操作函数。在对该SPI设备原有的驱动程序中的驱动参数进行抽象处理之后,得到包含有归一化驱动参数的该SPI设备原有的驱动程序对应的归一化驱动程序,即该SPI设备原有的驱动程序经过对驱动参数的抽象处理之后,归一化为包含有归一化驱动参数的归一化驱动程序,以满足不同类型的设备(例如,SPI设备及平台设备等)对驱动程序的驱动需求。
本实施例中,下面以代码的形式来进一步解释说明所述归一化装置11中的对SPI设备原有的驱动程序中的驱动参数进行归一化处理后得到归一化驱动参数:
spi_device--->GSL_DEV_SEL_device
spi_driver--->GSL_DEV_SEL_driver
spi_dev_put--->GSL_DEV_SEL_dev_put
spi_set_drvdata--->GSL_DEV_SEL_set_drvdata
spi_get_drvdata--->GSL_DEV_SEL_get_drvdata
spi_register_driver--->GSL_DEV_SEL_register_driver
spi_unregister_driver--->GSL_DEV_SEL_unregister_driver
本实施例中,所述归一化装置11中的归一化驱动程序中通过宏定义对不同类型的设备进行区分。例如,若在归一化驱动程序中定义有“#define SLPT”,则用于指示需要将该归一化驱动程序编译为平台设备对应的平台模式驱动;若在归一化驱动程序中没有定义上述SLPT则用于指示需要将归一化驱动程序编译为原有的SPI设备对应的SPI模式驱动,以实现通过宏定义来对SPI设备与平台设备的对应的驱动模式的区分。
当用户需要编译并驱动某设备时,所述确定装置12,根据用户需求(例如,用户当前需要驱动的设备类型或驱动模式等)来确定待驱动的设备类型;在此,待驱动的设备类型可以包括但不限于SPI设备及平台设备等,当然,其他能够适用于本申请的待驱动的设备类型且与该SPI设备的设备相关参数和设备相关操作函数大体相似的其他任何驱动设备,都可以引用的形式包含于此。
所述调用装置13,根据该设备类型在归一化驱动程序中创建对应的宏定义,并为归一化驱动参数调用对应的设备驱动参数;
所述编译装置14,基于所述设备驱动参数编译所述归一化驱动程序,实现了在归一化驱动程序的编译过程中控制其编译为适用于待驱动的设备类型,以满足用户的不同需求,使得SPI设备原有的一份驱动程序通过归一化处理后,可以适用于不同类型的设备所需的驱动程序,从而简化了代码维护,并节省了人力物力和时间投入。
在本实施例中,通过在归一化驱动程序中的Makefile中的归一化驱动参数对原有的SPI设备和平台设备进行区分。例如,如下代码用于指示需要驱动SPI设备,并为归一化驱动参数调用该SPI设备对应的设备驱动参数:
KBUILD_CFLAGS+=-DGSL_DEV_SEL_device=spi_device
-DGSL_DEV_SEL_driver=spi_driver
-DGSL_DEV_SEL_dev_put=spi_dev_put
-DGSL_DEV_SEL_set_drvdata=spi_set_drvdata
-DGSL_DEV_SEL_get_drvdata=spi_get_drvdata
-DGSL_DEV_SEL_register_driver=spi_register_driver
-DGSL_DEV_SEL_unregister_driver=spi_unregister_driver
在基于调用的与待驱动的设备类型对应的设备驱动参数后,通过编译Flag将该设备驱参数传递至该归一化驱动程序,以使该归一化驱动程序能够驱动该待驱动的设备类型对应的驱动设备。例如,上述代码中的驱动参数的调用,使得得到的归一化驱动程序被编译为了原有的SPI模式驱动,能够驱动SPI设备,实现了通过归一化驱动参数的对应调用,使得归一化驱动程序满足驱动SPI设备的用户需求。
本实施例中,为了启动该归一化驱动程序的不同驱动模式以满足驱动对应的不同驱动设备,则在该归一化驱动程序中对应的Makefile中,当出现代码:“SPI_DRV_MODE_SEL:=PT”时,用于指示该归一化驱动程序的驱动模式为平台模式,即此时该归一化驱动程序用于驱动平台设备;当归一化驱动程序中出现:“SPI_DRV_MODE_SEL:=”时,用于指示该归一化驱动程序的驱动模式保持编译为原有的SPI模式,即此时该归一化驱动程序用于驱动SPI设备,以使该归一化驱动程序能够满足不同设备类型的驱动需求。
本申请一实施例中,由于归一化驱动程序是由SPI设备的原有的驱动程序中的驱动参数等进行归一化处理后得到的,为了避免该归一化驱动程序默认的驱动模式为SPI模式驱动,当所述待驱动的设备类型为平台设备时,则在所述归一化驱动程序中取消原有的宏定义(例如原有的用于指示驱动SPI设备的宏定义),并创建用于指示所述平台设备的宏定义;之后,重新为该归一化驱动程序中的归一化驱动参数调用该平台设备对应的设备驱动参数(例如,平台设备相关的设备相关参数和设备相关操作函数等),使得该归一化驱动程序能够满足驱动平台设备的设备驱动需求。下面以代码的形式对将归一化驱动程序编译为平台设备对应的驱动模式进行进一步说明:
ifeq($(SPI_DRV_MODE_SEL),PT)
KBUILD_CFLAGS+=-DSLPT
KBUILD_CFLAGS+=-UGSL_DEV_SEL_device
-UGSL_DEV_SEL_driver-UGSL_DEV_SEL_dev_put
-UGSL_DEV_SEL_set_drvdata
-UGSL_DEV_SEL_get_drvdata
-UGSL_DEV_SEL_driver
-UGSL_DEV_SEL_register_driver
-UGSL_DEV_SEL_unregister_driver
-DGSL_DEV_SEL_device=platform_device
-DGSL_DEV_SEL_driver=platform_driver
-DGSL_DEV_SEL_dev_put=platform_dev_put
-DGSL_DEV_SEL_set_drvdata=platform_set_drvdata
-DGSL_DEV_SEL_get_drvdata=platform_get_drvdata
-DGSL_DEV_SEL_register_driver=platform_register_driver
-DGSL_DEV_SEL_unregister_driver=platform_unregister_driver
-Dplatform_register_driver=platform_driver_register
-Dplatform_unregister_driver=platform_driver_unregister
-Dplatform_dev_put=platform_device_put
endif
在此,上述实施例中对SPI设备原有的驱动程序中的驱动参数进行归一化处理后得到归一化驱动参数,并为归一化驱动参数调用平台设备对应的设备驱动参数时,并不是简单的将SPI设备对应的驱动参数替换为归一化驱动参数再调用平台设备对应的设备驱动参数,可能会涉及到设备相关操作函数的函数名内的单词等的顺序调整,以满足不同设备类型对应的驱动参数需求,如下所示:
spi_register_driver--->GSL_DEV_SEL_register_driver--->
platform_driver_register
综上所述,本申请巧妙地利用了SPI设备的设备名等设备相关参数和设备相关操作函数,与平台设备的设备名等设备相关参数和设备相关操作函数的大致相似性,对SPI设备原有的驱动程序中的驱动参数进行归一化处理得到归一化驱动参数和对应的归一化驱动程序,其中,所述归一化驱动程序中通过宏定义对不同类型的设备进行区分,以便基于不同类型的设备对应在归一化驱动程序中的宏定义,来指示该归一化驱动程序被编译适用于对应类型的设备;其中,构造的归一化驱动参数既能够兼容SPI设备也可以兼容平台设备。当用户需要编译并驱动某设备时,则根据用户需求确定待驱动的设备类型,根据该设备类型在归一化驱动程序中创建对应的宏定义,并为归一化驱动参数调用对应的设备驱动参数,使得在Makefile中通过编译的Flags中用命令行形式的宏定义方式将用户选择的待驱动的设备类型传递给包含有归一化驱动参数的归一化驱动代码,实现了在编译时控制归一化驱动代码的驱动模式以匹配用户对不同驱动设备的驱动需求,进一步使得SPI设备原有的一份驱动程序通过归一化处理后,可以适用于不同类型的设备所需的驱动程序,从而简化了代码维护,并节省了人力物力和时间投入。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

Claims (10)

1.一种驱动程序的归一化方法,其中,所述方法包括:
对SPI设备原有的驱动程序中的驱动参数进行归一化处理,得到归一化驱动参数和对应的归一化驱动程序,其中,所述归一化驱动程序中通过宏定义对不同类型的设备进行区分;
确定待驱动的设备类型;
根据所述设备类型在所述归一化驱动程序中创建对应的宏定义,并为所述归一化驱动参数调用对应的设备驱动参数;
基于所述设备驱动参数编译所述归一化驱动程序。
2.根据权利要求1所述的方法,其中,所述归一化驱动参数包括设备相关参数和设备相关操作函数。
3.根据权利要求1所述的方法,其中,所述确定待驱动的设备类型,包括:
根据用户需求确定待驱动的设备类型。
4.根据权利要求1所述的方法,其中,所述待驱动的设备类型包括SPI设备和平台设备。
5.根据权利要求5所述的方法,其中,若所述待驱动的设备类型为平台设备,则在所述归一化驱动程序中取消原有的宏定义,并创建用于指示所述平台设备的宏定义。
6.一种驱动程序的归一化设备,其中,所述设备包括:
归一化装置,用于对SPI设备原有的驱动程序中的驱动参数进行归一化处理,得到归一化驱动参数和对应的归一化驱动程序,其中,所述归一化驱动程序中通过宏定义对不同类型的设备进行区分;
确定装置,用于确定待驱动的设备类型;
调用装置,用于根据所述设备类型在所述归一化驱动程序中创建对应的宏定义,并为所述归一化驱动参数调用对应的设备驱动参数;
编译装置,用于基于所述设备驱动参数编译所述归一化驱动程序。
7.根据权利要求6所述的设备,其中,所述归一化驱动参数包括设备相关参数和设备相关操作函数。
8.根据权利要求6所述的设备,其中,所述步骤B确定待驱动的设备类型,包括:
根据用户需求确定待驱动的设备类型。
9.根据权利要求6所述的设备,其中,所述待驱动的设备类型包括SPI设备和平台设备。
10.根据权利要求9所述的设备,其中,若所述待驱动的设备类型为平台设备,则在所述归一化驱动程序中取消原有的宏定义,并创建用于指示所述平台设备的宏定义。
CN201810616024.8A 2018-06-14 2018-06-14 一种驱动程序的归一化方法及设备 Pending CN109062615A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810616024.8A CN109062615A (zh) 2018-06-14 2018-06-14 一种驱动程序的归一化方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810616024.8A CN109062615A (zh) 2018-06-14 2018-06-14 一种驱动程序的归一化方法及设备

Publications (1)

Publication Number Publication Date
CN109062615A true CN109062615A (zh) 2018-12-21

Family

ID=64820946

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810616024.8A Pending CN109062615A (zh) 2018-06-14 2018-06-14 一种驱动程序的归一化方法及设备

Country Status (1)

Country Link
CN (1) CN109062615A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101183310A (zh) * 2007-12-13 2008-05-21 华为技术有限公司 一种建立设备驱动的方法、设备驱动装置及单板
CN101776998A (zh) * 2010-02-09 2010-07-14 华为终端有限公司 生成通用终端产品程序的方法和装置
US8443348B2 (en) * 2006-06-20 2013-05-14 Google Inc. Application program interface of a parallel-processing computer system that supports multiple programming languages
CN103914315A (zh) * 2012-12-31 2014-07-09 展讯通信(上海)有限公司 驱动程序的配置方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8443348B2 (en) * 2006-06-20 2013-05-14 Google Inc. Application program interface of a parallel-processing computer system that supports multiple programming languages
CN101183310A (zh) * 2007-12-13 2008-05-21 华为技术有限公司 一种建立设备驱动的方法、设备驱动装置及单板
CN101776998A (zh) * 2010-02-09 2010-07-14 华为终端有限公司 生成通用终端产品程序的方法和装置
CN103914315A (zh) * 2012-12-31 2014-07-09 展讯通信(上海)有限公司 驱动程序的配置方法

Similar Documents

Publication Publication Date Title
US7941861B2 (en) Permitting multiple tasks requiring elevated rights
CN106528185A (zh) 一种应用接口管理方法和装置
US20090112972A1 (en) Managing Device Models in a Virtual Machine Cluster Environment
CN105094508A (zh) 一种移动终端应用程序进行窗口控制的方法和装置
CN109325195A (zh) 浏览器的渲染方法和系统、计算机设备、计算机存储介质
US10289397B2 (en) Silent installation of software with dependencies
JP6412276B2 (ja) 仮想マシン作成方法及び装置
CN106874232B (zh) 通用串行总线usb的充电方法、装置及终端
JP2016524257A (ja) グラフィックス処理装置への安全なアクセス制御を提供するためのシステムおよび方法
US11640730B2 (en) Method and apparatus for configuring automobile diagnostic function and automobile diagnostic device
WO2022247698A1 (zh) 资源配置方法和装置、电子设备及计算机可读存储介质
CN105096235A (zh) 图形处理方法及图形处理装置
US20020095434A1 (en) Performance modeling based upon empirical measurements of synchronization points
US10318343B2 (en) Migration methods and apparatuses for migrating virtual machine including locally stored and shared data
CN108205503B (zh) 硬件驱动兼容方法及终端
CN109062615A (zh) 一种驱动程序的归一化方法及设备
CN111385661B (zh) 语音控制全屏播放的方法、装置、终端及存储介质
US20140245291A1 (en) Sharing devices assigned to virtual machines using runtime exclusion
CN110719293A (zh) 一种安全服务生成方法和相关设备
CN105930090A (zh) 一种基于移动终端的触摸屏坐标数据传输方法及系统
CN114138242A (zh) 基于rpa软件的无代码跨系统接口开发方法
CN104572199B (zh) 一种禁止启动项启动的方法和装置
CN113448585A (zh) 一种对线程池的优化方法、装置、电子设备和存储介质
CN107229472A (zh) 一种界面切换方法及装置、计算机装置和可读存储介质
CN107368738A (zh) 一种智能设备的防Root方法及装置

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20181221

RJ01 Rejection of invention patent application after publication