gpt4 book ai didi

linux-kernel - 树莓派的设备树驱动内核

转载 作者:行者123 更新时间:2023-12-04 01:54:19 29 4
gpt4 key购买 nike

我想用设备树驱动的 linux 内核启动树莓派,有什么特别的事情要做吗?

任何人都可以指出为树莓派设置基于设备树的内核启动需要什么。

我可能需要树莓派内核源代码,其中设备驱动程序应该与设备树兼容。如果是这样,我在哪里可以找到 Raspberry Pi 的此类内核源代码?

最佳答案

Raspberry Pi 上的设备树支持

Raspberry Pi 嵌入了 ARM11 SoC:Broadcom BCM2835 .对 ARM 的设备树 (DT) 支持是相当新的,但它似乎已经应用于 Raspberry Pi CPU。您可以在 arch/arm/boot/dts/bcm2835.dts* 中找到 Raspberry Pi 的 DT .

但是默认配置文件 bcm2835_defconfig不启用设备树:

$ grep DT arch/arm/configs/bcm2835_defconfig
<nothing interesting>

我期待像 CONFIG_OF*=yCONFIG_USE_OF=y .坏消息:这将是艰难而漫长的(3 noob.month ?)。

is there anything special to do to do that?



这取决于您当前的 linux 内核版本。很有可能您当前的 linux 已经使用了设备树(linux-3.7 或更高版本?)。

如果没有,您需要研究很多变化:

设备树对系统的影响

设备树彻底改变了 Linux 内核的启动方式 .它影响:
  • 您的引导加载程序(例如 u-boot.bin)。 U-Boot必备知道如何处理设备树。旧的 U-Boot 不知道设备树是什么...
  • Linux 内核镜像(例如 zImage)。 Linux 必须知道它必须在设备树中获取其硬件描述。
  • 闪存/SD 卡分区布局。您需要为设备树文件本身腾出空间。

  • 影响意味着:您需要一种编译/编程这些图像的方法:完整源代码、构建环境、UART 访问、潜在的 JTAG 硬件。在没有 JTAG 的情况下更改引导加载程序通常是自杀,除非(今天)您可以安全地从板上重新编程 SD 卡。

    您可能会找到对 的引用OpenFirmware (OF) 在谈论设备树时。在选择设备树约定之前,OpenFirmware 是 IBM PowerPC 上的原始规范。与设备树相关的代码以 of_ 为前缀在Linux中。不直观,我知道...

    请阅读:
  • http://devicetree.org/Main_Page
  • Documentation/devicetree

  • 如何生成设备树二进制文件 (.dtb)?

    使用 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

    Example U-Boot console output on a PowerPC board:

    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..

    快乐黑客:-)

    关于linux-kernel - 树莓派的设备树驱动内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22202648/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com