首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌入式Linux启动阶段

嵌入式Linux启动阶段
EN

Stack Overflow用户
提问于 2011-09-26 20:44:42
回答 3查看 6.5K关注 0票数 11

我想系统化我的U/linux知识。在每个嵌入式平台中至少需要2个引导加载程序阶段是真的吗?或者跟随的过程会有所不同?

  1. 第一阶段引导加载程序(可以是U)存储在处理器的ROM内部,不能更新。它将从内部缓存内存中运行。这个U需要(至少):初始化RAM,初始化外部闪存,初始化串行控制台,读取并运行第二阶段引导加载程序。
  2. 第二阶段引导加载程序(可以是memory )存储在RW闪存中。它将处理以太网,flash RW等功能。这个U可以定制和覆盖.主要任务是将linux内核加载到RAM中并运行。
  3. linux内核启动。

第一阶段引导加载程序总是只读的吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-27 02:06:05

在哪里,第一个引导加载程序是如何严重依赖于系统的。您可能有某种usb可引导设备,它枚举并下载固件以将所有内存都存储在硬件中,然后处理器从该内存启动。

通常,是的,第一次引导是某种闪光灯。最好是让第一个引导加载器简单,基本上100%没有bug,而且耐用可靠,可以通过串行或其他方式进入,这样您就可以使用它来替换第二个/真正的引导加载程序。

理想情况下,第二个引导加载程序也希望是flash,第二个引导加载程序希望完成大部分工作,初始化ddr,设置以太网,如果它想要进行某种基于以太网的调试或文件、引导等的传输。由于要比主引导加载程序大得多,复杂得多,因此预期两者都有错误,需要进行更频繁的升级。希望主程序不会被覆盖,这样您就可以轻松地替换第二个引导加载程序,而不必对系统进行分块。

是否所有系统都使用了上述功能?不,有些/许多人可能只使用单一的引导加载程序,可能很早就会暂停,以便串行端口上的击键可以中断引导加载程序,从而将您带到可以重新加载引导加载器的位置。允许引导加载程序的开发,更少的机会,但仍然是一个机会,如果你搞砸了第一位之前,包括击键和串行闪存的事情。在这里,串行加载程序的问题并不总是存在,只是为引导加载程序开发人员提供了方便。通常的退路会是jtag,或者是一种可移动的prom或其他一些系统的方式,当你将其砖砌成砖时,就可以进入并重新编程它(而且,有时候,当板子生产时,在系统中第一次编程的方式是相同的,有些设计可以节省成本,并且在制造过程中使用预先编程的闪光灯,所以第一次启动就开始了)。

linux引导加载程序不需要任何/所有这些,非常小的安装内存,准备命令行或atags或其他什么,并分支到linux。

这是一个充满压力的问题,因为答案在很大程度上取决于您的系统、处理器、设计工程师(包括您)。传统上,处理器从flash启动,引导加载程序获得内存和其他一些东西,这样下一段代码就可以运行了。下一段代码可以来自许多地方,如usb、磁盘、闪存/rom、以太网/引导/tftp、pcie、mdio、spi、i2c等。

票数 11
EN

Stack Overflow用户

发布于 2011-09-26 20:54:30

第一阶段的引导加载程序不一定是只读的,但是在ROM中放置一个只读引导加载程序具有一定的恢复模式是很有帮助的,以防您损坏了闪存的读写部分;否则,您需要物理地将一个程序员附加到闪存芯片上才能恢复。

票数 6
EN

Stack Overflow用户

发布于 2014-05-20 17:24:16

如果您正在使用up,则可以跳过第二阶段引导加载程序以加快启动时间。换句话说,第一阶段引导加载器(SPL)将直接加载Linux内核,跳过第二阶段引导加载程序(u-boot)。在U-Boot中,这被称为猎鹰模式.

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7561085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档