树莓派3B/4B设备(from kernel 5.4)添加fbtft小型LCD屏幕支持

树莓派随笔

3B/4B设备(from kernel 5.4)添加fbtft小型LCD屏幕支持

1. 问题记录

在树莓派平台上如果想使用自己的TFT-LCD屏幕,目前网上的解决方案都是使用fbtft_device添加LCD设备。但是此方法自linux 5.4内核后便不能再使用,详见notro/fbtft/wiki:

fbtft_device is a kernel module for registering FBTFT devices.
Note: fbtft_device is not available starting from Linux 5.4

这也就导致了3B以后的设备无法再使用之前的方法添加LCD设备。

2. 解决方案

本文案例使用SPI-ILI9341屏幕,参考Watterott electronic的支持文档,这里使用Watterott electronic的设备树支持(国外网站)。其实ili9341的驱动在linux内核中已经自带了,感兴趣的同学可以查看一下linux内核源码,也可以直接在树莓派中输入指令查询:

	ls /lib/modules/5.10.17-v7+/kernel/drivers/staging/fbtft/

树莓派3B/4B设备(from kernel 5.4)添加fbtft小型LCD屏幕支持_第1张图片
对于大部分SPI屏幕,所需要的引脚除了SPI总线的MOSI/MISO/SCK/CE,还需要额外的DC/RESET/LED。对于树莓派,其本身只有一个SPI0,片选信号也理所当然的选择CE0,那么接下来主要就是适配这些额外的控制引脚。参照Watterott electronic提供的安装方法(Home> RPi HATs> RPi-Display> FBTFT Installation),我们在树莓派中对应的加入相关设备树覆盖。

	wget -N https://github.com/watterott/RPi-Display/raw/master/software/rpi-display.dtbo
	sudo cp rpi-display.dtbo /boot/overlays/rpi-display.dtbo

上述步骤是从GitHub上下载对应的rpi-display.dtbo文件,并加入树莓派的动态设备树覆盖文件目录中。这里笔者测试直接在树莓派中进行wget下载速度较慢,可以在PC端上直接从GitHub中下载好,然后通过nfs挂载方法,将文件传至树莓派中。
这里的.dtbo是已经编译好的二进制文件,无法直接查看,我们使用前还需要知道具体DC/RESET/LED的物理引脚是什么,那么便查看此dtbo编译前的dts文件,见:

https://github.com/watterott/RPi-Display/blob/master/software/rpi-display-overlay.dts

树莓派3B/4B设备(from kernel 5.4)添加fbtft小型LCD屏幕支持_第2张图片

在上述文件中我们很轻易的就能找到ili9341对应的设备树详情,可以看到RESET对应BCM-23,DC对应BCM-24,LED对应BCM-18(后面的1、0代表引脚的初始状态,1为低电平,0为高电平),这里再附上一张树莓派3B的引脚图,方便读者参考,如图对应连接即可。
树莓派3B/4B设备(from kernel 5.4)添加fbtft小型LCD屏幕支持_第3张图片
进行完上述步骤后,按照Watterott electronic提供的安装方法进行安装。

wget -N https://github.com/watterott/RPi-Display/raw/master/rpi-display.sh
sudo /bin/bash rpi-display.sh 270

Enable TFT display driver and activate X windows on TFT display? y/n Y
Activate the console on the TFT display? y/n Y
Install fbcp (Framebuffer Copy)? y/n N
Install xinput-calibrator? y/n Y
Install tslib (touchscreen library)? y/n N
Reboot the system now? y/n Y
Rebooting now...

sudo startx

安装完后确认连线正确,重启树莓派后应该就能成功看到界面了。

Good Luck.

你可能感兴趣的:(树莓派,内核,linux,物联网,kernel,raspberry,pi)