前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >树莓派与1024x600分辨率屏幕的适配问题

树莓派与1024x600分辨率屏幕的适配问题

作者头像
mythsman
发布2022-11-14 13:43:31
1.3K0
发布2022-11-14 13:43:31
举报
文章被收录于专栏:mythsman的个人博客

问题

为了方便操作,买了一个 7英寸的 LCD 触摸屏,结果发现屏幕是 1024x600 的分辨率,系统总是会认为是 1024x768 的分辨率,导致了两个后果:

  1. 分辨率不准。由于实际展示的高度比渲染的要低,导致屏幕下方的东西是看不到的。
  2. 触摸板不准。虽然图像渲染会超出屏幕,但是触摸板似乎却做了缩放,触摸的地方越往下鼠标跟手的位置就越不准。

问了下亚博智能的技术客服,按照他的建议修改了 /boot/config.txt 中的 hdmi_cvt 等相关参数,重启后依然不行。接着他们建议直接刷入他们配置好的 armhf 镜像。由于我需要使用 arm64 ,因此个我肯定是不能干的。于是就自己琢磨了下,大半天才终于搞定。

踩坑

弯路稍微提一嘴吧,不然对不起大半天踩的坑。

为了解决分辨率问题,研究了树莓派官网HDMI配置的一大堆参数,经过一下午的重启后,结果还是不行。

为了解决触摸板不准的问题,找到了 xinput_calibrator 这个屏幕校准的工具,结果由于屏幕太矮,下面的两个检查点根本点不到,太坑。

解决

这个问题可以理解是驱动问题,应当还是要直接找到生产厂商,整到驱动相关的文档。

经过多方查找,发现我的这个板子是 微雪的7inch HDMI LCD ,找到官方文档后,发现了驱动的 github 地址:https://github.com/waveshare/LCD-show.git

代码clone下来后,似乎是要执行其中的 ./LCD7-1024x600-show 脚本。不过慢着,先看下脚本做了啥:

代码语言:javascript
复制
i=1
for lines in `cat ./boot/mark`
do
  case ${i} in
  1) var1=${lines};;
  esac
  i=`expr ${i} + 1`
done
#echo "$var1"

j=$(uname -n)
if test "$var1" = "0" -a "$1" != "lite" -a "$2" != "lite" ;then

if test "$j" != "retropie" ;then
sudo apt-get install xserver-xorg-input-evdev
sudo cp -rf /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf
fi

if test "$j" = "retropie" ;then
sudo cp -rf ./nes /home/pi/RetroPie/roms/
fi

echo "1" > ./boot/mark
sudo dpkg -i -B ./xinput-calibrator_0.7.5-1_armhf.deb

sudo apt-get install cmake -y
cd ./rpi-fbcp/build/
sudo cmake ..
sudo make
sudo install fbcp /usr/local/bin/fbcp
cd ../../
sudo mkdir -p /usr/share/X11/xorg.conf.d

elif test "$var1" = "0" -a "$1" = "lite" ;then
echo "1" > ./boot/mark
echo "No touch driver installled"
echo "No fbcp driver installled"
sudo mkdir -p /usr/share/X11/xorg.conf.d

fi

sudo cp -rf ./etc/rc.local /etc/rc.local

if test "$1" = "0" -o "$#" = "0" -o "$2" = "0" ; then
sudo cp -rf ./etc/X11/xorg.conf.d/99-calibration.conf-7-1024x600  /usr/share/X11/xorg.conf.d/99-calibration.conf
sudo cp ./boot/config-7-1024x600.txt /boot/config.txt
echo "LCD configure 0"
elif test "$1" = "lite" -a  "$#" = "1"; then
sudo cp -rf ./etc/X11/xorg.conf.d/99-calibration.conf-7-1024x600  /usr/share/X11/xorg.conf.d/99-calibration.conf
sudo cp ./boot/config-7-1024x600.txt /boot/config.txt
echo "LCD configure 0"
elif test "$1" = "90" -o "$2" = "90" ; then
sudo cp -rf ./etc/X11/xorg.conf.d/99-calibration.conf-7-1024x600-90  /usr/share/X11/xorg.conf.d/99-calibration.conf
sudo cp ./boot/config-7-1024x600.txt-90 /boot/config.txt
echo "LCD configure 90"
elif test "$1" = "180" -o "$2" = "180" ;then
sudo cp -rf ./etc/X11/xorg.conf.d/99-calibration.conf-7-1024x600-180  /usr/share/X11/xorg.conf.d/99-calibration.conf
sudo cp ./boot/config-7-1024x600.txt-180 /boot/config.txt
echo "LCD configure 180"
elif test "$1" = "270" -o "$2" = "270" ;then
sudo cp -rf ./etc/X11/xorg.conf.d/99-calibration.conf-7-1024x600-270  /usr/share/X11/xorg.conf.d/99-calibration.conf
sudo cp ./boot/config-7-1024x600.txt-270 /boot/config.txt
echo "LCD configure 270"
fi



sudo cp -rf ./usr/share/X11/xorg.conf.d/99-fbturbo.conf-HDMI /usr/share/X11/xorg.conf.d/99-fbturbo.conf 
if test "$j" = "kali" ;then
sudo cp ./usr/share/X11/xorg.conf.d/99-fbturbo.conf-kali-HDMI /usr/share/X11/xorg.conf.d/99-fbturbo.conf
fi

if [ -b /dev/mmcblk0p7 ]; then
sudo cp ./cmdline.txt-noobs /boot/cmdline.txt
else
sudo cp ./cmdline.txt /boot/
fi

sudo cp ./inittab /etc/

if test "$#" = "0" -o "$1" = "0" -o "$1" = "90"  -o "$1" = "180" -o "$1" = "270" -o "$2" = "0" -o "$2" = "90"  -o "$2" = "180" -o "$2" = "270" -o "$1" = "lite" -o "$2" = "lite"; then
sudo reboot
echo "reboot now"
else
echo "Invalid parameter,Usage:LCD7-1024x600-show [0] [90] [180] [270] [lite]"
fi

需要注意的坑是这里有个 sudo dpkg -i -B ./xinput-calibrator_0.7.5-1_armhf.deb 操作。不懂为啥他要把 xinput-calibrator 的 armhf 包写死在项目里。如果系统镜像是 arm64 的话,这个包是用不了的,还会报错。解决方法是,把这行直接改成 sudo apt install xinput-calibrator -y 即可。

其他操作看起来都没有坑,比如用 apt 安装依赖、往 /usr/share/X11/xorg.conf.d/ 下扔配置文件、往 /etc 下扔 inittab 文件、修改 /boot/config.txt 配置文件、修改 /boot/cmdline.txt 启动参数等等,似乎都是些业务逻辑。

但其实这里的配置修改的地方简直太暴力了,都是直接用项目里的配置完整替换掉原始文件,也不做任何备份。万一我自己加了一些配置,这里就完全被覆盖掉了,找都找不回来。。。所以建议在刷完干净的镜像后就执行这个命令,不要急着配置其他的东西。并且记得把这两个文件手动备份下,万一出了问题也方便改回去。。。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题
  • 踩坑
  • 解决
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档