一种设置独立boot区的flash芯片及系统和方法
专利摘要:本发明所提供的一种设置独立BOOT区的FLASH芯片及系统和方法,在其芯片中,所述BOOT区设置为主副两个,并顺序设置在主BOOT区的启动等待预定时间,用于在超过该启动等待预定时间则跳转到副BOOT区启动。由于采用了在FLASH芯片中设置的两个以上独立的BOOT程序区,并设置在其中一个BOOT程序区等待预定时间不能启动时进入另一个BOOT程序区进行启动,从而实现了多重启动程序区的准备。
专利说明:
一种设置独立BOOT区的FLASH芯片及系统和方法
[0001] 技术领域
[0002] 本发明涉及一种嵌入式芯片及系统和方法,尤其涉及的是一种设置独立 BOOT区的FLASH芯片及系统和方法的改进。
[0003] 背景技术
[0004] 在嵌入式系统领域中,任何CPU都需要BOOT程序启动。如图1和图2 所示的,开发人员一般都将BOOT程序放在FLASH中,但如果BOOT程序损坏,单板就可能根本无法启动,此时相应的设备就不能启动工作,相应的设备如手机就变成了砖头。由此可见BOOT程序的升级和完善可用需要足够地可靠稳定性。
[0005] 为防止BOOT程序的损坏导致手机变砖头,业界常用做法是:在单板上焊接两片FLASH,分别连接CPU不同的片选信号,如图1所示。如果想切换启动程序,一般是通过跳线或者拨码开关切换,CS0片选就切换到想要启动的 FLASH芯片上,然后启动流程与原先正常的流程一样。
[0006] 另外还有在芯片中做两级BOOT程序的,第一级BOOT程序负责加载第二级BOOT程序。一般BOOT升级只升级第二级BOOT程序,如图2所示。这样第一级BOOT程序就是稳定的,升级第二级BOOT程序失败的时候还可以恢复第二级BOOT程序。
[0007] 但以上两种常用做法中都存在一定的缺陷,第一种硬件设计复杂,需要切换片选,同时增加了硬件成本,因为需要多焊接一片BOOT FLASH。第二种做法,是软件过于复杂,需要维护两套BOOT程序,存在诸多不同级BOOT 程序之间的嵌套,启动流程也很复杂,会经常出现启动不顺畅甚至死机的问题。
[0008] 因此,现有技术还有待于改进。
[0009] 发明内容
[0010] 本发明的目的在于提供一种设置独立BOOT区的FLASH芯片及系统和方法,针对FLASH芯片的启动BOOT区设置的安全性,降低FLASH芯片的单启动 BOOT区设置在可能故障时的不能启动风险。
[0011] 本发明的技术方案包括:
[0012] 一种设置独立BOOT区的FLASH芯片,其中,所述BOOT区设置为主副两个,并顺序设置在主BOOT区的启动等待预定时间,用于在超过该启动等待预定时间则跳转到副BOOT区启动。
[0013] 所述的设置独立BOOT区的FLASH芯片,其中,所述FLASH芯片还通过其一控制引脚连接有一CPLD,通过CPLD实现对BOOT区的选择。
[0014] 所述的设置独立BOOT区的FLASH芯片,其中,所述CPLD在CPU启动时保持对FLASHLA25地址线拉低电位,以用于对副BOOT区的启动选用。
[0015] 所述的设置独立BOOT区的FLASH芯片,其中,所述副BOOT区在启动后复制本区的BOOT程序到主BOOT区执行。
[0016] 所述的设置独立BOOT区的FLASH芯片,其中,所述副BOOT区设置在 0x01ff-fffc到0x01ff-0000的区域内。
[0017] 一种设置独立BOOT区的FLASH芯片嵌入式系统,其中,采用如上所述任一FLASH芯片方案。
[0018] 一种采用如上所述任一设置独立BOOT区的FLASH芯片的实现方法,其中,包括以下步骤:
[0019] A、在FLASH芯片中设置主副两个BOOT区,并顺序设置在主 BOOT区的启动等待预定时间;
[0020] B、在超过该启动等待预定时间时则跳转到副BOOT区启动。
[0021] 所述的实现方法,其中,在所有BOOT区都不能启动时显示启动失败的信息。
[0022] 本发明所提供的一种设置独立BOOT区的FLASH芯片及系统和方法,由于采用了在FLASH芯片中设置的两个以上独立的BOOT程序区,并设置在其中一个BOOT程序区等待预定时间不能启动时进入另一个BOOT程序区进行启动,从而实现了多重启动程序区的准备。
[0023] 附图说明
[0024]
[0025] 图1为现有技术的采用两个FLASH芯片实现片选启动的示意图。
[0026] 图2为现有技术的采用二级BOOT区的FLASH芯片的方案示意图。
[0027] 图3为本发明实现两个BOOT区启动的FLASH芯片结构示意图。
[0028] 图4为本发明两个BOOT区启动时的FLASH芯片示意图。
[0029] 具体实施方式
[0030] 以下结合附图,将对本发明的较佳实施例提供更为详细的说明。
[0031] 本发明所提供的一种设置独立BOOT区的FLASH芯片及系统和方法,其中所述FLASH芯片设置采用的所述BOOT区设置为至少两个,当设置为两个的时候设置具有主副BOOT区,设置有更多个的时候有启动检索顺序。顺序设置在每一个BOOT区的启动等待预定时间,从主启动区开始,在超过该启动等待预定时间后则跳转到下一个BOOT区启动,依次等待,如果所有的BOOT区都不能启动时方设定为启动失败,显示或提示启动失败的信息。
[0032] 本发明以PowerPC P1021芯片为例,该处理器上POWERPC E500为核心的高性能RICS(Reduced Instruction Set Computer,精简指令集计算机)处理器;P1021在上电启动时,如图3和图4所示,第一条指令地址为 0xffff-fffc,这个地址从CS0片选发出,最后落在FLASH的最后四字节上。因此P1021的BOOTROM都是烧录在FLASH的最高端位置,如果BOOT程序的存储空间需要1MB,那么整个BOOT程序就烧录在FLASH最后1MB的位置开始,到 FLASH结束地址。
[0033] 0xffff-fffc地址对应64MB flash,实际FLASH只会获取到0x03ff-fffc,其高端的6位数据线对flash毫无意义,因为FLASH总共才26根地址线,多余的高6位地址线都是不会接到FLASH芯片的。这是正常的BOOT区存放地址,大部分应用都是这样设计的,称其为主BOOT,在正常情况下都是从主BOOT 区启动的。
[0034] CPU默认是从主BOOT区启动的,通过CPLD(Complex Programmable Logic Device复杂可编程逻辑器件)的控制,此时CPLD不改变LA25的原有电平, CPU访问的地址线对应的地址值是0xffff-fffc,也就是主BOOT区空间。
[0035] 假如主BOOT区出现故障无法启动,此时就要考虑如何启动另外的BOOT 区。如果可以控制FLASH芯片的LA25地址线,让其在CPU启动的时候一直拉低位0,那么CPU访问FLASH的地址则变成了0x01ff-fffc,如果将BOOT程序也在这个位置存放一份,则CPU就可以引导使用这个BOOT区并启动。这个地址正好是32M的存储位置,因而称其为副BOOT。
[0036] CPU正常启动时,LA25地址线从CPU直连FLASH的A26地址线,表示从最高4字节启动。如果想从32M地址启动,则通过CPLD控制,将LA25强行送低电平到FLASH的A26地址线,那么对FLASH芯片的寻址则为0x01ff-fffc,如图3所示。这样就可以形成主副BOOT区两种启动方式。
[0037] 主BOOT区出现故障时,CPU复位时CPLD会启动一个计时器,例如设置启动等待预定时间为10秒,如果超过该启动等待预定时间CPU没有清除启动标识,则判断认为主BOOT区启动失败。
[0038] 如果是主BOOT不小心被破坏时,主BOOT区的启动等待预定时间内CPU就无法启动,此时就可以控制CPLD将LA25地址线的电平一直拉低,并重启复位CPU,此时CPU将从0x01ff-fffc到0x01ff-0000的副BOOT启动。副BOOT启动完成后,将本身存储的BOOT程序复制到主BOOT在flash中存放的位置进行执行,从而实现通过副BOOT区启动的过程。
[0039] 不管是主BOOT区还是副BOOT区启动完成后,就会清除CPLD的启动标识,防止CPLD再复位CPU。
[0040] 在实际的应用实例中,本发明实现方法还可以设置更多个BOOT区,设置相应的地址线启动读取指令即可,通过对应的地址线选择,可以直接选择其中的某一BOOT区启动,其启动方式更安全,可以实现FLASH芯片的安全启动。
[0041] 本发明所提供的在同一片FLASH的不同位置存放两套BOOT程序的处理方式中,这两套程序相互无依赖关系,CPU可以选择其中任意一个启动,也可以在顺序等待对应BOOT区的启动等待预定时间后启动下一个BOOT区,从而实现前序BOOT区损坏的情况下启动下一BOOT区的处理方式。就算破坏了一个,CPU可以从FLASH芯片的另外一个位置引导BOOT程序并成功启动,从而提高了FLASH芯片的启动安全性。
[0042] 应当理解的是,本发明针对上述较佳实施例的说明较为具体,并不能因此而理解为对本发明专利保护范围的限制,本发明的专利保护范围应以所附权利要求为准。
权利要求:1.一种设置独立BOOT区的FLASH芯片,其特征在于,所述BOOT区设置为主副两个,并顺序设置在主BOOT区的启动等待预定时间,用于在超过该启动等待预定时间则跳转到副BOOT区启动。
2.根据权利要求1所述的设置独立BOOT区的FLASH芯片,其特征在于,所述FLASH芯片还通过其一控制引脚连接有一CPLD,通过CPLD实现对BOOT区的选择。
3.根据权利要求2所述的设置独立BOOT区的FLASH芯片,其特征在于,所述CPLD在CPU启动时保持对FLASH LA25地址线拉低电位,以用于对副BOOT区的启动选用。
4.根据权利要求3所述的设置独立BOOT区的FLASH芯片,其特征在于,所述副BOOT区在启动后复制本区的BOOT程序到主BOOT区执行。
5.根据权利要求4所述的设置独立BOOT区的FLASH芯片,其特征在于,所述副BOOT区设置在0x01ff-fffc到0x01ff-0000的区域内。
6.一种设置独立BOOT区的FLASH芯片嵌入式系统,其特征在于,采用如权利要求1至5任一所述的FLASH芯片。
7.一种采用如权利要求1至5任一所述设置独立BOOT区的FLASH芯片的实现方法,其特征在于,包括以下步骤:
A、在FLASH芯片中设置主副两个BOOT区,并顺序设置在主BOOT区的启动等待预定时间;
B、在超过该启动等待预定时间时则跳转到副BOOT区启动。
8.根据权利要求6所述的实现方法,其特征在于,在所有BOOT区都不能启动时显示启动失败的信息。
公开号:CN110597671
申请号:CN201910783361.0A
发明人:李小军 吴闽华 孟庆晓
申请人:深圳震有科技股份有限公司
申请日:2019-08-23
公开日:2019-12-20