我一直在尝试在 Orangepi 零板的最小构建根映像上启用
fbtft
模块。我已使用 Device Drivers > Graphics Support > Frame Buffer Devices >
在 make linux-menuconfig
下启用了它。
<M> Support for frame buffer devices --->
<M> Support for small TFT LCD display modules --->
在后者下,我也启用了
<m> FB driver for the ILI9340 LCD Controller
。
.config 文件包含以下内容:
...
# BR2_LINUX_KERNEL_EXT_EV3DEV_LINUX_DRIVERS is not set
BR2_LINUX_KERNEL_EXT_FBTFT=y
# BR2_LINUX_KERNEL_EXT_AUFS is not set
...
...
# BR2_PACKAGE_FAN_CTRL is not set
BR2_PACKAGE_FBTFT=y
# BR2_PACKAGE_FCONFIG is not set
...
构建过程中出现内核补丁:
if [ -e /some_path/dev/buildroot/buildroot-2023.02.1/output/build/linux-5.15.16/drivers/video/fbdev ]; then dest=drivers/video/fbdev ; else dest=drivers/video ; fi ; mkdir -p /some_path/dev/buildroot/buildroot-2023.02.1/output/build/linux-5.15.16/${dest}/fbtft; cp -dpfr /some_path/dev/buildroot/buildroot-2023.02.1/output/build/fbtft-274035404701245e7491c0c6471c5b72ade4d491/* /some_path/dev/buildroot/buildroot-2023.02.1/output/build/linux-5.15.16/${dest}/fbtft/ ; echo "source \"${dest}/fbtft/Kconfig\"" >> /some_path/dev/buildroot/buildroot-2023.02.1/output/build/linux-5.15.16/${dest}/Kconfig ; echo 'obj-y += fbtft/' >> /some_path/dev/buildroot/buildroot-2023.02.1/output/build/linux-5.15.16/${dest}/Makefile
构建后,当我使用
make linux-menuconfig
检查时,上述选项(支持等)再次为空白,并且图像不包含与fbtft
相关的任何内容。没有任何内核消息。
# find /lib/modules/$(uname -r) -type f -name '*.ko*'
的输出:
/lib/modules/5.15.16/extra/xradio_wlan.ko
(我也尝试过干净构建) 我在这里缺少什么?
从内核 5.4 开始,fbtft 似乎不可用。 这是 FrameBufferTFT git 页面上的说明:
fbtft_device and flexfb are gone in 5.4
fbtft_device 被删除,因为 gpio 代码已被重新编写,而没有修复 fbtft_device,因此它不起作用。 fbtft_device 从未打算包含在主线中,并且已经存在了这么长时间,因为“没有人”知道它是一个纯设备加法器模块,不属于主线。
flexfb 已被删除,因为由于其性质,它永远不会被移植到 DRM 图形子系统。不接受 init= DT 属性。
由于上述破坏性的 GPIO 返工,fbtft 现在只能与设备树一起使用。请参阅设备树页面。有关详细信息,请参阅
https://github.com/notro/fbtft/wiki。
无论如何,我很好奇你是否设法让这个显示在内核 5 上工作。我自己也有一个,但在尝试让它工作(猜测和匹配引脚排列、尝试安装 fbtft 模块等)经历了很多头痛之后放弃了)。 保重!