其中,第一个引导加载程序如何依赖于系统。您可能有某种USB启动设备,枚举并下载固件,以硬件形式提供所有内容,然后处理器从该内存启动。
通常情况下,第一次启动是某种形式的闪存。这是一个好主意,让第一个引导加载程序非常简单,基本上100%的错误免费,耐用,可靠,可能串行或其他方式进入,以便您可以用它来代替第二个/真正的引导加载程序。
理想情况下,第二个引导加载程序也希望是flash,第二个引导加载程序会想要完成大部分工作,初始化ddr,如果想要进行某种基于以太网的调试或传输文件, bootp等等。由于体积更大,更复杂,预计它们都会有缺陷,并且需要比主引导加载程序更经常升级。小学生有望免于被覆盖,这样您就可以轻松地更换第二个引导加载程序,而不会堵塞系统。
是否所有系统都使用上述?不,一些/许多人可能只能使用一个引导加载程序,因为可能会很早就暂停,因此串行端口上的按键可能会中断引导加载程序,从而将您带到可以重新加载引导加载程序的位置。允许开发人员开发砖块的可能性较小,但如果你之前搞砸了第一块,包括按键和串行闪存加载器,那么仍然有机会。这里再次提到串行加载器的东西并不总是存在,只是引导加载程序开发人员的方便。通常情况下,后备将会是jtag,或者是一个可移动的舞会或其他系统方式,以便在您制作舞台时进入并重新编程舞台(有时也与您在制作舞台时第一次在系统中进行编程的方式相同,某些设计可以节省成本,并在制造过程中使用预编程的闪光灯,以便首次启动)。
一个Linux的引导程序不需要任何/所有这一切,一个非常非常小的,设置RAM,预习命令行或atags或任何和分支到Linux。
这是一个加载的问题,因为答案严重依赖于您的系统,处理器,设计工程师(包括您)。传统上,处理器从闪存引导,引导加载程序获取内存和其他一些内容,以便下一代代码可以运行。接下来的代码可以来自许多地方,USB,磁盘,闪存/光盘,以太网/ bootp/tftp,pcie,mdio,spi,i2c等。开机复位和linux之间可以有多层设计需要或需要。