一种Linux系统加载设备的方法与流程

文档序号:12747793阅读:597来源:国知局
一种Linux系统加载设备的方法与流程

本发明涉及嵌入式Linux操作系统的设备驱动领域,尤其是涉及一种Linux系统加载设备的方法。



背景技术:

在嵌入式Linux操作系统中,将设备信息使用设备树文件保存在存储设备中,系统启动时,加载并解析设备树文件,根据设备树文件中的设备信息,来加载设备驱动。设备树文件中没有的设备信息,Linux操作系统会认为相关的设备不存在。目前的Linux操作系统,只有一个设备树文件。

在实际产品中,如果采用主电路板和扩展电路板的拼装形式,扩展电路板往往由用户自行开发,主电路板提供商往往无法确定扩展电路板使用了主电路板的哪些扩展功能。对于用户可以选择的功能,主电路板提供商更是无法确定扩展电路板上选择了哪个功能。

目前的Linux操作系统中,只有一个设备树文件,在主电路板出厂时就存放在存储设备中,用户自行开发的扩展电路板,无法使用设备树文件,就必须自行为扩展电路板增加驱动文件,导致很多不便。



技术实现要素:

本发明的目的就是为了解决目前Linux操作系统中只有一个设备树文件而导致扩展电路板无法将其设备信息并入设备树文件的问题,提供一种Linux系统加载设备的方法,其使得扩展电路板上的设备信息能够整合到设备树中,从而使用户自行开发扩展电路板变得更为容易,同时降低了对扩展电路板软件开发的要求。

为解决上述技术问题,本发明的实施方式提供了一种Linux系统加载设备的方法,该方法包括如下步骤:步骤一,于Linux系统的存储设备中为Linux系统配备主设备树文件和附属设备树文件;步骤二,于所述存储设备中加载主设备树文件和附属设备树文件到内存中,解析主设备树文件和附属设备树文件在内存中形成设备树;步骤三,Linux系统根据解析主设备树文件和附属设备树文件在内存中形成的设备树,加载设备驱动。

从上述内容不难发现,本发明所提供的Linux系统加载设备的方法将单一设备树文件,拆分为主设备树文件和附属设备树文件,将附属设备树文件与主设备树文件存放在同一存储设备中,或者存放在不同存储设备中,分阶段加载、解析主设备树文件和附属设备树文件,使得扩展电路板上的设备信息能够整合到设备树中,从而使用户自行开发扩展电路板变得更为容易,同时降低了对扩展电路板软件开发的要求。

步骤一中,主设备树文件和附属设备树文件位于同一个存储设备的不同区域。

步骤一中,主设备树文件和附属设备树文件位于不同存储设备中。

所述附属设备树文件的数量为0个、1个、2个或者多个。

所述附属设备树文件位于同一个存储设备的不同区域,或者位于不同存储设备中。

步骤二具体包括以下步骤:

步骤S101.系统BOOT启动系统时,从存储设备中加载主设备树文件到内存中,并将主设备树文件在内存中的地址和偏移作为Linux系统启动的参数之一;

步骤S102.Linux系统启动时,解析主设备树文件,在内存中形成设备树;

步骤S103.Linux系统在设备树中,查找新出现的附属设备树文件的数量,地址,偏移,然后把附属设备树文件加载到内存中;

步骤S104.Linux系统解析附属设备树文件,将解析得到的设备信息添加到设备树中;

步骤S105.解析附属设备树文件得到的设备信息,其中部分设备信息在设备树中可能已经存在,检查重叠的设备信息;

步骤S106.检查设备信息中的覆盖条目,如果不存在,则执行步骤S107,如果存在,则执行步骤S108;

步骤S107.忽略重叠的设备信息;

步骤S108.覆盖设备树中的重叠设备信息;

步骤S109.此时得到更新的设备树文件,然后跳转到步骤S103~S109,直到没有新出现的附属设备树文件后,跳转到步骤S110;

步骤S110.在设备树中查找合并设备树文件的条目;

步骤S111.如果存在合并的条目则跳转到步骤S112;

步骤S112.将设备树导出覆盖主设备树文件,并删除所有附属设备树文件。

附图说明

图1为基于本发明的一种Linux系统加载设备的方法所提供的主设备树和附属设备树存储与加载的示例图;

图2为本发明的一种Linux系统加载设备的方法中加载主设备树和附属设备树详细流程图。

具体实施方式

为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实施例,进一步阐述本发明。

本发明的实施方式提供了一种Linux系统加载设备的方法,系统启动分为两个阶段,参见图1所示,系统BOOT启动阶段10和Linux系统启动阶段20,主设备树文件存储在主电路板的NAND Flash存储器中12,在系统BOOT启动阶段10,加载主设备树文件到内存11,然后,进入Linux系统启动阶段20,Linux系统解析主设备树文件形成设备树,并将附属设备树文件加载到内存12,在这个步骤中,扩展电路板1的SPI Flash中存储有附属设备树文件22,扩展电路板2的Data Flash中存储有附属设备树文件23,Linux系统解析附属设备树文件,将设备信息加到设备树24中,最后,Linux系统根据设备树中的设备信息,加载设备驱动25。

从上述内容不难发现,本发明将单一设备树文件拆分为主设备树文件和附属设备树文件,并将附属设备树文件与主设备树文件存在于同一/不同存储设备中,分阶段加载、解析主设备树和附属设备树文件,相较于目前Linux操作系统中只有一个设备树文件的情况,更有利于用户自行开发的扩展电路板使用设备树文件,而无需自行为扩展电路板增加驱动文件。因此,将设备树文件扩展为主设备树文件和附属设备树文件的形式,附属设备树文件用于记录扩展电路板上的设备信息,就能使得扩展电路板上的设备信息,也能够被加入到设备树中,从而使用户自行开发扩展电路板变得更为容易,同时降低了对扩展电路板软件开发的要求。

本发明所提供的Linux系统加载设备的方法中所囊括的三个步骤,即:为Linux系统配备主设备树文件和附属设备树文件的步骤、解析主设备树文件和附属设备树文件在内存中形成设备树的步骤、加载设备驱动的步骤在图1中有所说明,而对于解析主设备树文件和附属设备树文件在内存中形成设备树的步骤,下文对其具有更加详细的阐述。

参见图2所示,从存储设备中加载主设备树文件和附属设备树文件到内存中,解析主设备树文件和附属设备树文件在内存中形成设备树的详细步骤为:

步骤S101.系统BOOT启动系统时,从存储设备中加载主设备树文件到内存中,并将主设备树文件在内存中的地址和偏移作为Linux系统启动的参数之一。

步骤S102.Linux系统启动时,解析主设备树文件,在内存中形成设备树。

步骤S103.Linux系统在设备树中,查找新出现的附属设备树文件的数量,地址,偏移,然后把附属设备树文件加载到内存中。

步骤S104.Linux系统解析附属设备树文件,将解析得到的设备信息添加到设备树中。

步骤S105.解析附属设备树文件得到的设备信息,其中部分设备信息在设备树中可能已经存在,检查重叠的设备信息。

步骤S106.检查设备信息中的覆盖条目,如果不存在,则执行步骤S107,如果存在,则执行步骤S108。

步骤S107.忽略重叠的设备信息。

步骤S108.覆盖设备树中的重叠设备信息。

步骤S109.此时得到更新的设备树文件,然后跳转到步骤S103~S109,直到没有新出现的附属设备树文件后,跳转到步骤S110。

步骤S110.在设备树中查找合并设备树文件的条目。

步骤S111.如果存在合并的条目则跳转到步骤S112。

步骤S112.将设备树导出覆盖主设备树文件,并删除所有附属设备树文件。

基于前文所述的Linux系统加载设备的方法,对于主设备树文件和附属设备树文件的存储而言,既可以是位于不同存储设备中,也可以是位于同一存储设备的不同区域,两者根据实际情况进行运用,并不影响本方法的实施。

与此同时,附属设备树文件的数量则同样根据实际情况进行选择,数量不定,可以是0个,也可以是1个或者更多。

本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1