一种嵌入式系统及其启动方法

文档序号:6428927阅读:130来源:国知局
专利名称:一种嵌入式系统及其启动方法
技术领域
本发明涉及通信技术领域,尤其涉及一种嵌入式系统及其启动方法。
背景技术
在以嵌入式处理器作为主控单元的板卡设计中,嵌入式处理器的地址线直接与 Flash存储器相连。板卡上电后,嵌入式处理器会从通过外总线连接的Flash存储器指定的地址中读取启动代码,实现嵌入式处理器的初始化配置和应用程序加载,从而实现整个板卡的正常运行。但由于版本升级过程异常掉电、文件系统的异常损坏以及器件本身部分地方的损坏等原因,可能会导致启动代码所在的区域损坏,这样就造成了嵌入式处理器无法读取启动代码因而无法正常启动,板卡不能正常运行,导致系统瘫痪,造成不良后果。目前的解决方法是通过外场人员将问题板卡取回,并用烧写器重新烧写Flash存储器,即在造成系统瘫痪后再去解决问题。由此可见,目前亟需一种灵活性高和可靠性高的嵌入式系统启动机制。

发明内容
本发明实施例提出了一种嵌入式系统启动方法及其装置,用以提高嵌入式系统启动的可靠性。本发明实施例提供的嵌入式系统,包括嵌入式处理器、可编程逻辑器件和存储器,其中,嵌入式处理器的低位地址线与存储器的低位地址线连接,嵌入式处理器的高位地址线通过可编程逻辑器件与存储器的高位地址线连接;
所述存储器,用于分别在主启动代码存储区和备启动代码存储区存储启动程序,其中, 主启动代码存储区和备启动代码存储区的低位地址范围相同;
所述可编程逻辑器件,用于默认将启动代码存储区的高位地址映射为主启动代码存储区的高位地址;以及,在获知嵌入式系统启动失败时,将启动代码存储区的高位地址映射为备启动代码存储区的高位地址;
所述嵌入式处理器,用于在嵌入式系统初始启动时,根据启动代码存储区的低位地址和可编程逻辑器件映射得到的主启动代码存储区的高位地址,从主启动代码存储区读取启动程序进行程序加载启动;以及,在程序加载失败时,根据启动代码存储区的低位地址和可编程逻辑器件映射得到的备启动代码存储区的高位地址,从备启动代码存储区读取启动程序进行程序加载启动。本发明实施例提供的应用于上述嵌入式系统的启动方法,包括
嵌入式系统初始启动时,可编程逻辑器件将存储器的启动代码存储区的高位地址映射为主启动代码存储区的高位地址,嵌入式处理器根据启动代码存储区的低位地址和可编程逻辑器件映射得到的主启动代码存储区的高位地址,从所述存储器的主启动代码存储区读取启动程序进行程序加载启动;
在嵌入式系统启动失败时,所述可编程逻辑器件将所述存储器的启动代码存储区的高
4位地址映射为备启动代码存储区的高位地址,所述嵌入式处理器根据启动代码存储区的低位地址和可编程逻辑器件映射得到的备启动代码存储区的高位地址,从所述存储器的备启动代码存储区读取启动程序进行程序加载启动。本发明的上述实施例中,在存储器上的主启动代码存储区和备启动代码存储区两个不同的存储区域存储启动程序,该两个存储区域的低位地址范围相同、高位地址不同,将嵌入式处理器的低位地址线与存储器的低位地址线连接,将嵌入式处理器的高位地址线通过可编程逻辑器件与存储器的高位地址线连接,并使可编程逻辑器件在默认状态下映射到主启动代码存储区的高位地址,在获知嵌入式系统启动失败时映射到备启动代码存储区的高位地址,从而使嵌入式系统在初次通过读取主启动代码存储区内的启动程序启动失败后,可通过读取备启动代码存储区内的启动程序代码启动,进而实现了嵌入式系统启动失败后的自恢复,降低了故障率,提高了可靠性。


图1为本发明实施例提供的嵌入式系统结构示意图2为本发明实施例中Flash存储器中的主备启动代码存储区的示意图; 图3为本发明实施例提供的嵌入式系统启动流程示意图; 图4为图2中地址映射模块的处理流程示意图; 图5为图2中定时及复位模块的处理流程示意图。
具体实施例方式针对现有技术存在的问题,本发明实施例通过可编程逻辑器件对高位地址线的处理,从而可以实现嵌入式处理器的自动主备启动切换。下面结合附图对本发明实施例进行详细描述。参见图1,为本发明实施例的嵌入式系统结构示意图。如图所示,嵌入式处理器10的低位地址线与Flash存储区30的低位地址线连接, 嵌入式处理器10的高位地址线通过可编程逻辑器件20与Flash存储器30的高位地址线连接,嵌入式处理器10的数据线与Flash存储区30的数据线连接(图中未示出)。Flash存储器30中存在主启动代码存储区和备启动代码存储区,该2个启动代码存储区中存储有相同的启动程序,并且该2个启动代码存储区的低位地址范围相同、高位地址范围不相同。可编程逻辑器件20具有如下功能在默认情况下,将启动代码存储区的高位地址映射为主启动代码存储区的高位地址;在获知嵌入式系统程序加载启动失败的情况下,将启动代码存储区的高位地址映射为备启动代码存储区的高位地址,并指示嵌入式处理器10 重新进行启动流程。相应的,嵌入式处理器10可通知可编程逻辑器件20是否启动成功,并可在接收到可编程逻辑器件20的指示信号后重新进行启动流程。由于在默认情况下,可编程逻辑器件20将启动代码存储区的高位地址映射为主启动代码存储区的高位地址,因此嵌入式处理器10在启动时读取的是Flash存储器30的主启动代码存储区内的启动程序;可编程逻辑器件20在获知嵌入式系统启动失败的情况下,将启动代码存储区的高位地址映射为备启动代码存储区的高位地址,因此嵌入式处理器10在重新启动时读取的是Flash存储器20的备启动代码存储区内的启动程序,从而在嵌入式系统初次启动失败后可再次启动,并通过读取备份的启动程序,从而一定程度上避免了因启动程序故障所引起的启动失败,进而实现了嵌入式系统启动失败后的自恢复,降低了故障率,提高了可靠性。根据可编程逻辑器件20和嵌入式处理器10的以上功能,在具体实施时,可编程逻辑器件20可进一步包括地址映射模块201和定时复位模块202,嵌入式处理器10可进一步包括指示模块101和复位模块102,其中
指示模块101可在嵌入式系统程序加载启动成功时,向可编程逻辑器件20发送启动成功指示信号;
定时及复位模块202如果在设定时间内(即设定时长内,以下同)接收到嵌入式处理器 10的指示模块101发送的启动成功指示信号时,则将可编程逻辑器件10的地址线设置为直通模式;定时及复位模块202如果在设定时间内未接收到嵌入式处理器10的指示模块101 发送的启动成功指示信号,则向嵌入式处理器10发送复位信号,并指示地址映射模块201 将启动代码存储区的高位地址映射为备启动代码存储区的高位地址,以使复位模块102在接收到定时及复位模块202发送的复位信号后,触发嵌入式处理器10从备启动代码存储区读取启动程序重新进行程序加载启动;
地址映射模块201在默认状态下,将启动代码存储区的高位地址映射为主启动代码存储区的高位地址,在接收到定时及复位模块202发送的指示时,将启动代码存储区的高位地址映射为备启动代码存储区的高位地址。进一步的,嵌入式处理器10还可包括故障检测模块103和故障告警模块104。其中,故障检测模块103用于当嵌入式系统程序加载失败时检测加载失败原因,故障告警模块104用于根据故障检测模块103检测出的加载失败原因,发送相应的故障告警。下面以一具体实例为例,结合图1所示的嵌入式系统,对嵌入式系统的启动流程进行详细描述。本实例中,如图2所示,在Flash存储器30中开辟有2个存储区用来存储启动程序,分别称为主程序代码存储区和备程序代码存储区,这两个存储区的高位地址范围不同、低位地址范围相同。为实现方便,主程序代码存储区的高位地址为0,备程序代码存储区的高位地址为1,这样,在Flash存储器30的两个不同位置的连续空间,分别存储了启动程序。如图3所示,当板卡上电后,嵌入式系统的启动流程可包括
步骤30广302,板卡上的可编程逻辑器件20内部的地址映射模块201设定高位地址为逻辑电平0,使嵌入式处理器10默认从Flash存储器30的主启动代码存储区加载启动代码,同时启动定时及复位模块202开始计时,此时嵌入式处理器10的指示信号为无效状态。其中,嵌入式处理器10如果在预先设定的时间内完成启动代码的加载,并实现了嵌入式处理器10的初始化和应用程序加载,则产生一个有效指示信号给可编程逻辑器件 20的定时及复位模块202,通知加载成功。步骤303,定时及复位模块202在预先设定的时间到达后,检测指示信号是否有效,如果有效,说明嵌入式处理器10加载成功,转入步骤304 ;如果无效,说明嵌入式处理器 10加载失败,转入步骤305 ;
步骤304,定时及复位模块202不产生处理器复位信号,停止计时,并将高位地址设为直通模式,板卡正常运行;
步骤305,定时及复位模块202产生一个复位信号输出给嵌入式处理器10,并指示地址映射模块201将高位地址设定为逻辑电平1。嵌入式处理器10收到复位信号后,重新开始程序加载启动流程,由于地址映射模块201已将高位地址映射为1,因此此时启动程序存储区已切换到备用启动代码存储区,嵌入式处理器10将从备用启动代码存储区获取启动代码。嵌入式处理器10从备用启动代码存储区启动成功后,向可编程逻辑器件20发送有效指示信号,可编程逻辑器件20的地址映射模块201根据该有效指示信号,将高位地址设置为直通模式,从而使板卡后续正常运行。进一步的,当嵌入式处理器10从主启动代码存储区启动失败后,还可对主启动代码存储区的问题进行检测,即,检测是由于软件原因引起的损坏还是硬件损坏,并可进一步根据失败原因进行相应相应告警,例如,若软件损坏则发送需要进行修复的告警,从而使修复后重新启动板卡时能够从主启动代码存储区启动,若硬件损坏则提示进行硬件更换和返修。上述流程中,地址映射模块201的处理流程可如图4所示,定时及复位模块的处理流程可如图5所示,该2个模块的具体处理流程可参见对图3所示流程的描述,在此不再赘述。需要说明的是,本发明实施例中的Flash存储器还可以用其他类型的存储器替代。通过本发明的上述实施例可以看出,由可编程逻辑器件内部对高位地址线进行映射,把启动代码的地址映射到Flash存储器的两个不同位置,即主备两个启动位置。通过设计嵌入式处理器与可编程逻辑器件之间一种交互机制,检测处理器是否正常启动运行, 当检测到处理器没有正常启动时,可编程逻辑器件把地址空间切换到Flash的备用启动地址,并通知嵌入式处理器重新进行启动流程,从而实现了嵌入式系统启动失败后的自恢复, 降低了故障率,提高了可靠性。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
权利要求
1.一种嵌入式系统,其特征在于,包括嵌入式处理器、可编程逻辑器件和存储器,其中,嵌入式处理器的低位地址线与存储器的低位地址线连接,嵌入式处理器的高位地址线通过可编程逻辑器件与存储器的高位地址线连接;所述存储器,用于分别在主启动代码存储区和备启动代码存储区存储启动程序,其中, 主启动代码存储区和备启动代码存储区的低位地址范围相同;所述可编程逻辑器件,用于默认将启动代码存储区的高位地址映射为主启动代码存储区的高位地址;以及,在获知嵌入式系统启动失败时,将启动代码存储区的高位地址映射为备启动代码存储区的高位地址;所述嵌入式处理器,用于在嵌入式系统初始启动时,根据启动代码存储区的低位地址和可编程逻辑器件映射得到的主启动代码存储区的高位地址,从主启动代码存储区读取启动程序进行程序加载启动;以及,在程序加载失败时,根据启动代码存储区的低位地址和可编程逻辑器件映射得到的备启动代码存储区的高位地址,从备启动代码存储区读取启动程序进行程序加载启动。
2.如权利要求1所述的嵌入式系统,其特征在于, 所述嵌入式处理器,包括指示模块,用于当嵌入式系统启动成功时,向所述可编程逻辑器件发送启动成功指示信号;复位模块,用于在接收到所述可编程逻辑器件发送的复位信号后,触发所述嵌入式处理器重新进行程序加载启动; 所述可编程逻辑器件,包括地址映射模块,用于默认将启动代码存储区的高位地址映射为主启动代码存储区的高位地址;以及,根据接收到的指示,将启动代码存储区的高位地址映射为备启动代码存储区的高位地址;定时及复位模块,用于在设定时间内未接收到所述嵌入式处理器发送的启动成功指示信号时,向嵌入式处理器发送复位信号,并指示所述地址映射模块将启动代码存储区的高位地址映射为备启动代码存储区的高位地址;以及,在所述设定时间内接收到嵌入式处理器发送的启动成功指示信号时,将所述可编程逻辑器件的地址线设置为直通模式。
3.如权利要求2所述的嵌入式系统,其特征在于,所述存储器中的主启动代码存储区的高位地址为0,备启动代码存储区的高位地址为1 ;所述地址映射模块具体用于,默认将启动程序存储区的高位地址映射为0 ;以及,根据接收到的指示,将启动代码存储区的高位地址映射为1。
4.如权利要求1所述的嵌入式系统,其特征在于,所述嵌入式处理器,包括 故障检测模块,用于当嵌入式系统程序加载失败时,检测加载失败原因;故障告警模块,用于根据所述故障检测模块检测出的加载失败原因,发送相应的故障告警。
5.如权利要求1-4之一所述的嵌入式系统,其特征在于,所述存储器为闪存Flash存储器。
6.一种应用于如权利要求1所述的嵌入式系统的启动方法,其特征在于,包括嵌入式系统初始启动时,可编程逻辑器件将存储器的启动代码存储区的高位地址映射为主启动代码存储区的高位地址,嵌入式处理器根据启动代码存储区的低位地址和可编程逻辑器件映射得到的主启动代码存储区的高位地址,从所述存储器的主启动代码存储区读取启动程序进行程序加载启动;在嵌入式系统启动失败时,所述可编程逻辑器件将所述存储器的启动代码存储区的高位地址映射为备启动代码存储区的高位地址,所述嵌入式处理器根据启动代码存储区的低位地址和可编程逻辑器件映射得到的备启动代码存储区的高位地址,从所述存储器的备启动代码存储区读取启动程序进行程序加载启动。
7.如权利要求6所述的方法,其特征在于,还包括所述嵌入式处理器从所述存储器的主启动代码存储区读取启动程序进行程序加载启动后,若启动成功,则向所述可编程逻辑器件发送启动成功指示信号;所述在嵌入式系统启动失败时,所述可编程逻辑器件将启动代码存储区的高位地址映射为备启动代码存储区的高位地址,所述嵌入式处理器根据启动代码存储区的低位地址和可编程逻辑器件映射得到的备启动代码存储区的高位地址,从所述存储器的备启动代码存储区读取启动程序进行程序加载启动,包括所述可编程逻辑器件若在设定时间内未接收到所述嵌入式处理器发送的启动成功指示信号,则向嵌入式处理器发送复位信号,并将启动代码存储区的高位地址映射为备启动代码存储区的高位地址;所述嵌入式处理器在接收到所述可编程逻辑器件发送的复位信号后,根据启动代码存储区的低位地址和可编程逻辑器件映射得到的备启动代码存储区的高位地址,从所述存储器的备启动代码存储区读取启动程序进行程序加载启动。
8.如权利要求7所述的方法,其特征在于,还包括所述可编程逻辑器件若在所述设定时间内接收到嵌入式处理器发送的启动成功指示信号,则将所述可编程逻辑器件的地址线设置为直通模式。
9.如权利要求6所述的方法,其特征在于,所述存储器中的主启动代码存储区的高位地址为0,备启动代码存储区的高位地址为1 ;所述可编程逻辑器件默认将启动程序存储区的高位地址映射为0,在嵌入式系统启动失败时,将启动代码存储区的高位地址映射为1。
10.如权利要求6-9之一所述的方法,其特征在于,还包括当嵌入式系统程序加载失败时,检测加载失败原因;根据所述故障检测模块检测出的加载失败原因,发送相应的故障告警。
全文摘要
本发明公开了一种嵌入式系统及其启动方法。该嵌入式系统包括嵌入式处理器、可编程逻辑器件和存储器,嵌入式处理器的低位地址线与存储器的低位地址线连接,嵌入式处理器的高位地址线通过可编程逻辑器件与存储器的高位地址线连接;存储器中的主、备启动代码存储区存储启动程序,主启动代码存储区和备启动代码存储区的低位地址范围相同;可编程逻辑器件默认将高位地址映射为主启动代码存储区的高位地址,在获知嵌入式系统启动失败时,将高位地址映射为备启动代码存储区的高位地址;嵌入式处理器在嵌入式系统初始启动时从主启动代码存储区加载启动,在程序加载失败时从备启动代码存储区加载启动。本发明可高嵌入式系统启动的可靠性。
文档编号G06F9/445GK102236569SQ20111020370
公开日2011年11月9日 申请日期2011年7月20日 优先权日2011年7月20日
发明者冯亮, 刘艳雷, 陈宇翔 申请人:大唐移动通信设备有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1