一种智能嵌入式设备多操作系统切换方法

xiaoxiao2020-10-23  11

一种智能嵌入式设备多操作系统切换方法
【技术领域】
[0001]本发明涉及一种智能嵌入式设备多操作系统切换方法,属于计算机系统技术领域。
【背景技术】
[0002]智能嵌入式设备如智能手机、平板电脑等,因其具有轻薄、便携等特点获得了快速普及。通常一台智能嵌入式设备只能运行一类操作系统,而各操作系统功能偏向均有所区另lj,如Android、1S主要侧重于娱乐,Windows则更加适合办公。业界为了实现多类型操作系统在智能嵌入式设备上运行,通常采用在引导启动程序中添加用户选择菜单,获取用户选择参数后选择性启动操作系统的方法。引导加载程序为操作系统启动前负责实现操作系统引导启动的简单程序,基于此程序实现的多操作系统切换方案受到引导加载程序的制约,其可扩展性、可管理性均十分有限。

【发明内容】

[0003]为了解决现有技术的不足,本发明提供了一种智能嵌入式设备多操作系统切换方法,解决了基于引导加载程序开发的多操作系统传统切换方案可扩展性、可管理性不强的冋题。
[0004]本发明为解决其技术问题所采用的技术方案是:提供了一种智能嵌入式设备多操作系统切换方法,包括以下步骤:
[0005]步骤1:将存储器分区,存储器地址依次划分为U-Boot分区与系统分区,将各操作系统的镜像文件依次存放在系统分区内,且各操作系统的镜像文件间设有安全间隔,根据各操作系统的镜像文件的存储地址建立系统镜像文件分区表,根据该系统镜像文件分区表在U-Boot分区中为各操作系统分别建立地址映射宏定义;所述地址映射宏定义包括NandFlash地址0S_ADDR、镜像文件大小0S_LEN、镜像文件位的内存地址0S_RAM_ADDR及跳转地址 0S_RAM_B00T_0FF ;
[0006]步骤2:在U-Boot分区中添加EEPROM标志位操作函数,并定义各操作系统的标志位以及切换管理系统标志位;
[0007]步骤3:在U-Boot分区中分别添加各个操作系统的加载启动函数,各加载启动函数用于将Nand Flash地址处的镜像文件加载至内存地址0S_RAM_ADDR中,并跳转至内存地址0S_RAM_ADDR启动操作系统内核;
[0008]步骤4:在QT环境设置操作系统启动菜单,所述操作系统启动菜单用于选择不同的操作系统;
[0009]步骤5:在操作系统启动菜单中选择一个操作系统来启动,U-Boot调用EEPROM标志位操作函数读取该操作系统的标志位,调用该标志位对应的操作系统的加载启动函数,启动操作系统。
[0010]步骤5中,启动操作系统前,调用EEPROM标志位操作函数,将标志位改写为切换管理系统标志位。
[0011]本发明基于其技术方案所具有的有益效果在于:
[0012](I)本发明通过使用切换管理系统对智能嵌入式设备多类型操作系统按照启动逻辑进行统一的分区、引导操作,使得本方法能够方便的完成多类型操作系统的切换;
[0013](2)本发明将各操作系统的镜像文件依次存放在存储器的系统分区内并设置安全间隔,根据各操作系统的镜像文件的存储地址建立系统镜像文件分区表,在U-Boot分区中根据系统镜像文件分区表为各操作系统分别建立地址映射宏定义,并为各操作系统分别添加加载启动函数,定义与各操作系统对应的标志位,可以降低传统“刷机”操作过程中的故障率,保证多类型操作系统切换的稳定性;
[0014](3)本发明在QT环境设置操作系统启动菜单,可提供更加人性化交互界面以及扩展性较强的切换系统,弥补基于引导加载程序开发的选择菜单交互体验不强与可扩展性差的缺点。
【附图说明】
[0015]图1是实现本发明所述方法的系统结构示意图。
[0016]图2是本发明所述方法的流程图。
[0017]图3是本发明实施例存储器地址分区表。
[0018]图4是操作系统启动菜单界面示意图。
【具体实施方式】
[0019]下面结合附图和实施例对本发明作进一步说明。
[0020]本发明提供了一种智能嵌入式设备多操作系统切换方法,参照图2,包括以下步骤:
[0021]步骤1:将存储器分区,存储器地址依次划分为U-Boot分区与系统分区,将各操作系统的镜像文件依次存放在系统分区内,且各操作系统的镜像文件间设有安全间隔,根据各操作系统的镜像文件的存储地址建立系统镜像文件分区表,根据该系统镜像文件分区表在U-Boot分区中为各操作系统分别建立地址映射宏定义;所述地址映射宏定义包括NandFlash地址0S_ADDR、镜像文件大小0S_LEN、镜像文件位的内存地址0S_RAM_ADDR及跳转地址 0S_RAM_B00T_0FF ;
[0022]步骤2:在U-Boot分区中添加EEPROM标志位操作函数,并定义各操作系统的标志位以及切换管理系统标志位;
[0023]步骤3:在U-Boot分区中分别添加各个操作系统的加载启动函数,各加载启动函数用于将Nand Flash地址处的镜像文件加载至内存地址0S_RAM_ADDR中,并跳转至内存地址0S_RAM_ADDR启动操作系统内核;
[0024]步骤4:在QT环境设置操作系统启动菜单,所述操作系统启动菜单用于选择不同的操作系统;
[0025]步骤5:在操作系统启动菜单中选择一个操作系统来启动,U-Boot调用EEPROM标志位操作函数读取该操作系统的标志位,调用该标志位对应的操作系统的加载启动函数,启动操作系统。
[0026]步骤5中,启动操作系统前,调用EEPROM标志位操作函数,将标志位改写为切换管理系统标志位。
[0027]利用本发明的智能嵌入式设备多操作系统切换方法可以应用于如图1所示的基于Linux的智能嵌入式设备。智能嵌入式设备硬件配置为:FriendlyARM公司Mini6410开发板(Samsung S3C6410 处理器,ARM1176JZF-S 内核,主频 533MHz/667MHz,IGB Nand Flash存储器,256B IIC接口 EEPROM存储器)
[0028]智能嵌入式设备软件配置:
[0029]Linux QT (内核版本:2.6.38,文件系统使用VFS) ,Android 2.3.4 (文件系统使用VFS), Windows CE 6.0, U-Boot 1.1.5。
[0030]第一步,将存储器分区,如图3所示,从Nand Flash地址O开始的256KB存储区域存放U-Boot程序,在U-Boot分区后存储空间为系统分区,以安全间隔存储Windows CE、切换管理系统、Linux、Android系统内核及文件系统镜像文 件,存放顺序并无严格要求。根据各操作系统的镜像文件的存储地址建立系统镜像文件分区表,根据系统镜像文件分区表在U-Boot分区中为各操作系统分别建立地址映射宏定义,每类操作系统地址映射宏定义主要包括:Nand Flash地址0S_ADDR、镜像文件大小0S_LEN、镜像文件位的内存地址0S_RAM_ADDR 及跳转地址 0S_RAM_B00T_0FF。
[0031]第二步,在U-Boot分区中编写EEPROM操作函数,其中包括:其一,打开源码include/configs/mini6410.hIIC 接口驱动宏定义:CFG_CMD_I2C ;其二,添加 EEPROM 存储器宏定义CFG_I2C_EEPR0M_ADDR地址0x50 ;经过上述修改后,即可使用EEPROM操作函数eeprom_read (dev_addr, off, os_f lag, cnt)、eeprom_write (dev_addr, off, os_f lag, cnt)。定义各操作系统标志位,标志位占用一个字节,其中0x00对应切换管理系统,OxOl对应Windows CE,0x02对应Linux QT系统,0x03对应Android系统,标志位存放于EEPROM存储器首字节中。
[0032]第三步:U-Boot中添加各操作系统加载启动函数,各加载启动函数通过调用U-Boot加载命令按照第一步中定义的Nand Flash地址将镜像文件加载至0S_RAM_ADDR内存运行地址中,并跳转至内存地址0S_RAM_ADDR启动操作系统内核。
[0033]其中WindowsCE 加载启动函数为 void boot_wince (int exe_f lag),exe_flag为启动标志位,决定是否执行启动动作,操作系统加载及启动通过执行char set_wince_bootcmd[]字符串定义命令实现,〃nand read.1〃MK_STR(WINCE_RAM_ADDR) 〃〃MK_STR(WINCE_ADDR)〃〃MK_STR(WINCE_LEN)〃.:'通过 〃bootm〃MK_STR(WINCE_RAM_B00T_0FF) 〃 ;〃命令U-Boot跳转至Windows CE内核入口启动操作系统。
[0034]Android 启动函数为 void boot_android(int exe_flag) ,Android 启动前需要通过char set_android_bootargs[]设置环境变量,其中包括指定VFS文件系统类型、控制台接口及IXD类型等参数,配置完成后,使用char set_android_bootcmd[]定义Android启动动作,Linux启动函数void boot_linux (int exe_flag)、切换管理系统启动函数v1dboot_manageos (int exe_f lag)与 Android 启动函数基本保持一致。
[0035]第四步,在QT环境设置系统启动菜单,如图4所示为系统启动菜单的界面示意图,所述系统启动菜单为用户提供Windows CE、Linux QT及Android三个实例操作系统选择按钮,用户可以在触摸LCD直接选择,用户选择实例操作系统后,EEPROM标志位被改写为对应操作系统,设备重启,U-Boot引导启动实例操作系统。
[0036]第五步,在操作系统启动菜单中选择一个操作系统来启动,U-Boot执行包含启动逻辑的加载启动函数MyBootOS O,其中,MyBootOS O函数通过eeprom_read (dev_addr, off, os_flag, cnt)函数获取标志位,调用switch语句,根据第二步设定的操作系统映射关系,执行对应操作系统启动函数,标志位为0x00、0x01、0x02、0x03时,分别执行boot_manageos (I)、boot_wince (I)、boot_linux (I)以及 boot_android (I)函数。执行函数前,调用eeprom_write (dev_addr, off, os_flag, cnt)函数将标志位置为0x00,使得以后设备重启后启动系统启动菜单。
【主权项】
1.一种智能嵌入式设备多操作系统切换方法,其特征在于包括以下步骤: 步骤1:将存储器分区,存储器地址依次划分为U-Boot分区与系统分区,将各操作系统的镜像文件依次存放在系统分区内,且各操作系统的镜像文件间设有安全间隔,根据各操作系统的镜像文件的存储地址建立系统镜像文件分区表,根据该系统镜像文件分区表在U-Boot分区中为各操作系统分别建立地址映射宏定义;所述地址映射宏定义包括NandFlash地址0S_ADDR、镜像文件大小0S_LEN、镜像文件位的内存地址OS_RAM_ADDR及跳转地址 0S_RAM_B00T_0FF ; 步骤2:在U-Boot分区中添加EEPROM标志位操作函数,并定义各操作系统的标志位以及切换管理系统标志位; 步骤3:在U-Boot分区中分别添加各个操作系统的加载启动函数,各加载启动函数用于将Nand Flash地址处的镜像文件加载至内存地址OS_RAM_ADDR中,并跳转至内存地址OS_RAM_ADDR启动操作系统内核; 步骤4:在QT环境设置操作系统启动菜单,所述操作系统启动菜单用于选择不同的操作系统; 步骤5:在操作系统启动菜单中选择一个操作系统来启动,U-Boot调用EEPROM标志位操作函数读取该操作系统的标志位,调用该标志位对应的操作系统的加载启动函数,启动操作系统。2.根据权利要求1所述的智能嵌入式设备多操作系统切换方法,其特征在于:步骤5中,启动操作系统前,调用EEPROM标志位操作函数,将标志位改写为切换管理系统标志位。
【专利摘要】本发明公开了一种在智能嵌入式设备实现多操作系统选择性启动的方法,首先在存储器为用户划分多操作系统分区,在U-Boot中添加EEPROM标志位操作函数以及针对各操作系统编写的加载启动函数,在QT环境设置操作系统启动菜单,在操作系统启动菜单中选择一个操作系统来启动,U-Boot调用EEPROM标志位操作函数读取该操作系统的标志位,调用该标志位对应的操作系统的加载启动函数,启动操作系统。本发明中,切换管理系统独立于U-Boot,弥补了U-Boot无法全方位管理硬件的缺点,可提供更加全面的交互功能,方便进行功能扩展。
【IPC分类】G06F9/48, G06F9/445
【公开号】CN104899091
【申请号】CN201510383431
【发明人】熊永华, 吴敏, 郭述帆
【申请人】中国地质大学(武汉)
【公开日】2015年9月9日
【申请日】2015年7月2日

最新回复(0)