gpt4 book ai didi

c - banana pi 和设备树的 Linux 设备驱动程序

转载 作者:太空狗 更新时间:2023-10-29 11:17:17 27 4
gpt4 key购买 nike

我正在尝试为 Banana Pi M2 ultra 的 Linux 内核 4.13.x 编写以太网驱动程序。前段时间在 Linux 内核基础设施中引入了所谓的“设备树”(DT)。我在编写设备驱动程序时没有太多使用 DT 的经验,因此我有几个问题。

据我所知 - 在香蕉派系统的情况下 - 需要为给定的提供一些时钟源外围设备。 banana pi 中的 CCU 的功能就是提供这样一个时钟。 CCU 是内存映射的在 linux 内核中的某个地址可用的资源。我想为以太网编写驱动程序需要来自 CCU 的一些时钟。

我知道 CCU 的物理地址必须通过 ioremap() 或类似函数映射到虚拟地址。

我的问题是如何在我的以太网驱动程序中获取 CCU 的虚拟地址?是否可以通过设备树?如果是 - 如何做到这一点?或者也许这个虚拟地址可以通过其他方式获得?

我只是不确定它是通过 DT 完成的(获取 virt 地址)还是仅通过某些过程或通过全局指针完成。

有什么想法或建议吗?

最佳答案

Linux 内核中有平台驱动程序的示例。我在 raspberry pi 上研究过 i2c 和 i2s,所以我可以引用这些例子。

http://elixir.free-electrons.com/linux/v4.3.2/source/drivers/i2c/busses/i2c-bcm2835.c

查看probe函数,调用子系统api

platform_get_resource(pdev, IORESOURCE_MEM, 0);

这可以给出物理地址,即ioremap ..

为此,需要在设备树中创建一个设备节点,如下所示 https://github.com/raspberrypi/linux/blob/rpi-4.9.y/arch/arm/boot/dts/bcm283x.dtsi

检查文件 bcm283x.dtsi 中的 i2c0 设备节点。

reg key是存储物理地址的地方

reg = <0x7e205000       0x1000>;

physical add size

希望对你有帮助。

设备树可以被认为类似于以前的平台数据

关于c - banana pi 和设备树的 Linux 设备驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47278331/

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