Bar*_*iak 11 linux embedded embedded-linux u-boot
我想系统化我的U-Boot/linux知识.在每个嵌入式平台中是否需要至少2个引导加载程序阶段?或者后续流程可以变化吗?
第一阶段引导加载程序(可以是U-Boot)存储在处理器的ROM内部,无法更新.它将从内部缓存内存运行.此U-Boot需要(至少):初始化RAM,初始化外部闪存,初始化串行控制台,读取和运行第二阶段引导加载程序.
第二阶段引导加载程序(可以是U-Boot)存储在RW闪存中.它将处理以太网,闪存RW功能等.可以自定义和覆盖此U-Boot.主要任务是将Linux内核加载到RAM中并运行它.
linux内核启动.
第一阶段引导加载程序是否始终为只读?
old*_*mer 11
其中,第一个引导加载程序的位置与系统有很大关系.你可能有某种usb可启动设备枚举并下载固件到ram所有硬件然后处理器从该ram启动.
通常是的,第一次启动是某种闪存.让第一个bootloader超级简单,基本上100%无错,耐用可靠,可能采用串行或其他方式进入,以便您可以使用它来替换第二个/真正的引导加载程序.
理想情况下,第二个引导加载程序也想要闪存,第二个引导加载程序希望执行大量工作,初始化ddr,如果要进行某种基于以太网的调试或传输文件,bootp等,则设置以太网.由于存在明显更大且更复杂的问题,因此预计它们都会出现错误,并且需要比主引导加载程序更频繁地升级.希望保护主数据库不被覆盖,这样您就可以轻松地替换第二个引导加载程序而不会使系统崩溃.
所有系统都使用上述?不,有些/很多人可能只使用单个引导加载程序,可能很早就会暂停,以便串行端口上的按键可以中断引导加载程序,将您带到可以重新加载引导加载程序的位置.允许引导加载程序开发的机会更少,但如果你先搞砸了第一位并且包括击键和串行闪存加载器之类的东西,那么仍然有机会.在这里,串行加载器并不总是存在,只是引导加载程序开发人员的便利.一般来说,后备将是jtag,或可移动的舞会或其他系统方式进入并重新编程舞会(当你制作电路板时,有时与系统中第一次编程时相同)可以节省成本并在制造过程中使用预先编程的闪存,因此第一次启动工作).
Linux引导加载程序不需要任何/所有这一个,一个非常非常小的设置ram,准备命令行或atags或任何东西并分支到linux.
这是一个负载问题,因为答案很大程度上取决于您的系统,处理器,设计工程师(包括您).传统上,处理器从闪存引导,引导加载程序获取内存和其他一些东西,以便下一部分代码可以运行.下一部分代码可以来自很多地方,usb,磁盘,flash/rom,ethernet/bootp/tftp,pcie,mdio,spi,i2c等.并且在上电复位和linux之间可以有多层连接设计的愿望或要求.
第一阶段引导加载程序不必是只读的 - 但是如果您损坏了闪存的读写部分,将一个只读引导加载程序放在具有某种恢复模式的ROM中是有帮助的.否则你需要将编程器物理连接到闪存芯片才能恢复.
归档时间: |
|
查看次数: |
5934 次 |
最近记录: |