在嵌入式系统中实现安全模式的方法及装置
技术领域
本发明涉及嵌入式技术领域,特别涉及一种在嵌入式系统中实现安全模式的方法及装置。
背景技术
当前嵌入式电子产品无处不在,随着技术的发展,嵌入式产品的更新换代的周期越来越短,为了满足用户的不同需求,经常需要对嵌入式产品进行升级。为了保证让用户对已购买的产品顺利升级,对嵌入式产品的可靠性和稳定性都有了较高要求。一方面用户所购产品在升级过程中可能会遇到意外掉电或故障等情况,另一方面用户在使用产品的过程也会因为各种原因导致系统损坏影响正常使用,因此保证嵌入式产品的系统坚固性显得尤为重要,在设计嵌入式产品时需要考虑给嵌入式产品增加类似Windows安全模式的功能。
众所周知,当Windows系统因各种原因无法正常启动时,可以通过安全模式进入系统,这样大大提高了系统的坚固性。但给嵌入式产品增加类似Windows安全模式的功能有其限制性:首先,在嵌入式领域,受制于软硬件方面的局限性,类似Windows安全模式可能无法运行;其次,当系统破坏严重时,如内核或文件系统结构被破坏,系统无法进入安全模式,也就无法保证系统的正常运行。
嵌入式系统的软件结构一般由引导、内核、文件系统组成,为加强系统坚固性,现有技术一般是在文件系统里面对关键文件进行备份,文件系统运行起来后,进程若发现某个文件无法读取时,转而读取备份文件。这样虽然能起到一定稳固系统作用,但有很明显的限制性。第一,若文件系统中没有备份的文件损坏时,就可能影响用户正常使用;第二:当文件系统结构或内核损坏时,系统将无法运行。当用户因上述问题无法继续正常使用嵌入式设备时,只能将设备运回原厂维修,即不友好,又增加服务成本。
发明内容
本发明提供了一种在嵌入式系统中实现安全模式的方法及其装置,能够在系统上电时根据用户选择,进入不同模式运行,运行安全模式系统或正常模式系统。当嵌入式设备发生异常故障,导致系统无法从正常模式启动时,可以选择从安全模式启动,在安全模式下引导用户恢复正常模式系统,大大提高了嵌入式设备的系统坚固性,降低了产品维护成本。
本发明的技术构思是,将所述嵌入式系统中的存储设备的存储空间划分为引导区,正常模式区和安全模式区,其中引导区存储引导数据,正常模式区存储正常模式内核和正常模式文件系统数据,安全模式区存储安全模式内核和安全模式文件系统数据;在CPU运行引导程序,加载内核之前的设定时间(2~5秒)内,CPU等待用户键码输入,若无用户特殊键码(安全模式键码)输入,则从正常模式区加载正常模式内核和正常模式文件系统,运行正常模式系统;若捕获用户输入特殊键码(安全模式键码),则响应用户要求,从安全模式区加载安全模式内核和安全模式文件系统,运行安全模式系统。
本发明的技术方案是:
一种在嵌入式系统中实现安全模式的方法,其特征在于,包括如下步骤:
1)将所述嵌入式系统的存储设备的存储空间进行分区,划分为引导区,正常模式区和安全模式区;
2)将引导、安全模式系统、正常模式系统的数据分别存入各个分区,引导区存入引导数据,正常模式区存入正常模式内核和正常模式文件系统数据,安全模式区存入安全模式内核和安全模式文件系统数据;
3)硬件系统上电,根据用户选择,从不同模式启动软件系统;所述不同模式是指安全模式系统或正常模式系统。
所述步骤1)中,将所述引导区和所述安全模式区分别设置为只读模式,将所述正常模式区设置为可读写模式。
所述步骤3)中还包括以下内容:
A,系统上电,CPU运行引导程序;
B,判断是否有安全模式键码输入,若有安全模式键码输入,则执行步骤C;若无安全模式键码输入,则执行步骤D;
C,从安全模式区加载安全模式文件系统和安全模式内核,运行安全模式系统;
D,从正常模式区加载正常模式文件系统和正常模式内核,运行正常模式系统;
所述步骤B)中,安全模式键码的输入是指,用户在硬件系统上电后设定时间内,重复输入安全模式键码。
一种在嵌入式系统中实现安全模式的装置,其特征在于,包括存储设备和键码输入设备;所述存储设备的存储空间包括引导区、正常模式区和安全模式区,引导区用于存储引导数据,正常模式区用于存储正常模式内核和正常模式文件系统数据,安全模式区用于存储安全模式内核和安全模式文件系统数据;所述键码输入设备能够输入键码,具有安全模式触发键。
所述引导区和安全模式区均为只读模式存储区,所述正常模式区为可读写模式存储区。
所述键码输入设备的安全模式触发键,用于用户在重新开机后设定时间内重复敲击,使所述嵌入式系统由安全模式启动,进入安全模式用户操作界面,引导用户恢复正常模式系统。
所述存储设备为单个或多个具有一定存储容量的非易失性存储器。
本发明的技术效果:
本发明提供的一种在嵌入式系统中实现安全模式的方法及其装置,能够在系统上电时根据用户选择,进入不同模式运行,运行安全模式系统或正常模式系统。当嵌入式设备发生异常故障,导致系统无法从正常模式启动时,可以选择从安全模式启动,在安全模式下引导用户恢复正常模式系统,解决了嵌入式操作系统突然发生异常故障时,系统无法正常启动的问题,大大提高了嵌入式设备的系统坚固性,降低了产品维护成本,并且操作简单,容易掌握。
本发明的嵌入式系统包括引导、正常模式系统和安全模式系统,其中正常模式系统包括正常模式内核和正常模式文件系统,安全模式系统包括安全模式内核和安全模式文件系统;本发明的在嵌入式系统中实现安全模式的装置,包括存储设备和键码输入设备,存储设备的存储空间划分为引导区,正常模式区和安全模式区,引导区存储引导数据,正常模式区存储正常模式内核和正常模式文件系统数据,安全模式区存储安全模式内核和安全模式文件系统数据,键码输入设备具有安全模式触发键;当所述嵌入式系统发生异常故障导致无法正常启动时,用户只需在重新开机后设定时间内重复敲击安全模式触发键,嵌入式系统就能响应用户要求,由安全模式系统启动,进入友好的用户操作界面,引导用户恢复正常模式系统。
附图说明
图1是本发明嵌入式系统的存储设备的存储空间划分的示意图;
图2是本发明的一种在嵌入式系统中实现安全模式的方法的流程图;
图3是本发明硬件系统上电后启动流程图;
图4是本发明以32兆字节NOR FLASH为实施例的存储空间地址分配图。
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明:
本发明的嵌入式系统的软件结构包括引导、正常模式系统和安全模式系统,其中正常模式系统包括正常模式内核和正常模式文件系统,安全模式系统包括安全模式内核和安全模式文件系统。
本发明的嵌入式系统的存储设备的存储空间划分为引导区,正常模式区和安全模式区,参考图1,图1示出了所述存储设备的存储空间划分图,将存储设备的存储空间划分为引导区,正常模式区和安全模式区,其中引导区用于存储引导,正常模式区用于存储正常内核和正常文件系统数据,安全模式区用于存储安全模式内核和安全模式文件系统数据。引导区和安全模式区分别设置为只读模式,正常模式区设置为可读写模式。
参考图2,图2示出了本发明的一种在嵌入式系统中实现安全模式的方法的流程框图,包括如下步骤:将所述嵌入式系统的存储设备的存储空间进行分区,划分为引导区,正常模式区和安全模式区;将引导、正常模式系统、安全模式系统数据分别存入各个分区,引导区存入引导数据,正常模式区存入正常模式内核和正常模式文件系统数据,安全模式区存入安全模式内核和安全模式文件系统数据;硬件系统上电后,根据用户的选择,从不同的模式启动软件系统,运行安全模式系统或正常模式系统。
参考图3,图3示出了硬件系统上电后的启动流程图,包括如下步骤:系统上电后,CPU运行引导程序,在加载内核之前设定时间(2~5秒)内,CPU等待用户键码输入,若无用户特殊键码(安全模式键码)输入,则从存储空间正常模式区加载内核和文件系统,运行正常模式系统;若捕获用户输入特殊键码(安全模式键码),则响应用户要求,从存储空间安全模式区加载内核和文件系统数据,运行安全模式系统。
相应的,本发明的一种在嵌入式系统中实现安全模式的装置,包括存储设备和键码输入设备;存储设备的存储空间包括引导区、正常模式区和安全模式区,引导区用于存储引导数据,正常模式区用于存储正常模式内核和正常模式文件系统数据,安全模式区用于存储安全模式内核和安全模式文件系统数据;键码输入设备(如PC键盘)能够输入键码,具有安全模式触发键,可以将键盘上的任意键定义为安全模式触发键。当嵌入式设备发生异常故障导致无法正常启动时,用户只需在重新开机后设定时间内重复敲击安全模式触发键,嵌入式系统就能响应用户要求,由安全模式启动,进入友好的用户操作界面,引导用户恢复正常模式系统。引导区和安全模式区均为只读模式存储区,正常模式区为可读写模式存储区。存储设备具有一定的存储空间,可以是存储容量较小的FLASH,也可以是存储容量较大的硬盘等等,可根据嵌入式系统实际需要选择存储容量适合的单个存储器,或选择存储容量适合的多个存储器,此时存储设备的存储容量为多个存储器的存储容量之和,所述的存储器为非易失性存储器。
参考图4,图4示出了本发明的以存储容量为32M(兆)字节的NOR FLASH为实施例的存储空间地址分配图。将引导、正常模式内核、正常模式文件系统、安全模式内核、安全模式文件系统数据按图4所示的存储空间地址分配图写入FLASH。其中引导起始地址是0x00000000,末尾地址是0x00080000地址;正常模式内核起始地址是0x00100000,末尾地址是0x00600000;正常模式文件系统起始地址是0x00600000,末尾地址是0x01100000;安全模式内核起始地址是0x01100000,末尾地址是0x01600000;安全模式文件系统起始地址是0x01600000,末尾地址是0x01C00000。保留区域为空闲(即不被使用)的存储空间。
下面以上述的32M的NOR FLASH为例,对本发明实现过程的执行步骤进行说明。
系统上电后:
步骤1:CPU从0x00000000地址启动,运行引导程序,初始化CPU,并为设备地址分配空间。其中给键盘控制端口分配0xB1800016地址,用于接收键盘状态信息;给键盘键码低字节端口分配0xB1800011地址,用于接收键盘键码低字节信息;给键盘键码高字节端口分配0xB1800012地址,用于接收键盘键码高字节信息。其中键盘使用PS/2第二套键盘扫描码标准通信。
步骤2:引导程序根据用户是否按下安全模式键,选择不同内核和文件系统启动。
a)定义宏keybc,keybl,keybh,分别指向键盘控制,键码低字节,键码高字节信息地址;
#define keybc(volatile unsigned char*)(0xB1800016)
#define keybl(volatile unsigned char*)(0xB1800011)
#define keybh(volatile unsigned char*)(0xB1800012)
b)申明三个无符号字节型变量kbc,kbl,kbh;
unsigned char kbc,kbl,kbh
c)CPU空忙2秒,等待用户输入键码;
d)接收键盘键码信息;
kbl=*keybl;
kbh=*keybh;
kbc=*keybc;
e)判断是否为安全模式键码信息0x7a,若不是,执行下一步,否则,执行步骤i;
f)将0x00600000~0x01100000段正常模式文件系统数据拷贝到内存中;
g)将0x00100000~0x00600000段正常模式内核数据拷贝到内存中;
h)将内存中的正常模式文件系统地址,作为正常模式内核加载文件系统的参数;
i)将0x01600000~0x01C00000段安全模式文件系统数据拷贝到内存中;
j)将0x01100000~0x01600000段安全模式内核数据拷贝到内存中;
k)将内存中的安全模式文件系统地址,作为安全模式内核加载文件系统的参数;
步骤3:引导进程解压内核,结束自身进程。CPU跳转到内核解压后的内存地址运行内核。
步骤4:内核运行起来后,根据引导传递的文件系统类型和地址参数,挂载文件系统,进入用户空间运行规定软件。
应当指出,以上所述具体实施方式可以使本领域的技术人员更全面地理解本发明创造,但不以任何方式限制本发明创造。因此,尽管本说明书和实施例对本发明创造已进行了详细的说明,但是,本领域技术人员应当理解,仍然可以对本发明创造进行修改或者等同替换;而一切不脱离本发明创造的精神和范围的技术方案及其改进,其均涵盖在本发明创造专利的保护范围当中。