我对这三个问题的概念很困惑1.为什么我们需要一个辅助程序加载器?1.在哪个内存中加载和重定位?1.系统内存和RAM有什么区别?据我所知,通过阅读链接是..当系统内部内存无法完全容纳uboot时,需要SPL,因此我们需要使用称为SPL的最小代码片段初始化内存。SPL实际上是重新定位还是只是重新定位自己的uboot?
ffscu2ro1#
让我以OMAP平台为例来解释它(只是提供一些实际背景,而不仅仅是理论或常识)。先来看看一些事实:
所以这个 * 第一阶段 Bootstrap * 就是U-Boot SPL;而 * second stage bootloader* 是regular U-Boot(或U-Boot proper)。要澄清的是:SPL是Secondary Program Loader的缩写。这意味着ROM代码是加载(和执行)其他程序的第一件事,SPL是加载(和执行)其他程序的第二件事。所以通常 Boot 序列是下一个:ROM代码-> SPL -> u-boot -> kernel。实际上,它与PC Boot 非常相似,即:BIOS -> MBR -> GRUB -> kernel。
更新
为了使事情 * 绝对 * 清楚,这里是描述 Boot 序列的所有阶段的表(以澄清所用术语中可能的不确定性):
+--------+----------------+----------------+----------+ | Boot | Terminology #1 | Terminology #2 | Actual | | stage | | | program | | number | | | name | +--------+----------------+----------------+----------+ | 1 | Primary | - | ROM code | | | Program | | | | | Loader | | | | | | | | | 2 | Secondary | 1st stage | u-boot | | | Program | bootloader | SPL | | | Loader (SPL) | | | | | | | | | 3 | - | 2nd stage | u-boot | | | | bootloader | | | | | | | | 4 | - | - | kernel | | | | | | +--------+----------------+----------------+----------+
所以我只是使用 bootloader 作为 U-Boot 的同义词,而 Program Loader 作为任何加载其他程序的程序的通用术语。另请参阅:[1]SPL(维基百科)[2][TPL: SPL loading SPL - Denx](http://www.denx.de/wiki/pub/U-Boot/MiniSummitELCE2013/tpl-presentation.pdf)[3][Bootloader (at OSDev Wiki)](http://wiki.osdev.org/Bootloader)[4][Boot ROM vs Bootloader](https://stackoverflow.com/questions/15665052/what-is-the-difference-between-a-bootrom-vs-bootloader-on-arm-systems)
cygmwpex2#
理论上不需要辅助程序加载器(SPL)。然而,通常有一些实用的理由。两个从我的头顶。
主加载程序执行加载完整 Boot 进程(SPL)所需的任何操作。例如,主加载器可以存储在具有存储器限制的ROM中。
tnkciper3#
内部SoC sram内存从4kB到512 KB,有时甚至更多。SPL通常被用作垫脚石,因为完整的u-boot不能适应内部SRAM。但不仅如此。在某些情况下,可用于在SPL阶段执行DDR调谐或其他需要。内部RAM内存是静态RAM。外部通常是socket,需要初始化,所以不能在socket/DDR控制器初始化之前使用。请注意,XIP也存在,即并行或非芯片,其中通常不需要SPL,即使是小的内部SRAM,因为可以从XIP闪存执行初始化sSRAM。
3条答案
按热度按时间ffscu2ro1#
让我以OMAP平台为例来解释它(只是提供一些实际背景,而不仅仅是理论或常识)。先来看看一些事实:
所以这个 * 第一阶段 Bootstrap * 就是U-Boot SPL;而 * second stage bootloader* 是regular U-Boot(或U-Boot proper)。要澄清的是:SPL是Secondary Program Loader的缩写。这意味着ROM代码是加载(和执行)其他程序的第一件事,SPL是加载(和执行)其他程序的第二件事。所以通常 Boot 序列是下一个:ROM代码-> SPL -> u-boot -> kernel。实际上,它与PC Boot 非常相似,即:BIOS -> MBR -> GRUB -> kernel。
更新
为了使事情 * 绝对 * 清楚,这里是描述 Boot 序列的所有阶段的表(以澄清所用术语中可能的不确定性):
所以我只是使用 bootloader 作为 U-Boot 的同义词,而 Program Loader 作为任何加载其他程序的程序的通用术语。
另请参阅:
[1]SPL(维基百科)
[2][TPL: SPL loading SPL - Denx](http://www.denx.de/wiki/pub/U-Boot/MiniSummitELCE2013/tpl-presentation.pdf)
[3][Bootloader (at OSDev Wiki)](http://wiki.osdev.org/Bootloader)
[4][Boot ROM vs Bootloader](https://stackoverflow.com/questions/15665052/what-is-the-difference-between-a-bootrom-vs-bootloader-on-arm-systems)
cygmwpex2#
理论上不需要辅助程序加载器(SPL)。然而,通常有一些实用的理由。两个从我的头顶。
主加载程序执行加载完整 Boot 进程(SPL)所需的任何操作。例如,主加载器可以存储在具有存储器限制的ROM中。
tnkciper3#
内部SoC sram内存从4kB到512 KB,有时甚至更多。SPL通常被用作垫脚石,因为完整的u-boot不能适应内部SRAM。但不仅如此。在某些情况下,可用于在SPL阶段执行DDR调谐或其他需要。
内部RAM内存是静态RAM。外部通常是socket,需要初始化,所以不能在socket/DDR控制器初始化之前使用。
请注意,XIP也存在,即并行或非芯片,其中通常不需要SPL,即使是小的内部SRAM,因为可以从XIP闪存执行初始化sSRAM。