Difference between revisions of "Template:S5Pxx18-SPI-2.8TFT/zh"
Line 1: | Line 1: | ||
− | === | + | ===在S5P4418/S5P6818平台使用SPI 2.8寸屏=== |
− | + | ||
− | + | 以下内容仅适用于Linux-4.4内核, 以NanoPi Fire3为例,开机后,在终端上执行以下命令初始化SPI 2.8寸屏,这些操作只需要执行一次: | |
− | + | ||
− | + | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | + | sudo mount /dev/mmcblk0p1 /boot | |
− | + | sudo apt-get update | |
+ | sudo apt-get install device-tree-compiler | ||
+ | sudo fdtput /boot/s5p6818-nanopi3-rev05.dtb spi0/spidev@0 status -t s "disabled" | ||
+ | sudo fdtget /boot/s5p6818-nanopi3-rev05.dtb spi0/spidev@0 status | ||
+ | sudo fdtput /boot/s5p6818-nanopi3-rev05.dtb spi0/fbtft@0 status -t s "okay" | ||
+ | sudo fdtget /boot/s5p6818-nanopi3-rev05.dtb spi0/fbtft@0 status | ||
+ | sudo reboot | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | 注意,在上述命令中,s5p6818-nanopi3-rev05.dtb是NanoPi Fire3开发板所用的内核dtb文件,其它开发板型号需要自已查看文件 /sys/devices/platform/board/info 中的信息来确定文件名,输入如下命令: <br /> | |
− | + | ||
− | + | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | + | cat /sys/devices/platform/board/info | |
− | + | ||
− | + | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | 在NanoPi Fire3开发板上,info文件的内容如下: <br /> | |
− | + | Hardware : NANOPI3<br /> | |
− | + | Revision : 0005<br /> | |
+ | Serial : fa6818dba7110739<br /> | ||
+ | 其中,Hardware字段是NANOPI3,Revision字段是0005,CPU是S5P6818,所以NanoPi Fire3内核dtb文件名为 s5p6818-nanopi3-rev05.dtb。<br /> | ||
+ | <br /> | ||
+ | 配置完dtb文件,重启开发板后,可以用lsmod命令检查下是否加载了fb_st7789v模块: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
lsmod | lsmod | ||
− | |||
− | |||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | 正常会输出如下内容: <br /> | |
+ | Module Size Used by<br /> | ||
+ | fb_st7789v 3315 0<br /> | ||
+ | fbtft 31881 1 fb_st7789v<br /> | ||
+ | <br /> | ||
+ | |||
+ | 以及用dmesg命令可以查看到SPI屏已经被初始化为fb1设备: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | + | dmesg | grep fb_st7789v | |
− | + | ||
− | + | ||
− | + | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | + | 正常会输出如下内容: <br /> | |
− | + | [ 6.728000] fb_st7789v: module is from the staging directory, the quality is unknown, you have been warned.<br /> | |
+ | [ 6.908000] graphics fb1: fb_st7789v frame buffer, 320x240, 150 KiB video memory, 4 KiB buffer memory, fps=35, spi0.0 at 50 MHz<br /> | ||
+ | 接下来要做的事情就比较简单了,无论是运行Qt,还是X-Windows,只需要正确设置Framebuffer设备为fb1即可。 | ||
− | + | ||
+ | ====在2.8寸屏上运行Lubuntu桌面==== | ||
+ | 在 lubuntu desktop系统里执行以下操作: <br /> | ||
+ | 首先删除armsoc的配置文件: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | + | sudo rm -f /usr/share/X11/xorg.conf.d/20-armsoc.conf | |
− | + | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | + | 然后新建一个配置文件 /etc/X11/xorg.conf: | |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | + | sudo vi /etc/X11/xorg.conf | |
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | + | 内容如下: | |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | + | Section "Monitor" | |
− | + | Identifier "Primary" | |
+ | VendorName "FriendlyARM" | ||
+ | EndSection | ||
+ | |||
+ | Section "Device" | ||
+ | Identifier "Primary" | ||
+ | Driver "fbdev" | ||
+ | Option "fbdev" "/dev/fb1" | ||
+ | EndSection | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | 重启后可以看到图像: <br /> | |
− | [[File: | + | [[File:s5pxx18-lubuntu-spi2.8tft.png|frameless|600px|s5pxx18-lubuntu-spi2.8tft.png]]<br /> |
+ | 目前暂时不支持触摸屏,可使用鼠标和键盘操作。 | ||
− | + | ====在2.8寸屏上运行Qt程序==== | |
+ | 在friendly-core系统终端里执行以下命令,运行一个Qt示例: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | + | . setqt5env | |
− | + | export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb1 | |
− | + | export QT_QPA_EGLFS_TSLIB=1 | |
− | + | export QT_QPA_GENERIC_PLUGINS=tslib,evdevkeyboard | |
− | + | $QTDIR/examples/widgets/widgets/tetrix/tetrix | |
− | + | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | Qt示例画面如下所示:<br /> | |
+ | [[File:S5pxx18-friendlycore-spi2.8tft.png|frameless|600px|s5pxx18-lubuntu-spi2.8tft.png]]<br /> | ||
+ | 目前暂时不支持触摸屏,可使用鼠标和键盘操作。 |
Revision as of 11:43, 14 December 2017
1 在S5P4418/S5P6818平台使用SPI 2.8寸屏
以下内容仅适用于Linux-4.4内核, 以NanoPi Fire3为例,开机后,在终端上执行以下命令初始化SPI 2.8寸屏,这些操作只需要执行一次:
sudo mount /dev/mmcblk0p1 /boot sudo apt-get update sudo apt-get install device-tree-compiler sudo fdtput /boot/s5p6818-nanopi3-rev05.dtb spi0/spidev@0 status -t s "disabled" sudo fdtget /boot/s5p6818-nanopi3-rev05.dtb spi0/spidev@0 status sudo fdtput /boot/s5p6818-nanopi3-rev05.dtb spi0/fbtft@0 status -t s "okay" sudo fdtget /boot/s5p6818-nanopi3-rev05.dtb spi0/fbtft@0 status sudo reboot
注意,在上述命令中,s5p6818-nanopi3-rev05.dtb是NanoPi Fire3开发板所用的内核dtb文件,其它开发板型号需要自已查看文件 /sys/devices/platform/board/info 中的信息来确定文件名,输入如下命令:
cat /sys/devices/platform/board/info
在NanoPi Fire3开发板上,info文件的内容如下:
Hardware : NANOPI3
Revision : 0005
Serial : fa6818dba7110739
其中,Hardware字段是NANOPI3,Revision字段是0005,CPU是S5P6818,所以NanoPi Fire3内核dtb文件名为 s5p6818-nanopi3-rev05.dtb。
配置完dtb文件,重启开发板后,可以用lsmod命令检查下是否加载了fb_st7789v模块:
lsmod
正常会输出如下内容:
Module Size Used by
fb_st7789v 3315 0
fbtft 31881 1 fb_st7789v
以及用dmesg命令可以查看到SPI屏已经被初始化为fb1设备:
dmesg | grep fb_st7789v
正常会输出如下内容:
[ 6.728000] fb_st7789v: module is from the staging directory, the quality is unknown, you have been warned.
[ 6.908000] graphics fb1: fb_st7789v frame buffer, 320x240, 150 KiB video memory, 4 KiB buffer memory, fps=35, spi0.0 at 50 MHz
接下来要做的事情就比较简单了,无论是运行Qt,还是X-Windows,只需要正确设置Framebuffer设备为fb1即可。
1.1 在2.8寸屏上运行Lubuntu桌面
在 lubuntu desktop系统里执行以下操作:
首先删除armsoc的配置文件:
sudo rm -f /usr/share/X11/xorg.conf.d/20-armsoc.conf
然后新建一个配置文件 /etc/X11/xorg.conf:
sudo vi /etc/X11/xorg.conf
内容如下:
Section "Monitor" Identifier "Primary" VendorName "FriendlyARM" EndSection Section "Device" Identifier "Primary" Driver "fbdev" Option "fbdev" "/dev/fb1" EndSection
重启后可以看到图像:
目前暂时不支持触摸屏,可使用鼠标和键盘操作。
1.2 在2.8寸屏上运行Qt程序
在friendly-core系统终端里执行以下命令,运行一个Qt示例:
. setqt5env export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb1 export QT_QPA_EGLFS_TSLIB=1 export QT_QPA_GENERIC_PLUGINS=tslib,evdevkeyboard $QTDIR/examples/widgets/widgets/tetrix/tetrix