用户态架构平台的自动识别方法及系统的制作方法

文档序号:6548140阅读:177来源:国知局
用户态架构平台的自动识别方法及系统的制作方法
【专利摘要】本发明公开了一种用户态架构平台的自动识别方法及系统,所述方法包括:配置linux内核;在用户态获取系统信息;以及识别系统架构平台。根据本发明的方法及系统,可以自动识别出系统架构或硬件平台,实现一套代码编译后生成的应用模块能够自适应加载多系统架构多硬件平台功能,从而无需再根据不同系统架构或硬件平台编译多个不同版本的应用程序。
【专利说明】 用户态架构平台的自动识别方法及系统

【技术领域】
[0001]本发明涉及嵌入式操作系统领域,尤其涉及一种用户态架构平台的自动识别方法及系统。

【背景技术】
[0002]当前的数字通信时代,不同厂商使用的系统架构不同,也可能同一家厂商同时支持几种系统架构平台,而一种架构平台又可能衍生出不同的产品形态,那么针对一套代码,如何区分不同的系统架构与不同的硬件平台已经成为各大厂商都会面临的问题,可能不同厂商的区分方法不同,一般是通过内核态在使用前通过make menuconfig配置内核来指定架构(MIPS、ARM、X86等);或者用户态通过编译宏来控制编译针对不同架构或硬件平台的版本可执行文件。
[0003]针对不同系统架构或硬件平台,每次编译需指定或修改编译选项或编译宏,需编译多个不同版本,耗时费力,非常的麻烦。


【发明内容】

[0004]本发明的目的是提供一种用户态架构平台的自动识别方法及系统,该方法通过内核识别并保存系统相关信息,在用户态获取并使用该系统相关信息,以解决不同硬件平台类型的识别问题。
[0005]为了解决上述技术问题,本发明提供了一种用户态架构平台的自动识别方法,包括如下步骤:步骤S100,配置Iinux内核;步骤S200,在用户态获取系统信息;以及步骤S300,识别系统架构平台。
[0006]其中,所述步骤SlOO中配置Iinux内核的步骤包括:新建包括系统信息变量的内核数据结构,增加用于识别当前设备的系统信息的内核接口函数,将该系统信息保存于所述内核数据结构中。
[0007]其中,所述步骤S200中在用户态获取系统信息的步骤包括:在用户态通过设备ioctl函数从内核数据结构中获取所述系统信息。
[0008]其中,所述步骤S300中识别系统架构平台的步骤包括:在用户态根据所述系统信息定义相应的系统信息变量;利用该系统信息变量作为判断条件以判断不同的系统架构平台;加载不同的系统架构平台的初始化程序。
[0009]其中,所述步骤SlOO进一步包括:步骤S110,新建内核数据结构;步骤S120,新增内核接口函数;步骤S130,对新建的内核数据结构进行赋值。
[0010]所述步骤S200进一步包括步骤:步骤S210,新建用户态数据结构;步骤S220,基于用户态数据结构获取当前设备的系统信息。
[0011]可选的,所述步骤S210还包括:声明用户态数据结构的全局变量数组,增加用户态接口函数。
[0012]所述步骤S300进一步包括:步骤S310,对用户态数据结构中的相应变量进行赋值;步骤S320,识别系统架构平台类型;步骤S330,根据识别的系统架构平台的类型执行设备初始化。
[0013]优选的,所述步骤S320中,用户态通过获得的不同系统架构平台的全局变量作为区分不同硬件设备的判断标准进行特性编码,以识别系统架构平台类型。
[0014]根据本发明的另一方面,提供了一种用户态架构平台的自动识别系统,其特征在于,包括=Iinux内核配置单元,用于新建系统信息变量的内核数据结构,增加用于识别当前设备的系统信息的内核接口,该内核接口将识别到的当前设备的系统信息保存于所述内核数据结构中;系统信息获取单元,用于在用户态通过设备ioctl函数从内核数据结构获取所述系统信息;系统识别单元,利用用户态根据系统信息定义相应的系统信息变量,通过该系统信息变量作为判断条件,识别不同的系统架构平台,以加载不同的系统架构平台的初始化程序。
[0015]本发明通过配置Iinux内核,建立了用于识别当前设备的系统信息的内核接口函数和用于存储系统信息的内核数据结构,以便于用户态读取系统信息;通过用户态根据所述系统信息定义相应的系统信息变量,利用该系统信息变量作为判断条件加载不同的系统架构平台的初始化程序,以实现架构平台的自动识别;即根据判断出的系统架构或硬件平台实现一套代码编译后生成的应用程序自适应加载多系统架构多硬件平台功能,从而无需再根据不同系统架构或硬件平台编译多个不同版本应用程序,节约了时间成本和软件成本。

【专利附图】

【附图说明】
[0016]图1是本发明的自动识别方法的流程图;
[0017]图2为本发明中步骤SlOO中配置Iinux内核的方法流程图;
[0018]图3是本发明中步骤S200中获取系统信息的方法流程图;
[0019]图4是本发明中步骤S300的方法流程图;
[0020]图5示出了本发明的自动识别系统的结构示意图。

【具体实施方式】
[0021]为使本发明的目的、技术方案和优点更加清楚明了,下面结合【具体实施方式】并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
[0022]实施例1
[0023]图1示出了本发明的自动识别方法的流程图。
[0024]如图1所示,本发明的自动识别方法包括如下步骤:
[0025]步骤S100,配置Iinux内核。
[0026]新建包括系统信息变量的内核数据结构,并增加用于识别当前设备的系统信息的内核接口函数,同时将该系统信息保存于所述内核数据结构中。
[0027]步骤S200,在用户态获取系统信息。
[0028]在用户态通过设备ioctl函数从内核数据结构中获取所述系统信息。
[0029]本步骤中,所述ioctl函数是设备驱动程序中对设备的I/O通道进行管理的函数。
[0030]步骤S300,识别系统架构平台。
[0031]在用户态根据所述系统信息定义相应的系统信息变量。以及,利用该系统信息变量作为判断条件,判断不同的系统架构平台,以加载不同的系统架构平台的初始化程序,实现架构平台的自动识别。
[0032]在本实施例中,所述系统信息为系统架构信息和/或硬件平台信息;所述系统信息变量为系统架构信息变量和/或硬件平台变量;其中,所述硬件平台信息为cpu信息和/或总线信息;所述硬件平台变量为cpu信息变量和/或总线信息变量。
[0033]图2示出了步骤SlOO中配置Iinux内核的方法流程图。
[0034]如图2所示,上述步骤SlOO中配置Iinux内核的步骤进一步包括下述步骤:
[0035]步骤S110,新建内核数据结构。
[0036]本步骤中,所述内核数据结构包含系统架构信息变量,cpu信息变量,总线变量等。例如下述数据结构,struct platform_info {intsysterm_type ;int cpu_info (类型可根据需要也可是结构体);int bus_info(类型可根据需要也可是结构体)}。
[0037]步骤S120,新增内核接口函数。
[0038]本步骤中,内核接口函数用于识别当前设备正在使用的系统信息,即系统架构及硬件设备的CPU信息与总线信息。
[0039]步骤S130,对新建的内核数据结构进行赋值。
[0040]内核接口函数识别出上述系统信息之后,将这些系统信息保存在新建的内核数据结构中。例如,Iinux内核在使用前会根据个人需要配置内核,则可以根据配置的C0NFIG_MIPS、C0NFIG_ARM、C0NFIG_X86判断系统架构并赋值给systerm_type ;然后通过内核函数读取硬件设备的cpu信息、总线信息赋值给cpu_info、bus_info。
[0041]图3示出了所述步骤S200中的用户态通过设备ioctl函数从内核数据结构中获取所述系统信息的方法的流程图。
[0042]如图3所述,所述步骤S200中用户态通过设备ioctl函数从内核数据结构中获取所述系统信息的方法,包括如下步骤:
[0043]步骤S210,新建用户态数据结构。
[0044]本步骤中,在用户态中新建用户态数据结构,同时声明该数据结构的全局变量数组,增加用户态接口函数。所述全局变量数组包括系统信息变量。
[0045]步骤S220,基于用户态数据结构获取当前设备的系统信息。
[0046]本步骤中,在系统初始化之前,基于用户态数据结构通过设备ioctl函数下发所述内核接口函数,以在用户态获取所述步骤SlOO中的当前设备的系统信息。所述用户态数据结构包含系统信息变量,所述系统信息变量为系统架构信息变量和/或硬件平台变量,所述系统信息为系统架构信息和/或硬件平台信息。
[0047]图4示出了步骤S300的流程图。
[0048]如图4所示,所述步骤S300中,在用户态根据所述系统信息定义相应的系统信息变量的方法,并利用该系统信息变量作为判断条件加载不同的系统架构平台的初始化程序具体包括如下步骤:
[0049]步骤S310,对用户态数据结构中的相应变量进行赋值。
[0050]本步骤中,根据所述步骤S210中的用户态获取的当前设备的系统信息,赋值给所述用户态数据结构的全局变量数组的相应成员变量,以用于判断不同的系统架构平台。具体来说,根据步骤S200获得的系统架构及硬件设备的cpu信息、总线信息等,将相应内容赋值给用户态数据结构的全局变量的相应成员变量(系统架构信息变量和/或硬件平台变量)O
[0051]步骤S320,识别系统架构平台类型。
[0052]本步骤中,利用获取的系统信息作为识别要素,识别出不同的系统架构平台,SP,用户态通过获得的不同架构平台的全局变量作为区分不同硬件设备的判断标准进行特性编码,以实现架构平台的自动识别。具体的说,根据定义不同架构平台的全局变量作为区分不同硬件设备的判断标准进行特性编码。例如,不同硬件设备接口数不同,驱动类型不同,根据判断的平台进行特性开发,以加载不同驱动及初始化不同接口数等。
[0053]步骤S330,根据识别的系统架构平台的类型执行设备初始化。
[0054]本步骤中,硬件设备初始化时,可以根据识别到的系统架构平台信息确定架构平台的类型和相应的软件版本,即决定执行相应的架构平台分支,实现一套代码编译一个版本。最终实现多个架构或多个硬件平台上对不同设备进行不同的初始化加载。
[0055]实施例2
[0056]在实施例1基础上实施的自动识别系统。
[0057]图5出了本发明的自动识别系统的结构示意图。
[0058]如图5所示,本发明的识别用户态架构平台的自动识别系统包括下述组件。
[0059]Iinux内核配置单元,用于新建系统信息变量的内核数据结构,并增加用于识别当前设备的系统信息的内核接口,该内核接口将识别到的当前设备的系统信息保存于所述内核数据结构中识别。
[0060]系统信息获取单元,用于在用户态通过设备ioctl函数从内核数据结构获取所述系统信息。
[0061]系统识别单元,利用用户态根据系统信息定义相应的系统信息变量,通过该系统信息变量作为判断条件,识别不同的系统架构平台,以加载不同的系统架构平台的初始化程序,从而实现架构平台的自动识别。
[0062]本实施例中,所述系统信息为系统架构信息和/或硬件平台信息;所述系统信息变量为系统架构信息变量和/或硬件平台变量;其中,所述硬件平台信息为CPU信息和/或总线信息;所述硬件平台变量为CPU信息变量和/或总线信息变量。
[0063]本实施例中,Iinux内核配置单元、系统信息获取单元、系统自动识别单元所执行的操作与实施例1中各个步骤类似,具体参见步骤S100、步骤S200、步骤S300中相应步骤的具体实施方法。
[0064]根据本发明的自动识别方法及系统,可以通过获取内核的配置信息,通过读取系统信息,即系统架构信息、硬件设备的CPU信息、总线信息来判断系统架构或硬件平台,从而根据判断出的系统架构或硬件平台实现一套代码编译后生成的应用程序自适应加载多系统架构多硬件平台功能,而无需再根据不同系统架构或硬件平台编译多个不同版本应用程序,即实现了一个镜像不同设备不同加载。因此,本发明的自动识别方法及系统可以节约系统运行时间和构建成本。
[0065]应当理解的是,本发明的上述【具体实施方式】仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
【权利要求】
1.一种用户态架构平台的自动识别方法,包括如下步骤: 步骤S100,配置Iinux内核; 步骤S200,在用户态获取系统信息;以及 步骤S300,识别系统架构平台。
2.根据权利要求1所述的自动识别方法,所述步骤SlOO中配置Iinux内核的步骤包括:新建包括系统信息变量的内核数据结构,增加用于识别当前设备的系统信息的内核接口函数,将该系统信息保存于所述内核数据结构中。
3.根据权利要求1所述的自动识别方法,所述步骤S200中在用户态获取系统信息的步骤包括:在用户态通过设备1ctl函数从内核数据结构中获取所述系统信息。
4.根据权利要求1所述的自动识别方法,所述步骤S300中识别系统架构平台的步骤包括: 在用户态根据所述系统信息定义相应的系统信息变量; 利用该系统信息变量作为判断条件以判断不同的系统架构平台; 加载不同的系统架构平台的初始化程序。
5.根据权利要求1或2所述的自动识别方法,所述步骤SlOO进一步包括: 步骤S110,新建内核数据结构; 步骤S120,新增内核接口函数; 步骤S130,对新建的内核数据结构进行赋值。
6.根据权利要求1或3所述的自动识别方法,所述步骤S200进一步包括步骤: 步骤S210,新建用户态数据结构; 步骤S220,基于用户态数据结构获取当前设备的系统信息。
7.根据权利要求6所述的自动识别方法,所述步骤S210还包括:声明用户态数据结构的全局变量数组,增加用户态接口函数。
8.根据权利要求1或4所述的自动识别方法,所述步骤S300进一步包括: 步骤S310,对用户态数据结构中的相应变量进行赋值; 步骤S320,识别系统架构平台类型; 步骤S330,根据识别的系统架构平台的类型执行设备初始化。
9.根据权利要求8所述的自动识别方法,所述步骤S320中, 用户态通过获得的不同系统架构平台的全局变量作为区分不同硬件设备的判断标准进行特性编码,以识别系统架构平台类型。
10.一种用户态架构平台的自动识别系统,其特征在于,包括:1inux内核配置单元,用于新建系统信息变量的内核数据结构,增加用于识别当前设备的系统信息的内核接口,该内核接口将识别到的当前设备的系统信息保存于所述内核数据结构中; 系统信息获取单元,用于在用户态通过设备1ctl函数从内核数据结构获取所述系统信息; 系统识别单元,利用用户态根据系统信息定义相应的系统信息变量,通过该系统信息变量作为判断条件,识别不同的系统架构平台,以加载不同的系统架构平台的初始化程序。
【文档编号】G06F9/44GK104049970SQ201410236437
【公开日】2014年9月17日 申请日期:2014年5月29日 优先权日:2014年5月29日
【发明者】高福亮 申请人:汉柏科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1