一种适用于嵌入式Linux操作系统的系统一键还原方法,属于嵌入式系统技术领域。通过C语言和汇编语言构建了一种嵌入式操作系统一键还原的方法。用户通过一键还原按钮开始系统的一键还原,要还原的操作系统存在普通的SD卡上。还原按钮按下时,触发主处理器启动控制模块的电平转换,改变主处理器的启动方式为一键还原模式。还原结束时,主处理器模块发送信号至复位模块,将启动方式改为正常启动模式,并将主处理器模块复位,进入系统。系统采用模块化设计,增加外设单片机作为协处理器模块,控制主处理器的复位,更改主处理器的启动模式,并通过GPIO口与主处理器通信,适用于不同结构的嵌入式主处理器,解决了普通嵌入式系统需要连接上位机恢复系统的问题。
【技术实现步骤摘要】
本专利技术涉及,属于嵌入式系统
技术介绍
随着信息技术的不断发展,众多的手持设备因其低功耗及便携性已经成为大众化的上网设备。因此,应用于各种手持设备上的嵌入式操作系统也逐渐走入大众的视野中。 Linux是一个类UNIX内核以网络为核心支持多用户、多任务、多线程、多CPU的操作系统,是目前最有活力的操作系统之一。此外,Linux系统稍加修改裁剪,被用到嵌入式系统中,有很大的应用前景。传统的嵌入式系统多为一次性系统,需要连接上位机才能完成系统修复与升级, 无法自主进行智能还原。因此,本系统还原方法设计了一种利用SD卡对嵌入式设备操作系统一键还原的方法。用户将想要修复或升级的系统拷贝到SD卡,按下还原按键后,系统将自行恢复,并在恢复完成后进入新的系统。
技术实现思路
为了克服现有技术的缺陷和不足,以解决现有市面上嵌入式设备中系统无法自主进行智能还原的问题,本专利技术提供了。本专利技术的技术方案是采用如下方式来实现的。,系统一键还原装置包括直流电源模块、开关控制模块、主处理器模块、主处理器启动控制模块、主处理器复位模块、 协处理器模块、SD卡模块和Nand Flash模块,直流电源模块给整个系统供电;开关控制模块和协处理器模块相连接;协处理器模块通过通用IO 口分别与主处理器启动控制模块和主处理器复位模块相连接;主处理器模块分别与SD卡模块和Nand Flash模块相连接;主处理器模块中,主处理器采用以ARMll为内核的S3C6410,主处理器外置128M的SDRAM ;协处理模块中,协处理器为基于8051核具有可编程功能的单片机;主处理器复位模块采用复位芯片MAX811 ;开关控制模块中,开关为按键开关。系统一键还原方法中,协处理器负责在主处理器的正常启动模式(从Nand Flash 启动)与一键还原模式(从SD卡启动)之间切换;一键还原代码烧写在SD卡的特定位置, 包括引导代码与完整的启动代码;一键还原代码负责删除Flash上的旧系统文件,并重新烧写新的系统文件,新系统文件存放在SD卡中。系统一键还原方法如下1)系统一键还原装置上电;2)协处理器初始化;3)主处理器启动,判断系统启动控制信号线电平,如果为高,转向下一步,否则转向步骤10);4)设定一键还原代码,一键还原代码由8K的引导代码bootloaderl简称BLl和 256K的完整启动代码bootloaderf简称BL2组成,将一键还原代码从SD卡读入主处理器模块中的SDRAM,并跳转到SDRAM中执行一键还原代码;5)主处理器初始化开始,包括a)配置主处理器相关参数;b)配置主处理器模块中的SDRAM ;c)配置SD卡模块中的SD卡;d)初始化 Nand Flash 模块;6)擦除Nand Flash中的旧系统文件,包括bootloader文件、Linux内核文件、 yaffs2 文件;7)从SD卡中分别读取新的bootloader文件、Linux内核文件、yaffs2文件到 SDRAM,并拷贝至Nand Flash中,拷贝完成后发送信号至协处理器,一键还原代码执行结束;8)协处理器控制主处理器复位;9)主处理器重新启动,判断系统启动控制信号线电平,如果为低,转向下一步,否则返回步骤4);10)进入还原后的新系统;11)结束。步骤2~)中协处理器初始化的步骤如下a)开始;b)初始化协处理器1/0 口 ;C)设置中断向量表;d)开启外部中断0;e)检测一键还原按键是否按下,如果是,转向下一步,否则,等待;f)开启定时器,设置系统启动控制信号线电平为高,复位主处理器,开始系统还原;g)协处理器初始化结束。系统上电后首先启动协处理器,由协处理器的外部中断判断是否一键还原按键被按下。主处理器启动后,当一键还原按键被按下时,将系统启动控制信号线电平置为高,主处理器启动模式被设定为从SD卡启动,复位主处理器,系统还原开始。步骤4)中将一键还原代码从SD卡读入主处理器模块中的SDRAM,并跳转到SDRAM 中执行一键还原代码的具体步骤如下a)开始;b)读取BLl,BLl存储在SD卡最后18个扇区中开始的16个扇区;c)将BLl复制到主处理器内置的8K SRAM中,也就是M^pingMone,并跳转到 SteppingStone的开始地址执行BLl ;d)BLl初始化CPU、GPIO 口、CPU时钟频率、内存控制寄存器以及UART和Nand Flash,并屏蔽所有中断;e)BLl从SD卡最后的第19个扇区开始读取256K的完整启动代码BL2,并将BL2 复制到BL2_BASE起始的SDRAM中,BL2_BASE定义为0x57E00000,就是U8M的SDRAM中最后2M;f) BLl执行完毕,跳转到BL2_BASE处,执行完整的启动代码BL2。系统还原开始,系统会首先加载支持从SD卡启动的一键代码到SDRAM中。系统启动代码包括引导代码与完整启动代码两部分,8K的引导代码BLl初始化CPU和一些核心器件,并负责拷贝BL2到Nand Flash中;256K的完整启动代码BL2主要用于从SD卡启动系统,并执行步骤幻-步骤7)的系统启动命令。启动代码加载完毕后会首先跳转到SDRAM的开始地址,运行引导代码BL1,BLl主要负责初始化CPU和一些核心器件,并屏蔽所有中断。 初始化结束后,BLl从SD卡中读取完整启动代码BL2,并跳转到BL2中继续其余系统硬件的初始化,并继续执行一键还原的系统命令。步骤6)中擦除Nand Flash中的旧系统文件的具体步骤如下a)开始;b)从零地址开始擦除整片Nand Flash ;c)判断坏块表中是否有坏块?如果有,跳过坏块,否则继续执行;d)擦除完毕。存放在Nand Flash上的系统文件包括bootloader文件、Iinux内核文件、yaffs2 文件,当这些文件出现问题导致系统无法启动的时候,擦除整个Flash上的内容,重新写入新的系统文件,从而完成系统还原。擦除Nand Flash时,会按块(1块=16k)擦除,首先读取该块的坏块表,如果该块被标记为坏块,则跳过该块,继续擦除下一块。步骤7)中从SD卡中分别读取新的bootloader文件、Iinux内核文件、yaffs2文件到SDRAM,并拷贝至Nand Flash中,拷贝完成后发送信号至协处理器的具体步骤如下a)开始;b)从FAT32格式的SD卡上查找bootloader文件;c)判断是否查找到文件?如果是,转向下一步,否则,输出错误信息,转向步骤 g);d)将文件写入SDRAM中0x50008000位置;e)将此文件从SDRAM向Nand Flash中拷贝,写入Linux内核中定义的bootloader 在 Nand Flash 的存放分区〃 Bootloader" =0x000000-0x100000 ;f) bootloader 写入完成;g)从FAT32格式的SD上查找Linux内核文件;h)判断是否查找到文件?如果是,转向下一步,否则,输出错误信息,转向步骤 1);i)将文件写入SDRAM中0x50008000位置;j)将此文件从SDRAM向Nand Flash中拷贝,写入Linux内核中定义的Linux内核文件在 Nand Flash 的存放分区〃 K本文档来自技高网...
【技术保护点】
【技术特征摘要】
【专利技术属性】
技术研发人员:张海霞,赫明哲,徐加利,纪洪亮,徐伟涛,翟庆羽,孙志猛,孙文,李宗璋,
申请(专利权)人:山东大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。