基于NAND-Flash双启动引导的启动方法及装置技术领域
本发明涉及电子产品技术领域,尤其涉及一种基于NAND-Flash双启动引
导的启动方法及装置。
背景技术
作为操作系统的引导程序,Boot要完成对系统硬件的最小初始化,并且
把系统程序代码加载到系统程序代码运行时所处的位置;最后Boot将控制权
交给系统程序,使CPU从系统程序的入口点开始执行。在许多应用场合中,
Boot支持的功能越来越多。为了在系统原有的Boot上合入功能和解决相关的
bug,Boot在线升级功能变得尤为必要。
为了防止Boot升级中由于新版本的Boot不能正常工作而导致系统故障,
一般需要将升级前的Boot保留来进行备份。这样就要求在存储器中要有两个
Boot,也就是双Boot,并且两个Boot可以自动切换。目前比较常见的Boot
存储器一般是NOR-Flash存储器,由于NOR-Flash存储器相对NAND-Flash
存储器而言,NOR-Flash存储器的单位存储容量所对应的成本高,以及容量
相对小等特点,NAND-Flash存储器更有优势。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是
现有技术。
发明内容
本发明的主要目的在于实现NAND-Flash双启动引导的启动控制,避免初
始引导区不能被同时升级的问题,提高系统运行的稳定性。
为实现上述目的,本发明提供的一种基于NAND-Flash双启动引导的启动
方法包括以下步骤:
在系统启动时,获取预置的启动标志及启动引导的物理地址表;
根据所述启动标志及启动引导的物理地址表,获得所述启动标志对应的
目标物理地址,并判断所述目标物理地址是否为CPU默认读取的特定物理地
址;
若是,则将逻辑器件与CPU连接的NAND-Flash接口接收到的信号发送
至所述NAND-Flash存储器中,以读取位于所述目标地址的第一启动引导,并
根据第一启动引导进行启动;
若否,则将所述逻辑器件与CPU连接的NAND-Flash接口接收到的信号
中地址信号解析后按照所述目标物理地址进行翻译,将翻译后的所述信号发
送至所述NAND-Flash存储器中,以读取位于所述目标地址的第二启动引导,
并根据第二启动引导进行启动。
优选地,所述将翻译后的所述信号发送至所述NAND-Flash存储器中之后
还包括:
接收CPU在获取第二启动引导的第一个block时发送的停止翻译指令;
根据所述停止翻译指令,将所述逻辑器件与CPU连接的NAND-Flash接
口接收到的信号发送至所述NAND-Flash存储器中,以继续读取第二启动引
导,根据第二启动引导进行启动。
优选地,在根据第一启动引导启动后或根据第二启动引导启动后还包括:
判断系统启动是否成功;
当系统启动不成功时,修改启动标志,并重新启动系统,以切换启动引
导。
优选地,所述判断启动是否成功之后还包括:
当系统启动成功,且系统存在更新时,下载映像文件和启动引导;
根据下载的启动引导更新非当前启动所采用的启动引导也就是将下载的
所述启动引导储存至所述NAND-Flash存储器的物理地址区域中;
当更新成功时,修改所述启动标志及启动引导的物理地址表,以控制系
统按照更新后的启动引导进行下次启动;当更新失败时,不修改所述启动标
志及启动引导的物理地址表。
优选地,在所述将所述逻辑器件与CPU连接的NAND-Flash接口接收到
的信号中地址信号解析后按照所述目标物理地址进行翻译之前还包括:
判断所述目标物理地址是否为非法启动地址;
当所述目标地址为非法启动地址时,则将逻辑器件与CPU连接的
NAND-Flash接口接收到的信号发送至所述NAND-Flash存储器中,以使CPU
读取预设的非启动相关的存储数据。
此外,为实现上述目的,本发明还提供一种基于NAND-Flash双启动引导
的启动装置包括:
获取模块,用于在系统启动时,获取预置的启动标志及启动引导的物理
地址表;
第一判断模块,用于根据所述启动标志及启动引导的物理地址表,获得
所述启动标志对应的目标物理地址,并判断所述目标物理地址是否为CPU默
认读取的特定物理地址;
第一启动控制模块,用于当所述启动标志对应的目标物理地址为CPU默
认读取的特定物理地址时,将逻辑器件与CPU连接的NAND-Flash接口接收
到的信号发送至所述NAND-Flash存储器中,以读取位于所述目标地址的第一
启动引导,并根据第一启动引导进行启动;
第二启动控制模块,用于当所述启动标志对应的目标物理地址不为CPU
默认读取的特定物理地址时,将所述逻辑器件与CPU连接的NAND-Flash接
口接收到的信号中地址信号解析后按照所述目标物理地址进行翻译,将翻译
后的所述信号发送至所述NAND-Flash存储器中,以读取位于所述目标地址的
第二启动引导,并根据第二启动引导进行启动。
优选地,所述基于NAND-Flash双启动引导的启动装置还包括:
接收模块,用于接收CPU在获取第二启动引导的第一个block时发送的
停止翻译指令;
所述第二启动控制模块,还用于根据所述停止翻译指令,将所述逻辑器
件与CPU连接的NAND-Flash接口接收到的信号发送至所述NAND-Flash存
储器中,以继续读取第二启动引导,根据第二启动引导进行启动。
优选地,所述基于NAND-Flash双启动引导的启动装置还包括:
第二判断模块,用于判断系统启动是否成功;
控制模块,用于当系统启动不成功时,修改启动标志,并重新启动系统,
以切换启动引导。
优选地,所述基于NAND-Flash双启动引导的启动装置还包括:
下载模块,用于当系统启动成功,且系统存在更新时,下载映像文件和
启动引导;
处理模块,用于根据下载的启动引导更新-非当前的启动引导也就是将下
载的所述启动引导储存至所述NAND-Flash存储器的物理地址区域中;
修改模块,用于当更新成功时,修改所述启动标志及启动引导的物理地
址表,以控制系统按照更新后的启动引导进行下次启动;当更新失败时,不
修改所述启动标志及启动引导的物理地址表。
优选地,所述基于NAND-Flash双启动引导的启动装置还包括:
第三判断模块,用于判断所述目标物理地址是否为非法启动地址;
所述第一启动控制模块,还用于当所述目标地址为非法启动地址时,将
逻辑器件与CPU连接的NAND-Flash接口接收到的信号发送至所述
NAND-Flash存储器中,以使CPU读取预设的非启动相关的存储数据。
本发明通过在系统启动时,获取预置的启动标志及启动引导的物理地址
表,以判断所述启动标志对应的目标物理地址是否为CPU默认读取的特定物
理地址,从而以第一启动引导进行启动或以第二启动引导进行启动,进而实
现了NAND-Flash双启动引导的启动控制。由于是采用基于NAND-Flash存储
器的地址翻译的方法来映射启动引导(Boot)的存储装置,因此可以对
NAND-Flash上整个Boot进行升级,不需要额外设置初始引导区,可以避免
初始引导区不能被同时升级的问题,提高了系统运行的稳定性与便捷性。
附图说明
图1为本发明基于NAND-Flash双启动引导的启动方法第一实施例的流程
示意图;
图2为本发明基于NAND-Flash双启动引导的启动方法第二实施例的流程
示意图;
图3为本发明基于NAND-Flash双启动引导的启动方法第三实施例的流程
示意图;
图4为本发明基于NAND-Flash双启动引导的启动方法第四实施例的流程
示意图;
图5为本发明基于NAND-Flash双启动引导的启动装置第一实施例的功能
模块示意图;
图6为本发明基于NAND-Flash双启动引导的启动装置第二实施例的功能
模块示意图;
图7为本发明基于NAND-Flash双启动引导的启动装置第三实施例的功能
模块示意图;
图8为本发明基于NAND-Flash双启动引导的启动装置第四实施例的功能
模块示意图;
图9为本发明基于NAND-Flash双启动引导的启动装置第五实施例的功能
模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步
说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限
定本发明。
本发明提供一种基于NAND-Flash双启动引导的启动方法,参照图1,在
第一实施例中,该基于NAND-Flash双启动引导的启动方法包括:
步骤S10,在系统启动时,获取预置的启动标志及启动引导的物理地址表;
本实施例提供的基于NAND-Flash双启动引导的启动方法应用于电子产
品的启动控制,具体地该电子产品的系统运行于包括处理器(CPU)、逻辑器
件(FPGA或者CPLD)以及NAND-Flash存储器的硬件环境中。上述预置的
启动标志及启动引导的物理地址表可储存于所述逻辑器件内部的Flash中或
所述逻辑器件外挂的非易失存储器中。上述启动引导(Boot)包括存储于
NAND-Flash存储器中的第一启动引导(Boot1)和第二启动引导(Boot2),
该第一启动引导储存于NAND-Flash存储器的第一个block(即block0,作为
起始地址),第二启动引导储存于NAND-Flash存储器的其他block中。具体
地NAND-Flash存储器划分为三个区,其中两个是Boot区,存放互为备用的
Boot,另外的分区存放映像文件(大版本文件)及其他信息。上述启动引导
的物理地址表为启动引导在所述NAND-Flash存储器中的地址信息,具体该物
理地址表可以仅为第二启动引导对应的地址信息,也可以包括第一启动引导
对应的地址信息和第二启动引导对应的地址信息。上述启动标志为用于确定
以第一启动引导还是以第二启动引导的标识信息。应当说明的是,上述CPU
可以通过控制接口访问逻辑器件的内部Flash或外挂非易失存储器中的启动
标志和物理地址表,同时向逻辑器件提供NAND-Flash接口。CPU进行访问
的接口可以是各种类型的,比如IIC、LOCAL-BUS、SPI等形式的接口,具体
接口的类型依赖于CPU。
步骤S11,根据所述启动标志及启动引导的物理地址表,获得所述启动标
志对应的目标物理地址;
步骤S12,判断所述目标物理地址是否为CPU默认读取的特定物理地址;
若是,则执行步骤S13,若否,则执行步骤S14。
上述CPU默认读取的特定物理地址一般为NAND-Flash存储器的block0,
根据启动标志获得本次是以第一启动引导进行启动还是以第二启动引导进行
启动,根据该启动标志和启动引导的物理地址表获取确定本次进行启动的启
动引导对应的实际物理地址。
步骤S13,将逻辑器件与CPU连接的NAND-Flash接口接收到的信号发
送至所述NAND-Flash存储器中,以读取位于所述目标地址的第一启动引导,
并根据第一启动引导进行启动;
步骤S14,将所述逻辑器件与CPU连接的NAND-Flash接口接收到的信
号中地址信号解析后按照所述目标物理地址进行翻译,将翻译后的所述信号
发送至所述NAND-Flash存储器中,以读取位于所述目标地址的第二启动引
导,并根据第二启动引导进行启动。
本实施例中,以第一启动引导存储于NAND-Flash存储器中的block0(作
为起始地址)内,第二启动引导存储于NAND-Flash存储器中的block1(作为
起始地址,实际中可以是合法的区别于block0的任一可用块)内做出详细说
明:
当上述启动标志对应为第一启动引导时,则逻辑器件与CPU连接的
NAND-Flash接口在接收到CPU输出的信号时,将由逻辑器件对该信号转发
至NAND-Flash存储器,从而读取NAND-Flash存储器的block0中的第一启
动引导,CPU将根据该第一启动引导进行Boot启动。当上述启动标志对应为
第二启动引导时,则逻辑器件与CPU连接的NAND-Flash接口在接收到CPU
输出的信号时,将由逻辑器件对该信号进行解析,并根据上述目标物理地址
对信号中的地址信号翻译,从而将目标物理地址作为上述地址信号进行翻译
转换;然后将转换后的信号发送给NAND-Flash存储器,从而读取到block1
中的第二启动引导,CPU将根据该第二启动引导进行Boot启动。在Boot启
动完成后,将加载上述映像文件,从而完成系统的正常启动。
本发明通过在系统启动时,获取预置的启动标志及启动引导的物理地址
表,以判断所述启动标志对应的目标物理地址是否为CPU默认读取的特定物
理地址,从而以第一启动引导进行启动或以第二启动引导进行启动,进而实
现了NAND-Flash双启动引导的启动控制。由于是将基于NAND-Flash存储器
地址翻译的方法引入启动引导(Boot)的方法,因此可以对NAND-Flash上整
个Boot进行升级,不需要额外设置初始引导区,可以避免初始引导区不能被
同时升级的问题,提高了系统运行的稳定性与便捷性。
进一步地,参照图2,基于上述实施例,本实施例中,上述步骤S14之后
还包括:
步骤S15,接收CPU在获取第二启动引导的第一个block时发送的停止
翻译指令;
步骤S16,根据所述停止翻译指令,将所述逻辑器件与CPU连接的
NAND-Flash接口接收到的信号发送至所述NAND-Flash存储器中,以继续读
取第二启动引导,根据第二启动引导进行启动。
本实施例中,当以第二启动引导进行启动时,CPU在读取获得第二启动
引导的第一个block后,进行Boot启动,在第一个block正常读出并运行后,
逻辑器件停止对地址信号翻译,CPU按照正常的顺序对NAND-Flash进行访
问,以继续读取后续的该第二启动引导其余部分。
进一步地,参照图3,基于上述实施例,本实施例中,上述步骤S13和步
骤S14之后还包括
步骤S17,判断系统启动是否成功;
步骤S18,当系统启动不成功时,修改启动标志,并重新启动系统,以切
换启动引导。
本实施例中,在系统启动的过程中可监听启动过程中是否存在故障,当
启动存在故障时,切换启动引导,以保证系统能够正常启动。具体地在根据
第一启动引导启动后或根据第二启动引导启动均需要判断系统启动是否成
功;应当说明的是,判断系统启动是否成功的方式可根据实际需要进设置,
本实施例中,为了缩短由于故障导致的等候时间,分别设置了快速与慢速的
定时器,当Boot启动后第一定时器定时时间(较短的时间)到达时判断启动
是否出现故障,若出现故障,则翻转到另一个Boot启动;若没有出现故障,
则当Boot启动后第二定时器定时时间(较长的时间)到达时判断是否出现故
障,当出现故障时,翻转到另一个Boot启动。
进一步地,基于上述实施例,本实施例中,上述步骤S17之后还包括:
步骤S19,当系统启动成功,且系统存在更新时,下载映像文件和启动引
导;
步骤S20,根据下载的启动引导更新非当前启动所采用启动引导;
步骤S21,当更新成功时,修改所述启动标志及启动引导的物理地址表,
以控制系统按照更新后的启动引导进行下次启动;当更新失败时,不修改所
述启动标志及启动引导的物理地址表。
本实施例中,在系统启动成功后,检测到系统存在更新时,将下载映像
文件和启动引导。下载完成后,将NAND-Flash存储器中的映像文件更新替换
为下载的映像文件,同时对当前非启动引导进行更新(即将下载的所述启动
引导储存至所述NAND-Flash存储器的其他block中)。如果更新操作成功,
逻辑器件接收CPU发送的指令,根据CPU的指令中提供的更新信息修改启动
标志和启动引导的物理地址表,以控制系统在下次启动时按照更新后的启动
引导进行启动。如果引导更新不成功,则不进行修改启动标志和启动引导的
物理地址表。
进一步地,参照图4,基于上述实施例,本实施例中,执行上述步骤S14
之前还包括:
步骤S22,判断所述目标物理地址是否为非法启动地址;若是,则执行步
骤S13,否则执行步骤S23。
步骤S23,将逻辑器件与CPU连接的NAND-Flash接口接收到的信号发
送至所述NAND-Flash存储器中,以使CPU读取预设的非启动相关的存储数
据。
本实施例中,上述非法启动地址,为NAND-Flash存储器中不存在的物理
地址,或者该地址在NAND-Flash存储器并非存储有启动引导。此时则不翻译
信号中地址信号,将信号直接透传。
本发明还提供一种基于NAND-Flash双启动引导的启动装置,参照图5,
在第一实施例中,本发明提供的基于NAND-Flash双启动引导的启动装置包
括:
获取模块100,用于在系统启动时,获取预置的启动标志及启动引导的物
理地址表;
本实施例提供的基于NAND-Flash双启动引导的启动装置应用于电子产
品的启动控制,具体地该电子产品的系统运行于包括处理器(CPU)、逻辑器
件(FPGA或者CPLD)以及NAND-Flash存储器的硬件环境中。上述预置的
启动标志及启动引导的物理地址表可储存于所述逻辑器件内部的Flash中或
所述逻辑器件外挂的非易失存储器中。上述启动引导(Boot)包括存储于
NAND-Flash存储器中的第一启动引导(Boot1)和第二启动引导(Boot2),
该第一启动引导储存于NAND-Flash存储器的第一个block(即block0,作为
起始地址),第二启动引导储存于NAND-Flash存储器的其他block中,具体
地NAND-Flash存储器划分为三个区,其中两个是Boot区,存放互为备用的
Boot,另外的分区存放映像文件(大版本文件)及其他信息。上述启动引导
的物理地址表为启动引导在所述NAND-Flash存储器中的地址信息,具体该物
理地址表可以仅为第二启动引导对应的地址信息,也可以包括第一启动引导
对应的地址信息和第二启动引导对应的地址信息。上述启动标志为用于确定
以第一启动引导还是以第二启动引导的标识信息。应当说明的是,上述CPU
可以通过控制接口访问逻辑器件的内部Flash或外挂非易失存储器中的启动
标志和物理地址表,同时向逻辑器件提供NAND-Flash接口。CPU进行访问
的接口可以是各种类型的,比如IIC、LOCAL-BUS、SPI等形式的接口,具体
接口的类型依赖于CPU。
第一判断模块110,用于根据所述启动标志及启动引导的物理地址表,获
得所述启动标志对应的目标物理地址,并判断所述目标物理地址是否为CPU
默认读取的特定物理地址;
上述CPU默认读取的特定物理地址一般为NAND-Flash存储器的block0,
根据启动标志获得本次是以第一启动引导进行启动还是以第二启动引导进行
启动,根据该启动标志和启动引导的物理地址表获取确定本次进行启动的启
动引导对应的实际物理地址。
第一启动控制模块120,用于当所述启动标志对应的目标物理地址为CPU
默认读取的特定物理地址时,将逻辑器件与CPU连接的NAND-Flash接口接
收到的信号发送至所述NAND-Flash存储器中,以读取位于所述目标地址的第
一启动引导,并根据第一启动引导进行启动;
第二启动控制模块130,用于当所述启动标志对应的目标物理地址不为
CPU默认读取的特定物理地址时,将所述逻辑器件与CPU连接的NAND-Flash
接口接收到的信号中地址信号解析后按照所述目标物理地址进行翻译,将翻
译后的所述信号发送至所述NAND-Flash存储器中,以读取位于所述目标地址
的第二启动引导,并根据第二启动引导进行启动。
本实施例中,以第一启动引导存储于NAND-Flash存储器中的block0(作
为起始地址)内,第二启动引导存储于NAND-Flash存储器中的block1(作为
起始地址;实际实现上可以是合法的、可存放Boot的、非block0的块)内做
出详细说明:
当上述启动标志对应为第一启动引导时,则逻辑器件与CPU连接的
NAND-Flash之间接口的信号将被直接转发至NAND-Flash存储器,从而读取
NAND-Flash存储器的block0中的第一启动引导,CPU将根据该第一启动引
导进行Boot启动。当上述启动标志对应为第二启动引导时,则逻辑器件与CPU
连接的NAND-Flash之间接口的由CPU发出的信号将由逻辑器件采集,并对
该信号进行解析,然后根据上述目标物理地址对信号中的地址信号翻译,从
而将目标物理地址作为上述地址信号发送给NAND-Flash存储器,从而读取到
block1中的第二启动引导。在Boot启动完成后,将加载上述映像文件,从而
完成系统的正常启动。
本发明通过在系统启动时,获取预置的启动标志及启动引导的物理地址
表,以判断所述启动标志对应的目标物理地址是否为CPU默认读取的特定物
理地址,从而以第一启动引导进行启动或以第二启动引导进行启动,进而实
现了NAND-Flash双启动引导的启动控制。由于将基于NAND-Flash存储器地
址翻译的方法引入启动引导(Boot)的存储装置,因此可以对NAND-Flash
上整个Boot进行升级,不需要额外设置初始引导区,可以避免初始引导区不
能被同时升级的问题,提高了系统运行的稳定性与便捷性。
进一步地,参照图6,基于上述实施例,本实施例中,上述基于NAND-Flash
双启动引导的启动装置还包括:
接收模块140,用于接收CPU在获取第二启动引导的第一个block时发
送的停止翻译指令;
所述第二启动控制模块130,还用于根据所述停止翻译指令,将所述逻辑
器件与CPU连接的NAND-Flash接口接收到的信号发送至所述NAND-Flash
存储器,以继续读取第二启动引导,根据第二启动引导进行启动。
本实施例中,当以第二启动引导进行启动时,CPU在读取获得第二启动
引导的第一个block后,将发送一个停止翻译指令至逻辑器件,逻辑器件的接
收模块140在接收到该停止翻译指令后,将会停止对地址信号翻译。具体地
CPU从Boot区中读取启动引导代码中的首个block,进行Boot启动,在读出
并运行后,逻辑器件停止对地址信号翻译,CPU按照正常的顺序对
NAND-Flash进行访问,以继续读取后续的该第二启动引导其余部分。
进一步地,参照图7,基于上述实施例,本实施例中,上述基于NAND-Flash
双启动引导的启动装置还包括:
第二判断模块150,用于判断系统启动是否成功;
控制模块160,用于当系统启动不成功时,修改启动标志,并重新启动系
统,以切换启动引导。
本实施例中,在系统启动的过程中可监听启动过程中是否存在故障,当
启动存在故障时,切换启动引导,以保证系统能够正常启动。具体地在根据
第一启动引导启动后或根据第二启动引导启动后均需要判断系统启动是否成
功;应当说明的是,判断系统启动是否成功的方式可根据实际需要进设置,
本实施例中,为了缩短由于故障导致的等候时间,分别设置了快速与慢速的
定时器,当Boot启动后第一定时器定时时间(较短的时间)到达时判断启动
是否出现故障,若出现故障,则翻转到另一个Boot启动;若没有出现故障,
则当Boot启动后第二定时器定时时间(较长的时间)到达时判断是否出现故
障,当出现故障时,翻转到另一个Boot启动。
进一步地,参照图8,基于上述实施例,本实施例中,上述基于NAND-Flash
双启动引导的启动装置还包括:
下载模块170,用于当系统启动成功,且系统存在更新时,下载映像文件
和启动引导;
处理模块180,用于根据下载的启动引导更新非当前的启动所采用启动引
导也就是将下载的所述启动引导储存至所述NAND-Flash存储器的物理地址
区域中;
修改模块190,用于当更新成功时修改所述启动标志及启动引导的物理地
址表,以控制系统按照更新后的启动引导进行重新启动;当更新失败时,不
修改所述启动标志及启动引导的物理地址表。
本实施例中,在系统启动成功后,检测到系统存在更新时,将下载映像
文件和启动引导。下载完成后,将NAND-Flash存储器中的映像文件更新替换
为下载的映像文件,同时对非当前启动引导进行更新,即将下载的所述启动
引导储存至所述NAND-Flash存储器的合法block中。如果更新操作成功,则
逻辑器件接收CPU发送的指令,根据CPU的指令提供的更新信息修改启动标
志和启动引导的物理地址表,以控制系统在下次启动时按照更新后的启动引
导进行启动。即在修改启动标志后,修改后的启动标志对应的物理地址为更
新的启动引导储存在NAND-Flash存储器中的物理地址。如果不成功,则不进
行修改启动标志和启动引导的物理地址表。
进一步地,参照图9,基于上述实施例,本实施例中,上述基于NAND-Flash
双启动引导的启动装置还包括:
第三判断模块200,用于判断所述目标物理地址是否为非法启动地址;
所述第一启动控制模块120,还用于当所述目标地址为非法启动地址时,
将逻辑器件与CPU连接的NAND-Flash接口接收到的信号发送至所述
NAND-Flash存储器中,以使CPU读取预设的非启动相关的存储数据。
本实施例中,上述非法启动地址,可以是NAND-Flash存储器中不存在的
物理地址,或者该地址在NAND-Flash存储器并非存储有启动引导。此时则不
翻译信号中地址信号,将信号直接透传。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是
利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间
接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。