CN105528215A - 一种u-boot启动过程中Linux基址动态更新方法及系统 - Google Patents

一种u-boot启动过程中Linux基址动态更新方法及系统 Download PDF

Info

Publication number
CN105528215A
CN105528215A CN201510933316.0A CN201510933316A CN105528215A CN 105528215 A CN105528215 A CN 105528215A CN 201510933316 A CN201510933316 A CN 201510933316A CN 105528215 A CN105528215 A CN 105528215A
Authority
CN
China
Prior art keywords
plot
linux
flash
boot
program
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.)
Granted
Application number
CN201510933316.0A
Other languages
English (en)
Other versions
CN105528215B (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.)
Beijing Hongqi Software Co ltd
Original Assignee
Shanghai Feixun Data Communication Technology 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 Shanghai Feixun Data Communication Technology Co Ltd filed Critical Shanghai Feixun Data Communication Technology Co Ltd
Priority to CN201510933316.0A priority Critical patent/CN105528215B/zh
Publication of CN105528215A publication Critical patent/CN105528215A/zh
Application granted granted Critical
Publication of CN105528215B publication Critical patent/CN105528215B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

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

Abstract

本发明提供一种u-boot启动过程中Linux基址动态更新方法及系统,可预先设定u-boot程序和Linux程序的约束关系;在u-boot程序启动过程中动态解析flash基址;根据所述flash基址和所述约束关系,计算Linux基址;将所述Linux基址更新到环境变量中。通过增加约束关系,实现在u-boot启动过程中对Linux基址进行动态更新,无需预先静态配置,运行灵活、简化配置、且降低系统的维护难度。

Description

一种u-boot启动过程中Linux基址动态更新方法及系统
技术领域
本发明涉及Linux应用领域,特别是涉及一种u-boot启动过程中Linux基址动态更新的方法及系统。
背景技术
采用u-boot引导Linux的嵌入式产品,一般通过引导脚本来自动引导Linux。引导脚本一般负责把Linux程序从保存在flash的基址处搬移到内存中,然后跳转到内存中执行Linux程序。现有技术中,Linux-base通常需要在代码中根据产品规格,在u-boot编译前静态配置写死。每款产品都要做配置,容易出错,维护麻烦。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种u-boot启动过程中Linux基址动态更新方法及系统,用于解决现有技术中不能动态更新Linux基址,而需要针对每款产品做Linux基址的静态配置的问题。
为实现上述目的及其他相关目的,本发明提供一种u-boot启动过程中Linux基址动态更新方法,包括:预先设定u-boot程序和Linux程序的约束关系;在u-boot程序启动过程中动态解析flash基址;根据所述flash基址和所述约束关系,计算Linux基址;将所述Linux基址更新到环境变量中。
于本发明的一具体实施例中,所述预先设定u和Linux程序的约束关系的步骤包括:将Linux程序和u-boot程序保存在同一flash中;其中,u-boot程序从flash基址处开始保存,Linux程序在相对flash基址的固定偏移0x100000处开始保存。
于本发明的一具体实施例中,在u-boot程序启动过程中动态解析flash基址的步骤包括:在所述u-boot程序启动过程中,将所述u-boot程序从flash搬移到内存的内存基址处。
于本发明的一具体实施例中,将所述u-boot程序从flash搬移到内存的内存基址处的步骤包括:将搬移到的内存基址保存到全局数据gd的重定位地址成员;将内存基址和flash基址的差值保存到全局数据gd的重定位偏移成员;根据flash基址计算公式解析所述flash基址;其中所述flash基址计算公式为:flash基址=(重定位地址-重定位偏移)。
于本发明的一具体实施例中,根据公式:Linux基址=(flash基址+0x100000),计算所述Linux基址。
为实现上述目的及其他相关目的,本发明还提供一种u-boot启动过程中Linux基址动态更新系统,包括:预设模块,用以预先设定u-boot程序和Linux程序的约束关系;解析模块,用以在u-boot程序启动过程中动态解析flash基址;计算模块,用以根据所述flash基址和所述约束关系,计算Linux基址;更新模块,用以将所述Linux基址更新到环境变量中。
于本发明的一具体实施例中,所述预设模块还用以将Linux程序和u-boot程序保存在同一flash中;其中,u-boot程序从flash基址处开始保存,Linux程序在相对flash基址的固定偏移0x100000处开始保存。
于本发明的一具体实施例中,所述解析模块:用以在所述u-boot程序启动过程中,将所述u-boot程序从flash搬移到内存的内存基址处。
于本发明的一具体实施例中,将所述u-boot程序从flash搬移到内存的内存基址处的方式包括:将搬移到的内存基址保存到全局数据gd的重定位地址成员;将内存基址和flash基址的差值保存到全局数据gd的重定位偏移成员;根据flash基址计算公式解析所述flash基址;其中所述flash基址计算公式为:flash基址=(重定位地址-重定位偏移)。
于本发明的一具体实施例中,所述计算模块根据公式:Linux基址=(flash基址+0x100000),计算所述Linux基址。
如上所述,本发明的u-boot启动过程中Linux基址动态更新方法及系统,可预先设定u-boot程序和Linux程序的约束关系;在u-boot程序启动过程中动态解析flash基址;根据所述flash基址和所述约束关系,计算Linux基址;将所述Linux基址更新到环境变量中。通过增加约束关系,实现在u-boot启动过程中对Linux基址进行动态更新,无需预先静态配置,运行灵活、简化配置、且降低系统的维护难度。
附图说明
图1显示为现有技术中Linux程序的引导流程示意图。
图2显示为本发明的u-boot启动过程中Linux基址动态更新方法在一具体实施例中的流程示意图。
图3显示为应用为本发明的u-boot启动过程中Linux基址动态更新方法或系统的一具体实施例的Linux程序引导的流程示意图。
图4显示为本发明的u-boot启动过程中Linux基址动态更新系统在一具体实施例中的流程示意图。
元件标号说明
1u-boot启动过程中Linux基址动态更新系统
11预设模块
12解析模块
13计算模块
14更新模块
S11~S14步骤
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图示中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
采用u-boot引导Linux的嵌入式产品,一般通过引导脚本来自动引导Linux。引导脚本一般负责把Linux程序从保存在flash的基址处搬移到内存中,然后跳转到内存中执行Linux程序。现有技术的执行过程通常为如图1所示,具体为:U-boot启动,获取环境变量Linux-base(Linux基址),其中Linux基址为0Xf0100000;以Linux基址为参数,调用引导脚本,引导脚本搬移Linux,并跳转执行Linux。
请参阅图2,显示为本发明的u-boot启动过程中Linux基址动态更新方法在一具体实施例中的流程示意图。
所述u-boot启动过程中Linux基址动态更新方法,包括:
S11:预先设定u-boot程序和Linux程序的约束关系;优选的,所述预先设定u和Linux程序的约束关系的步骤包括:将Linux程序和u-boot程序保存在同一flash中;其中,u-boot程序从flash基址处开始保存,Linux程序在相对flash基址的固定偏移0x100000处开始保存。
S12:在u-boot程序启动过程中动态解析flash基址;优选的,在u-boot程序启动过程中动态解析flash基址的步骤包括:在所述u-boot程序启动过程中,将所述u-boot程序从flash搬移到内存的内存基址处。
S13:根据所述flash基址和所述约束关系,计算Linux基址;优选的,将所述u-boot程序从flash搬移到内存的内存基址处的步骤包括:将搬移到的内存基址保存到全局数据gd的重定位地址成员;将内存基址和flash基址的差值保存到全局数据gd的重定位偏移成员;根据flash基址计算公式解析所述flash基址;其中所述flash基址计算公式为:flash基址=(重定位地址-重定位偏移)。并,根据公式:Linux基址=(flash基址+0x100000),计算所述Linux基址。
S14:将所述Linux基址更新到环境变量中。优选的,使用u-boot提供的setenv命令保存Linux-base到环境变量中。
应用本发明的u-boot启动过程中Linux基址动态更新方法的Linux引导过程为如图3所示:U-boot启动,动态生成环境变量Linux基址,获取环境变量Linux-base(Linux基址),其中Linux基址为0Xf0100000;以Linux基址为参数,调用引导脚本,引导脚本搬移Linux,并跳转执行Linux。
请参阅图4,显示为本发明的u-boot启动过程中Linux基址动态更新系统在一具体实施例中的流程示意图。所述u-boot启动过程中Linux基址动态更新系统1,包括:
预设模块11用以预先设定u-boot程序和Linux程序的约束关系;优选的,所述预设模块11还用以将Linux程序和u-boot程序保存在同一flash中;其中,u-boot程序从flash基址处开始保存,Linux程序在相对flash基址的固定偏移0x100000处开始保存。
解析模块12用以在u-boot程序启动过程中动态解析flash基址;优选的,所述解析模块12还用以在所述u-boot程序启动过程中,将所述u-boot程序从flash搬移到内存的内存基址处。
计算模块13用以根据所述flash基址和所述约束关系,计算Linux基址;优选的,将所述u-boot程序从flash搬移到内存的内存基址处的方式包括:将搬移到的内存基址保存到全局数据gd的重定位地址成员;将内存基址和flash基址的差值保存到全局数据gd的重定位偏移成员;根据flash基址计算公式解析所述flash基址;其中所述flash基址计算公式为:flash基址=(重定位地址-重定位偏移)。更有选的,所述计算模块13根据公式:Linux基址=(flash基址+0x100000),计算所述Linux基址。
更新模块14用以将所述Linux基址更新到环境变量中。优选的,使用u-boot提供的setenv命令保存Linux-base到环境变量中。
应用本发明的u-boot启动过程中Linux基址动态更新系统的Linux引导过程为如图3所示:U-boot启动,动态生成环境变量Linux基址,获取环境变量Linux-base(Linux基址),其中Linux基址为0Xf0100000;以Linux基址为参数,调用引导脚本,引导脚本搬移Linux,并跳转执行Linux。
综上所述,本发明的u-boot启动过程中Linux基址动态更新方法及系统,可预先设定u-boot程序和Linux程序的约束关系;在u-boot程序启动过程中动态解析flash基址;根据所述flash基址和所述约束关系,计算Linux基址;将所述Linux基址更新到环境变量中。通过增加约束关系,实现在u-boot启动过程中对Linux基址进行动态更新,无需预先静态配置,运行灵活、简化配置、且降低系统的维护难度。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

Claims (10)

1.一种u-boot启动过程中Linux基址动态更新方法,其特征在于,包括:
预先设定u-boot程序和Linux程序的约束关系;
在u-boot程序启动过程中动态解析flash基址;
根据所述flash基址和所述约束关系,计算Linux基址;
将所述Linux基址更新到环境变量中。
2.根据权利要求1所述的u-boot启动过程中Linux基址动态更新方法,其特征在于:所述预先设定u和Linux程序的约束关系的步骤包括:
将Linux程序和u-boot程序保存在同一flash中;其中,u-boot程序从flash基址处开始保存,Linux程序在相对的flash基址的固定偏移0x100000处开始保存。
3.根据权利要求2所述的u-boot启动过程中Linux基址动态更新方法,其特征在于:在u-boot程序启动过程中动态解析flash基址的步骤包括:
在所述u-boot程序启动过程中,将所述u-boot程序从flash搬移到内存的内存基址处。
4.根据权利要求3所述的u-boot启动过程中Linux基址动态更新方法,其特征在于:将所述u-boot程序从flash搬移到内存的内存基址处的步骤包括:
将搬移到的内存基址保存到全局数据的重定位地址成员;
将内存基址和flash基址的差值保存到全局数据的重定位偏移成员;
根据flash基址计算公式解析所述flash基址;其中所述flash基址计算公式为:flash基址=(重定位地址-重定位偏移)。
5.根据权利要求4所述的u-boot启动过程中Linux基址动态更新方法,其特征在于:根据公式:Linux基址=(flash基址+0x100000),计算所述Linux基址。
6.一种u-boot启动过程中Linux基址动态更新系统,其特征在于,包括:
预设模块,用以预先设定u-boot程序和Linux程序的约束关系;
解析模块,用以在u-boot程序启动过程中动态解析flash基址;
计算模块,用以根据所述flash基址和所述约束关系,计算Linux基址;
更新模块,用以将所述Linux基址更新到环境变量中。
7.根据权利要求6所述的u-boot启动过程中Linux基址动态更新系统,其特征在于:所述预设模块还用以将Linux程序和u-boot程序保存在同一flash中;其中,u-boot程序从flash基址处开始保存,Linux程序在相对flash基址的固定偏移0x100000处开始保存。
8.根据权利要求7所述的u-boot启动过程中Linux基址动态更新系统,其特征在于:所述解析模块:用以在所述u-boot程序启动过程中,将所述u-boot程序从flash搬移到内存的内存基址处。
9.根据权利要求8所述的u-boot启动过程中Linux基址动态更新系统,其特征在于:将所述u-boot程序从flash搬移到内存的内存基址处的方式包括:
将搬移到的内存基址保存到全局数据的重定位地址成员;
将内存基址和flash基址的差值保存到全局数据的重定位偏移成员;
根据flash基址计算公式解析所述flash基址;其中所述flash基址计算公式为:flash基址=(重定位地址-重定位偏移)。
10.根据权利要求9所述的u-boot启动过程中Linux基址动态更新系统,其特征在于:所述计算模块根据公式:Linux基址=(flash基址+0x100000),计算所述Linux基址。
CN201510933316.0A 2015-12-15 2015-12-15 一种u-boot启动过程中Linux基址动态更新方法及系统 Active CN105528215B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510933316.0A CN105528215B (zh) 2015-12-15 2015-12-15 一种u-boot启动过程中Linux基址动态更新方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510933316.0A CN105528215B (zh) 2015-12-15 2015-12-15 一种u-boot启动过程中Linux基址动态更新方法及系统

Publications (2)

Publication Number Publication Date
CN105528215A true CN105528215A (zh) 2016-04-27
CN105528215B CN105528215B (zh) 2018-06-19

Family

ID=55770464

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510933316.0A Active CN105528215B (zh) 2015-12-15 2015-12-15 一种u-boot启动过程中Linux基址动态更新方法及系统

Country Status (1)

Country Link
CN (1) CN105528215B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101520735A (zh) * 2008-12-18 2009-09-02 康佳集团股份有限公司 一种启动闪存内引导程序的方法及其网络电视和机顶盒
CN104254840A (zh) * 2012-04-27 2014-12-31 马维尔国际贸易有限公司 在计算机系统中的存储器转储和分析

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101520735A (zh) * 2008-12-18 2009-09-02 康佳集团股份有限公司 一种启动闪存内引导程序的方法及其网络电视和机顶盒
CN104254840A (zh) * 2012-04-27 2014-12-31 马维尔国际贸易有限公司 在计算机系统中的存储器转储和分析

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
徐晨辉: "嵌入式Linux内核裁剪及移植的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
徐雪松 章兢: "基于嵌入式Linux系统的启动引导技术研究", 《应用设计》 *
毛亮叶,德建: "嵌入式Linux下的闪存自动分区与更新系统", 《计算机应用与软件》 *

Also Published As

Publication number Publication date
CN105528215B (zh) 2018-06-19

Similar Documents

Publication Publication Date Title
CN103309667B (zh) 安卓系统中定位ui控件及图片修改位置的方法
CN108156510B (zh) 页面焦点处理的方法、装置及计算机可读存储介质
CN103064680B (zh) 浏览器中插件的播放方法及装置
CN107656729B (zh) 列表视图的更新装置、方法及计算机可读存储介质
CN104866327A (zh) 一种php开发方法及框架
CN104915224A (zh) 一种关联应用程序的处理方法及装置
CN105975816A (zh) 移动终端下基于虚拟技术的代码保护方法及系统
CN103729184A (zh) 一种软件组件组合构建方法
CN103246578A (zh) 应用软件进行崩溃处理的方法及进行崩溃处理的浏览器
CN108197024B (zh) 嵌入式浏览器调试方法、调试终端及计算机可读存储介质
CN105335069A (zh) 一种在触屏设备中生成滑动轨迹的方法和装置
CN110569050A (zh) 一种小程序更新方法和装置
CN105549973A (zh) 一种列表控件中视图列表的数据更新方法及系统
CN103164541A (zh) 图片呈现方法及设备
CN105279036A (zh) 进程间通信方法、装置及电子设备
CN103197972A (zh) 浏览器插件的管理方法及装置、浏览器与插件的交互系统
CN110515690A (zh) 节点布局方法及装置、存储介质、电子装置
CN103077047B (zh) 一种插件播放方法及装置
CN101776997A (zh) 一种界面处理方法及装置
CN105528215A (zh) 一种u-boot启动过程中Linux基址动态更新方法及系统
CN107092472B (zh) 一种动态发布方法及设备
CN105005491A (zh) 一种Linux内核和应用程序的升级方法及系统
CN106933439B (zh) 一种基于社交平台的图片处理方法及系统
CN104572194B (zh) 一种模块加载方法和装置
CN104881233A (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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20201102

Address after: 318015 no.2-3167, zone a, Nonggang City, no.2388, Donghuan Avenue, Hongjia street, Jiaojiang District, Taizhou City, Zhejiang Province

Patentee after: Taizhou Jiji Intellectual Property Operation Co.,Ltd.

Address before: 201616 Shanghai city Songjiang District Sixian Road No. 3666

Patentee before: Phicomm (Shanghai) Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20231222

Address after: 100000 3-8-24, floor 6, building 3, No. 8 Chuangye Road, Haidian District, Beijing

Patentee after: Beijing Hongqi Software Co.,Ltd.

Address before: 318015 no.2-3167, area a, nonggangcheng, 2388 Donghuan Avenue, Hongjia street, Jiaojiang District, Taizhou City, Zhejiang Province

Patentee before: Taizhou Jiji Intellectual Property Operation Co.,Ltd.

TR01 Transfer of patent right