CN106354498B - 一种Linux系统加载设备的方法 - Google Patents
一种Linux系统加载设备的方法 Download PDFInfo
- Publication number
- CN106354498B CN106354498B CN201610723507.9A CN201610723507A CN106354498B CN 106354498 B CN106354498 B CN 106354498B CN 201610723507 A CN201610723507 A CN 201610723507A CN 106354498 B CN106354498 B CN 106354498B
- Authority
- CN
- China
- Prior art keywords
- equipment
- tree
- tree file
- file
- linux system
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
Abstract
本发明公开了一种Linux系统加载设备的方法,该方法包括如下步骤:步骤一,于Linux系统的存储设备中为Linux系统配备主设备树文件和附属设备树文件;步骤二,于所述存储设备中加载主设备树文件和附属设备树文件到内存中,解析主设备树文件和附属设备树文件在内存中形成设备树;步骤三,Linux系统根据解析主设备树文件和附属设备树文件在内存中形成的设备树,加载设备驱动。本发明所提供的方法使得扩展电路板上的设备信息能够整合到设备树中,从而使用户自行开发扩展电路板变得更为容易,同时降低了对扩展电路板软件开发的要求。
Description
技术领域
本发明涉及嵌入式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个或者更多。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (5)
1.一种Linux系统加载设备的方法,其特征在于,包括以下步骤:
步骤一,于Linux系统的存储设备中为Linux系统配备主设备树文件和附属设备树文件;
步骤二,于所述存储设备中加载主设备树文件和附属设备树文件到内存中,解析主设备树文件和附属设备树文件在内存中形成设备树;
步骤三,Linux系统根据解析主设备树文件和附属设备树文件在内存中形成的设备树,加载设备驱动;
步骤二包括以下步骤:
步骤S101.系统BOOT启动系统时,从存储设备中加载主设备树文件到内存中,并将主设备树文件在内存中的地址和偏移作为Linux系统启动的参数之一;
步骤S102.Linux系统启动时,解析主设备树文件,在内存中形成设备树;
步骤S103.Linux系统在设备树中,查找新出现的附属设备树文件的数量,地址,偏移,然后把附属设备树文件加载到内存中;
步骤S104.Linux系统解析附属设备树文件,将解析得到的设备信息添加到设备树中;
步骤S105.解析附属设备树文件得到的设备信息,其中部分设备信息在设备树中可能已经存在,检查重叠的设备信息;
步骤S106.检查设备信息中的覆盖条目,如果不存在,则执行步骤S107,如果存在,则执行步骤S108;
步骤S107.忽略重叠的设备信息;
步骤S108.覆盖设备树中的重叠设备信息;
步骤S109.此时得到更新的设备树文件,然后跳转到步骤S103~S109,直到没有新出现的附属设备树文件后,跳转到步骤S110;
步骤S110.在设备树文件中查找合并设备树文件的条目;
步骤S111.如果存在合并条目则跳转到步骤S112;
步骤S112.将设备树导出覆盖主设备树文件,并删除所有附属设备树文件。
2.根据权利要求1所述的一种Linux系统加载设备的方法,其特征在于,步骤一中,主设备树文件和附属设备树文件位于同一个存储设备的不同区域。
3.根据权利要求1所述的一种Linux系统加载设备的方法,其特征在于,步骤一中,主设备树文件和附属设备树文件位于不同存储设备中。
4.根据权利要求1所述一种Linux系统加载设备的方法,其特征在于,所述附属设备树文件的数量为0个,1个,2个或多个。
5.根据权利要求1所述一种Linux系统加载设备的方法,其特征在于,所述附属设备树文件位于同一个存储设备的不同区域,或者位于不同存储设备中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610723507.9A CN106354498B (zh) | 2016-08-25 | 2016-08-25 | 一种Linux系统加载设备的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610723507.9A CN106354498B (zh) | 2016-08-25 | 2016-08-25 | 一种Linux系统加载设备的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106354498A CN106354498A (zh) | 2017-01-25 |
CN106354498B true CN106354498B (zh) | 2020-05-08 |
Family
ID=57856139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610723507.9A Active CN106354498B (zh) | 2016-08-25 | 2016-08-25 | 一种Linux系统加载设备的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106354498B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107145343A (zh) * | 2017-04-05 | 2017-09-08 | 烽火通信科技股份有限公司 | 一种动态适配外围设备的系统及方法 |
CN107577477B (zh) * | 2017-09-06 | 2021-09-14 | 武汉虹信科技发展有限责任公司 | 一种基于dtb文件的多平台软件版本自适应方法及系统 |
CN109683820B (zh) * | 2018-12-18 | 2022-02-08 | 超越科技股份有限公司 | 一种基于Linux的存储设备树实现方法 |
CN112783516A (zh) * | 2021-01-07 | 2021-05-11 | 广东天波信息技术股份有限公司 | 硬件适配的方法、电子设备和计算机可读存储介质 |
CN112860324B (zh) * | 2021-01-29 | 2022-10-28 | 展讯通信(上海)有限公司 | 调试lcd的方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103246545A (zh) * | 2013-05-07 | 2013-08-14 | 中国人民解放军国防科学技术大学 | 面向多虚拟域可定制的PICe外设设备树生成方法 |
CN103970559A (zh) * | 2013-02-05 | 2014-08-06 | 北京壹人壹本信息科技有限公司 | 一种基于Android系统的设备加载方法及装置 |
CN104572166A (zh) * | 2014-03-21 | 2015-04-29 | 中电科技(北京)有限公司 | 一种基于飞腾台式计算机的uefi固件实现方法 |
CN104750492A (zh) * | 2015-03-31 | 2015-07-01 | 广东欧珀移动通信有限公司 | 基于嵌入式操作系统的移动设备的开机控制方法及装置 |
CN105739961A (zh) * | 2014-12-12 | 2016-07-06 | 中兴通讯股份有限公司 | 一种嵌入式系统的启动方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8196153B1 (en) * | 2007-01-07 | 2012-06-05 | Apple Inc. | Method and apparatus for associating device drivers via a device tree |
CN104834547B (zh) * | 2015-05-14 | 2018-02-16 | 烽火通信科技股份有限公司 | 一种Squashfs只读根文件系统的远程升级方法及系统 |
-
2016
- 2016-08-25 CN CN201610723507.9A patent/CN106354498B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970559A (zh) * | 2013-02-05 | 2014-08-06 | 北京壹人壹本信息科技有限公司 | 一种基于Android系统的设备加载方法及装置 |
CN103246545A (zh) * | 2013-05-07 | 2013-08-14 | 中国人民解放军国防科学技术大学 | 面向多虚拟域可定制的PICe外设设备树生成方法 |
CN104572166A (zh) * | 2014-03-21 | 2015-04-29 | 中电科技(北京)有限公司 | 一种基于飞腾台式计算机的uefi固件实现方法 |
CN105739961A (zh) * | 2014-12-12 | 2016-07-06 | 中兴通讯股份有限公司 | 一种嵌入式系统的启动方法和装置 |
CN104750492A (zh) * | 2015-03-31 | 2015-07-01 | 广东欧珀移动通信有限公司 | 基于嵌入式操作系统的移动设备的开机控制方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106354498A (zh) | 2017-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106354498B (zh) | 一种Linux系统加载设备的方法 | |
CN102799484B (zh) | 移动终端运行多操作系统的方法及装置 | |
CN111984163B (zh) | 应用图标显示方法、装置及电子设备 | |
EP3493513A1 (en) | Method and apparatus for connecting service between user devices using voice | |
CN106874366B (zh) | 软件信息的处理方法及装置 | |
US20070061818A1 (en) | Detection of devices during operating system setup | |
CN103473102B (zh) | 多操作系统的系统启动引导方法和工具 | |
CN109284261B (zh) | 应用查找方法、装置、存储介质及电子设备 | |
CN103136024B (zh) | 一种应用程序的可靠卸载方法、装置及移动装置 | |
CN110321170B (zh) | 开机方法 | |
CN105608101A (zh) | 文本内地址利用方法、装置及移动终端 | |
CN104679900A (zh) | 一种应用程序搜索方法及装置 | |
US7404072B2 (en) | System and method for loading a valid image from one of a plurality of images into a memory of a network device | |
CN105739961A (zh) | 一种嵌入式系统的启动方法和装置 | |
CN110413292B (zh) | 应用程序的轻应用安装方法、移动终端及存储介质 | |
CN110968343A (zh) | 资源文件的配置方法、配置装置、冰箱以及可读存储介质 | |
CN104423993A (zh) | 汽车电子设备软件的更新方法、更新终端及汽车电子系统 | |
CN101924821A (zh) | 移动通信终端启动应用程序的方法、系统及移动通信终端 | |
CN111076741A (zh) | 导航状态获取方法、装置、存储介质及电子设备 | |
CN111367922A (zh) | 一种数据更新方法及相关设备 | |
CN105786568B (zh) | 一种升级内容显示方法、装置及智能终端 | |
US20140298316A1 (en) | Managing method for application program installation and electronic device | |
US10430173B2 (en) | Techniques for updating components of a computer device while enabling components for availability | |
CN106471436B (zh) | 车辆信息娱乐系统 | |
CN108762790B (zh) | 无人机电池重启处理方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: A Method for Loading Devices in Linux Systems Effective date of registration: 20230414 Granted publication date: 20200508 Pledgee: Minhang Branch of Shanghai Rural Commercial Bank Co.,Ltd. Pledgor: RTCHIP INFORMATION TECHNOLOGY (SHANGHAI) CO.,LTD. Registration number: Y2023310000124 |
|
PE01 | Entry into force of the registration of the contract for pledge of patent right |