嵌入式系统的开机方法
文献发布时间:2023-06-19 18:32:25
【技术领域】
本发明是有关于一种嵌入式系统的开机方法,特别是指一种能够修复操作系统映像文件错误的嵌入式系统的开机方法。
【背景技术】
嵌入式系统一般指非PC系统,有计算机功能但又不称之为计算机的设备或器材。它是以应用为中心,软硬件可增减,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算器系统。现有的嵌入式系统(如嵌入式储存系统)包含两个主板、两个基板管理控制器(Baseboard management controller,BMC)、及四个非挥发性内存。该两个基板管理控制器分别设置在该两个主板上,其中该两个非挥发性内存设置在其中一个该主板上,且其中另外该两个非挥发性内存设置在其中另一个该主板上。在同一个该主板上的该基板管理控制器电连接同一个该主板上的该两个非挥发性内存。每一该非挥发性内存储存一开机映像文件、一操作系统映像文件、一文件系统映像文件、及一应用程序映像文件。
该两个主板上的该些基板管理控制器及该些非挥发性内存互为一备援设备,且当其中一个该基板管理控制器在执行开机程序中发生异常时,该基板管理控制器会从所电连接的另一个该非挥发性内存再次加载该开机映像文件、该操作系统映像文件、该文件系统映像文件、及该应用程序映像文件,以确保能够正常执行开机程序,进而成功加载操作系统。换句话说,现有的嵌入式系统共需要四个该非挥发性内存,以确保正确执行开机程序,因此,是否存在其他的开机方法而达到同样效果的系统可靠性与强固性,便成为一个待解决的问题。
【发明内容】
因此,本发明的目的,即在提供一种能够修复操作系统映像文件错误且使用数量较少的非挥发性内存的嵌入式系统的开机方法。
于是,本发明提供一种嵌入式系统的开机方法,适用于一嵌入式系统,例如是一嵌入式储存系统。该嵌入式系统包含分别设置在两个主板且互为备援装置的两个基板管理控制器、两个非挥发性内存、及两个网络卡。每一该非挥发性内存储存一开机映像文件及一操作系统映像文件。该嵌入式系统的开机方法包含步骤(a)~(d)。
于步骤(a),当该嵌入式系统被启动时,每一该基板管理控制器自对应的该非挥发性内存读取该开机映像文件,以执行一开机程序。
于步骤(b),当每一该基板管理控制器在执行该开机程序后,自对应的该非挥发性内存读取该操作系统映像文件,以执行一操作系统。
于步骤(c),当设置在其中一个该主板上的该基板管理控制器读取该操作系统映像文件失败或执行该操作系统失败时,通知对应的该网络卡,使得该网络卡经由与设置在另一个该主板上的该网路卡通讯,以取得储存在另一个该非挥发性内存的该操作系统映像文件。
于步骤(d),当该基板管理控制器获得储存在另一个该非挥发性内存的该操作系统映像文件后,更新对应的该非挥发性记忆体的该操作系统映像文件,且在不重新启动的情况下,直接加载该作业系统映像文件,以执行该操作系统。
优选地,在步骤(a)中,每一该开机映像文件包含支持预启动执行环境(PrebooteXecution Environment,PXE)机制,在步骤(c)中,每一该网络卡借由该PXE机制取得设置在另一个该主板上的该非挥发性内存的该作业系统映像文件。
优选地,其中,在步骤(a)中,每一该开机映像文件是对应一启动程序(Bootloader),在步骤(b)中,每一该作业系统映像文件是对应一Linux核心(Kernel)程序。
优选地,每一该非挥发性内存还储存一文件系统映像文件,其中,该嵌入式系统的开机方法还包含步骤(e)~(g)。
于步骤(e),当每一该基板管理控制器在执行该操作系统后,自对应的该非挥发性内存读取该文件系统映像文件,以执行一文件系统(File system)。
于步骤(f),当设置在其中一个该主板上的该基板管理控制器读取该文件系统映像文件失败或执行该文件系统失败时,通知对应的该网络卡,使得该网络卡经由与设置在另一个该主板上的该网路卡通讯,以取得储存在另一个该非挥发性内存的该文件系统映像文件。
于步骤(g),当该基板管理控制器获得储存在另一个该非挥发性内存的该文件系统映像文件后,更新对应的该非挥发性记忆体的该文件系统映像文件,且在不重新启动的情况下,直接加载该文件系统映像文件,以执行该文件系统。
优选地,每一该非挥发性内存还储存一应用程序映像文件,其中,该嵌入式系统的开机方法还包含步骤(h)~(j)。
于步骤(h),当每一该基板管理控制器在执行该文件系统后,自对应的该非挥发性内存读取该应用程序映像文件,以执行至少一应用程序。
于步骤(i),当设置在其中一个该主板上的该基板管理控制器读取该应用程序映像文件失败或执行该至少一应用程序失败时,通知对应的该网络卡,使得该网络卡经由与设置在另一个该主板上的该网络卡通讯,以取得储存在另一个该非挥发性内存的该应用程序映像文件。
于步骤(j),当该基板管理控制器获得储存在另一个该非挥发性内存的该应用程序映像文件后,更新对应的该非挥发性记忆体的该应用程序映像文件,且在不重新启动的情况下,直接加载该应用程序映像文件,以执行该至少一应用程序。
优选地,该嵌入式系统不具有任何一基本输入输出系统(BIOS)。
相较于现有技术,本发明借由每一该基板管理控制器在执行该开机程序后,且发现读取该操作系统映像文件失败或执行该作业系统失败时,借由该两个网络卡取得另一个该非挥发性记忆所储存的该操作系统映像文件,以在不重新启动的情况下,更新对应的该非挥发性内存,且直接加载该操作系统映像文件,以执行该操作系统。
【附图说明】
图1是一方块图,说明本发明嵌入式系统的开机方法所适用的一嵌入式系统;及
图2是一流程图,说明本发明嵌入式系统的开机方法的一实施例。
【具体实施方式】
在本发明被详细描述之前,应当注意在以下的说明内容中,类似的组件是以相同的编号来表示。
参阅图1,本发明嵌入式系统的开机方法之一实施例,适用于一嵌入式系统100。该嵌入式系统100包含分别设置在两个主板11、21且互为备援装置的两个基板管理控制器13、23、两个非挥发性内存12、22、及两个网络卡14、24。设置在同一个该主板11(或21)上的该基板管理控制器13(或23)电连接对应的该非挥发性内存12(或22)及该网络卡14(或24)。每一该非挥发性内存12、22储存一开机映像文件、一操作系统映像文件、一文件系统映像文件、及一应用程序映像文件。在本实施例中,每一该开机映像文件是对应一启动程序(Bootloader),每一该操作系统映像文件是对应一Linux核心(Kernel)程序。另外要特别强调的是:该嵌入式系统不具有任何一基本输入输出系统(B IOS)。该嵌入式系统的开机方法包含步骤S1~S10。
于步骤S1,当该嵌入式系统100被启动时,每一该基板管理控制器13、23自对应的该非挥发性内存12(或22)读取该开机映像文件,以执行一开机程序,进而初始化对应的该基板管理控制器13、23。每一该开机映像文件包含支持预启动执行环境(PrebooteXecution Environment,PXE)机制。接着,执行步骤S2。
于步骤S2,当每一该基板管理控制器13、23在执行该开机程序后,自对应的该非挥发性内存12(或22)读取该操作系统映像文件,以执行一操作系统。接着,执行步骤S3。
于步骤S3,当设置在其中一个该主板11(或21)上的该基板管理控制器13(或23)读取该操作系统映像文件失败或执行该操作系统失败时,通知对应的该网络卡14(或24),使得该网络卡14(或24)借由该PXE机制经由与设置在另一个该主板21(或11)上的该网络卡24(或14)通讯,以取得储存在另一个该非挥发性内存22(或12)的该操作系统映像文件。更详细地说,支持PXE机制的每一该网络卡14、24在该开机程序中被成功初始化之后,就能够以现有的协议(Protocol)保持监控对方有无发出请求(Request)讯息,而知悉何时需要提供该操作系统映像文件。此外,该基板管理控制器13(或23)与对应的该网络卡14(或24)之间例如是以RGMII总线传收数据,而该两个网络卡14、24之间例如是以SGMII总线传收数据。接着,执行步骤S4。而另一方面,当每一该基板管理控制器13、23执行该操作系统成功之后,则执行步骤S5。于步骤S4,当该基板管理控制器13(或23)获得储存在另一个该非挥发性内存22(或12)的该操作系统映像文件后,更新对应的该非挥发性内存12(或22)的该操作系统映像文件,且在不重新启动的情况下,直接加载该操作系统映像文件,以执行该操作系统。接着,执行步骤S5。于步骤S5,当每一该基板管理控制器13、23在执行该操作系统后,自对应的该非挥发性内存12(或22)读取该文件系统映像文件,执行一文件系统(File system)。接着,执行步骤S6。
于步骤S6,当设置在其中一个该主板11(或21)上的该基板管理控制器13(或23)读取该文件系统映像文件失败或执行该文件系统失败时,通知对应的该网络卡14(或24),使得该网络卡14(或24)借由该PXE机制经由与设置在另一个该主板21(或11)上的该网络卡24(或14)通讯,以取得储存在另一个该非挥发性内存22(或12)的该文件系统映像文件。接着,执行步骤S7。而另一方面,当每一该基板管理控制器13、23执行该文件系统成功之后,则执行步骤S8。
于步骤S7,当该基板管理控制器13(或23)获得储存在另一个该非挥发性内存22(或12)的该文件系统映像文件后,更新对应的该非挥发性内存12(或22)的该文件系统映像文件,且在不重新启动的情况下,直接加载该文件系统映像文件,以执行该文件系统。接着,执行步骤S8。
于步骤S8,当每一该基板管理控制器13、23在执行该文件系统后,自对应的该非挥发性内存12(或22)读取该应用程序映像文件,以执行至少一应用程序。接着,执行步骤S9。
于步骤S9,当设置在其中一个该主板11(或21)上的该基板管理控制器13(或23)读取该应用程序映像文件失败或执行该至少一应用程序失败时,通知对应的该网络卡14(或24),使得该网络卡14(或24)借由该PXE机制经由与设置在另一个该主板21(或11)上的该网络卡24(或14)通讯,以取得储存在另一个该非挥发性内存22(或12)的该应用程序映像文件。接着,执行步骤S10。
于步骤S10,当该基板管理控制器13(或23)获得储存在另一个该非挥发性内存22(或12)的该应用程序映像文件后,更新对应的该非挥发性内存12(或22)的该应用程序映像文件,且在不重新启动的情况下,直接加载该应用程序映像文件,以执行该至少一应用程序。
要特别补充说明的是:每一该基板管理控制器13、23除了读取该开机映像文件以执行该开机程序、读取该操作系统映像文件以执行该操作系统、及读取该应用程序映像文件以执行该至少一应用程序之外,还会启动对应的该主板11、21上的其他组件(如另外一个系统单芯片(SOC)),及执行该嵌入式控制系统100的环境监控,如读取温度传感器的数值、及侦测与控制风扇转速等等的功能。此外,该至少一应用程序例如是包含一高可靠性(HA)程序以决定该两主板11、21之其中哪一者作为一主控者(Active)且其中另一者作为一备援者(Backup)、一系统监测(System monitor)程序以读取整个环境温度并确认系统是否有问题,且该主控者将取得的状态定时传送到该备援者、及一接口程序以提供该另一个系统单芯片一个沟通接口。该另外一个系统单芯片借由该沟通接口所传送的指令(如RESTcommand)例如能够查询状态及控制灯号等功能。因此,该两个主板11、21具有相互备援(Redundancy)的关系,也就是说,当该两个主板11、21或该两个基板管理控制器13、23之其中一者故障或失效时,还有存活的其中另一者可以正常运作。该两个主板11、21或该两个基板管理控制器13、23基本上是互相独立运作,但保持互通讯息并储存最新的状态数据,以便在其中一者故障或失效时,由正常运作的其中另一者来接替,而达到备援的目的。
综上所述,借由每一该基板管理控制器13、23在发现读取该操作系统映像文件失败或执行该操作系统失败时、或读取该文件系统映像文件失败或执行该文件系统失败、或读取该应用程序映像文件失败或执行该至少一应用程序失败时,借由该两个网络卡14、24以PXE机制取得另一个该非挥发性记忆所储存的该操作系统映像文件、或该文件系统映像文件、或该应用程序映像文件,以在不重新启动的情况下,更新对应的该非挥发性内存12(或22),且直接加载该操作系统映像文件、或该文件系统映像文件、或该应用程序映像文件,而能成功执行该操作系统、该文件系统、及每一该应用程序。因此,相较于习知技术不但同样能够修复该操作系统映像文件的错误,还能够修复该文件系统映像文件及该应用程序映像文件,且使用数量较少的两个非挥发性内存,故确实能达成本发明的目的。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
- 一种生成引导程序的方法、开机广告更新方法及终端设备
- 一种嵌入式系统快速显示开机画面的方法
- 嵌入式系统开机界面显示控制方法