configfs 不挂载设备树/覆盖

问题描述 投票:0回答:2

我正在开发 Altera 的 Cyclone V SOC FPGA,带有双 Cortex-A9 处理器。嵌入式系统(linux 4.15.7)是使用Buildroot-2018.02创建的。 U-boot 用于加载系统,即 FPGA.rbf 文件、设备树 blob 和 zImage,一切正常。

我现在想将 RBF 文件集成到我的 Linux 中并从 Linux 对 FPGA 进行编程。我发现了几种方法,据我了解最常见的一种是将 CONFIGFS 与设备树覆盖一起使用。

因此,我更改了设备树以集成覆盖层、用于禁用 FPGA 加载的 u-boot 启动脚本以及 Linux“.config”文件中的以下选项:

make linux-xconfig

+CONFIG_OF_OVERLAY=y
+CONFIG_ALTERA_STAPL=y
+CONFIG_CONFIGFS_FS=y
+CONFIG_SAMPLES=y
+CONFIG_SAMPLE_CONFIGFS=m

这些选项是我经过多次尝试后的状态。

make 并重新启动后,加载内核后,我在控制台中输入以下命令:

mkdir /config
mount -t configfs none /config

在这种状态下,我希望在 /config 文件夹中看到一些设备树文件,但没有任何文件,只有一个 rdma_cm 文件夹:

# ls /config
rdma_cm

我继续阅读这个主题,发现我必须在我的 Linux 内核中启用 CONFIG_OF_CONFIGFS 选项。

问题:此选项在我的 Linux 内核中不可用。另外,文件

drivers/of/configfs.c
也不在这里。我徒劳地搜索如何为我的内核版本启用设备树覆盖。

如何配置内核以使设备树在 configfs 中可用?

linux-kernel intel-fpga device-tree
2个回答
5
投票

我也遇到了和你一样的问题。所以我必须自己制作一个设备驱动程序。

此设备驱动程序是暂定的,我预计 Linux 主线将正式支持设备树覆盖 ConfigFS。

我制作的设备驱动程序可以在以下网址获得。

如果您使用的是 Debian,您可以使用以下 URL 构建设备驱动程序的 Debian 软件包。

如果您想使用此设备驱动程序尝试Device Tree Overlay,请参考以下URL。


0
投票

游戏迟到了,但对于任何在这个线程上绊倒的人:我已经应用了一个补丁[1]来添加内置支持。在 Linux 5.15 中开箱即用。

应用补丁后,您需要这些 kconfig:

CONFIG_CONFIGFS_FS=y
CONFIG_OF_OVERLAY=y

在我的(截断的)设备树下方。编译 dto 时不要忘记

-@
选项。

/dts-v1/;
/plugin/;

/ {
        compatible = "some-string";
        fragment@0 {
                target-path = "/";
                __overlay__ {
                        node@0 {
                                /* you data here. */
                        };
                };
        };
};

最后,在系统上加载 dto:

mount -t configfs none /sys/kernel/config/
mkdir /sys/kernel/config/device-tree/overlays/node
cat /path/to/node.dto > /sys/kernel/config/device-tree/overlays/node/dtbo

[1] https://github.com/balena-os/balena-allwinner/blob/master/layers/meta-balena-allwinner/recipes-kernel/linux/files/general-add-configfs-overlay.patch

© www.soinside.com 2019 - 2024. All rights reserved.