CN100562847C - 一种建立设备驱动的方法、设备驱动装置及单板 - Google Patents

一种建立设备驱动的方法、设备驱动装置及单板 Download PDF

Info

Publication number
CN100562847C
CN100562847C CNB2007100324176A CN200710032417A CN100562847C CN 100562847 C CN100562847 C CN 100562847C CN B2007100324176 A CNB2007100324176 A CN B2007100324176A CN 200710032417 A CN200710032417 A CN 200710032417A CN 100562847 C CN100562847 C CN 100562847C
Authority
CN
China
Prior art keywords
drives
interface
chip
driving
calling
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.)
Active
Application number
CNB2007100324176A
Other languages
English (en)
Other versions
CN101183310A (zh
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CNB2007100324176A priority Critical patent/CN100562847C/zh
Publication of CN101183310A publication Critical patent/CN101183310A/zh
Application granted granted Critical
Publication of CN100562847C publication Critical patent/CN100562847C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种建立设备驱动的方法,包括:获取第一结构头文件和第二结构头文件,其中分别包括对驱动结构中的接口,共用属性和私有属性结构的定义描述;构造配置文件,其中包括对共用属性和私有属性结构中具体参数的声明设定;加载芯片驱动体;使用配置文件;芯片驱动体根据配置文件中的内容实现所述接口的具体功能。同时还公开了一种设备驱动装置。在本发明中将驱动分成了两个层次,驱动适配和芯片驱动,上层应用层的接口由驱动结构统一提供,减少了驱动开发时上层接口的复杂度,而下层开发只需要根据驱动结构中定义的接口提供相应的芯片驱动体即可,减少了驱动开发时下层结构开发的复杂度。

Description

一种建立设备驱动的方法、设备驱动装置及单板
技术领域
本发明涉及系统开发领域,尤其涉及一种建立设备驱动的方法、设备驱动装置及单板。
背景技术
在嵌入式操作系统中驱动软件开发是嵌入式系统最主要的软件开发工作之一。驱动软件要向上层应用软件层提供访问设备(如单板)上所有硬件资源的接口。
参见图1,为现有的通信系统中常见的单板驱动的情况示意图。通信设备框中一般具有用以控制整个机框运行的主控单板,且该主控单板一般具有较大的存储设备,同时,设备框中还具有其他业务处理单板,如图中的单板BR1、单板BR2、单板BR3,为了支持不同的业务以及降低设备成本,单板BR可支持一种插板,两种扣板,且板上使用的芯片A可以使用另外一种类型的芯片B替换,这些单板BR可以从主控单板获取其需要使用的软件包,包括单板BR运行所需的整个软件包。在本例中,单板BR1上使用了芯片A和扣板1,单板BR2上使用了芯片B和扣板1,单板BR3使用芯片A和插板1。
如图所示,在现有技术条件下,单板BR所需要的运行软件包包含必须使用的单板最小可烧写文件(BIN),同时还必须包含所有需要支持的驱动软件(本例中指芯片A驱动、芯片B驱动、插板1驱动、扣板1驱动以及扣板2驱动)。这样,虽然单板BR不可能同时使用芯片A和芯片B,并且大部分情况下只会插入很少的插板或扣板,仍然需要包含上述全部的驱动,这将占用单板上宝贵的存储资源。同时,驱动软件包作为一个整体启动,也将会延长单板启动的时间。当单板需要向主控或上一级控制器获取软件包时,过大的软件包将会延长驱动软件包获取以及升级的时间。
同时,在现有技术条件下,为了保证对芯片驱动的支持,驱动开发都根据芯片类型调用不同的驱动程序分支来实现对底层芯片替换的支持,更多的底层驱动甚至根据不同芯片对上层业务提供不同的驱动接口,导致上层应用软件层开发复杂度加大。同时,当上层应用软件层需要调用不同的驱动时,需要根据硬件类型通过分支判断进行调用,而在分支判断的驱动软件中存在耦合,可剪裁性差、效率低、接口多,导致单板驱动维护的复杂度不断加大。
另外,在现有技术条件下,多块单板开发即使使用相同的芯片,其芯片驱动的移植必须修改驱动代码,后续开发量很大。在不同的软件平台与操作系统下移植维护则更为复杂。
发明内容
本发明所要解决的技术问题在于,提供一种建立设备驱动的方法、设备驱动装置和包括该装置的单板,可以克服上述现有技术的不足。
一方面,本发明的实施例中提供了一种建立设备驱动的方法,包括:获取第一结构头文件,所述第一结构头文件中包括对驱动结构和共用属性结构的描述,所述驱动结构中定义了上层用户调用所述设备驱动所需的接口,共用属性结构中定义了具有相同功能的设备驱动的共用属性;获取第二结构头文件,所述第二结构头文件中包括对设备的私有属性结构的描述;构造配置文件,所述配置文件中包括对所述第一结构头文件中的共用属性结构和第二结构头文件中私有属性结构的具体声明,完成设备共用和私有属性的配置;加载芯片驱动体,所述芯片驱动体用于实现所述定义的接口的具体功能;通过调用所述驱动结构中定义的接口调用所述芯片驱动体;所述芯片驱动体调用所述配置文件,并实现所述接口的具体功能。
另一方面,本发明的实施例中提供了一种设备驱动装置,包括:获取模块,用于获取第一结构头文件和第二结构头文件,所述第一结构头文件中包括对驱动结构和共用属性结构的描述,所述驱动结构中定义了上层用户调用相同功能的设备所需的接口,所述共用属性结构中定义了相同功能的所述设备驱动的共用属性,所述第二结构头文件中包括对设备的私有属性结构的描述;构造模块,用于构造配置文件,所述配置文件中包括对所述共用属性结构和私有属性结构的声明,完成对所述设备共用和私有属性的配置;接口适配模块,用于调用所述获取模块所获取的第一结构头文件和构造模块中构造的配置文件中共用属性声明的内容,以实现对所述定义的接口的调用;芯片驱动模块,用于初始化芯片驱动体,获取所述配置文件的内容,并调用所述芯片驱动体,根据所述第二结构头文件和配置文件实现所述接口的具体功能。
同时,本发明的实施例还提供了一种单板,其包括上述的设备驱动装置。
在本发明中为同类设备驱动装置配置了统一的第一结构头文件,而同类各具体的设备则分别配置有具体的第二结构头文件,这样,将设备驱动分成了两个层次(驱动适配层和芯片驱动层,分别对应驱动装置中的驱动适配模块和芯片驱动模块),上层应用层的接口由驱动结构中定义的接口统一提供,上层应用层不用关心底层硬件的变化,减少了驱动开发时上层接口的工作量,而下层开发只需要根据驱动结构中定义的结构提供相应的芯片驱动体即可,减少了驱动开发时下层结构开发的工作量;由于芯片驱动在使用时再注册挂接到适配层,芯片驱动之间没有任何耦合,维护简单,移植不需要额外工作量,移植时只需要修改属性结构体代码或配置文件中的参数而不需要对整个芯片驱动进行修改,使得驱动移植与维护非常方便;单板可以根据需要加载使用的驱动文件,大大降低了单板执行时需要加载的软件包的大小,使得单板启动速度加快,获取软件包以及软件包升级速度加快。
附图说明
图1是现有的通信系统中常见的单板驱动的情况示意图;
图2是本发明中设备驱动装置的一个具体实施例的组成示意图;
图3是图2中的接口适配模块的一个具体实施例的组成示意图;
图4是图3中的调用模块的一个具体实施例的组成示意图;
图5是图2中的芯片驱动模块的一个具体实施例的组成示意图;
图6是本发明中建立设备驱动的方法的一个具体实施例的流程示意图;
图7是本发明中第一和第二结构头文件中包括的三种结构的一个具体实施例的示意图;
图8是本发明中上层应用层调用设备驱动的一个具体实施例的情况示意图。
具体实施方式
下面参考附图对本发明的优选实施例进行描述。在所参照的附图中,不同的图中相同的部件使用相同的附图标号来表示。
参见图2,为本发明中设备驱动的一种具体实施例的组成示意图。如图所示,所述设备驱动装置1包括:获取模块10、构造模块12、接口适配模块14以及芯片驱动模块16。其中,获取模块10,用于获取第一结构头文件和第二结构头文件,所述第一结构头文件中包括对驱动结构和共用属性结构的描述,所述驱动结构中定义了上层用户调用相同功能的设备驱动所需的接口,所述共用属性结构中定义了相同功能的所述设备驱动的共用属性,所述第二结构头文件中包括对设备的私有属性结构的描述。构造模块12,用于构造配置文件,所述配置文件中包括对共用属性结构和私有属性结构的声明,以完成对所述设备的共用和私有属性的配置,即对芯片具体参数的设定。接口适配模块14,用于调用所述获取模块10获取的第一结构头文件和构造模块12中构造的配置文件的内容,以实现对所述定义的接口调用。芯片驱动模块16,用于初始化芯片驱动体,获取所述配置文件的内容,并调用所述芯片驱动体,根据所述第二结构头文件和配置文件实现所述接口的具体功能。
其中,如图3所示,接口适配模块14还可进一步包括:第一初始化模块140和调用模块142。其中,第一初始化模块140用于使用第一结构头文件和配置文件,根据所述文件的内容动态建立所述第一结构头文件中定义的结构,并建立该结构中定义的接口与具体的所述芯片驱动体的对应关系,其中可用驱动函数指针来表示该定义的接口。调用模块142用于调用所述第一结构头文件中定义的接口,并根据第一初始化模块建立的对应关系将对所述接口的调用映射为对相应的芯片驱动体的调用。
如图4所示,所述调用模块142具体包括:参数设置子模块1420,用于根据用户的调用设置相应的用户调用参数;接口调用子模块1422,用于根据用户的调用调用相应的驱动结构中定义的接口;映射子模块1424,用于根据第一初始化模块建立的对应关系将对所述接口的调用映射为对相应的芯片驱动体的调用。
如图5所示,芯片驱动模块16还可进一步包括:参数获取子模块160,用于获取所述参数设置子模块中设置的参数;属性获取子模块162,用于获取第二结构头文件、以及所述配置文件中的共用属性结构的声明和私有属性结构的声明;运行子模块164,用于根据所述参数获取子模块和属性获取子模块中所获取的内容运行所述芯片驱动体。
如上所述的设备驱动装置1具体可承载在单板上,用于驱动该单板上连接的芯片。
与上述设备驱动装置1相对应的,本发明的具体实施例还包括一种建立设备驱动的方法,参考图6,本方法包括以下步骤:
步骤S601、获取文件,包括获取第一结构头文件和第二结构头文件。其中,所述第一结构头文件中包括对驱动结构和共用属性结构的描述,所述驱动结构中定义了上层用户调用所述驱动所需的接口,相同功能的设备的驱动具有相同的驱动结构,共用属性结构中定义了所述设备驱动的共用属性,相同功能的设备的驱动具有相同的共用属性。所述第二结构头文件中包括对设备的私有属性结构的描述。所述第一和第二结构头文件中对上述三种结构的描述可通过编写代码实现,该描述结构的代码通常可分别称为驱动结构体、共用属性结构体以及私有属性结构体。在代码中可用驱动函数指针来表示所述驱动结构中定义的接口。
步骤S602、构造配置文件。其中,配置文件中包括对共用属性结构和私有属性结构中具体参数的设定。该构造配置文件的过程即是对上述定义的结构进行声明的过程,具体可参考后面的描述。
步骤S603、加载芯片驱动体。芯片驱动体中提供与驱动结构中定义的接口相应的函数,即与驱动函数指针相应的驱动函数。这些芯片驱动函数用于实现所述定义的驱动结构体中接口的具体功能。该芯片驱动体可以是编译后的一个单独的文件。
步骤S604、用户通过调用所述驱动结构中定义的接口调用所述芯片驱动体。具体实现时,可通过编写适配层驱动代码实现,该适配层驱动代码可以单独编译成一个文件。该适配层可进行驱动安装(采用驱动安装函数实现)、卸载以及向上层应用提供统一的接口(即驱动函数指针)。驱动安装函数可动态申请第一结构头文件中定义的驱动结构,并根据共用属性结构的配置把驱动结构中的驱动函数指针指向具体芯片的驱动接口。卸载函数在驱动卸载时释放申请的驱动结构。驱动安装函数会在驱动加载之后运行之前被第一个调用。
当用户调用需要的芯片的功能,比如进行写操作时,只需要调用相应驱动函数指针,该驱动函数指针指向的具体的芯片驱动体,则最终将实现对具体的芯片驱动体的调用。同时,用户调用所述芯片驱动体时可通过所述调用传入调用参数,即通过所述驱动函数指针中的输入参数输入所需的调用参数,如用户进行写操作时,同时需要输入写入字节的长度和起始地址,驱动函数指针再通过与芯片驱动体的接口将这些用户调用参数传递给芯片驱动体。
步骤S605、所述芯片驱动体调用所述配置文件,并实现所述接口的具体功能。上层用户调用驱动时传入的调用参数经过步骤S604中所描述的过程传递给芯片驱动体,同时芯片驱动体获取配置文件中在共用属性结构中声明的参数,并结合用户传入的调用参数,生成调用具体芯片时需要使用的参数,并根据这些参数与私有属性配置完成对芯片的具体操作。比如,用户进行写操作,并输入写入地址为Address=10AF(假设驱动的接口提供的写入地址为16位地址),则驱动将该地址和用户输入的其他信息与配置的共用属性进行对比,判断输入信息是否合法,如果合法,则获得配置的私有属性中的相应信息以进行写操作,如,驱动私有属性中表明该芯片共有2个寄存器(R1和R2),且该写入地址根据其对应规则对应于寄存器R1上的某个地址,则芯片驱动体最终获得R1的相应地址并写入到该地址上。
参考图7,为本发明中建立设备驱动的方法中对驱动进行抽象获得第一和第二结构头文件中包括的三种结构的一个具体实施例的示意图,如图中所示,以具有相同功能的XXX类芯片为例进行说明。XXX类芯片有两种具体的芯片YYY和ZZZ。(这种差异可能来源于两个不同的公司提供了相同功能的芯片,或者同一芯片升级为另一种芯片等),这两种具体的芯片可以互相替换,并完成相同的功能。
如图中所示,单板上具有三个XXX芯片,其中XXX1与XXX3属于ZZZ类芯片,而XXX2属于YYY类芯片。为XXX芯片定义了驱动结构、共用属性结构和私有属性结构。对于同类功能的芯片驱动,驱动结构和共用属性结构是完全相同的。驱动结构中提供了此类功能的所有驱动函数指针,即对上层用户的接口,具有相同功能的芯片具有相同的驱动结构,则可以保证所有提供相同功能的芯片接口保持一致。并将同功能的芯片需要使用到的相同属性全部抽象出来,如芯片类型、在位信息、输入频率等信息等,定义成共用属性结构。参考图7,相同的共用属性结构用相同的图形表示,在XXX芯片中,用矩形框表征其中的三种具体的芯片(XXX1、XXX2以及XXX3)具有相同的共用属性结构,其对应的共用属性结构都是XXX_COMMON_PROPERTY_STRU。而私有属性结构表示了提供同类功能的不同种芯片所具有的特殊属性,如XXX1和XXX3拥有一些XXX2中所没有的寄存器,则这些属性在私有属性结构中进行体现。从图中可见表征XXX芯片的各具体芯片的私有属性结构的图形也是不同的,其中,表征YYY类芯片的私有属性结构的图形为三角形,对应的私有属性结构是XXX_PRIVATE_PROPERTY_YYY_STRU,而ZZZ类芯片的图形是正方形,对应的结构体是XXX_PRIVATE_PROPERTY_ZZZ_STRU,两种不同的结构体现了两种芯片私有属性的不同。
如果单板上具有两个完全相同的私有属性结构,那么其所有结构都应该是相同的,如图中的AAA类芯片,单板上具有两个完全相同的AAA芯片,所有的结构体完全相同。其中,驱动结构具体可定义为包含所有接口的驱动函数结构体AAA_DRV_FUNCS_STRU,该结构体包含所有此类功能的芯片需要提供的驱动函数指针,上层应用层通过调用这些指针即可实现对该芯片上与该接口功能相应的芯片驱动体的调用,并由该芯片驱动体实现所述接口的功能,如上层应用层调用驱动时通过调用驱动函数指针“STATUS*AAA_Read()进行读操作,而驱动函数指针*AAA_Read则指向并调用具体的芯片驱动体实现读操作,即可实现该芯片的读取功能。采用这种直接的调用,就不再需要像现有技术中大部分驱动那样:先要判断是对哪种芯片进行访问(这些判断在每个接口调用中和每次调用中都会存在,并且会把不同的芯片驱动耦合在一起),再进入不同的函数分支运行,从而实现对提供相同功能的不同芯片的支持。而在本发明的具体实施例中提供的建立设备驱动的方法中,具体的芯片驱动体之间完全独立,通过调用与之相对应的指针即可,不再有这种导致效率降低的分支判断。
可通过编写代码对上述共用属性结构以及私有属性结构进行结构体定义声明,也可以采用文本文件配置的形式实现。在使用驱动时,只需要修改这些配置或声明就可以把一套驱动应用在不同地方,移植非常方便。
参考图8,为本发明中上层应用层调用设备驱动的一个具体实施例的情况示意图。图中分为三栏,最左边一栏为调用驱动时的程序代码示意,右边两栏是设备驱动的几个组成部分在驱动调用时的相互关系,在本例中,FLASH芯片的驱动结构用驱动结构体表示为FLASH_DRV_FUNCS_STRU,该结构成员包括所有FLASH驱动需要提供的驱动函数指针,如图中所示的STATUS(*FLASH_Write)()等。上层应用层只会看到与这些指针对应的接口,看不到最下面不同芯片的驱动接口的差异。具体的不同芯片驱动就按照这种结构提供所有必需的芯片驱动体(如图中所示的驱动1和驱动2),该芯片驱动体可用芯片驱动功能函数来实现,如Intel 28F128 FLASH提供了一个i28F128_Write()函数,Spasion的S29GL128提供了S26GL128_Write()函数来分别实现两种芯片的写操作。建立芯片驱动时,需要提供包含驱动结构、共用属性结构和私有属性结构的代码或执行文件,如图中所示的驱动结构定义、共用属性结构定义和私有属性结构定义。同时还要构造包含共用属性结构和私有属性结构中具体参数内容的配置文件,即对定义的结构进行声明,如图中所示的共用属性结构声明和私有属性结构声明,这个过程可以在单板板级开发支持包(Board Support Package,BSP)中实现,也可以在单独的c代码文件中实现,与驱动代码一起加载到单板上。如对结构定义为:
typedef struct
{
   U32 ulStartAddress;
   U32 ulEndAddress
}example_stru;
上述结构体中定义了两个example_stru的结构体,则对结构声明为:
example_stru aaa_stru[1]={
                           {100,200},
                           {300,400}
                          }
表示第一个起始地址为100,结束地址为200,第二个起始地址为300,结束地址为400。
在芯片驱动初始化时,会把驱动结构中定义的驱动函数指针指向具体的芯片驱动体,即将芯片驱动体1和芯片驱动体2注册到相应的接口。当上层用户需要调用驱动时,则直接调用上述指针。由于该指针指向了某一具体的芯片驱动体(在代码中可用芯片驱动函数实现),则调用指针最终变成调用所述芯片驱动功能函数,并由该函数实现具体的接口功能。所述芯片驱动函数具体运行时要访问的芯片基地址,寄存器等信息可通过调用共用属性结构声明和私有属性结构声明来实现。
本发明具体实施例提供的方案,不需要考虑芯片在单板上的使用情况,在单板使用时,需要的驱动会被动态加载到单板上;功能相同而硬件结构不同的芯片在一块单板上替换时,只需要对这些属性结构进行不同的声明,并下载不同的具体芯片驱动体(可以是与接口对应的芯片驱动函数)即可。驱动运行时上层应用只对驱动结构定义的接口进行访问。而新的芯片的驱动只需要按照上述驱动结构中的定义提供对应的芯片驱动函数,并定义属性结构中的共用属性和私有属性的具体内容,就可以把芯片驱动函数的注册挂接到驱动结构中的相应接口上,从而向上提供统一的接口与配置访问方式,并且不用修改任何上层的软件和各结构中的代码。
采用本发明提供的实施例,由于将驱动分成了两个层次(驱动适配和芯片驱动),上层应用层的接口由驱动结构统一提供,上层应用层不用关心底层硬件的变化,减少了驱动开发时上层接口的工作量,而下层开发只需要根据驱动结构中定义的接口提供相应的芯片驱动函数,减少了驱动开发时下层驱动开发的工作量;移植时只需要修改属性结构代码或配置文件中的数据,使得驱动移植与维护非常方便;同时,不同芯片的共性部分(驱动适配)可以通用,使用时,驱动适配层通过驱动结构中的驱动函数指针访问实际的芯片驱动函数,所以驱动适配层和驱动芯片层没有任何耦合,芯片驱动体之间也不存在任何耦合,可以单独编译,单独使用。单板加载驱动时,可根据实际使用的需要选择性的下载驱动,不用包含单板所有可能支持的驱动。大大降低了单板执行时需要加载的软件包的大小,使得单板启动速度加快,获取软件包以及软件包升级速度加快。另外,由于采用驱动函数指针挂接,避免了分支查询,且可以在驱动运行时非常方便安全的直接重新挂接指针,方便实现热补丁。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (10)

1、一种建立设备驱动的方法,其特征在于,所述方法包括:
获取第一结构头文件,所述第一结构头文件中包括对驱动结构和共用属性结构的描述,所述驱动结构中定义了调用所述设备驱动所需的接口,共用属性结构中定义了具有相同功能的设备驱动的共用属性;
获取第二结构头文件,所述第二结构头文件中包括对设备的私有属性结构的描述;
构造配置文件,所述配置文件中包括对所述第一结构头文件中的共用属性结构和第二结构头文件中私有属性结构的具体声明,完成设备共用和私有属性的配置;
加载芯片驱动体,所述芯片驱动体用于实现所述定义的接口的具体功能;
通过调用所述驱动结构中定义的接口调用所述芯片驱动体;
所述芯片驱动体调用所述配置文件,并实现所述接口的具体功能。
2、如权利要求1所述的方法,其特征在于,所述第一结构头文件中包括驱动函数指针,所述驱动函数指针表示所述驱动结构中定义的接口。
3、如权利要求2所述的方法,其特征在于,所述通过调用所述驱动结构中定义的接口调用所述芯片驱动体步骤具体为:
调用所述驱动结构中定义的驱动函数指针;
所述驱动函数指针指向并调用相应的芯片驱动体。
4、如权利要求3所述的方法,其特征在于,所述通过调用所述驱动结构中定义的接口调用所述芯片驱动体时,还通过所述调用传入调用参数。
5、如权利要求4所述的方法,其特征在于,所述芯片驱动体调用所述配置文件,并实现所述接口的具体功能步骤包括:
所述芯片驱动体根据所述传入的调用参数和配置文件中的参数实现所述接口的具体功能。
6、一种设备驱动装置,其特征在于,所述装置包括:
获取模块,用于获取第一结构头文件和第二结构头文件,所述第一结构头文件中包括对驱动结构和共用属性结构的描述,所述驱动结构中定义了上层用户调用相同功能的设备所需的接口,所述共用属性结构中定义了相同功能的所述设备驱动的共用属性,所述第二结构头文件中包括对设备的私有属性结构的描述;
构造模块,用于构造配置文件,所述配置文件中包括对所述共用属性结构和私有属性结构的声明,完成对所述设备共用和私有属性的配置;
接口适配模块,用于调用所述获取模块所获取的第一结构头文件和构造模块中构造的配置文件的内容,以实现对所述定义的接口的调用;
芯片驱动模块,用于初始化芯片驱动体,获取所述配置文件的内容,并调用所述芯片驱动体,根据所述第二结构头文件和配置文件实现所述接口的具体功能。
7、如权利要求6所述的装置,其特征在于,所述接口适配模块具体包括:
第一初始化模块,用于调用所述第一结构头文件和配置文件,并根据所述文件内容动态建立所述第一结构头文件中定义的驱动结构,并建立驱动结构中定义的接口与具体的所述芯片驱动体接口的对应关系;
调用模块,用于调用所述第一结构头文件中定义的接口,并根据第一初始化模块建立的对应关系将对所述接口的调用映射为对相应的芯片驱动体的调用。
8、如权利要求7所述的装置,其特征在于,所述调用模块具体包括:
参数设置子模块,用于根据用户的调用设置相应的用户调用参数;
接口调用子模块,用于根据用户的调用调用相应的驱动结构中定义的接口;
映射子模块,用于根据第一初始化模块建立的对应关系将对所述接口的调用映射为对相应的芯片驱动体的调用。
9、如权利要求8所述的装置,其特征在于,所述芯片驱动模块具体包括:
参数获取子模块,用于获取所述参数设置子模块中设置的用户调用参数;
属性获取子模块,用于获取所述第二结构头文件,以及所述配置文件中的共用属性结构的声明和私有属性结构的声明;
运行子模块,用于根据所述参数获取子模块和属性获取子模块中所获取的内容运行所述芯片驱动体。
10、一种单板,其特征在于,所述单板包括如权利要求6至9中任一项所述的装置。
CNB2007100324176A 2007-12-13 2007-12-13 一种建立设备驱动的方法、设备驱动装置及单板 Active CN100562847C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2007100324176A CN100562847C (zh) 2007-12-13 2007-12-13 一种建立设备驱动的方法、设备驱动装置及单板

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007100324176A CN100562847C (zh) 2007-12-13 2007-12-13 一种建立设备驱动的方法、设备驱动装置及单板

Publications (2)

Publication Number Publication Date
CN101183310A CN101183310A (zh) 2008-05-21
CN100562847C true CN100562847C (zh) 2009-11-25

Family

ID=39448599

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007100324176A Active CN100562847C (zh) 2007-12-13 2007-12-13 一种建立设备驱动的方法、设备驱动装置及单板

Country Status (1)

Country Link
CN (1) CN100562847C (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101799764B (zh) * 2009-12-31 2013-01-02 成都芯通科技股份有限公司 一种仪器模块通用接口的实现方法
CN102830983A (zh) * 2011-06-14 2012-12-19 上海未来宽带技术及应用工程研究中心有限公司 一种可动态加载不同终端交换芯片驱动的方法
CN103905852B (zh) * 2014-04-17 2017-11-10 珠海迈科智能科技股份有限公司 一种芯片模块适配系统和方法
CN104156221A (zh) * 2014-08-29 2014-11-19 上海艾为电子技术有限公司 芯片、修改芯片配置的方法及装置
CN105068792B (zh) * 2015-07-15 2018-03-02 上海斐讯数据通信技术有限公司 一种驱动设备管理方法及嵌入式系统
CN105718264B (zh) * 2016-01-20 2018-09-07 国网山东省电力公司电力科学研究院 激光头驱动架构及方法
CN107566144A (zh) * 2016-06-30 2018-01-09 南京中兴新软件有限责任公司 单板更新、管理方法及装置
CN109218271A (zh) * 2017-07-07 2019-01-15 中兴通讯股份有限公司 驱动实现方法、装置、设备和计算机可读存储介质
CN109062615A (zh) * 2018-06-14 2018-12-21 上海思立微电子科技有限公司 一种驱动程序的归一化方法及设备
CN110413327B (zh) * 2019-07-16 2022-07-19 创新先进技术有限公司 一种基于硬件抽象层的硬件驱动方法和装置
CN112154413A (zh) * 2019-08-20 2020-12-29 深圳市大疆创新科技有限公司 配置文件生成方法及装置、存储介质
CN111209056B (zh) * 2020-01-02 2021-02-19 北京东土科技股份有限公司 功能函数的加载方法、装置、可读存储介质及电子设备
CN115202763B (zh) * 2022-09-19 2022-12-09 大方智造(天津)科技有限公司 一种基于驱动的采集动态加载与调用方法
CN115291958B (zh) * 2022-10-10 2022-12-27 广州市保伦电子有限公司 一种主控与外围芯片的更换方法及装置

Also Published As

Publication number Publication date
CN101183310A (zh) 2008-05-21

Similar Documents

Publication Publication Date Title
CN100562847C (zh) 一种建立设备驱动的方法、设备驱动装置及单板
CN103677921B (zh) 一种Android系统兼容wifi芯片的方法及系统
US7543309B2 (en) Efficient linking and loading for late binding and platform retargeting
US6484309B2 (en) Enabling software designed for one operating system to operate on another operating system
CN100476721C (zh) 提供模块化本机方法启用系统的方法、和装置和系统
TWI439931B (zh) 用於增加三角差動效能之目的碼之產生
CN106415495B (zh) 用于应用开发的编程系统和语言
CN101819526B (zh) 调用底层软件的方法、装置和嵌入式系统
CN100403258C (zh) 嵌入式设备集成开发系统及其使用方法
CN100416686C (zh) 闪存及其在光驱中动态加载固件操作模块的方法
JP2008509483A (ja) 予期せず/変化するハードウェア環境へのソフトウェアとファームウェアの適応
US20090249311A1 (en) Sharing a native module of compiled code using an abstraction module of interpreted code in a virtual machine environment
JP2008509483A5 (zh)
US8271622B2 (en) Method and apparatus for a system management tool to adapt command interface and behavior based on installed features
US20170102924A1 (en) Software architecture for embedded systems
US20100050174A1 (en) Heap organization for a multitasking virtual machine
US20060101032A1 (en) Mixed types
CN1877521A (zh) 跨操作系统的嵌入式系统板级支持包的实现方法
CN106406828A (zh) 一种修改java系统业务工具功能的方法及装置
US7636912B2 (en) Custom assembly to extend a wizard
US7926052B2 (en) Stacked file systems and methods
WO2024055757A1 (zh) 驱动程序的硬件资源自动配置方法、装置、系统及介质
CN106843973B (zh) 一种移植嵌入式系统并在sd卡启动的方法
CN112415943A (zh) 一种io端口配置装置、方法和plc组态软件
CN100395730C (zh) 基于数据源的虚拟内存处理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant