一种基于X86平台Vxworks操作系统的快速启动优化方法

文档序号:6542558阅读:252来源:国知局
一种基于X86平台Vxworks操作系统的快速启动优化方法
【专利摘要】本发明一种基于X86平台Vxworks操作系统的快速启动优化方法,包括如下步骤,1)BIOS执行步骤;计算机加电开机后依次进行POST,初始化设置,执行常驻程序,调用系统中的INT19文件启动自举程序;启动自举程序后直接读取系统中的Vxworks文件并进行解析,然后将计算机运行模式从实模式切换到保护模式,并将文件解析后的数据和代码分别加载到指定的内存地址中;2)Vxworks加载启动步骤;数据和代码加载完毕后跳转到ELF格式文件头对应的内存地址e_entry处开始执行,直接加载启动操作系统,执行应用程序。本发明改变现有技术中通过bootrom来加载系统的方法,启动时间由20-30秒缩短为3秒。
【专利说明】—种基于X86平台Vxworks操作系统的快速启动优化方法
【技术领域】
[0001]本发明属于操作系统的启动【技术领域】,具体为一种基于X86平台Vxworks操作系统的快速启动优化方法。
【背景技术】
[0002]Vxworks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RT0S),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。Vxworks操作系统有良好的可靠性,同时其系统本身的开销很小,进程调度、进程间通信、中断处理等系统公用程序精练而有效,它们造成的延迟很短,并且提供的多任务机制中对任务的控制采用了优先级抢占(Preemptive Priority Scheduling)和轮转调度(Round-Robin Scheduling)机制,也充分保证了可靠的实时性,使同样的硬件配置能满足更强的实时性要求,为应用的开发留下更大的余地;还能够根据使用需求进行适当的定制和开发,有较高的可裁减性。
[0003]现有技术中,如图1所示,通常的Vxworks系统加载流程包括BIOS执行过程和Vxworks加载启动过程。计算机加电开机,开始执行BIOS启动流程,包括POST(上电自检)、初始化、执行常驻程序、启动自举程序读取磁盘MBR等。Vxworks加载过程包括bootrom弓丨导以及通过bootrom加载vxworks过程。BIOS的主要功能概括来说包括如下几部分:1)P0ST,加电自检,检测CPU各寄存器、计时芯片、中断芯片、DMA控制器。2) Initial,初始化设置,包括枚举设备,初始化寄存器,分配中断、IO端口、DMA资源。3) Setup,系统进程设置,存于CMOS中,一般开机时按Del或者F2进入到BIOS的设置界面。4)常驻程序,包括INTlOh、INT13h、INT15h、INT19h等,提供给操作系统或应用程序调用。5)启动自举程序,通过调用INT19h,启动自举程序,自举程序将读取引导记录,装载操作系统。
[0004]同样在X86平台下,Vxworks系统启动过程包括BIOS启动,通过BIOS读取MBR来引导Vxworks的bootrom阶段,随后再通过bootrom来加载硬盘或者网络等系统,直到Vxworks最终引导起来。现有技术中从上电BIOS启动到Vxworks系统起来,一般大约在20s左右,另外还有根据系统平台不一样都可能导致系统启动时间延长,并且还会由于硬件兼容性问题导致bootrom引导Vxworks系统的启动失败;但是在某些特殊应用场合中针对操作系统的启动时间和稳定性要求非常严格,要求在5秒以内,现有技术中的启动方法无法满足极短时间内的启动要求,以及较强兼容性下的稳定性要求。

【发明内容】

[0005]针对现有技术中存在的问题,本发明提供一种基于X86平台Vxworks操作系统的快速启动优化方法,能够极大的缩短Vxworks操作系统的启动速度,并且避免了由于主板和硬盘兼容性导致的系统启动失败的问题。[0006]本发明是通过以下技术方案来实现:
[0007]本发明所述方法包括如下步骤,
[0008]I) BIOS 执行步骤;
[0009]计算机加电开机后依次进行POST,初始化设置,执行常驻程序,调用系统中的INT19文件启动自举程序;初始化设置包括枚举设备,寄存器初始化,分配中断、IO端口、DMA资源和系统设置;
[0010]启动自举程序后直接读取系统中的Vxworks文件,读取到Vxworks文件后对Vxworks文件进行解析,判断Vxworks文件是否为ELF格式,不是ELF格式则判断为错误的Vxworks文件,并且提示非正确的Vxworks系统文件,并通过系统自带的Tornado工具生成正确的Vxworks系统文件重新进行启动自举程序;是ELF格式则将计算机运行模式从实模式切换到保护模式,并将解析后的Vxworks文件中的数据和代码分别加载到指定的内存地址中;
[0011]2) Vxworks加载启动步骤;
[0012]在步骤I)中数据和代码加载完毕后跳转到ELF格式文件头对应的内存地址e_entry处开始执行,直接加载启动Vxworks操作系统,执行应用程序。
[0013]优选的,步骤I)中判断Vxworks文件是否为ELF格式时,判断被检测的Vxworks文件头的4个字节是否为ELF格式头0x464c457f,是则为ELF格式,否则判断为错误的Vxworks 文件。
[0014]优选的,POST过程中屏蔽检测内存部分;举设备中去除无需初始化的硬件初始化,系统设置中去除BIOS界面设置步骤。
[0015]进一步,Vxworks系统为Vxworks5.5系统时,初始化设置中还包括采用自适应模式的网络初始化步骤。
[0016]再进一步,初始化设置中还包括对IDE磁盘驱动的初始化,其包括如下步骤:
[0017]a.通过IDE控制器的厂商ID和设备ID,利用Vxworks5.5系统中PCI函数PciFindDevice查找出总线号、设备号和功能号,再根据总线号、设备号和功能号读出IDE控制器的寄存器基地址和中断号;
[0018]b.通过步骤a读取到寄存器基地址来初始化DMA引擎,获取IDE控制器支持的DMA模式;
[0019]c.完成对IDE控制器支持的DMA模式的获取后,通过VXWorks5.5系统中经修改后IDE驱动程序实现对IDE的初始化;所述的修改包括:(Cl)添加对IDE控制器进行DMA操作的函数,添加的函数包括DMA复位函数、DMA模式获取函数、DMA模式设置函数、启动和停止DMA引擎函数;(c2)将intConnect函数修改为pciIntConnect函数;(c3)修改BSP配置文件支持DMA模式,包括修改sysLib.c文件,在sysHwInit O中调用sysAtaSetup O ,以及修改config.h文件,将config.h文件中的PIO字段替换为DMA字段。
[0020]与现有技术相比,本发明具有以下有益的技术效果:
[0021]本发明改变有现有技术中通过bootrom来加载Vxworks系统的方法,在BIOS执行步骤中,利用对INT19文件调用方式的改变,将启动自举程序内通过bootrom引导来加载Vxworks系统的过程改变为直接对磁盘上Vxworks文件的读取过程,优化了 BIOS执行的效率,将现有技术总的5?10秒缩短为Is左右,从而大幅减少了 Vxworks系统启动的时间;一方面不仅解决了由于某些主板和硬盘兼容性问题而导致bootrom引导时读取bootrom失败,最终导致系统启动失败的问题,而且解决了启动bootrom需要将磁盘必须分区为FAT16格式的问题,提高了适应能力,扩大应用范围。通过相关技术的应用,在X86平台上加载Vxworks系统可以从上电到进入到Vxworks系统并加载执行应用程序由原来的20-30秒缩短为3秒,效果明显,操作简单,并且非常实用,能够满足了一些对系统启动时间要求极为严格的系统环境,同时极大的提高了系统启动的安全性和可靠性。
[0022]进一步的,通过简单的对ELF格式头的对比,从而实现了对Vxworks文件的高效判断,缩短了系统加载启动的时间。
[0023]进一步的,通过屏蔽初始化过程中对内存的检测部分,以及去除不需要的硬件初始化过程和BIOS设置界面的部分,从而提高了启动时间的利用效率,减少了初始化中内存检测和枚举设备的时间,大幅提闻了 BIOS的执行效率。
[0024]进一步的,本发明中通过修改网络驱动程序为自适应模式,同时默认物理上已经连接好,从而能够实现对网络初始化过程,避免了因网络初始化过程中检测PHY,并根据双方的连接速度再重新对网络芯片中的PHY进行初始化耗费的时间,同时节省了对Vxworks系统中对物理连接检测并等待所耗费的时间。
[0025]进一步的,通过在初始化设置中对IDE磁盘驱动时实现在Vxworks系统下的DMA模式传输,提高了数据的传输速度,增强了总线的数据吞吐量,从而提高了 Vxworks系统的启动速度,实现了对启动方法的进一步优化。
【专利附图】

【附图说明】
[0026]图1为现有技术中Vxworks系统启动方法的流程框图。
[0027]图2为本发明中所述的Vxworks系统的快速启动优化方法的流程框图。
[0028]图3为Vxworks5.5系统中IDE驱动流程框图。
【具体实施方式】
[0029]下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。
[0030]如图2所示,本发明从以下优化方法来达到Vxworks启动时间大为缩短的目的。主要是通过优化BIOS加载Vxworks方法来实现减少,通过对图1和图2的对比就可以发现改造BIOS的关键部分在于BIOS执行启动自举程序这一步,在优化前,也就是现有技术中自举程序读取磁盘MBR (Master Boot Record,主引导记录)信息后,通过bootrom引导来加载Vxworks系统。而优化后则是直接读取磁盘上的Vxworks文件,中间省去了 bootrom引导部分。具体实施如下:
[0031]优化INT19中断功能。如图2所示,优化前的自举程序的执行即为执行中断INT19的中断服务例程INT19_VECT的过程,其主要功能为读取操作系统启动块,将其读入到内存0000:7C00h,并跳转至此处执行。优化是修改这部分代码,将读取MBR转为读取磁盘上的Vxworks文件。读取到Vxworks文件后首先对Vxworks文件是否有效进行判断,判断的方法是检测文件头4个字节是否是0x464c457f (ELF格式头),不是ELF格式则判断为错误的Vxworks文件,并且提示非正确的Vxworks系统文件,并通过系统自带的Tornado工具生成正确的Vxworks系统文件重新进行启动自举程序;是ELF格式则对ELF格式进行解析,解析后首先需要将此时计算机运行的模式从实模式切换到保护模式,因为实模式只支持IMB内存大小,而不能访问其余的扩展内存,所以需要切换到保护模式。切换模式后就可以将数据段和代码段分别加载到指定的内存地址中。加载完后跳转到ELF文件头的地址e_entry处开始执行,这样就可以直接启动vxworks操作系统。从而省掉了 bootrom这个引导过程,大大地加快了启动时间。通过上述步骤,BIOS的执行效率大大提高,由原先的5?IOs缩短为Is左右。
[0032]优选的,在BIOS执行中的POST阶段,去掉BIOS检测扩展内存部分,简单来说可以通过修改源码屏蔽掉检测内存部分;去掉BIOS设置界面部分代码来减少BIOS运行时间;该部分代码量不少,所以通过源码去掉该部分意义重大;修改源码去除掉枚举设备阶段的某些不需要的硬件初始化。例如某些定制系统中不需要USB功能,那么就可以在此去除,目的是减少枚举设备的时间;采用本发明所述的优化方法之后,启动时间将由原来的20-30秒缩短为3秒。
[0033]当Vxworks系统为Vxworks5.5系统时,通过针对vxworks5.5系统中影响启动速度的关键部分进行优化。
[0034](I)网络驱动优化
[0035]一般情况下,网络初始化过程中会检测PHY,根据双方的连接速度再重新对网络芯片中的PHY进行初始化,另外驱动程序通常会检测物理上是否连接,如果此时网络没有进行物理连接,那么驱动程序会延时等待以期待物理上连接。所以这个对Vxworks系统启动速度影响很大。本发明中提出的解决方法是,修改驱动程序为自适应模式,同时不在检测物理上是否连接,也就是说认为物理上已经连接,这样就达到网络优化的目的,从而减少网络驱动对Vxworks系统启动速度的延迟。
[0036](2) IDE磁盘驱动优化
[0037]IDE (Integrated Drive Electronics,即电子集成控制器)接口有两种传输方式,一个是 PIO (Programming 1/0)模式,另一个是 DMA (Direct Memory Access)模式。PIO模式又分为0-4个模式,即为P100-P104。P104最快速度也才16.6MB/s, ΡΙ00为3.3MB/
S。而DMA模式下,当今Intel比较流行的芯片组基本都支持Ultra DMA33/66,或者说是ATA100,最高速度可以达到lOOMB/s,并且占用资源系统资源少。不过比较流行的windows和Iinux系统都支持DMA模式,而VxWorks5.5系统下目前对IDE总线驱动只支持PIO模式,对Vxworks5.5系统启动速度会产生不利影响。
[0038]IDE控制器都是PCI接口设备,所以在初始化的时候将它视为PCI设备。初始化流程如图3所不。
[0039]a.首先通过IDE控制器的厂商ID和设备ID,利用vxworks5.5PCI函数PciFindDevice查找出总线号、设备号和功能号,在根据总线号、设备号和功能号读出IDE控制器的寄存器基地址和中断号。方法如下:
[0040]pciFindDevice(0x8086, 0x2828, O, &bus, &dev, &func);
[0041]pciConfiglnLong(bus, dev, func, 0x20, &ioaddr);
[0042]pciConf iglnLong (bus, dev, func, 0x3c, &irq);
[0043]b.通过步骤a读取到的寄存器基地址来初始化DMA引擎,获取IDE控制器支持的DMA模式。
[0044]c.在获取IDE控制器的DMA模式后,修改Vxworks5.5自带的IDE驱动程序。
[0045]Cl)添加相关对IDE控制器进行DMA操作的函数,主要有DMA复位、DMA模式获取、DMA模式设置、启动和停止DMA引擎。
[0046]c2)将 intConnect 函数该为 pcilntConnect 函数。
[0047]c3)配置BSP和修改BSP相关文件。
[0048]c3.1)修改 sysLib.c 文件,在 sysHwInit ()中调用 sysAtaSetup ();
[0049]c3.2)修改 config.h 文件,
[0050]将#define ATA0_C0NFIG(ATA_GEO_CURRENT|ATA_P10_AUT0|\ATA_BITS_16|ATA_P10_MULTI)
[0051]修改为
[0052]#define ATA0_C0NFIG(ATA_GEO_CURRENT|ATA_DMA_AUT0|ATA_BITS_16|ATA_DMA_MULTI)
[0053]将#define ATA1_C0NFIG(ATA_GEO_CURRENT|ATA_P10_AUT0|\ATA_BITS_16|ATA_P10_MULTI)
[0054]修改为
[0055]#define ATA1_C0NFIG(ATA_GEO_CURRENT|ATA_DMA_AUT0|ATA_BITS_16|ATA_DMA_MULTI)
[0056]通过IDE磁盘驱动优化后,不仅使用同一片IDE电子盘,从原先存储速度2?3MB/s提高到了约75MB/s ;而且通过提高硬盘读写速度,从而加快了 Vxworks5.5系统的启动时间。
【权利要求】
1.一种基于X86平台Vxworks操作系统的快速启动优化方法,其特征在于,包括如下步骤, 1)BIOS执行步骤; 计算机加电开机后依次进行POST,初始化设置,执行常驻程序,调用系统中的INT19文件启动自举程序;初始化设置包括枚举设备,寄存器初始化,分配中断、IO端口、DMA资源和系统设置; 启动自举程序后直接读取系统中的Vxworks文件,读取到Vxworks文件后对Vxworks文件进行解析,判断Vxworks文件是否为ELF格式,不是ELF格式则判断为错误的Vxworks文件,并且提示非正确的Vxworks系统文件,并通过系统自带的Tornado工具生成正确的Vxworks系统文件重新进行启动自举程序;是ELF格式则将计算机运行模式从实模式切换到保护模式,并将解析后的Vxworks文件中的数据和代码分别加载到指定的内存地址中; 2)Vxworks加载启动步骤; 在步骤I)中数据和代码加载完毕后跳转到ELF格式文件头对应的内存地址gentry处开始执行,直接加载启动Vxworks操作系统,执行应用程序。
2.根据权利要求1所述的一种基于X86平台Vxworks操作系统的快速启动优化方法,其特征在于,步骤I)中判断Vxworks文件是否为ELF格式时,判断被检测的Vxworks文件头的4个字节是否为ELF格式头0x464c457f,是则为ELF格式,否则判断为错误的Vxworks文件。
3.根据权利要求1所述的一种基于X86平台Vxworks操作系统的快速启动优化方法,其特征在于,POST过程中屏蔽检测内存部分。
4.根据权利要求1所述的一种基于X86平台Vxworks操作系统的快速启动优化方法,其特征在于,枚举设备中去除无需初始化的硬件初始化,系统设置中去除BIOS界面设置步骤。
5.根据权利要求1-4中任意一项所述的一种基于X86平台Vxworks操作系统的快速启动优化方法,其特征在于,所述的Vxworks系统为Vxworks5.5系统时,初始化设置中还包括采用自适应模式的网络初始化步骤。
6.根据权利要求5所述的一种基于X86平台Vxworks操作系统的快速启动优化方法,其特征在于,所述的初始化设置中还包括对IDE磁盘驱动的初始化,其包括如下步骤: a.通过IDE控制器的厂商ID和设备ID,利用Vxworks5.5系统中PCI函数PciFindDevice查找出总线号、设备号和功能号,再根据总线号、设备号和功能号读出IDE控制器的寄存器基地址和中断号; b.通过步骤a读取到寄存器基地址来初始化DMA引擎,获取IDE控制器支持的DMA模式; c.完成对IDE控制器支持的DMA模式的获取后,通过VXWorks5.5系统中经修改后IDE驱动程序实现对IDE的初始化;所述的修改包括:(Cl)添加对IDE控制器进行DMA操作的函数,添加的函数包括DMA复位函数、DMA模式获取函数、DMA模式设置函数、启动和停止DMA引擎函数;(c2)将intConnect函数修改为pciIntConnect函数;(c3)修改BSP配置文件支持DMA模式,包括修改sysLib.c文件,在sysHwInit O中调用sysAtaSetup O ,以及修改config.h文件,将config.h文件中的PIO字段替换为DMA字段。
【文档编号】G06F9/445GK103942069SQ201410128603
【公开日】2014年7月23日 申请日期:2014年4月1日 优先权日:2014年4月1日
【发明者】蔡本华 申请人:西安睿控创合电子科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1