一种双Boot切换的实现方法

文档序号:6492222阅读:643来源:国知局
一种双Boot切换的实现方法
【专利摘要】本发明公开了一种双Boot切换的实现方法及装置,方法包括:在射频识别RFID设备上电复位后,EPLD通过读取可擦除可编程存储器中的启动标志字节,对使用主Boot启动还是使用备Boot启动进行选择;?EPLD将CPU的地址线映射到NOR?Flash上用于主Boot启动的第一地址空间或用于备Boot启动的第二地址空间;?CPU从对应于上述选择结果的第一地址空间或第二地址空间执行相应的Boot启动。本发明通过EPLD的控制和对CPU总线控制器的操作,实现了双Boot切换的功能。
【专利说明】—种双Boot切换的实现方法
【技术领域】
[0001]本发明涉及嵌入式射频识别RFID领域,特别涉及一种双引导程序Boot切换的实现方法及其相关装置。
【背景技术】
[0002]在嵌入式设备中,需要通过Boot引导操作系统,典型的应用是通用引导程序U-Boot引导操作系统Linux内核,同时对于RFID设备,如路侧单元RSU,需要挂在龙门架等不便于直接维护的地方,所以对系统的固件Firmware,尤其是Boot稳定性的要求就显得尤为重要。
[0003]为了保证RFID设备的正常启动和实现Boot升级功能,需要加入双Boot切换功能,即在设备的处理器上电复位后实现从两个不同的启动地址执行Boot代码,使之可以灵活选择启动双Boot中的任何一个引导操作系统,同时,还可以避免由于Boot文件损坏导致系统无法启动。
[0004]由于不同架构的处理器在上电复位后的启动机制各不相同,对于RFID产品,大多使用的是PowerPC架构处理器,如何实现双Boot切换的功能,成为亟待解决的技术问题。

【发明内容】

[0005]本发明的目的在于提供一种双Boot切换的实现方法及装置,用于解决在PowerPC架构处理器实现双Boot切换问题。
[0006]根据本发明的一个方面,提供的一种双Boot切换的实现方法包括:
[0007]步骤A)在RFID设备上电复位后,可擦除可编程逻辑器件EPLD通过读取可擦除可编程存储器中的启动标志字节,对使用主Boot启动还是使用备Boot启动进行选择;
[0008]步骤B) EPLD将中央处理器CPU的地址线映射到CPU总线控制器存储器NOR Flash上用于主Boot启动的第一地址空间或用于备Boot启动的第二地址空间;
[0009]步骤C)CPU从对应于上述选择结果的第一地址空间或第二地址空间执行相应的Boot启动。
[0010]优选地,所述步骤C)包括:
[0011]CPU从对应于上述选择结果的第一地址空间或第二地址空间执行相应的Boot代码;
[0012]在执行相应的Boot代码后,初始化CPU总线控制器,将CPU的片选信号CSO和CSx的空间同时映射到NOR Flash上,同时选中NOR Flash。
[0013]优选地,所述步骤C)还包括:
[0014]CPU在NOR Flash执行一段Boot代码后,将NOR Flash的Boot代码搬移至内存,并在内存执行。
[0015]优选地,所述步骤C)还包括:CPU在内存执行Boot代码到初始化NOR Flash驱动期间,CPU总线控制器将所述CSO置为无效。[0016]优选地,所述第一地址空间和所述第二地址空间预先设置在所述NOR Flash的低地址空间。
[0017]优选地,还包括:
[0018]在RFID设备的系统启动后,CPU通过使用所述CSx对NOR Flash的全部空间进行访问操作。
[0019]根据本发明的另一方面,提供的一种双Boot切换的实现装置,包括可擦除可编程存储器和NOR Flash,还包括:
[0020]EPLD,用于在RFID设备上电复位后,通过读取可擦除可编程存储器中的启动标志字节,对使用主Boot启动还是使用备Boot启动进行选择,将CPU的地址线映射到NORFlash上用于主Boot启动的第一地址空间或用于备Boot启动的第二地址空间;
[0021]CPU,用于从对应于上述选择结果的第一地址空间或第二地址空间执行相应的Boot启动。
[0022]优选地,所述CPU还用于从第一地址空间或第二地址空间执行相应的Boot代码后,初始化CPU总线控制器,将其CSO和CSx的空间同时映射到NOR Flash上,同时选中NORFlash。
[0023]优选地,所述CPU还用于在NOR Flash执行一段Boot代码后,将NOR Flash的Boot代码搬移至内存,并在内存执行。
[0024]优选地,所述CPU还用于在内存执行Boot代码到初始化NOR Flash驱动期间,通过CPU总线控制器将所述CSO置为无效。
[0025]与现有技术相比较,本发明的有益效果在于:本发明几乎不用修改软件底层代码就可以实现双Boot切换,既可以灵活选择启动双Boot中的任何一个引导操作系统,又可以避免由于Boot文件损坏导致的操作系统无法启动的情况。
【专利附图】

【附图说明】
[0026]图1是本发明实施例提供的双Boot切换的实现方法原理图;
[0027]图2是本发明实施例提供的双Boot切换的实现装置示意图;
[0028]图3是本发明实施例提供的双Boot切换具体实现流程图;
[0029]图4是本发明实施例提供的采用双Boot切换方法实现RFID产品固件升级示意图。
【具体实施方式】
[0030]以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
[0031]图1是本发明实施例提供的双Boot切换的实现方法原理图,如图1所示,步骤包括:
[0032]步骤S101、在RFID设备上电复位后,EPLD通过读取可擦除可编程存储器中的启动标志字节,对使用主Boot启动还是使用备Boot启动进行选择。
[0033]本发明通过所述启动标志字节,实现手动选择启动主Boot或备Boot,所述启动标志字节存储在一个可擦除可编程存储器,例如EEPR0M。[0034]步骤S102、在进行上述选择后,EPLD将CPU的地址线映射到NOR Flash上用于主Boot启动的第一地址空间或用于备Boot启动的第二地址空间。
[0035]由于CPU的上电启动地址已经在硬件复位配置字中定义,所述硬件复位配置字是CPU上电时读取的信息,用来初始化CPU的锁相环PLL和启动的相关信息,对于PowerPC架构处理器,一般被编译到Boot文件中。在CPU上电复位期间,要实现从两个不同的启动地址执行Boot启动,需要EPLD对CPU的地址线进行映射。具体地说,当EPLD判断手动选择的是启动主Boot时,EPLD将CPU的地址线映射到NOR Flash上的第一地址空间,所述第一地址空间中存储用于启动主Boot的Boot代码。当EPLD判断手动选择的是启动备Boot时,EPLD将CPU的地址线映射到NOR Flash上的第二地址空间,所述第二地址空间中存储用于启动备Boot的Boot代码。
[0036]步骤S103、在进行上述地址映射后,CPU从对应于上述选择结果的第一地址空间或第二地址空间执行相应的Boot启动。
[0037]CPU从第一地址空间或第二地址空间执行相应的Boot启动的代码后,初始化CPU总线控制器,将CPU的片选信号CSO和CSx的空间同时映射到NOR Flash上,同时选中NORFlash。
[0038]当CSO和CSX同时选中NOR Flash时,由于EPLD对CPU地址线进行了映射,而且高优先级的CXO (CPU上电默认的片选信号)始终有效,这样就会导致CPU在对NOR Flash部分空间进行访问时出现地址映射错误的现象,所以在CPU小系统启动后需要对CSO和CSX进行相应的处理。也就是说,需要在CPU不再从NOR Flash执行Boot代码到初始化NORFlash驱动期间,通过操作CPU总线控制器将所述CSO置为无效,以便在RFID设备的系统启动后,CPU能够通过所述CSx对NOR Flash的全部空间进行访问操作,解决了在CSO和CSx同时选中NOR Flash时,片选地址空间重叠的问题。
[0039]图2是本发明实施例提供的双Boot切换的实现装置示意图,如图2所示,包括:
[0040]可擦除可编程存储器,用于存储启动标志字节,可以是EPR0M,也可以是EEPR0M,以下实施例中均以EEPROM为例进行说明;
[0041]NOR Flash,用于在第一地址空间存储用于主Boot启动的Boot代码,在第二地址空间存储用于备Boot启动的Boot代码;
[0042]EPLD,用于在RFID设备上电复位后,通过读取EEPROM中的所述启动标志字节,对使用主Boot启动还是使用备Boot启动进行选择,并在进行上述选择后,将CPU的地址线映射到NOR Flash上用于主Boot启动的第一地址空间或用于备Boot启动的第二地址空间;
[0043]CPU,用于在进行上述地址映射后,从对应于上述选择结果的第一地址空间或第二地址空间执行相应的Boot启动。
[0044]为了实现双Boot切换,需要解决以下几个问题:
[0045]1、CPU上电启动地址的确定
[0046]PowerPC架构处理器的启动地址可以通过硬件复位配置字确定,如果从低地址空间启动是从0x00000000启动,如果从高地址空间启动从OxFFFOOOOO启动,由于从高地址空间启动时需要EPLD将部分高位地址线拉高,因此,这里选择从低地址空间启动,这样可以省去EPLD在上电复位时对CPU地址线的映射。
[0047]在实现双Boot切换的过程中,首先需要在NOR Flash中规划出Boot文件所占用的空间。例如,为主Boot、备Boot均预留大小为512KB的地址空间,那么EPLD就需要对512KB处的地址空间进行处理,需要A[0…19]共20根地址线。当从主Boot启动时,EPLD将CPU地址线A19拉低,并将CPU地址线A19映射到NOR Flash的偏移OKB处的地址空间;当从备Boot启动时,EPLD将CPU地址线A19拉高,并将CPU地址线A19映射到NOR Flash的偏移512KB处的地址空间。这样就保证了在同一硬件复位配置字的情况下,CPU可以从NOR Flash基地址偏移OKB处和512KB处启动。
[0048]2、CPU片选信号的空间分配和片选信号空间重叠区域的处理
[0049]由于大多数通用处理器在上电复位后,默认片选信号为CS0,所以主Boot和备Boot的地址空间只能由CSO控制。同时本发明采用从NOR Flash进行Boot启动的启动方式,而所述NOR Flash又是CPU总线控制器上的存储设备,因此,要保证系统启动后能够正常访问NOR Flash的整个空间,就需要额外一个片选信号CSx控制选择NOR Flash的整个空间。
[0050]如果不考虑软件驱动的实现问题,可以将片选信号CSO和CSx选择的地址空间分配在完全不重叠的两段连续空间中。但是在实际的应用中,如果选择从NOR Flash进行Boot启动,处理器底层的汇编代码会将NOR Flash的起始地址认为是CPU上电执行代码的地址,并且在NOR Flash的驱动中也会按照这个地址进行操作。这样就会造成软件需要做比较大的修改,底层汇编代码和NOR Flash驱动均为开源代码,主要是移植工作,修改将会引入一定风险。
[0051]由于上述原因,需要将片选信号CSO选择空间的起始地址与CSx选择空间的起始地址定义成同一个地址。这样,从NOR Flash起始地址开始的IMB空间即处在CSO的片选空间,又处在CSx的片选空间,片选地址空间重叠。由于默认的CSO优先级要高于CSxjn果要访问NOR Flash的所有空间,0-1MB空间内CSO有效,IMB以上空间CSx有效,当启动备Boot时,EPLD已经将CPU的地址线A[19]拉高,访问大于512KB空间时,就会导致访问NORFlash空间的地址重复问题。
[0052]因此在启动过程中需要选择正确的时机,将CSO置为无效。具体的做法是:在CPU不再需要从NOR Flash执行代码到初始化NOR Flash驱动之间,可以直接操作CPU总线控制器,将CSO置为无效,这样CPU就可以通过CSx对NOR Flash整个空间进行访问,同时又不会影响在上电复位时(默认片选信号CS0)对NOR Flash空间进行访问。
[0053]进一步地,CPU在NOR Flash执行一段Boot代码后,将会把NOR Flash的Boot代码搬移至内存,并在内存执行。从NOR Flash执行代码到初始化NOR Flash驱动期间包括(PU在内存执行Boot代码期间,即CPU可以选择在内存执行Boot代码期间,通过操作其总线控制器将所述CSO置为无效。 [0054]手动选择启动王、备Boot的头现:
[0055]在RFID上电复位后,设备虽然实现了通过EPLD对CPU启动地址的重映射,但是如果想要实现对主Boot、备Boot手动切换还需要一个标志。由于CPU上电复位时还没有执行指令,无法使用CPU上的资源,因此,本发明使用EPLD,通过10模拟,实现一个I2C接口,与EEPROM的I2C接口连接,获取启动标志字节,即当设备上电复位后,EPLD通过I2C接口从EEPROM中读取启动标志字节,通过这个启动标志字节来确定启动主Boot或备Boot,然后再将地址线重新映射,从而实现双Boot切换。[0056]图3是本发明实施例提供的双Boot切换具体实现流程图,如图3所示,步骤包括:
[0057]1、RFID设备上电复位。
[0058]2,EPLD通过模拟I2C时序读取EEPROM中的启动标志字节,选择启动主Boot或启动备Boot。
[0059]3、EPLD根据选择结果,将CPU地址线映射到NOR Flash上的相应的地址空间,即用于主Boot启动的第一地址空间或用于备Boot启动的第二地址空间。
[0060]4、CPU从第一地址空间或第二地址空间执行相应的Boot代码,进行主Boot启动或备Boot启动。
[0061]5、CPU初始化CPU总线控制器,配置CPU总线控制器,将两个片选信号的空间同时映射到NOR Flash上,同时选中NOR Flash。
[0062]6、为了避免在片选信号的空间重叠区域高优先级片选信号(CPU启动时默认的片选信号)一直有效,当Boot代码不再在NOR Flash执行后,CPU通过CPU总线控制器将高优先级片选信号禁用。
[0063]CPU在NOR Flash执行一段Boot代码后,将NOR Flash的Boot代码搬移至内存,并在内存执行。CPU在内存中执行Boot代码期间,可以将高优先级片选信号无效。
[0064]图4是本发明实施例提供的采用双Boot切换方法实现RFID设备固件升级示意图,如图4所示。首先,将后台网口与RFID产品网卡连接,使后台通过后台软件与RFID设备建立通信连接,实现通信。其次,将需要升级的Boot文件通过后台下载到RFID设备中,前台软件将升级的Boot文件写入到NOR Flash的备用Boot分区,即用于启动备Boot的第二地址空间。然后,改写EEPROM中的启动标志字节,使RFID设备上电复位后能够使用备Boot启动。最后,将前台设备进行上电复位操作,启动备Boot引导操作系统。
[0065]综上所述,本发明具有以下技术效果:
[0066]1、本发明通过EPLD将CPU启动地址灵活映射到两个不同的地址空间,实现了双Boot的切换;
[0067]2、本发明通过将两个片选信号同时选中NOR Flash,而后又禁用一个高优先级的片选信号,使CPU能够正常访问NOR Flash的整个空间;
[0068]3、本发明几乎不用修改软件底层代码就可以成功实现双Boot切换,增加了软件的可移植性,大大缩短了产品的研发周期,提高了效率。
[0069]尽管上文对本发明进行了详细说明,但是本发明不限于此,本【技术领域】技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。
【权利要求】
1.一种双Boot切换的实现方法,其特征在于,包括: 步骤A)在射频识别RFID设备上电复位后,可擦除可编程逻辑器件EPLD通过读取可擦除可编程存储器中的启动标志字节,对使用主Boot启动还是使用备Boot启动进行选择; 步骤B)EPLD将中央处理器CPU的地址线映射到CPU总线控制器存储器NOR Flash上用于主Boot启动的第一地址空间或用于备Boot启动的第二地址空间; 步骤C) CPU从对应于上述选择结果的第一地址空间或第二地址空间执行相应的Boot启动。
2.根据权利要求1所述的方法,其特征在于,所述步骤C)包括: CPU从对应于上述选择结果的第一地址空间或第二地址空间执行相应的Boot代码; 在执行相应的Boot代码后,初始化CPU总线控制器,将CPU的片选信号CSO和CSx的空间同时映射到NOR Flash上,同时选中NOR Flash。
3.根据权利要求2所述的方法,其特征在于,所述步骤C)还包括: CPU在NOR Flash执行一段Boot代码后,将NOR Flash的Boot代码搬移至内存,并在内存执行。
4.根据权利要求3所述的方法,其特征在于,所述步骤C)还包括: CPU在内存执行Boot代码到初始化NOR Flash驱动期间,CPU总线控制器将所述CSO置为无效。
5.根据权利要求4所述的方法,其特征在于,所述第一地址空间和所述第二地址空间预先设置在所述NOR Flash的低地址空间。
6.根据权利要求2-5任意一项所述的方法,其特征在于,还包括: 在RFID设备的操作系统启动后,CPU通过使用所述CSx对NOR Flash的全部空间进行访问操作。
【文档编号】G06F9/48GK103853608SQ201210509991
【公开日】2014年6月11日 申请日期:2012年12月4日 优先权日:2012年12月4日
【发明者】丁岳 申请人:天津中兴软件有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1