一种实现VxWorks操作系统快速启动的方法及装置与流程

    专利2022-07-08  129

    本发明属于嵌入式系统领域,特别涉及一种实现vxworks操作系统快速启动的方法及装置。
    背景技术
    ::vxworks以其良好的可靠性和卓越的实时性被广泛的应用在通讯、军事、航空航天等实时性要求极高的领域中。采用freescalempc8377处理器搭载vxworks操作系统其启动时间一般为20s,甚至更长。虽然相比许多嵌入式操作系统启动时间几分钟来说已经非常快了,但在许多应用场景下,20秒的系统启动时间还是太长了。为了满足一些需要快速启动的特定环境及场合的需求,比如武器系统。《一种基于x86平台vxworks操作系统的快速启动优化方法》,该方法优化bios,并直接读取ide磁盘中的vxworks镜像,同时使用dma的方式提升vxworks的读取速度。该方法vxworks镜像放置于ide磁盘中,ide磁盘的初始化速度会影响启动速度。同时该方法仅在启动方式上进行优化,但未对启动的过程比如内存、系统组件等进行速度优化。《一种基于mpc5200b的vxworks系统快速启动方法》,该方法通过使用bat映射、配置网络phy、优化flash提升系统启动速度,同时在经典的bootrom vxworks的启动方式下,增加了映射flash文件系统的操作,形成了bootrom 映射flash文件系统 直接启动vxworks的启动方式。但该方法本质上依然沿用bootrom vxworks的启动方式,存在于bootrom和vxworks镜像的重复初始化部分依然影响启动速度。《x86飞控计算机快速启动方法》,该方法侧重于通过区分紧急和非紧急任务,将紧急任务编译进vxworks_rom镜像一起启动,而非紧急任务在完成系统启动后再次动态加载,并通过这种方式压缩镜像使vxworks_rom的镜像小于1m,并存放于启动盘中从而提升启动速度。这种方法对vxworks_rom镜像大小有严格的限制,对于较大内核无法实现启动。同时系统存在启动后的二次动态加载,对于需要全部任务一次性启动的需求不能很好的满足。技术实现要素:本发明的目的在于解决mpc8377处理器搭载vxworks操作系统启动时间长的问题,提高启动速度,使得mpc8377处理器和vxworks操作系统能够更好的应用于对启动速度有需求的场景。实现本发明目的的技术解决方案为:一种实现vxworks操作系统快速启动的方法,所述方法包括以下内容:(1)采用vxworks的vxworks_rom.bin内核进行镜像启动;(2)根据实际功能需求裁剪内核组件;(3)使用fpga扩展外部接口;(4)使用块地址转换的方式映射内存;(5)优化flash读写时序;(6)取消内存清零。一种实现vxworks操作系统快速启动的装置,所述装置包括:处理模块,用于执行存放在flash中的vxworks系统程序,实现所述vxworks_rom.bin内核的启动;用于通过与fpga通讯使得装置可通过各种扩展接口与外部机进行数据交换;用于完成fpga和flash的地址向内存空间映射;还用于优化flash读写时序并搬移vxworks_rom.bin内核到内存,跳过内存清零,执行vxworks操作系统剩余操作;fpga扩展模块,用于扩展处理模块的接口,实现装置与外部设备的数据交换;数据存储模块,用于存储vxworks_rom.bin内核程序和实现从0xfff00000跳转到0xffa00000功能的跳转程序,并划分部分空间作为整个装置的用户存储空间;内存模块,用于支撑处理模块搬迁vxworks_rom.bin内核及各种地址映射,支撑cpu完成vxworks系统程序运行;网络模块,用于辅助处理模块实现网络通讯功能。本发明与现有技术相比,其显著优点为:1)采用无需bootrom引导的vxworks_rom.bin内核即rom型镜像提升启动速度;2)根据功能需求裁剪组件,使得内核小型化,轻量化,达到在满足基本功能需求的同时尽可能缩短启动时间;3)使用fpga扩展外部接口,同时完成特定功能的固化,可以免去cpu的在启动中对其接口进行操作,在丰富装置接口的同时还能节省启动时间;4)使用块映射的方式能大大减少页表映射的快表大小,提升内存映射速度,从而加快启动速度;同时在尽量使用块映射的方法下,对于使用页表映射的方式的内存,在满足装置的前提下减小内存映射大小也能提升内存映射速度,加快启动速度;5)优化flash读写时序,可以缩短vxworks内核镜像从norflash拷贝到内存的时间,从而系统提高启动速度;6)去除不是必要步骤的内存清零,加快了启动速度;7)使得系统启动时间缩短至0.9s,满足特定场景对快速启动的需求,使得freescalempc8377处理器以及vxworks可以应用到对启动速度有要求的场景,扩展了使用范围。下面结合附图对本发明作进一步详细描述。附图说明图1为一个实施例中实现vxworks操作系统快速启动的装置的结构框图。图2为一个实施例中使用vxworks镜像的启动流程图。图3为一个实施例中使用vxworks_rom.bin镜像的启动流程图。图4为一个实施例中本装置norflash的存储空间分配图。图5为一个实施例中地址跳转实现vxworks_rom.bin系统启动流程图。图6为一个实施例中optionregisters(orn)寄存器位定义图。图7为一个实施例中存在内存清零时,内核的搬迁启动流程图。图8为一个实施例中取消内存清零后,内核的搬迁启动流程图。具体实施方式为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。在一个实施例中,提供了一种实现vxworks操作系统快速启动的方法,所述方法包括以下内容:(1)采用vxworks的vxworks_rom.bin内核进行镜像启动;进一步地,在启动之前,需要在0xfff00000的地址进行地址跳转,直接跳转到vxworks_rom.bin内核存放位置。vxworks镜像称为vxworksapplicationimage,是系统启动实际运行的程序,vxworks操作系统有两类镜像:下载型镜像(loadableimages):此时bootrom被烧入norflash,由bootrom引导通过网口或串口等方式将内核镜像下载到内存中运行。rom型镜像:将操作系统镜像直接烧入norflash并可以直接从norflash启动运行,无需借助bootrom。下载型镜像启动作为常用的vxworks启动方式需要先运行bootrom对cpu及加载内核所必须的硬件进行基本的初始化,并最终通过网络下载或者读取存储于flash中的vxworks镜像,开始运行vxworks操作系统。操作系统开始运行后,还会对cpu及所有硬件进行基本的初始化,由于下载型镜像的启动方式存在不可避免的重复的操作,导致它的启动效率有所下降。参照图2,图2为使用vxworks镜像的启动流程图。本发明采用无需bootrom引导的vxworks_rom.bin内核即rom型镜像提升启动速度。vxworks_rom.bin镜像作为可以自启动内核,无需bootrom初始化及下载,其本身就可以实现自举启动。其启动流程包括初始化cpu、初始化硬件、初始化内核、创建根任务,加载应用启动应用程序。在所有的启动流程中,不包含下载型镜像对bootrom的启动流程。参照图3,图3为使用vxworks_rom.bin镜像的启动流程图。虽然vxworks_rom.bin镜像有其启动速度上的优势,但使用vxworks_rom.bin启动存在一个问题,由于处理器mpc8377的启动首地址为0xfff00000,而从0xfff00000到地址空间的末尾0xffffffff只剩下1m空间。在下载型镜像的启动中,这段空间是用来存放引导用的bootrom的,而bootrom的存储一般1m已经足够,但若使用vxworks_rom.bin镜像启动,这1m空间需要存放vxworks_rom.bin,此时1m的空间就明显不够。所以,在采用vxworks_rom.bin镜像启动的基础上,还需要在0xfff00000的地址实现地址跳转,使得vxworks_rom.bin可以存放在其它地址,比如本发明使用地址0xffa00000,这样就有从0xffa00000到0xfff00000就有5m的空间来存放vxworks_rom.bin,满足vxworks_rom.bin存储需求,剩下的1m用来存放跳转程序。参照图4,图4为norflash的存储空间分配图。使用该跳转存储方案的启动流程参照图5。图5为地址跳转实现vxworks_rom.bin系统启动流程图。(2)根据实际功能需求裁剪内核组件;vxworks作为高性能的实时系统,其最重要的特点之一就是可裁剪性,组件技术使得构建vxworks更加高效,针对特定场景应用,可以对vxwoks的组件进行有计划的裁剪。越小的内核其需要执行的指令就会越少,同时,从norflash拷贝到内存时也会更块,启动所需时间就会越少。因此对内核组件进行裁剪,对缩短启动时间是有帮助的。但并不是说内核越小越好,因为我们的目的并不是启动操作系统,而是要在内核启动后执行特定的任务,完成特定的功能,因此一个裸内核启动并没有任何意义,即使某些功能可以在启动后动态加载,但动态加载同样要占用时间。所以,对内核的裁剪要在满足使用需求的同时,尽可能裁剪不必要的组件,从而达到在满足基本功能需求的同时尽可能缩短启动时间。本发明中对vxworks的系统裁剪主要涉及一些组件的显示功能,bootloader的功能及ata功能,cpu的电源管理,ftp客户端等功能,其实现方式为直接在配置文件中将相关的宏定义undef。示例代码如下:#undefinclude_hook_show#undefinclude_hw_fp_show#undefinclude_edr_sysdbg_flag#undefinclude_timex#undefinclude_exc_show#undefinclude_show_routines#undefinclude_ipaip_global_configs#undefinclude_task_vars#undefinclude_xbd_trans#undefinclude_ipproxyarp#undefinclude_show_routines#undefinclude_boot_app#undefinclude_ipwrap_ipproto#undefinclude_mem_show#undefinclude_vm_show#undefinclude_msg_q_show#undefinclude_sem_show#undefinclude_stdio_show#undefinclude_task_hooks_show#undefinclude_watchdogs_show#undefinclude_sigevent#undefinclude_posix_timer_show#undefinclude_class_show#undefinclude_ftp#undefinclude_sym_shell_cmd#undefinclude_module_shell_cmd#undeffolder_cpu_pwr_mgmt#undefinclude_cpu_pwr_mgmt#undefinclude_cpu_light_pwr_mgr#undefinclude_ipaip#undefinclude_boot_ata_loader(3)使用fpga扩展外部接口;使用fpga扩展外部接口,例如图1所示,fpga实现6路can通讯接口以及10路rs422接口,由于fpga无需操作系统,没有类似vxworks的启动流程,所以使用fpga扩展外部接口,同时完成特定功能的固化,可以免去cpu的在启动中对其接口进行操作,在丰富装置的接口的同时还能节省启动时间。(4)使用块地址转换的方式映射内存;这里,使用块地址转换的方式映射内存,具体判断标准为:判断外设所占地址空间的大小是否超过预设阈值,若是则选用块地址转换的方式即bat方式映射内存,否则可以采用页表式映射。这里优选地,采用freescalempc8377处理器实现块地址转换的方式。块地址转换的方式即bat方式比页表式映射(pagetableentry,pte)优先级更高,映射速度更快。bat方式更适合大块的地址映射,这样有助于减小pte的快表大小,更多的使用bat方式映射能够提升启动速度。norflash和fpga都属于较大内存映射,宜采用bat模式。其示例代码如下:uint32sysbatdesc[2*(_mmu_num_ibat _mmu_num_dbat _mmu_num_extra_ibat _mmu_num_extra_dbat)]={/*ibat0*/((flash_base_adrs_mmu_ubat_bepi_mask)|_mmu_ubat_bl_32m|_mmu_ubat_vs|_mmu_ubat_vp),((flash_base_adrs&_mmu_lbat_brpn_mask)|_mmu_lbat_pp_rw|_mmu_lbat_cache_inhibit|_mmu_lbat_guarded),/*ibat1*/((fpga_base_addr&_mmu_ubat_bepi_mask)|_mmu_ubat_bl_8m|_mmu_ubat_vs|_mmu_ubat_vp),((fpga_base_addr&_mmu_lbat_brpn_mask)|_mmu_lbat_pp_rw|_mmu_lbat_cache_inhibit|_mmu_lbat_guarded),……};页表式映射的内存映射方式,其映射所需的时间与映射的内存成正比,越大的内存映射所需的时间就越长,而使用块映射的方式能大大减少页表映射的快表大小,提升内存映射速度,从而加快启动速度。同时在尽量使用块映射的方法下,对于使用页表映射的方式的内存,在满足装置的前提下减小内存映射大小也能提升内存映射速度,加快启动速度。(5)优化flash读写时序;在系统的启动时间中,内核镜像需要从flash上搬移到内存执行,一个内核镜像一般在2m或者更大,在搬移中消耗了较多时间,主要是从flash读取内核的时间。对于powerpc构架的cpu配置optionregisters(or*),可以实现对norflash的读写时序控制。在硬件信号允许的状态下,尽可能缩短cpu访问norflash的时序,从而加快cpu对norflash的操作。当norflash的访问变快后,可以缩短vxworks内核镜像从norflash拷贝到内存的时间,从而系统提高启动速度。根据使用的norflash的性能,主要优化配置ehtr提高norflash读写速度,其or*寄存器的定义参照图6。(6)取消内存清零;在vxworks系统启动流程中,当系统完成从norflash向内存搬移的过程后,紧接着会对没有占用的内存空间进行清零。其代码示例如下:localvoidbootclear(void){filllongs((uint*)sys_mem_bottom,((uint)内存_dst_adrs-stack_save-(uint)sys_mem_bottom)/sizeof(long),0);filllongs((uint*)end,((uint)sys_mem_top-(uint)end)/sizeof(long),0);……filllongs((uint*)ram_data_adrs,((uint)sys_mem_top–(uint)ram_data_adrs)/sizeof(long),0);*(boot_line_adrs)=eos;}内存清零的工作目的是使未占用的内存空间全部赋值为0,去除内存区域不确定数据。应用程序中对内存申请使用时,会对所申请的区域进行赋值,所以在启动过程中,内存清零并不是必须的,针对快速启动的需求,可以将其去除加快了启动速度。参照图7、8,图7为存在内存清零时,内核的搬迁启动流程。图8为取消内存清零后内核的搬迁启动流程。在一个实施例中,结合图1,提供了一种实现vxworks操作系统快速启动的装置,所述装置包括:处理模块,用于执行存放在flash中的vxworks系统程序,实现所述vxworks_rom.bin内核的启动;用于通过与fpga通讯使得装置可通过各种扩展接口与外部机进行数据交换;用于完成fpga和flash的地址向内存空间映射;还用于优化flash读写时序并搬移vxworks_rom.bin内核到内存,跳过内存清零,执行vxworks操作系统剩余操作;fpga扩展模块,用于扩展处理模块的接口,实现装置与外部设备的数据交换;数据存储模块,用于存储vxworks_rom.bin内核程序和实现从0xfff00000跳转到0xffa00000功能的跳转程序,并划分部分空间作为整个装置的用户存储空间;内存模块,用于支撑处理模块搬迁vxworks_rom.bin内核及各种地址映射,支撑cpu完成vxworks系统程序运行;网络模块,用于辅助处理模块实现网络通讯功能。综上,本发明解决了采用freescalempc8377处理器搭载vxworks操作系统启动速度慢的问题,能够使得启动时间由原来的20s缩短为0.9s,使其满足在某些场景下对启动速度的严苛要求,扩展了mpc8377处理器以及vxworks的使用范围。以上所述实施例仅表达了本申请的实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。当前第1页1 2 3 当前第1页1 2 3 
    技术特征:

    1.一种实现vxworks操作系统快速启动的方法,其特征在于,所述方法包括以下内容:

    (1)采用vxworks的vxworks_rom.bin内核进行镜像启动;

    (2)根据实际功能需求裁剪内核组件;

    (3)使用fpga扩展外部接口;

    (4)使用块地址转换的方式映射内存;

    (5)优化flash读写时序;

    (6)取消内存清零。

    2.根据权利要求1所述的实现vxworks操作系统快速启动的方法,其特征在于,在所述采用vxworks的vxworks_rom.bin内核进行镜像启动之前,在0xfff00000的地址进行地址跳转,直接跳转到vxworks_rom.bin内核存放位置。

    3.根据权利要求1所述的实现vxworks操作系统快速启动的方法,其特征在于,所述使用块地址转换的方式映射内存具体基于freescalempc8377处理器实现。

    4.根据权利要求3所述的实现vxworks操作系统快速启动的方法,其特征在于,所述使用块地址转换的方式映射内存,具体判断标准为:判断外设所占地址空间的大小是否超过预设阈值,若是则选用块地址转换的方式即bat方式映射内存,否则可以采用页表式映射。

    5.根据权利要求4所述的实现vxworks操作系统快速启动的方法,其特征在于,所述优化flash读写时序,具体为:配置powerpc构架的optionregisters即or*寄存器,实现对norflash的读写时序控制,缩短cpu访问norflash的时序。

    6.根据权利要求5所述的实现vxworks操作系统快速启动的方法,其特征在于,所述取消内存清零具体为:在vxworks系统完成从norflash向内存搬移的过程后,跳过内存清零过程,执行vxworks操作系统剩余操作。

    7.一种实现vxworks操作系统快速启动的装置,其特征在于,所述装置包括:

    处理模块,用于执行存放在flash中的vxworks系统程序,实现所述vxworks_rom.bin内核的启动;用于通过与fpga通讯使得装置可通过各种扩展接口与外部机进行数据交换;用于完成fpga和flash的地址向内存空间映射;还用于优化flash读写时序并搬移vxworks_rom.bin内核到内存,跳过内存清零,执行vxworks操作系统剩余操作;

    fpga扩展模块,用于扩展处理模块的接口,实现装置与外部设备的数据交换;

    数据存储模块,用于存储vxworks_rom.bin内核程序和实现从0xfff00000跳转到0xffa00000功能的跳转程序,并划分部分空间作为整个装置的用户存储空间;

    内存模块,用于支撑处理模块搬迁vxworks_rom.bin内核及各种地址映射,支撑cpu完成vxworks系统程序运行;

    网络模块,用于辅助处理模块实现网络通讯功能。

    技术总结
    本发明公开了一种实现VxWorks操作系统快速启动的方法及装置,该装置的启动方法为在处理器上电后执行0xFFF00000位置的程序,并直接跳转到存放在0xffa00000位置的Vxworks_rom.bin的内核镜像。在内核中通过优化FLASH的读写时序,提高内核镜像从FLASH搬移到内存的速度。在内存映射方式上,对FLASH及FPGA采用BAT方式,提升内存映射速度,并跳过空闲内存清零。在内核裁剪上,裁剪非必要组件,已使得内核小型化,轻量化。本发明解决了采用Freescale MPC8377处理器搭载VxWorks操作系统启动速度慢的问题,能够使得启动时间由原来的20S缩短为0.9S,使其满足在某些场景下对启动速度的严苛要求,扩展了MPC8377处理器以及VxWorks的使用范围。

    技术研发人员:冯伟;王文俊;赵曰昶;谢文静;张中才;崔凯华;尹加豹;朱涛;王永超
    受保护的技术使用者:中国船舶重工集团公司第七一六研究所
    技术研发日:2020.12.01
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-23196.html

    最新回复(0)