CN111984329A - 一种boot引导软件标准化生成、执行方法及系统 - Google Patents
一种boot引导软件标准化生成、执行方法及系统 Download PDFInfo
- Publication number
- CN111984329A CN111984329A CN201910779590.5A CN201910779590A CN111984329A CN 111984329 A CN111984329 A CN 111984329A CN 201910779590 A CN201910779590 A CN 201910779590A CN 111984329 A CN111984329 A CN 111984329A
- Authority
- CN
- China
- Prior art keywords
- boot
- software
- initializing
- module
- operating 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 230000006870 function Effects 0.000 claims description 32
- 241000282472 Canis lupus familiaris Species 0.000 claims description 26
- 230000006837 decompression Effects 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 10
- 230000009191 jumping Effects 0.000 claims description 4
- 238000010276 construction Methods 0.000 claims description 3
- 230000003068 static effect Effects 0.000 claims description 2
- 230000001360 synchronised effect Effects 0.000 claims description 2
- 239000013598 vector Substances 0.000 claims description 2
- 238000013461 design Methods 0.000 description 14
- 238000011161 development Methods 0.000 description 11
- 230000004048 modification Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 230000006872 improvement Effects 0.000 description 6
- 230000007547 defect Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000012840 feeding operation Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/4403—Processor initialisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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/4406—Loading of operating system
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种boot引导软件标准化生成、执行方法及系统,所述boot引导软件标准化生成方法包括:构建64位的linux虚拟机环境;对GCC编译库进行配置:配置GCC编译器和配置环境变量;导入软件工程文件夹,进行软件接口化配置和makefile文件配置;在文件夹中放入源代码,通过make boot.bin命令一键生成boot.bin文件;则boot.bin为最终的boot引导可执行文件。利用本发明方法生成的boot引导软件具有可重用性高,可维护性好的优点。
Description
技术领域
本发明涉及计算机CPU领域,具体涉及一种boot引导软件标准化生成、执行方法及系统。
背景技术
随着时间发展,国产芯片技术愈发精湛,龙芯1E CPU经过长时间的研发,开始广泛应用在航天型号任务中,如二代导航自主运行单元,数据终端,实践十号密封舱/回收舱载荷管理器等。不同型号任务中龙芯1E处理板都需配置boot引导软件。
boot引导软件是龙芯1E处理板(CPU为龙芯1E)的嵌入式软件,固化在龙芯1E处理板的程序存储器(NOR FLASH或EEPROM)的boot代码存储区。boot引导软件是在龙芯处理主板上引导操作系统和应用程序启动的代码,用于CPU主板初始化、系统启动和操作系统引导。
Boot引导软件由支持mips架构的汇编语言文件(romInit.s)以及C语言文件(bootInit.c,am29lv160b.c或eeprom.c等)组成。
boot引导软件开发编译基于交互式开发环境Linux虚拟机,Linux操作系统为Ubuntu32位,编译器为gcc-mips-2.95.3,虚拟机版本号VMware-workstation-full-7.1.2-301548。
目前boot引导软件生成存在以下问题:
1)针对不同型号任务都要进行boot引导软件研发,造成重发开发,浪费资源,提高人力成本;
2)boot软件不可直接移植使用,要进行适应性修改,特别是对romInit.s中的汇编代码进行了部分改动,存在系统寄存器使用不当,后面代码改写前面寄存器值,导致软件卡死风险。
3)不同项目基本功能相同,区别在具体硬件的配置不同。比如喂狗信号的输出的方式不一样,有的项目采用电平喂狗,有的沿喂狗。那么喂狗的实现方式就不同,而软件中又需要插入多次喂狗操作。随之而来的问题是代码改动量大,影响域增加,错误率提高。
4)cache配置不同,有的需要打开cache,有的不需要开cache,那么需要将所有与cache有关的代码全部修改到位,容易遗漏,查找修改工作繁琐,由于人为因素进而影响软件质量。
5)软件重复开发导致软件正确性验证工作量增加,增加了成本,拉长了软件研制周期。
6)编译器存在缺陷,软件汇编文件romInit.s中汇编代码中同一个宏定义函数不同地方调用编译生成的二进制指令码不一致。
例如,FCALL_PRINTSTR的打印信息函数调用,同一个打印函数的解析在0x80000000开始处,解析正确,在喂狗函数调用后,解析错误,0x80000090处指令码应该为lui v0,0x8640,实际是addiu指令,非法指令。
针对上述情况,进行了大量反复测试,每次编译时同时采取反汇编进行查看,mipsel-redhat-linux-objdump–d boot>1.s查看反汇编文件,BAL(hexserial)函数出现了相同的问题,不同的地方调用,翻译的结果不一样。
7)龙芯1E CPU开过滤窗,不打开cache,不会死机;打开cache后存在死机风险,需要屏蔽这个BUG,且操作要简单易行。
当系统运行在kseg0段,开cache后,相对转移指令无法使PC跳到uncached区域。要发出uncached取指,只能通过寄存器间接转移指令(jr/jalr)跳到kseg1段。其原理是把所有的jr/jalr指令改成j/jal跳到一个预定义的地方。
屏蔽上述BUG,实质上就是把运行在kseg0段代码中所有的jr/jalr指令改成j/jal跳到一个预定义的地方,直观的方法是改动最终二进制代码,这种方法修改量大且操作复杂,安全性、可靠性低。需要一种简单易行,可操作性的方法。考虑到软件是使用工具链编译生成,通过修改工具链来处理。
发明内容
本发明的目的在于解决如下技术问题:
1)boot软件重用性,尽可能多提高可复用构件的百分比,最大程度复用软件构架,需求,源代码,设计,测试等构件,简化设计,提高效率,降低成本。
2)不同项目研发boot软件时,研发人员,不用考虑程序的内部结构和内部特性的情况下,只需要修改相关接口函数(喂狗接口,cache接口),即可完成软件的更改。
3)软件汇编代码中同一个宏定义函数不同地方调用编译生成的二进制指令码不一致问题。
4)修复龙芯1E开cache的死机问题。
5)修复Bug的方法简单、方便、易操作。
6)开发编译环境的标准设计,使用人员无需进行任何配置,使用本方案中配置好的编译环境输入命令即可生成.bin文件。
为实现上述目的,本发明提出了一种boot引导软件标准化生成方法,包括:
构建64位的linux虚拟机环境;
对GCC编译库进行配置:配置GCC编译器和配置环境变量;
导入软件工程文件夹,进行软件接口化配置和makefile文件配置;
在文件夹中放入源代码,通过make boot.bin命令一键生成boot.bin文件;则boot.bin为最终的boot引导可执行文件。
作为上述方法的一种改进,所述环境变量包括:用于可执行文件的搜索路径设置的PATH环境变量,以及用于程序加载运行期间指定的动态链接库路径设置的LD_LIBRARY_PATH环境变量。
作为上述方法的一种改进,所述软件接口化配置,具体为:汇编语言文件romInit.s采用MIPS汇编语言中的叶子函数,将boot代码中需要更动部分包装成叶子函数。
作为上述方法的一种改进,所述源代码包括:
主板初始化模块,用于对CPU主板进行初始化;包括CPU核内寄存器的初始化、cache的初始化、SDRAM的初始化和CPU片内串口初始化;
操作系统引导模块,用于完成操作系统映像引导;
程序存储器接口模块,用于完成FLASH/EEPROM擦除、读写和开关接口操作;
串口输入输出模块,用于提供串口0和串口1的输入输出接口函数;
操作系统解压缩模块,用于对压缩vxWorks映像实现解压缩操作。
本发明还提供了一种boot引导软件标准化生成系统,所述系统包括:
环境构建模块,用于构建64位的linux虚拟机环境;
配置模块,用于对GCC编译库进行配置:配置GCC编译器和配置环境变量;
boot引导可执行文件生成模块,用于导入软件工程文件夹,进行软件接口化配置和makefile文件配置;在文件夹中放入源代码,通过make boot.bin命令一键生成boot.bin文件;则boot.bin为最终的boot引导可执行文件。
本发明还提供了一种boot引导软件执行方法,包括:
主板初始化的步骤;
操作系统引导的步骤;
内核初始化的步骤。
作为上述方法的一种改进,所述主板初始化的步骤,具体包括:
步骤201)规定栈底的值,设置栈的大小;
步骤202)系统启动初始化:初始化CPU处理器内部寄存器;初始化CPU处理器的通用性输入输出GPIO、串口、外部存储器SDAM、PCI总线、高速缓存cache各个功能的控制寄存器;
步骤203)初始化外部存储器SDRAM区域,包括:SDRAM区域前4k空间初始化和boot软件编译地址映射的空间部分的初始化;
步骤204)利用feeddog函数进行软件喂狗;
步骤205)将源代码中标号121以及122中指令内容拷贝存放到SDRAM首地址处;
步骤206)利用feeddog函数进行软件喂狗;
步骤207)刷新指令cache以及数据cache;
步骤208)加载SDRAM首地址处的指令内容,执行boot引导软件源码拷贝,存放到boot软件外部存储器SDRAM映射的地址空间部分;
步骤209)初始化外部存储器SDRAM的其他空间。
作为上述方法的一种改进,所述操作系统引导的步骤,具体包括:
步骤210)跳转到romStart函数,依据引导方式进行操作系统映像的引导;
步骤211)若串口无输入,转入步骤212);若串口有输入,进入步骤213);
步骤212)对程序存储器中的操作系统映像进行校验和判断,校验和合法,转入步骤215);
步骤213)将串口收到的数据下载到外部存储器SDRAM的临时存储区;
步骤214)启动程序存储器接口;
步骤215)将程序存储器中代码拷贝到外部存储器SDRAM的非解压缩目标地址;
步骤216)启动操作系统解压缩模块,将代码解压缩到装载操作系统映像的目标地址处;
步骤217)跳转到装载操作系统映像的地址入口,运行操作系统映像。
作为上述方法的一种改进,所述步骤214)具体包括:
步骤214-1)程序存储器写保护关闭;
步骤214-2)选择程序存储器;
步骤214-3)擦除程序存储器信息;
步骤214-4)将SDRAM临时存储区接收到的数据内容写入程序存储器;
步骤214-5)计算校验打开程序存储器写保护。
作为上述方法的一种改进,所述内核初始化的步骤,具体包括:
对存储未初始化的全局变量以及静态变量的内存区域段赋值0;
初始化所有系统和缺省中断向量;
初始化与目标处理板相关的硬件;
配置VxWorks内核;
初始化并启动内核,启动用户应用程序。
本发明还提供了一种boot引导软件执行系统,所述系统包括:
主板初始化模块,用于对主板进行初始化;
引导模块,用于对操作系统进行引导;
内核初始化模块,用于对内核进行初始化。
本发明的优势在于:
1、利用本发明方法设计的Boot引导软件具有可重用性高,可维护性好的优点;
boot软件最大程度复用了软件构架,需求,源代码,设计,测试等构件,简化设计,提高效率,降低成本;为特定项目定制部分通过接口部分设计实现,如喂狗接口,cache接口;考虑到项目中各种需要修改的配置,提供配置接口,维护接口部分,可维护性高。
2、不同项目研发基于龙芯处理板boot软件时,研发人员不用考虑程序的内部结构和内部特性的情况下,只需要修改相关接口函数(喂狗接口,cache接口),即可完成软件的更改;
不同项目基本功能相同,区别在具体硬件的配置不同。比如喂狗信号的输出的方式不一样,有的项目采用电平喂狗,有的沿喂狗,那么喂狗的实现方式就不同,而软件中又需要插入多次喂狗操作。随之而来的问题是代码改动量大,影响域增加,错误率提高。通过增加接口的方式,在不更改源代码结构的情况下,修改接口,即可完成所有喂狗操作的修改。防止人为因素影响软件质量。
3、解决软件汇编代码中同一个宏定义函数不同地方调用编译生成的二进制指令码不一致问题;
原编译器编译器存在缺陷(软件汇编文件romInit.s中汇编代码中同一个宏定义函数不同地方调用编译生成的二进制指令码不一致),生成.bin文件不正确,本发明的方法已经完全解决了此问题。
4、利用本发明方法设计的boot引导软件可以修复龙芯1E开cache的死机问题,修复Bug的方法简单、方便、易操作;
5、修复BUG,实质就是改动最终二进制代码,这种方法修改量大且操作复杂,安全性、可靠性低。软件是使用工具链编译生成,通过修改工具链的方法来处理,简单易行,可操作;
6、开发编译环境的标准设计;
使用人员无需进行任何配置,使用本方案中配置好的编译环境输入命令即可生成.bin文件。
7、本发明的方法对boot引导软件进行了标准化接口设计,通过接口修改软件功能;将linux开发编译环境进行标准化配置,形成开发编译库,方便后续项目使用。
附图说明
图1为boot软件的调用结构图;
图2为本发明的boot软件执行方法的主板初始化的流程图;
图3为本发明的boot软件执行方法的操作系统引导的流程图;
图4为boot软件标准化生成方法流程图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细的说明。
boot软件的生成涉及到两个部分:软件源代码生成;软件的编译生成.bin文件的过程。
针对目前软件生成过程中存在的技术缺陷状态,对运行在NOR FLASH或EEPROM中的boot软件的生成进行了标准化设计,标准化设计从以下两个方面着手,软件源代码生成;软件编译生成.bin文件的过程。
一、软件源代码标准化设计方案
1、软件架构
boot引导软件由5个模块组成,如表1所示:
表1
从软件的运行结构上分,程序为一个主流程,软件调用结构如图1所示。
romStart是bootInit.c文件中的模块,通过串口接收应用程序映像,并写入相应的程序存储器中,串口无输入则启动默认的操作系统映像。
2、软件接口化
针对不同的程序存储器结构(NOR FLASH或者EEPROM),串口输入输出模块(CSC4)、操作系统解压缩模块(CSC5)功能模块不变,直接沿用,无需操作;操作系统引导(CSC2)、程序存储接口模块(CSC3)配置相应存储器结构的.c数据文件即可(NOR FLASH沿用am29lv160b.c,EEPROM沿用eeprom.c),差别主要体现在romInit.s的汇编文件中。软件接口化,主要针对汇编文件的修改提出的一种设计方案。不同型号任务的软件只需要修改接口即可。
龙芯1E处理板不同型号任务差别主要涉及五个方面的配置,SDRAM配置,cache配置,喂狗,GPIO初始化设置,操作系统管理空间分配。软件修改主要涉及这几个方面,为了不影响软件整体架构,尽可能减少代码的更动,使软件结构更加清晰,软件进行了标准化封装设计,汇编语言文件(romInit.s)采用MIPS汇编语言中的叶子函数的设计,将boot代码中需要更动部分包装成叶子函数,后续项目如需使用,只需改动叶子函数中的内容即可,无需更动代码结构,减少了错误的发生率,减少软件开发调试工作量,大大提高软件开发效率,喂狗接口的实现方式示例见表2:
表2
feeddog叶子函数主要功能实现喂狗操作,软件中多次调用喂狗函数。
本技术方案的优势见表3:
表3
二、软件编译生成.bin环境标准化设计方案
本方案中将软件开发编译环境统称为开发编译环境库,包括linux开发环境,gcc编译器,以及工程编译配置。下面所描述的方案是最终的解决结果方案,解决了编译器缺陷以及屏蔽龙芯1E CPU打开cache死机问题,经过实践未产生问题的方案。
下面通过表4详细描述死机问题过程中遇到的各种情况:
表4
1、Linux开发环境
Linux虚拟机升级版本
版本号:VMware-workstation-full-12.5.7-5813279.exe
原始镜像文件和虚拟机软件构建交互式开发环境Linux64位虚拟机,
构建过程略。
账号:cpu,密码:cpu
64位Linux虚拟机名称:Ubuntu64位
2、Linux编译环境标准化配置(gcc)
GCC编译库配置方案见表5:
表5
3、工程编译标准化配置(makefile)
makefile文件中替换编译器,使用最新编译器;
修改工具链,汇编代码正常编译,C语言代码打补丁处理,将所有jr/jalr指令改成j/jal跳到一个预定义的地方。
编译C代码,CC使用选项地方添加:
-Wa,-mfix-loongson2f-jump
添加选项NORMAL_S_U
NORMAL_S_U=${CC_U}${AFLAGS}${CPPFLAGS}-c$<
汇编项修改
${romInit}:romInit.S
${NORMAL_S_U}
提供的最终的标准化开发编译环境库:
系统文件库ubuntu16.10_64中Ubuntu64虚拟机下的xiyinghui-zy目录,
软件相关人员只需将更新后的源代码文件替换相应文件,然后通过makeboot.bin命令一键生成boot.bin文件,简单易行。
如图2所示,本发明提供了一种boot引导软件标准化生成方法,包括:
步骤101)构建64位的linux虚拟机环境;
步骤102)配置预先测试充分的gs464核交叉编译器(版本gcc-4.8.3 32),配置环境变量;
步骤103)软件工程编译环境的标准化配置;
步骤104)上述步骤完成,生成了最终使用的标准化开发编译环境库:文件夹xiyinghui-zy;
步骤105)将更新后的源代码文件替换目录文件夹下相应的源代码,通过makeboot.bin命令一键生成boot.bin文件;boot.bin为最终的boot软件可执行文件。
如图3和图4所示,本发明的一种boot引导软件执行方法,包括:
步骤201)规定栈底的值,设为stack;
步骤202)系统启动;
步骤203)CPU外部初始化:a)配置GPIO寄存器,初始化GPIO模块;b)初始化串口initserial,PCI模块;c)喂狗,feeddog模块;d)初始化SDRAM模块;配置SDRAM相关寄存器,ecc模式寄存器,FLASH控制器;e)初始化cache模块:cache_init,配COP_0_CONFIG,目的为设置固定的kseg0区域是否可缓存,011,非一致性可缓存;
步骤204)开始启动,清除SDRAM区域;
步骤205)SDRAM区域前4k空间初始化;
步骤206)boot软件运行空间初始化:1)软件映射空间初始化0x80fd4000~0x81000000;boot软件编译地址映射的空间部分;2)喂狗,feeddog模块
步骤207)拷贝模块汇编代码存放到SDRAM 0x80000000:1)标号121以及122中指令内容拷贝;拷贝SDRAM 0x80000000开始地址处;2)喂狗,feeddog模块
步骤208)刷新指令cache以及数据cache
步骤209)跳转到0x80000000处执行,执行拷贝模块:拷贝boot引导代码到0x80000000
步骤210)初始化vxWorks管理的其他空间
步骤211)跳转到romStart模块,进行操作系统引导;
步骤212)若串号无输入,转入步骤213);
步骤213)对串号进行校验和判断,转入步骤216);
步骤214)下载SDRAM数据到SDRAM;
步骤215)运行程序存储器接口模块:1)程序存储器写保护关闭;2)选择程序存储器;3)擦除程序存储器信息;4)写程序存储器并计算校验和5)打开程序存储器写保护
步骤216)程序存储器中代码拷贝到SDRAM中并解压缩;
步骤217)操作系统解压缩模块CSC4:代码解压缩到RAM_LOW_ADRS0x80100000;风河VxWorks的解压缩算法;
步骤218)程序启动入口RAM_LOW_ADRS 0x80100000。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (11)
1.一种boot引导软件标准化生成方法,包括:
构建64位的linux虚拟机环境;
对GCC编译库进行配置:配置GCC编译器和配置环境变量;
导入软件工程文件夹,进行软件接口化配置和makefile文件配置;
在文件夹中放入源代码,通过make boot.bin命令一键生成boot.bin文件;则boot.bin为最终的boot引导可执行文件。
2.根据权利要求1所述的boot引导软件标准化生成方法,其特征在于,所述环境变量包括:用于可执行文件的搜索路径设置的PATH环境变量,以及用于程序加载运行期间指定的动态链接库路径设置的LD_LIBRARY_PATH环境变量。
3.根据权利要求1所述的boot引导软件标准化生成方法,其特征在于,所述软件接口化配置,具体为:汇编语言文件romInit.s采用MIPS汇编语言中的叶子函数,将boot代码中需要更动部分包装成叶子函数。
4.根据权利要求1所述的boot引导软件标准化生成方法,其特征在于,所述源代码包括:
主板初始化模块,用于对CPU主板进行初始化;包括CPU核内寄存器的初始化、cache的初始化、SDRAM的初始化和CPU片内串口初始化;
操作系统引导模块,用于完成操作系统映像引导;
程序存储器接口模块,用于完成FLASH/EEPROM擦除、读写和开关接口操作;
串口输入输出模块,用于提供串口0和串口1的输入输出接口函数;
操作系统解压缩模块,用于对压缩vxWorks映像实现解压缩操作。
5.一种boot引导软件标准化生成系统,其特征在于,所述系统包括:
环境构建模块,用于构建64位的linux虚拟机环境;
配置模块,用于对GCC编译库进行配置:配置GCC编译器和配置环境变量;
boot引导可执行文件生成模块,用于导入软件工程文件夹,进行软件接口化配置和makefile文件配置;在文件夹中放入源代码,通过make boot.bin命令一键生成boot.bin文件;则boot.bin为最终的boot引导可执行文件。
6.一种boot引导软件执行方法,包括:
主板初始化的步骤;
操作系统引导的步骤;
内核初始化的步骤。
7.根据权利要求6所述的boot引导软件执行方法,其特征在于,所述主板初始化的步骤,具体包括:
步骤201)规定栈底的值,设置栈的大小;
步骤202)系统启动初始化:初始化CPU处理器内部寄存器;初始化CPU处理器的通用性输入输出GPIO、串口、外部存储器SDAM、PCI总线、高速缓存cache各个功能的控制寄存器;
步骤203)初始化外部存储器SDRAM区域,包括:SDRAM区域前4k空间初始化和boot软件编译地址映射的空间部分的初始化;
步骤204)利用feeddog函数进行软件喂狗;
步骤205)将源代码中标号121以及122中指令内容拷贝存放到SDRAM首地址处;
步骤206)利用feeddog函数进行软件喂狗;
步骤207)刷新指令cache以及数据cache;
步骤208)加载SDRAM首地址处的指令内容,执行boot引导软件源码拷贝,存放到boot软件外部存储器SDRAM映射的地址空间部分;
步骤209)初始化外部存储器SDRAM的其他空间。
8.根据权利要求7所述的boot引导软件执行方法,其特征在于,所述操作系统引导的步骤,具体包括:
步骤210)跳转到romStart函数,依据引导方式进行操作系统映像的引导;
步骤211)若串口无输入,转入步骤212);若串口有输入,进入步骤213);
步骤212)对程序存储器中的操作系统映像进行校验和判断,校验和合法,转入步骤215);
步骤213)将串口收到的数据下载到外部存储器SDRAM的临时存储区;
步骤214)启动程序存储器接口;
步骤215)将程序存储器中代码拷贝到外部存储器SDRAM的非解压缩目标地址;
步骤216)启动操作系统解压缩模块,将代码解压缩到装载操作系统映像的目标地址处;
步骤217)跳转到装载操作系统映像的地址入口,运行操作系统映像。
9.根据权利要求8所述的boot引导软件执行方法,其特征在于,所述步骤214)具体包括:
步骤214-1)程序存储器写保护关闭;
步骤214-2)选择程序存储器;
步骤214-3)擦除程序存储器信息;
步骤214-4)将SDRAM临时存储区接收到的数据内容写入程序存储器;
步骤214-5)计算校验打开程序存储器写保护。
10.根据权利要求9所述的boot引导软件执行方法,其特征在于,所述内核初始化的步骤,具体包括:
对存储未初始化的全局变量以及静态变量的内存区域段赋值0;
初始化所有系统和缺省中断向量;
初始化与目标处理板相关的硬件;
配置VxWorks内核;
初始化并启动内核,启动用户应用程序。
11.一种boot引导软件执行系统,其特征在于,所述系统包括:
主板初始化模块,用于对主板进行初始化;
引导模块,用于对操作系统进行引导;
内核初始化模块,用于对内核进行初始化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910779590.5A CN111984329B (zh) | 2019-08-22 | 2019-08-22 | 一种boot引导软件标准化生成、执行方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910779590.5A CN111984329B (zh) | 2019-08-22 | 2019-08-22 | 一种boot引导软件标准化生成、执行方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111984329A true CN111984329A (zh) | 2020-11-24 |
CN111984329B CN111984329B (zh) | 2023-10-31 |
Family
ID=73437132
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910779590.5A Active CN111984329B (zh) | 2019-08-22 | 2019-08-22 | 一种boot引导软件标准化生成、执行方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111984329B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988133A (zh) * | 2021-03-12 | 2021-06-18 | 麒麟软件有限公司 | 一种在引导阶段实现定制化功能及固定化函数地址的方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060174100A1 (en) * | 2005-01-31 | 2006-08-03 | Samsung Electronics Co., Ltd | System and method of booting an operating system for a computer |
CN1959636A (zh) * | 2006-11-17 | 2007-05-09 | 迈普(四川)通信技术有限公司 | 嵌入式设备引导方法 |
CN101763279A (zh) * | 2010-01-15 | 2010-06-30 | 上海维宏电子科技有限公司 | 一种BootLoader架构设计方法 |
CN103034510A (zh) * | 2012-10-26 | 2013-04-10 | 中国航天科工集团第二研究院七〇六所 | 可按需要动态调整的uefi bios快速安全启动方法 |
CN104318142A (zh) * | 2014-10-31 | 2015-01-28 | 山东超越数控电子有限公司 | 一种计算机可信启动方式 |
CN105893065A (zh) * | 2014-10-22 | 2016-08-24 | 重庆普石科技有限公司 | 计算机系统启动方法 |
CN106407156A (zh) * | 2016-09-23 | 2017-02-15 | 深圳震有科技股份有限公司 | 一个bootrom引导多核cpu启动的方法及系统 |
CN106445569A (zh) * | 2015-08-06 | 2017-02-22 | 国网智能电网研究院 | Vxworks操作系统的嵌入式装置的启动方法及系统 |
CN108170480A (zh) * | 2017-12-25 | 2018-06-15 | 北京康拓科技有限公司 | 一种基于u-boot引导μC/OS操作系统的启动方法 |
CN108279935A (zh) * | 2016-12-30 | 2018-07-13 | 北京中科晶上科技股份有限公司 | 一种针对片上系统的操作系统启动引导方法 |
-
2019
- 2019-08-22 CN CN201910779590.5A patent/CN111984329B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060174100A1 (en) * | 2005-01-31 | 2006-08-03 | Samsung Electronics Co., Ltd | System and method of booting an operating system for a computer |
CN1959636A (zh) * | 2006-11-17 | 2007-05-09 | 迈普(四川)通信技术有限公司 | 嵌入式设备引导方法 |
CN101763279A (zh) * | 2010-01-15 | 2010-06-30 | 上海维宏电子科技有限公司 | 一种BootLoader架构设计方法 |
CN103034510A (zh) * | 2012-10-26 | 2013-04-10 | 中国航天科工集团第二研究院七〇六所 | 可按需要动态调整的uefi bios快速安全启动方法 |
CN105893065A (zh) * | 2014-10-22 | 2016-08-24 | 重庆普石科技有限公司 | 计算机系统启动方法 |
CN104318142A (zh) * | 2014-10-31 | 2015-01-28 | 山东超越数控电子有限公司 | 一种计算机可信启动方式 |
CN106445569A (zh) * | 2015-08-06 | 2017-02-22 | 国网智能电网研究院 | Vxworks操作系统的嵌入式装置的启动方法及系统 |
CN106407156A (zh) * | 2016-09-23 | 2017-02-15 | 深圳震有科技股份有限公司 | 一个bootrom引导多核cpu启动的方法及系统 |
CN108279935A (zh) * | 2016-12-30 | 2018-07-13 | 北京中科晶上科技股份有限公司 | 一种针对片上系统的操作系统启动引导方法 |
CN108170480A (zh) * | 2017-12-25 | 2018-06-15 | 北京康拓科技有限公司 | 一种基于u-boot引导μC/OS操作系统的启动方法 |
Non-Patent Citations (2)
Title |
---|
G050649: "u-boot启动流程(mips)", 《HTTPS://M.BLOG.CHINAUNIX.NET/UID-25984886-ID-3029842.HTML》, pages 1 - 8 * |
王朴: "基于龙芯1E的实时Linux系统移植与裁剪", 《中国优秀硕士学位论文全文数据库 信息科技辑》, no. 08, pages 138 - 423 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988133A (zh) * | 2021-03-12 | 2021-06-18 | 麒麟软件有限公司 | 一种在引导阶段实现定制化功能及固定化函数地址的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111984329B (zh) | 2023-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6718485B1 (en) | Software emulating hardware for analyzing memory references of a computer program | |
US9891939B2 (en) | Application compatibility with library operating systems | |
US6948164B2 (en) | Method and system for modifying executable code to add additional functionality | |
CN102402427B (zh) | 一种Java应用程序的更新方法及装置 | |
JP5415557B2 (ja) | デバッギングのためのユーザ・スクリプト・コードの変換 | |
US9348730B2 (en) | Firmware ROM patch method | |
US20200073643A1 (en) | Direct function call substitution using preprocessor | |
Kinder et al. | Precise static analysis of untrusted driver binaries | |
Cook et al. | Model checking boot code from AWS data centers | |
US20070101115A1 (en) | Information processing device, bios processing method and program | |
CN100492387C (zh) | 基于Keil C51的软件保护开发的方法和系统 | |
US10684835B1 (en) | Improving emulation and tracing performance using compiler-generated emulation optimization metadata | |
US8893100B2 (en) | Return address optimisation for a dynamic code translator | |
CN111857776A (zh) | Dsp板卡类的应用程序的在线升级方法 | |
CN105354045A (zh) | 补丁的制作方法及装置、补丁的激活方法及装置 | |
US20040083467A1 (en) | System and method for executing intermediate code | |
US8943480B2 (en) | Setting breakpoints in optimized instructions | |
US20080127118A1 (en) | Method and system for dynamic patching of software | |
US9600397B2 (en) | Dynamic debugging method of a software module and corresponding device | |
CN112130926A (zh) | 应用程序运行的方法、装置、终端设备及存储介质 | |
US10452364B2 (en) | Method and system for preparing code to be executed by programmable control devices | |
JP2008198060A (ja) | 情報処理装置、パッチコード実装システム、電子機器及びパッチコードの実装方法 | |
CN111984329B (zh) | 一种boot引导软件标准化生成、执行方法及系统 | |
US20070300054A1 (en) | Universal BSP tool for porting on embedded systems and an application thereof | |
CN113454606B (zh) | 不同编译的可执行文件之间的软件检查点-恢复 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 |