问题标签 [device-tree]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
103822 浏览

linux-kernel - 如何将 dts Linux 设备树源文件编译成 dtb?

我有一个设备树文件 (.dts),我想为基于 powerpc 的板编译该文件。

我怎样才能在我的机器上做到这一点,这不是基于 powerpc 的?我可以使用安装在我的 Ubuntu 系统上的 DTC 来执行此操作吗?还是更像是使用单独的编译器并传递 ARCH 信息(如使用工具链)?

0 投票
1 回答
2206 浏览

linux - 没有设备树 blob 的 bootm

以下是bootm命令的 U-Boot 帮助的摘录:

正如我在上面看到的bootm [addr]应该可以正常工作,arg是可选的。
所以类似的东西bootm 0x1000000应该工作。
tftp了linux内核uImage到0x1000000,然后想用上面的命令。
不可能吗?

当我使用它时它工作正常bootm 0x1000000 - 0x3000000,其中第三个参数是 dtb 的地址。
但是当我尝试在没有 dtb 的情况下启动时,它会停在 “解压缩内核映像”处

0 投票
1 回答
9236 浏览

linux-kernel - 扁平化设备树有什么用 - Linux Kernel

我正在经历 Uboot 和内核启动过程。FDT(平面设备树)到底有什么用?

我读过的许多链接都指出,uboot 以 FDT 的形式将板和 SOC 配置信息传递给内核

https://wiki.freebsd.org/FlattenedDeviceTree

为什么内核需要主板配置信息?

我问这个问题是因为当我们在 linux 中制作设备驱动程序时,我们使用在 probe() 或 module_init() 调用时初始化设备并使用 request_mem_region() 和 ioremap() 函数来获取地址范围然后设置时钟&其他司机登记。
request_mem_region() 实际做什么以及何时需要?

现在,如果我的片上和片外设备的设备驱动程序正在进行全板初始化。
那么flattened device tree内核有什么用呢?

0 投票
2 回答
14328 浏览

comments - 如何在设备树源文件中添加注释

如何在设备树源文件中放置多行或单行注释。我在任何地方都找不到它。使用注释的默认 c 方式是否有效?

0 投票
1 回答
9325 浏览

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

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

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

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

0 投票
2 回答
1799 浏览

device-tree - 设备树绑定?

当您开始使用它时,我们是否必须阅读 linux 内核的设备树绑定文档。
设备树中是否没有所有发行版/内核源都遵循的标准字段集?

其次,我需要一些关于使用设备树为 gpio 总线上的设备添加节点的指导。我已经咨询过http://devicetree.org/Device_Tree_Usage

0 投票
1 回答
726 浏览

c - 使用设备树引导主线 Linux 内核

我按照以下步骤构建和刷新我的内核QEMU

  1. make ARCH=arm distclean
  2. make ARCH=arm versatile_defconfig
  3. make ARCH=arm menuconfig
    在这里您需要启用以下功能。
    Kernel Features ---> [*] 使用ARM EABI编译内核。(启用此功能)。
  4. make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage
  5. qemu-system-arm -M versatilepb -m 128M -kernel arch/arm/boot/uImage -append "console=tty1"
    在这里你会得到控制台说内核恐慌。为避免这种情况,请传递您的rootfs参数。
    我猜你是从busybox构建的rootfs,如果是这样的话,试试下面的命令来完全引导系统
  6. qemu-system-arm -M versatilepb -m 128M -kernel arch/arm/boot/uImage -initrd rootfs.img -append "root=/dev/ram mem=128M rdinit=/sbin/init" -serial stdio

在运行时,内核是否使用设备树来加载设备?如果是,如何确认以及设备树位于何处?(我需要对设备树文件(.dts)进行更改,但无法找到该文件的位置)请帮助

0 投票
2 回答
2382 浏览

linux-kernel - 在设备树探测之前加载内核模块

我为我的custom_hardware开发了一个工作驱动程序,它依赖于设备树。因为我的驱动程序可能会发展,所以我不希望我的驱动程序成为内核的一部分(当我说“成为内核的一部分”时,我的意思是在内核创建期间与内核一起编译)

这是我的dts的一瞥:

existing_hardware的驱动程序已经与内核一起编译(existing_hardware的驱动程序在内核创建期间已与内核一起编译)。

我想做的是将我的custom_hardware的驱动程序附加到 ramfs 并让内核在 existing_hardware 的驱动程序之前加载 custom_hardware的驱动程序

这很重要,因为existing_hardware的驱动程序从custom_hardware的驱动程序的irq_domain请求一个virq。为了获得irq_domain,必须首先加载custom_hardware的驱动程序。

请注意,existing_hardware的驱动程序在设备树的探测过程中被加载,这似乎发生在内核启动序列的早期阶段。

0 投票
2 回答
5625 浏览

linux - struct device 中的 of_node 参数是什么?

struct device中的解释说

关联的设备树节点。

但是,我并没有清楚地理解这一点。

谁能提供一个例子?

0 投票
0 回答
230 浏览

linux-kernel - 跟踪嵌入式Linux开发中的内核驱动程序代码

我正在做一些嵌入式 Linux 开发,并试图实现 EMIF 接口的新实例。Linux 内核中已经安装了一个 EMIF 驱动程序,并使用它来读取和写入 NAND 内存。EMIF 接口有 4 条独立的片选线,我想使用片选 2 在 EMIF 总线上添加第二个设备。

  1. 我该如何实例化该设备并对其进行读写。(设备树添加?)

  2. 我一直在尝试从内核源代码跟踪驱动程序代码,但对驱动程序开发非常陌生,内核从驱动程序执行的函数调用是什么,它们发生在源代码的什么位置?compatible = "ti,davinci-nand"我相信我已经找到了驱动程序的源文件,因为它们与设备树中的行同名。我是否正确假设驱动程序源文件将被调用davinci_nand.c并位于{linux source}/drivers/mtd/nand

编辑:

借助一些新信息并查看设备树,我发布了这个问题,这可能对遇到此线程的任何人都有用。

解密设备树