总结一下我安装各种树莓派系统驱动GPIO屏幕的经验。
GPIO屏幕是什么
有两排针脚可以插在树莓派上的那种屏幕。
驱动安装
首先克隆git仓库:LCD-show,然后根据你的屏幕型号(一般就写在屏幕背面)运行对应脚本。详细说明请阅读该仓库Readme。
如何令屏幕显示内容
Raspbian桌面版
恭喜你,对于有xserver的系统来说,你的屏幕应该已经正常显示了。如果出现了tty only的系统不显示的问题请往下看。
原理
Linux系统提供了若干虚拟终端/dev/ttyx
,其中x是数字编号,0是第一个。一般来说,树莓派的Linux系统总是默认显示到tty0里,而将tty1分配给HDMI。因此,使GPIO屏幕显示内容,就有两种做法:
- 设置tty1默认显示到GPIO屏幕上;
- 将hdmi的输出复制到GPIO屏幕上。
第一种办法
在/boot/cmdline.txt
文件行末(只有一行,务必不要再加行)添加以下内容:
1
| fbcon=map:10 fbcon=font:ProFont6x11
|
该方法适用于刷新率不高的屏幕比如LCD-xx
。有关fbcon各类参数的文档请看这里。
第二种办法
如果你的屏幕像素足够,可以考虑令GPIO屏幕显示跟HDMI一样的内容。 rpi-fbcp
可以实现上述功能。先提供一段bash代码供参考(从LCD-show中摘抄出来并添加注释):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| sudo git clone https://github.com/tasanakorn/rpi-fbcp
sudo mkdir ./rpi-fbcp/build cd ./rpi-fbcp/build/ sudo cmake .. sudo make sudo install fbcp /usr/local/bin/fbcp cd - > /dev/null
type fbcp > /dev/null 2>&1
if [ $? -eq 0 ]; then sudo cp -rf ./usr/99-fbturbo-fbcp.conf /usr/share/X11/xorg.conf.d/99-fbturbo.conf sudo cp -rf ./etc/rc.local /etc/rc.local fi
|
该方法适用于刷新率高的屏幕比如MHS-*
。
HDMI分辨率
使用了fbcp,我们当然希望HDMI和LCD保持一致的分辨率。
编辑/boot/config.txt
,添加或修改以下设置:
1 2 3 4 5 6 7 8
| # frame buffer framebuffer_width=480 framebuffer_height=320
# hdmi hdmi_group=2 hdmi_mode=87 hdmi_cvt 480 320 60 4 0 0 0
|
其中,framebuffer_*
设置为和LCD屏幕分辨率一样的数值,hdmi_mode=87
意为最大化适配LCD屏幕(可以发现,hdmi_mode
的其他数值没有支持长宽比3:2的屏幕的)。 hdmi_cvt
的前三个参数分别为长、宽和帧率,第四个参数是缩放比例,4意为5:4。
控制台字体
1
| sudo dpkg-reconfigure console-setup
|
运行上方指令,一路选择UTF-8
,Guess optimal character set
,TerminusBold
,8x16
,获得在3.5寸LCD屏幕上也能看清的字体大小。一般来说这是即时生效的,不需要重启。
Fin.