CN103853608A - 一种双Boot切换的实现方法 - Google Patents
一种双Boot切换的实现方法 Download PDFInfo
- Publication number
- CN103853608A CN103853608A CN201210509991.7A CN201210509991A CN103853608A CN 103853608 A CN103853608 A CN 103853608A CN 201210509991 A CN201210509991 A CN 201210509991A CN 103853608 A CN103853608 A CN 103853608A
- Authority
- CN
- China
- Prior art keywords
- boot
- cpu
- flash
- address space
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种双Boot切换的实现方法及装置,方法包括:在射频识别RFID设备上电复位后,EPLD通过读取可擦除可编程存储器中的启动标志字节,对使用主Boot启动还是使用备Boot启动进行选择; EPLD将CPU的地址线映射到NOR Flash上用于主Boot启动的第一地址空间或用于备Boot启动的第二地址空间; CPU从对应于上述选择结果的第一地址空间或第二地址空间执行相应的Boot启动。本发明通过EPLD的控制和对CPU总线控制器的操作,实现了双Boot切换的功能。
Description
技术领域
本发明涉及嵌入式射频识别RFID领域,特别涉及一种双引导程序Boot切换的实现方法及其相关装置。
背景技术
在嵌入式设备中,需要通过Boot引导操作系统,典型的应用是通用引导程序U-Boot引导操作系统Linux内核,同时对于RFID设备,如路侧单元RSU,需要挂在龙门架等不便于直接维护的地方,所以对系统的固件Firmware,尤其是Boot稳定性的要求就显得尤为重要。
为了保证RFID设备的正常启动和实现Boot升级功能,需要加入双Boot切换功能,即在设备的处理器上电复位后实现从两个不同的启动地址执行Boot代码,使之可以灵活选择启动双Boot中的任何一个引导操作系统,同时,还可以避免由于Boot文件损坏导致系统无法启动。
由于不同架构的处理器在上电复位后的启动机制各不相同,对于RFID产品,大多使用的是PowerPC架构处理器,如何实现双Boot切换的功能,成为亟待解决的技术问题。
发明内容
本发明的目的在于提供一种双Boot切换的实现方法及装置,用于解决在PowerPC架构处理器实现双Boot切换问题。
根据本发明的一个方面,提供的一种双Boot切换的实现方法包括:
步骤A)在RFID设备上电复位后,可擦除可编程逻辑器件EPLD通过读取可擦除可编程存储器中的启动标志字节,对使用主Boot启动还是使用备Boot启动进行选择;
步骤B)EPLD将中央处理器CPU的地址线映射到CPU总线控制器存储器NOR Flash上用于主Boot启动的第一地址空间或用于备Boot启动的第二地址空间;
步骤C)CPU从对应于上述选择结果的第一地址空间或第二地址空间执行相应的Boot启动。
优选地,所述步骤C)包括:
CPU从对应于上述选择结果的第一地址空间或第二地址空间执行相应的Boot代码;
在执行相应的Boot代码后,初始化CPU总线控制器,将CPU的片选信号CS0和CSx的空间同时映射到NOR Flash上,同时选中NOR Flash。
优选地,所述步骤C)还包括:
CPU在NOR Flash执行一段Boot代码后,将NOR Flash的Boot代码搬移至内存,并在内存执行。
优选地,所述步骤C)还包括: CPU在内存执行Boot代码到初始化NORFlash驱动期间,CPU总线控制器将所述CS0置为无效。
优选地,所述第一地址空间和所述第二地址空间预先设置在所述NORFlash的低地址空间。
优选地,还包括:
在RFID设备的系统启动后,CPU通过使用所述CSx对NOR Flash的全部空间进行访问操作。
根据本发明的另一方面,提供的一种双Boot切换的实现装置,包括可擦除可编程存储器和NOR Flash,还包括:
EPLD,用于在RFID设备上电复位后,通过读取可擦除可编程存储器中的启动标志字节,对使用主Boot启动还是使用备Boot启动进行选择,将CPU的地址线映射到NOR Flash上用于主Boot启动的第一地址空间或用于备Boot启动的第二地址空间;
CPU,用于从对应于上述选择结果的第一地址空间或第二地址空间执行相应的Boot启动。
优选地,所述CPU还用于从第一地址空间或第二地址空间执行相应的Boot代码后,初始化CPU总线控制器,将其CS0和CSx的空间同时映射到NOR Flash上,同时选中NOR Flash。
优选地,所述CPU还用于在NOR Flash执行一段Boot代码后,将NORFlash的Boot代码搬移至内存,并在内存执行。
优选地,所述CPU还用于在内存执行Boot代码到初始化NOR Flash驱动期间,通过CPU总线控制器将所述CS0置为无效。
与现有技术相比较,本发明的有益效果在于:本发明几乎不用修改软件底层代码就可以实现双Boot切换,既可以灵活选择启动双Boot中的任何一个引导操作系统,又可以避免由于Boot文件损坏导致的操作系统无法启动的情况。
附图说明
图1是本发明实施例提供的双Boot切换的实现方法原理图;
图2是本发明实施例提供的双Boot切换的实现装置示意图;
图3是本发明实施例提供的双Boot切换具体实现流程图;
图4是本发明实施例提供的采用双Boot切换方法实现RFID产品固件升级示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图1是本发明实施例提供的双Boot切换的实现方法原理图,如图1所示,步骤包括:
步骤S101、在RFID设备上电复位后, EPLD通过读取可擦除可编程存储器中的启动标志字节,对使用主Boot启动还是使用备Boot启动进行选择。
本发明通过所述启动标志字节,实现手动选择启动主Boot或备Boot,所述启动标志字节存储在一个可擦除可编程存储器,例如EEPROM。
步骤S102、在进行上述选择后,EPLD将CPU的地址线映射到NOR Flash上用于主Boot启动的第一地址空间或用于备Boot启动的第二地址空间。
由于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代码。
步骤S103、在进行上述地址映射后,CPU从对应于上述选择结果的第一地址空间或第二地址空间执行相应的Boot启动。
CPU从第一地址空间或第二地址空间执行相应的Boot启动的代码后,初始化CPU总线控制器,将CPU的片选信号CS0和CSx的空间同时映射到NOR Flash上,同时选中NOR Flash。
当CS0和CSX同时选中NOR Flash时,由于EPLD对CPU地址线进行了映射,而且高优先级的CX0(CPU上电默认的片选信号)始终有效,这样就会导致CPU在对NOR Flash部分空间进行访问时出现地址映射错误的现象,所以在CPU小系统启动后需要对CS0和CSX进行相应的处理。也就是说,需要在CPU不再从NOR Flash执行Boot代码到初始化NOR Flash驱动期间,通过操作CPU总线控制器将所述CS0置为无效,以便在RFID设备的系统启动后,CPU能够通过所述CSx对NOR Flash的全部空间进行访问操作,解决了在CS0和CSx同时选中NOR Flash时,片选地址空间重叠的问题。
图2是本发明实施例提供的双Boot切换的实现装置示意图,如图2所示,包括:
可擦除可编程存储器,用于存储启动标志字节,可以是EPROM,也可以是EEPROM,以下实施例中均以EEPROM为例进行说明;
NOR Flash,用于在第一地址空间存储用于主Boot启动的Boot代码,在第二地址空间存储用于备Boot启动的Boot代码;
EPLD,用于在RFID设备上电复位后,通过读取EEPROM中的所述启动标志字节,对使用主Boot启动还是使用备Boot启动进行选择,并在进行上述选择后,将CPU的地址线映射到NOR Flash上用于主Boot启动的第一地址空间或用于备Boot启动的第二地址空间;
CPU,用于在进行上述地址映射后,从对应于上述选择结果的第一地址空间或第二地址空间执行相应的Boot启动。
为了实现双Boot切换,需要解决以下几个问题:
1、CPU上电启动地址的确定
PowerPC架构处理器的启动地址可以通过硬件复位配置字确定,如果从低地址空间启动是从0x00000000启动,如果从高地址空间启动从0xFFF00000启动,由于从高地址空间启动时需要EPLD将部分高位地址线拉高,因此,这里选择从低地址空间启动,这样可以省去EPLD在上电复位时对CPU地址线的映射。
在实现双Boot切换的过程中,首先需要在NOR Flash中规划出Boot文件所占用的空间。例如,为主Boot、备Boot均预留大小为512KB的地址空间,那么EPLD就需要对512KB处的地址空间进行处理,需要A[0…19]共20根地址线。当从主Boot启动时,EPLD将CPU地址线A19拉低,并将CPU地址线A19映射到NOR Flash的偏移0KB处的地址空间;当从备Boot启动时,EPLD将CPU地址线A19拉高,并将CPU地址线A19映射到NORFlash的偏移512KB处的地址空间。这样就保证了在同一硬件复位配置字的情况下,CPU可以从NOR Flash基地址偏移0KB处和512KB处启动。
2、CPU片选信号的空间分配和片选信号空间重叠区域的处理
由于大多数通用处理器在上电复位后,默认片选信号为CS0,所以主Boot和备Boot的地址空间只能由CS0控制。同时本发明采用从NOR Flash进行Boot启动的启动方式,而所述NOR Flash又是CPU总线控制器上的存储设备,因此,要保证系统启动后能够正常访问NOR Flash的整个空间,就需要额外一个片选信号CSx控制选择NOR Flash的整个空间。
如果不考虑软件驱动的实现问题,可以将片选信号CS0和CSx选择的地址空间分配在完全不重叠的两段连续空间中。但是在实际的应用中,如果选择从NOR Flash进行Boot启动,处理器底层的汇编代码会将NOR Flash的起始地址认为是CPU上电执行代码的地址,并且在NOR Flash的驱动中也会按照这个地址进行操作。这样就会造成软件需要做比较大的修改,底层汇编代码和NOR Flash驱动均为开源代码,主要是移植工作,修改将会引入一定风险。
由于上述原因,需要将片选信号CS0选择空间的起始地址与CSx选择空间的起始地址定义成同一个地址。这样,从NOR Flash起始地址开始的1MB空间即处在CS0的片选空间,又处在CSx的片选空间,片选地址空间重叠。由于默认的CS0优先级要高于CSx,如果要访问NOR Flash的所有空间,0-1MB空间内CS0有效,1MB以上空间CSx有效,当启动备Boot时,EPLD已经将CPU的地址线A[19]拉高,访问大于512KB空间时,就会导致访问NOR Flash空间的地址重复问题。
因此在启动过程中需要选择正确的时机,将CS0置为无效。具体的做法是:在CPU不再需要从NOR Flash执行代码到初始化NOR Flash驱动之间,可以直接操作CPU总线控制器,将CS0置为无效,这样CPU就可以通过CSx对NOR Flash整个空间进行访问,同时又不会影响在上电复位时(默认片选信号CS0)对NOR Flash空间进行访问。
进一步地,CPU在NOR Flash执行一段Boot代码后,将会把NOR Flash的Boot代码搬移至内存,并在内存执行。从NOR Flash执行代码到初始化NOR Flash驱动期间包括CPU在内存执行Boot代码期间,即CPU可以选择在内存执行Boot代码期间,通过操作其总线控制器将所述CS0置为无效。
手动选择启动主、备Boot的实现:
在RFID上电复位后,设备虽然实现了通过EPLD对CPU启动地址的重映射,但是如果想要实现对主Boot、备Boot手动切换还需要一个标志。由于CPU上电复位时还没有执行指令,无法使用CPU上的资源,因此,本发明使用EPLD,通过IO模拟,实现一个I2C接口,与EEPROM的I2C接口连接,获取启动标志字节,即当设备上电复位后,EPLD通过I2C接口从EEPROM中读取启动标志字节,通过这个启动标志字节来确定启动主Boot或备Boot,然后再将地址线重新映射,从而实现双Boot切换。
图3是本发明实施例提供的双Boot切换具体实现流程图,如图3所示,步骤包括:
1、RFID设备上电复位。
2、EPLD通过模拟I2C时序读取EEPROM中的启动标志字节,选择启动主Boot或启动备Boot。
3、EPLD根据选择结果,将CPU地址线映射到NOR Flash上的相应的地址空间,即用于主Boot启动的第一地址空间或用于备Boot启动的第二地址空间。
4、CPU从第一地址空间或第二地址空间执行相应的Boot代码,进行主Boot启动或备Boot启动。
5、CPU初始化CPU总线控制器,配置CPU总线控制器,将两个片选信号的空间同时映射到NOR Flash上,同时选中NOR Flash。
6、为了避免在片选信号的空间重叠区域高优先级片选信号(CPU启动时默认的片选信号)一直有效,当Boot代码不再在NOR Flash执行后,CPU通过CPU总线控制器将高优先级片选信号禁用。
CPU在NOR Flash执行一段Boot代码后,将NOR Flash的Boot代码搬移至内存,并在内存执行。CPU在内存中执行Boot代码期间,可以将高优先级片选信号无效。
图4是本发明实施例提供的采用双Boot切换方法实现RFID设备固件升级示意图,如图4所示。首先,将后台网口与RFID产品网卡连接,使后台通过后台软件与RFID设备建立通信连接,实现通信。其次,将需要升级的Boot文件通过后台下载到RFID设备中,前台软件将升级的Boot文件写入到NOR Flash的备用Boot分区,即用于启动备Boot的第二地址空间。然后,改写EEPROM中的启动标志字节,使RFID设备上电复位后能够使用备Boot启动。最后,将前台设备进行上电复位操作,启动备Boot引导操作系统。
综上所述,本发明具有以下技术效果:
1、本发明通过EPLD将CPU启动地址灵活映射到两个不同的地址空间,实现了双Boot的切换;
2、本发明通过将两个片选信号同时选中NOR Flash,而后又禁用一个高优先级的片选信号,使CPU能够正常访问NOR Flash的整个空间;
3、本发明几乎不用修改软件底层代码就可以成功实现双Boot切换,增加了软件的可移植性,大大缩短了产品的研发周期,提高了效率。
尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。
Claims (6)
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的片选信号CS0和CSx的空间同时映射到NOR Flash上,同时选中NOR Flash。
3.根据权利要求2所述的方法,其特征在于,所述步骤C)还包括:
CPU在NOR Flash执行一段Boot代码后,将NOR Flash的Boot代码搬移至内存,并在内存执行。
4.根据权利要求3所述的方法,其特征在于,所述步骤C)还包括:
CPU在内存执行Boot代码到初始化NOR Flash驱动期间,CPU总线控制器将所述CS0置为无效。
5.根据权利要求4所述的方法,其特征在于,所述第一地址空间和所述第二地址空间预先设置在所述NOR Flash的低地址空间。
6.根据权利要求2-5任意一项所述的方法,其特征在于,还包括:
在RFID设备的操作系统启动后,CPU通过使用所述CSx对NOR Flash的全部空间进行访问操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210509991.7A CN103853608A (zh) | 2012-12-04 | 2012-12-04 | 一种双Boot切换的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210509991.7A CN103853608A (zh) | 2012-12-04 | 2012-12-04 | 一种双Boot切换的实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103853608A true CN103853608A (zh) | 2014-06-11 |
Family
ID=50861295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210509991.7A Pending CN103853608A (zh) | 2012-12-04 | 2012-12-04 | 一种双Boot切换的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103853608A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104035776A (zh) * | 2014-06-23 | 2014-09-10 | 成都万维图新信息技术有限公司 | 一种操作系统的启动方法 |
CN105320529A (zh) * | 2014-07-08 | 2016-02-10 | 中兴通讯股份有限公司 | 基于NAND-Flash双启动引导的启动方法及装置 |
CN105786421A (zh) * | 2014-12-25 | 2016-07-20 | 中兴通讯股份有限公司 | 一种服务器显示方法及装置 |
CN109582370A (zh) * | 2018-11-01 | 2019-04-05 | 浙江大华技术股份有限公司 | 一种nor flash嵌入式设备的启动方法及装置 |
CN111338771A (zh) * | 2020-02-13 | 2020-06-26 | 深圳震有科技股份有限公司 | 引导程序切换处理方法及装置、计算机设备、介质 |
CN113010236A (zh) * | 2021-02-26 | 2021-06-22 | 山东英信计算机技术有限公司 | 一种程序执行方法、装置、设备及存储介质 |
-
2012
- 2012-12-04 CN CN201210509991.7A patent/CN103853608A/zh active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104035776A (zh) * | 2014-06-23 | 2014-09-10 | 成都万维图新信息技术有限公司 | 一种操作系统的启动方法 |
CN104035776B (zh) * | 2014-06-23 | 2017-05-17 | 成都万维图新信息技术有限公司 | 一种操作系统的启动方法 |
CN105320529A (zh) * | 2014-07-08 | 2016-02-10 | 中兴通讯股份有限公司 | 基于NAND-Flash双启动引导的启动方法及装置 |
CN105786421A (zh) * | 2014-12-25 | 2016-07-20 | 中兴通讯股份有限公司 | 一种服务器显示方法及装置 |
CN105786421B (zh) * | 2014-12-25 | 2020-11-03 | 中兴通讯股份有限公司 | 一种服务器显示方法及装置 |
CN109582370A (zh) * | 2018-11-01 | 2019-04-05 | 浙江大华技术股份有限公司 | 一种nor flash嵌入式设备的启动方法及装置 |
CN109582370B (zh) * | 2018-11-01 | 2022-07-19 | 浙江大华技术股份有限公司 | 一种nor flash嵌入式设备的启动方法及装置 |
CN111338771A (zh) * | 2020-02-13 | 2020-06-26 | 深圳震有科技股份有限公司 | 引导程序切换处理方法及装置、计算机设备、介质 |
CN113010236A (zh) * | 2021-02-26 | 2021-06-22 | 山东英信计算机技术有限公司 | 一种程序执行方法、装置、设备及存储介质 |
CN113010236B (zh) * | 2021-02-26 | 2024-01-19 | 山东英信计算机技术有限公司 | 一种程序执行方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102662749A (zh) | 一种双Boot切换的实现方法及装置 | |
CN103853608A (zh) | 一种双Boot切换的实现方法 | |
US10296217B2 (en) | Techniques to configure a solid state drive to operate in a storage mode or a memory mode | |
CN103207797B (zh) | 基于通用可扩展固件接口固件系统的胶囊式定制更新方法 | |
CN102945173B (zh) | 用户程序在线升级系统和升级方法 | |
CN105718281B (zh) | 一种触摸屏固件升级方法及装置 | |
CN101739283B (zh) | 一种计算机及虚拟系统直接访问计算机硬件的方法 | |
CN103761088A (zh) | 一种适用于arm架构移动设备的多操作系统切换方法 | |
US8914587B2 (en) | Multi-threaded memory operation using block write interruption after a number or threshold of pages have been written in order to service another request | |
CN105760191A (zh) | 嵌入式系统设备程序烧写量产方法 | |
CN102622257B (zh) | 电表在线自更新方法及其装置 | |
KR20150100075A (ko) | 메모리 및 컨트롤러를 포함하는 메모리 장치의 펌웨어를 업데이트하는 방법 | |
CN103678187A (zh) | 一种微控制单元及其控制方法 | |
CN103092659A (zh) | 脱离仿真器支持环境的dsp软件升级系统及其升级方法 | |
CN106303707A (zh) | 一种版本烧录方法、系统及终端 | |
US9223697B2 (en) | Computer reprogramming method, data storage medium and motor vehicle computer | |
CN104714792A (zh) | 多进程共享数据处理方法和装置 | |
WO2018120548A1 (zh) | 一种系统启动及运行的方法、装置、计算机存储介质 | |
CN110825421A (zh) | 一种固件升级方法、系统及可读存储介质 | |
CN109710322A (zh) | 通信设备复位方法、装置及系统 | |
CN102023873B (zh) | 应用程序执行方法与系统、存储媒体控制器及存储装置 | |
CN108052337A (zh) | 一种eMMC量产工具的固件升级方法及装置 | |
CN103345456B (zh) | 调节BootLoader启动地址的电路及方法 | |
CN102122269B (zh) | 闪存的写入逾时控制方法及其记忆装置 | |
CN106873951A (zh) | 一种麻醉机上位机软件移植到嵌入式Linux的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140611 |