gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 11:24:53 36 4
gpt4 key购买 nike

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

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

https://wiki.freebsd.org/FlattenedDeviceTree

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

我问这个问题是因为当我们在 linux 中制作设备驱动程序时,我们使用在 probe() 或 module_init() 调用时初始化设备并使用 request_mem_region() 和 ioremap() 函数来获取地址范围
& 然后设置驱动程序的时钟和其他寄存器。
What does request_mem_region() actually do and when it is needed?

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

最佳答案

您假设 是正确的。板文件和 设备树 片上模块和片外外设的初始化需要。

  • 在启动时,需要“探测”SoC 的所有片上模块和与其接口(interface)的片外外围设备的相应驱动程序,即加载和调用。在 USB 和 PCI 等总线上,可以物理检测和枚举外围设备并探测其相应的驱动程序。然而,一般来说,如果 I2C、SPI 等其他总线上的其他外设是不可用的。
  • 除了上述之外,当探测设备驱动程序时,还需要向它提供一些关于我们打算配置和使用硬件的方式的信息。这取决于用例。例如,我们希望操作 UART 端口的波特率。

  • 上述两类信息,即
  • 硬件的物理拓扑。
  • 硬件的配置选项。

  • 通常被定义为 structs在“ ”文件中。

    然而,使用板文件方法需要重新构建内核,甚至在初始化期间简单地将可配置选项修改为不同的值。此外,当存在几个拓扑/配置略有不同的物理板时,“板”文件方法变得过于繁琐而无法维护。

    Hence the interest in maintaining this information separately in a device-tree. Any device-driver can parse the relevant branches and leaves of the device-tree to obtain the information it requires.



    在开发自己的设备驱动程序时,如果您的平台支持设备树,那么鼓励您利用设备树来存储设备驱动程序所需的“平台数据”。这应该可以帮助您清楚地分开:
  • < 中设备的通用驱动程序代码驱动程序.c > 文件和
  • 特定于该平台的设备配置选项到 设备树 .

  • porting the Linux kernel to a board/SoC 的分步方法应该可以帮助您了解所涉及的细微差别以及使用设备树的优势。

    关于linux-kernel - 扁平化设备树有什么用 - Linux Kernel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21808984/

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