树莓派启动流程 --- 005 kernel: [0.000000] Booting Linux on physical CPU 0x0 -- 01 gpu转cpu问题

  CPU 启动这个问题,说也简单,细究起来也不是很复杂:博客《树莓派启动流程 --- 004 systemd-modules-load [111]: Module'i2c_dev' inserted -- 01 树莓派启动流程 》 和《RPi Software --- 001 Overview》可以说明这个问题:

 

 

 

如果您只需要一个操作系统,则只需要一个格式正确的SD卡即可。有关如何创建或获取一个的详细信息,请参阅“ 硬件基本设置”页面。

为了了解RPi中的软件组件,您首先应该了解它是如何启动的。上电时,CPU处于脱机状态,GPU上的小型RISC内核负责引导SoC,因此,大多数引导组件实际上都在GPU代码上运行,而不是CPU。

引导顺序和组件如下:

  • 第一阶段引导程序 -用于将FAT32引导分区安装在SD卡上,以便可以访问第二阶段引导程序。它在RPi的制造过程中被编程到SoC本身中,并且用户无法对其进行重新编程。
  • 第二阶段引导加载程序(bootcode.bin)-用于从SD卡中检索GPU固件,对固件进行编程,然后启动GPU。
  • GPU固件(start.elf)-加载后,这将允许GPU启动CPU。另一个文件fixup.dat用于在GPU和CPU之间配置SDRAM分区。此时,CPU从复位中释放,执行转移过来。
  • 用户代码 -这可以是任意数量的二进制文件之一。默认情况下,它是Linux内核(通常称为kernel.img),但也可以是另一个引导程序(例如U-Boot)或准系统应用程序。

在2012年10月19日之前,以前也有一个第三阶段的引导加载程序(loader.bin),但这不再是必需的。[1]

基金会网站([1])上的Raspbian Linux映像(其他?)也包含上述文件的简化版本(fixup_cd.dat,start_cd.elf)。当GPU内存设置为16 MB时会使用这些选项,从而禁用某些GPU功能。更多信息在这里。此外,还提供了上述文件的测试版本(fixup_x.dat,start_x.elf),这些版本启用了可能不稳定/未经过完全测试/ hacky的功能-当前,使用这些文件代替通常的fixup.dat / start .elf将导致额外的视频编解码器可用。

由于此引导过程,必须使用SD卡引导RPi。但是,这确实意味着您无法“模块化”设备。

 

posted @ 2020-08-13 01:11  极客先锋  阅读(1518)  评论(0编辑  收藏  举报