我有一台树莓派迷你计算机,我想知道那东西如何完成整个引导过程。我可以使用自己的脚本编译自己的内核和init ramdisk,并在PC上构建自己的最小Linux系统,但是为此,我需要使用一些引导程序。 Raspberry似乎根本不支持引导加载程序。 ,然后它从那里读取一些文件,例如raspbian提供的文件。我应该在哪里复制内核映像/ initrd(RAM磁盘),以便树莓找到它并从中启动?我基本上是在寻找一些非常详细的技术文档来描述raspberry上的启动过程,或者只是对此的一些解释。

评论

在启动过程中可能会发生什么重复?

#1 楼

摘自Raspberry Pi论坛帖子[编辑以将loader.bin反映为过时]: /> GPU内核已开启。此时,SDRAM被禁用。
GPU开始执行第一阶段的引导加载程序,该引导加载程序存储在SoC的ROM中。第一级引导程序读取SD卡,然后
将第二级引导程序(bootcode.bin)加载到L2高速缓存中,并运行它。将第三阶段的引导程序
(loader.bin)从SD卡插入RAM,然后运行它。 [较新的版本不使用第三阶段的引导程序。 ]

[如果适用] bootcode.bin读取GPU固件(loader.bin)。没有做太多。它可以处理start.elf文件,因此需要
start.elf加载到内存顶部(ARM使用地址
0中的SDRAM)。有计划向config.txt添加小精灵加载支持,这将使cmdline.txt不必要,但这是一个低优先级(我想它可能会在启动时节省100毫秒)。 [此更改已发生。 ]


以下资源可能会有所帮助:


裸机编程示例
《 Baking Pi操作系统开发教程》 br /> Raspberry Pi固件二进制文件


评论


这些bin文件的内容是否都是专有软件?

–石油
13年2月2日,17:25

@Petr这是Raspberry Pi固件的Github,我将其编辑为答案。

–syb0rg
13年2月2日,17:28



在Raspberry Pi常见问题上,它说:“您必须从SD引导,但是在初次引导后USB HD可以“接管”。没有SD卡就无法引导。”

–syb0rg
13年2月2日于17:32

是首先读取的该分区是带有B标志的任何分区,还是必须是第一个分区?如果将其设置得太大而又想在SD卡的末端再创建一个较小的SD卡怎么办

–石油
13年3月3日,12:32



@Petr你应该问另一个问题!

–syb0rg
13年3月3日在14:57