我想用设备树驱动的 linux 内核启动树莓派,有什么特别的事情要做吗?
任何人都可以指出为树莓派设置基于设备树的内核启动所需的内容。
我可能需要树莓派内核源代码,其中设备驱动程序应与设备树兼容。如果是这样,我在哪里可以找到 Raspberry Pi 的此类内核源代码?
我想用设备树驱动的 linux 内核启动树莓派,有什么特别的事情要做吗?
任何人都可以指出为树莓派设置基于设备树的内核启动所需的内容。
我可能需要树莓派内核源代码,其中设备驱动程序应与设备树兼容。如果是这样,我在哪里可以找到 Raspberry Pi 的此类内核源代码?
Raspberry Pi 嵌入了 ARM11 SoC:Broadcom BCM2835。对 ARM 的设备树 (DT) 支持是相当新的,但它似乎已经进入了 Raspberry Pi CPU。您可以在 中找到 Raspberry Pi 的 DT arch/arm/boot/dts/bcm2835.dts*
。
但是默认配置文件bcm2835_defconfig
不启用设备树:
$ grep DT arch/arm/configs/bcm2835_defconfig
<nothing interesting>
我期待类似的东西CONFIG_OF*=y
or CONFIG_USE_OF=y
。坏消息:这将是艰难而漫长的(3 noob.month ?)。
有什么特别的事情要做吗?
这取决于您当前的 linux 内核版本。您当前的 linux 可能已经使用了设备树(linux-3.7 或更高版本?)。
如果没有,您需要研究大量变化:
Device Tree 彻底改变了 Linux 内核的引导方式。它影响:
影响意味着:您需要一种编译/编程这些映像的方法:全源代码、构建环境、UART 访问、可能的 JTAG 硬件。在没有 JTAG 的情况下更改引导加载程序通常是自杀,除非(今天)您可以安全地从板上重新编程您的 SD 卡。
在谈论设备树时,您可能会发现对OpenFirmware (OF)的引用。在选择设备树约定之前,OpenFirmware 是 IBM PowerPC 上的原始规范。of_
与设备树相关的代码在 linux 中带有前缀。不直观,我知道...
请阅读:
使用 buildroot 在 PowerPC 板上的示例:
/usr/bin/make -j5 HOSTCC="/usr/bin/gcc" HOSTCFLAGS="" ARCH=powerpc INSTALL_MOD_PATH=/home/evigier/buildroot/output/target CROSS_COMPILE=" /home/evigier/buildroot/output/host /usr/bin/powerpc-buildroot-linux-gnu-" DEPMOD=/home/evigier/buildroot/output/host/sbin/depmod -C /home/evigier/buildroot/output/build/linux-master mpc8347.dtb
PowerPC 板上的 U-Boot 控制台输出示例:
Uncompressing Kernel Image ... OK
kernel loaded at 0x00000000, end = 0x006f8780
## cmdline at 0x0ff1b900 ... 0x0ff1b925
## initrd_high = 0xffffffff, copy_to_ram = 1
ramdisk load start = 0x00000000, ramdisk load end = 0x00000000
## device tree at 00780000 ... 00781f57 (len=20312 [0x4F58])
Loading Device Tree to 0ff16000, end 0ff1af57 ... OK
## Transferring control to Linux (at address 00000000) ...
Booting using OF flat tree..
快乐的黑客:-)