Purple-Pi-OH Ubuntu系统使用手册

1、硬件资源概况

1.1 主板照片

图一 Purple Pi OH正面实物图

图二 Purple Pi OH背面实物图

1.2 硬件资源及设备节点

序号

名称

描述

设备节点

1

内核版本

Linux 4.19.219

2

系统版本

Debian0-Desktop

3

内存

LPDDR4(1G/2G/4G选配)

4

存储

eMMC5.1(8GB/16GB/32GB选配)

5

供电

DC 5V@1A

6

显示

HDM

MIPI

7

USB OTG

USB OTG Type-C

8

USB HOST

USB3.0 HOST(Type-A) X 1

USB2.0 HOST(Type-A) X 3

9

TF Card

TF Card x 1

10

以太网

千兆自适应以太网 x 1

eth0

11

WIFI/BT

AM-NM372SM 2.4G
AW-CM256SM 2.4G/5G

wlan0 、hci0

12

耳机

3.5mm 美标

13

Camera

OV5648、OV8858

14

串口

TTL x 1

15

调试串口

TTL x 1

16

RTC

HYM8563 x 1

17

系统指示灯

x1

18

ADC按键

1路

2、功能及接口介绍

2.1 串口调试

串口调试端口位于J5,通信参数为1500000 8 N 1,电平状态为TTL电平。

串口登录默认以root用户登录,且没有设置密码。

root@ido:/# ls
app.log  data  home  lost+found  opt   run     srv     tmp    var
bin      dev   lib   media       proc  sbin    sys     udisk  vendor
boot     etc   log   mnt         root  sdcard  system  usr
root@ido:/#

2.2 ADB调试

ADB调试端口位于J7,将SW4切换到1档,使用USB-TYPEC,连接主板和电脑即可在电脑上使用adb调试:

2.3 ssh调试

系统默认ssh账号和密码为 ido @ 123456

2.4 USB

主板共配置了4个USB接口,分别为USB1-4。其中USB1为OTG,USB2-4为HOST。

编号

类型

位置

usb1

host-2.0

J9(下)

usb2

host-3.0

J9(上)

usb3

host-2.0

J10(下)

usb4

host-2.0

J10(上)

注:如果要使用USB1,需要将SW4切换至OFF档,且adb功能无法使用。

当USB1-4插入U盘后,会自动挂载/media/ido/目录下。

root@ido:~# ls /media/ido/
KINGSTON

2.4.1 电源控制

默认所有USB的电源都是开启的,我们提供了开启/关闭电源的方法,如有需要,你可以通过该方法控制它们的电源。

编号

电源控制节点

USB1

/sys/class/leds/usb_otg_pwr/brightness

USB2

/sys/class/leds/usb_host1_pwr/brightness

USB3

/sys/class/leds/usb_host2_pwr/brightness

USB4

/sys/class/leds/usb_host3_pwr/brightness

打开USB2的电源:

root@ido:~# echo 255 > /sys/class/leds/usb_host1_pwr/brightness

关闭USB2的电源:

root@ido:~# echo 0 > /sys/class/leds/usb_host1_pwr/brightness

USB1-4的电源控制方法类似。

2.5 TF CARD

主板配置了一个TF CARD接口,位于J2,当TF CARD接口插入TF卡后,会自动挂载到/media/ido/目录下。

root@ido:~# ls /media/ido/
3533-3735
root@ido:~# 

2.6 以太网

主板配置了一个1000M以太网接口,位于J11,在系统中其对应的网络设备节点为eth0。

2.6.1 查看以太网IP地址

系统默认以太网为动态获取IP,当以太网接口插入网线时,会自动获取IP。

root@ido:~# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.133  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::3b43:b691:ded5:c497  prefixlen 64  scopeid 0x20<link>
        ether 82:4c:21:62:f5:35  txqueuelen 1000  (Ethernet)
        RX packets 29  bytes 4592 (4.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 43  bytes 4146 (4.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 40

root@ido:~# 

2.6.2 设置以太网临时IP地址

root@ido:~# ifconfig eth0 192.168.1.123

2.6.3 设置以太网永久静态IP

新建/etc/netplan/00-installer-config.yaml,然后写入如下内容(注意缩进以Tab为单位):

network:
        version: 2
        renderer: NetworkManager
        ethernets:
                eth0:
                        dhcp4: no
                        dhcp6: no
                        addresses: [192.168.1.10/24]
                        gateway4: 192.168.1.1
                        nameservers:
                                addresses: [8.8.8.8, 114.114.114.114]

然后重启网络

root@ido:~# netplan apply

重启网络后,eth0的ip地址已经变成刚才设置的静态ip。

root@ido:~# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.123  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::b7c2:552b:4127:ee1c  prefixlen 64  scopeid 0x20<link>
        ether 82:4c:21:62:f5:35  txqueuelen 1000  (Ethernet)
        RX packets 19  bytes 3281 (3.2 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 36  bytes 5592 (5.5 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 40

设置静态IP后,断电重启设备依旧生效。

2.7 WiFi

系统上电默认会打开WiFi,对应的网络设备节点为wlan0。

root@ido:~# ifconfig wlan0
wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 2c:d2:6b:10:ea:4d  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

root@ido:~#

2.7.1 连接热点

连接热点可以在桌面上操作,也可以使用命令行操作。

2.7.1.1 方式一

鼠标左键点击桌面右下角的网络图标,即可看到WiFi热点列表:

点击要连接的热点,弹出密码输入窗口:

如果有连接键盘,直接输入密码即可;如果没有连接键盘,可以使用系统自带的软键盘。

点击桌面的Onboard图标,即可打开系统自带的软键盘

使用软键盘输入密码后,点击【OK】连接热点

连接成功后,桌面右下角的网络图标将改变:

2.7.1.2 方式二

新建/etc/netplan/01-wifi-sta.yaml,并按照以下格式填写内容:

network:
    wifis:
        wlan0:
            dhcp4: true
            access-points:
                "TP-LINK_B87A":
                    password: "12345678"
    version: 2

其中TP-LINK_B87A为要连接的热点名称,12345678为连接密码。

修改成功后执行以下命令进行连接:

root@ido:~# killall wpa_supplicant
root@ido:~# netplan apply

等待几秒钟后,将成功连接WiFi热点。

2.7.1.3 方式三
  1. 输入该命令是否能搜索到你的WiFi设备:
sudo iwlist scanning
  1. 使用下方命令进行连接WiFi网络
sudo nmcli d wifi connect cainiaocl password 12345678

其中cainiaocl,12345678,是你的账号密码

ifconfig

如果你的wlan0 出现了IP地址,则说明连接成功

2.7.2 查看WiFi的IP地址

使用ifconfig命令可查看连接热点后获取的IP:

root@ido:~# ifconfig wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.165  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::984a:9a2f:77b4:e899  prefixlen 64  scopeid 0x20<link>
        ether 2c:d2:6b:10:ea:4d  txqueuelen 1000  (Ethernet)
        RX packets 83  bytes 10479 (10.4 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 35  bytes 5285 (5.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

root@ido:~#

2.7.3 测试wifi的网络

root@ido:~# ping www.baidu.com -I wlan0
PING www.a.shifen.com (14.215.177.39) from 192.168.1.117 p2p0: 56(84) bytes of data.
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=54 time=17.8 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=2 ttl=54 time=9.30 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=3 ttl=54 time=25.7 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=4 ttl=54 time=42.1 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=5 ttl=54 time=13.1 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=6 ttl=54 time=39.8 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=7 ttl=54 time=28.1 ms

2.8 蓝牙

系统开机默认打开蓝牙,对应的网络节点为hci0。

root@ido:~# hciconfig
hci0:   Type: Primary  Bus: UART
        BD Address: 70:D5:2B:5B:22:22  ACL MTU: 1021:8  SCO MTU: 255:12
        UP RUNNING
        RX bytes:1665 acl:0 sco:0 events:57 errors:0
        TX bytes:6311 acl:0 sco:0 commands:57 errors:0

root@ido:~#

2.8.1 连接蓝牙设备

将鼠标放到桌面右下角蓝牙图标,右键->Devices:

在弹出的窗口中,点击【Search】:

将看到附近的蓝牙设备列表:

选中要连接设备,右键->Connect,即可连接该设备:

2.8 音频

主板配置了一路耳机接口,位于J6,具备进行音频输出及录音功能。

2.9.1 查看声卡设备

root@ido:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: rockchiphdmi [rockchip,hdmi], device 0: rockchip,hdmi i2s-hifi-0 [rockchip,hdmi i2s-hifi-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: rockchiprk809co [rockchip,rk809-codec], device 0: fe410000.i2s-rk817-hifi rk817-hifi-0 [fe410000.i2s-rk817-hifi rk817-hifi-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
root@ido:~#

注:MIPI固件仅有rk809-codec一个声卡。

2.9.2 播放音频

播放到HDMI(仅HDMI固件支持

aplay -D plughw:0,0 /usr/share/sounds/alsa/Rear_Center.wav

播放到耳机

插入耳机,执行以下命令:

//HDMI固件
aplay -D plughw:1,0 /usr/share/sounds/alsa/Rear_Center.wav

//MIPI固件
aplay -D plughw:0,0 /usr/share/sounds/alsa/Rear_Center.wav

2.9.3 音量的调节

鼠标点击桌面右下角的音量图标:

然后滑动鼠标进行音量调节:

当需要静音是,点击静音按钮:

2.9.4 录音

需要接入带麦克风的耳机。

使用arecord工具可以进行录音测试:

//HDMI固件
root@ido:~# arecord -D hw:1,0 -r 48000 -c 2 -f S16_LE test.wav
Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
^CAborted by signal Interrupt...
root@ido:~#

//MIPI固件
root@ido:~# arecord -D hw:0,0 -r 48000 -c 2 -f S16_LE test.wav
Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
^CAborted by signal Interrupt...
root@ido:~#

录音完后播放测试:

//HDMI固件
root@ido:~# aplay -D plughw:1,0 ./test.wav
Playing WAVE './test.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
root@ido:~#

//MIPI固件
root@ido:~# aplay -D plughw:0,0 ./test.wav
Playing WAVE './test.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
root@ido:~#

2.10 摄像头

主板默认适配OV5648和OV8858摄像头,摄像头接口位于J22

2.10.1 测试

2.10.1.1 测试摄像头是否存在
root@ido:~# media-ctl -p -d /dev/media0 
...
- entity 67: rockchip-csi2-dphy0 (2 pads, 2 links)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev2
        pad0: Sink
                [fmt:SBGGR10_1X10/2592x1944@10000/150000 field:none]
                <- "m00_b_ov5648 2-0036":0 [ENABLED]
        pad1: Source
                [fmt:SBGGR10_1X10/2592x1944@10000/150000 field:none]
                -> "rkisp-csi-subdev":0 [ENABLED]

- entity 70: m00_b_ov5648 2-0036 (1 pad, 1 link)
             type V4L2 subdev subtype Sensor flags 0
             device node name /dev/v4l-subdev3
        pad0: Source
                [fmt:SBGGR10_1X10/2592x1944@10000/150000 field:none]
                -> "rockchip-csi2-dphy0":0 [ENABLED]
root@ido:~#

结果显示m00_b_ov5648,说明摄像头存在,最高分辨率支持2592x1944。

2.10.1.2抓取视频

使用v4l2-ctl工具可以抓取摄像头的视频数据流。

root@ido:~# v4l2-ctl --verbose -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat='NV12' --stream-mmap=4 --set-selection=target=crop,flags=0,top=0,left=0,width=1920,height=1080 --stream-to=./out.yuv
VIDIOC_QUERYCAP: ok
VIDIOC_G_FMT: ok
VIDIOC_S_FMT: ok
Format Video Capture Multiplanar:
        Width/Height      : 1920/1080
        Pixel Format      : 'NV12' (Y/CbCr 4:2:0)
        Field             : None
        Number of planes  : 1
        Flags             :
        Colorspace        : Default
        Transfer Function : Default
        YCbCr/HSV Encoding: Default
        Quantization      : Full Range
        Plane 0           :
           Bytes per Line : 1920
           Size Image     : 3110400
VIDIOC_G_SELECTION: ok
VIDIOC_S_SELECTION: ok
                VIDIOC_REQBUFS returned 0 (Success)
                VIDIOC_QUERYBUF returned 0 (Success)
                VIDIOC_QUERYBUF returned 0 (Success)
                VIDIOC_QUERYBUF returned 0 (Success)
                VIDIOC_QUERYBUF returned 0 (Success)
                VIDIOC_QBUF returned 0 (Success)
                VIDIOC_QBUF returned 0 (Success)
                VIDIOC_QBUF returned 0 (Success)
                VIDIOC_QBUF returned 0 (Success)
                VIDIOC_STREAMON returned 0 (Success)
cap dqbuf: 0 seq:      1 bytesused: 3110400 ts: 1384.549991 (ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq:      2 bytesused: 3110400 ts: 1384.616490 delta: 66.499 ms (ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq:      3 bytesused: 3110400 ts: 1384.682975 delta: 66.485 ms (ts-monotonic, ts-src-eof)
cap dqbuf: 3 seq:      4 bytesused: 3110400 ts: 1384.749486 delta: 66.511 ms (ts-monotonic, ts-src-eof)
cap dqbuf: 0 seq:      5 bytesused: 3110400 ts: 1384.816022 delta: 66.536 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq:      6 bytesused: 3110400 ts: 1384.882509 delta: 66.487 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq:      7 bytesused: 3110400 ts: 1384.949025 delta: 66.516 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 3 seq:      8 bytesused: 3110400 ts: 1385.015545 delta: 66.520 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 0 seq:      9 bytesused: 3110400 ts: 1385.082051 delta: 66.506 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq:     10 bytesused: 3110400 ts: 1385.148567 delta: 66.516 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq:     11 bytesused: 3110400 ts: 1385.215079 delta: 66.512 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 3 seq:     12 bytesused: 3110400 ts: 1385.281594 delta: 66.515 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 0 seq:     13 bytesused: 3110400 ts: 1385.348115 delta: 66.521 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq:     14 bytesused: 3110400 ts: 1385.414669 delta: 66.554 ms fps: 15.03 (ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq:     15 bytesused: 3110400 ts: 1385.481133 delta: 66.464 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 3 seq:     16 bytesused: 3110400 ts: 1385.547656 delta: 66.523 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 0 seq:     17 bytesused: 3110400 ts: 1385.614172 delta: 66.516 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq:     18 bytesused: 3110400 ts: 1385.680680 delta: 66.508 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq:     19 bytesused: 3110400 ts: 1385.747241 delta: 66.561 ms fps: 15.03 (ts-monotonic, ts-src-eof)
cap dqbuf: 3 seq:     20 bytesused: 3110400 ts: 1385.813714 delta: 66.473 ms fps: 15.03 (ts-monotonic, ts-src-eof)
^C

按Ctrl-C停止抓取,视频流保存到文件out.yuv。

使用ffplay工具播放抓取的视频流:

root@ido:~# ffplay -f rawvideo -video_size 1920x1080 -pix_fmt nv12 ./out.yuv
ffplay version 4.2.4-1ubuntu1.0firefly1 Copyright (c) 2003-2020 the FFmpeg developers
  built with gcc 9 (Ubuntu 9.3.0-17ubuntu1~20.04)
  configuration: --prefix=/usr --extra-version=1ubuntu1.0firefly1 --toolchain=hardened --libdir=/usr/lib/aarch64-linux-gnu --incdir=/usr/include/aarch64-linux-gnu --arch=arm64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-libdrm --enable-librga --enable-rkmpp --enable-version3 --disable-libopenh264 --disable-vaapi --disable-vdpau --disable-decoder=h264_v4l2m2m --disable-decoder=vp8_v4l2m2m --disable-decoder=mpeg2_v4l2m2m --disable-decoder=mpeg4_v4l2m2m --disable-muxer='ac3,eac3,mlp,truehd' --disable-encoder='ac3_fixed,ac3,mlp,spdif,truehd' --disable-demuxer='ac3,eac3,mlp,truehd,dts,dtshd' --disable-parser='aac,ac3,mlp' --disable-decoder='ac3,eac3,mlp,dolby_e' --enable-shared --disable-doc
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Option -pix_fmt is deprecated, use -pixel_format.
libGL error: failed to create dri screen
libGL error: failed to load driver: rockchip
libGL error: failed to create dri screen
libGL error: failed to load driver: rockchip
[rawvideo @ 0x7f3c000ba0] Estimating duration from bitrate, this may be inaccurate
Input #0, rawvideo, from './out.yuv':
  Duration: 00:00:04.00, start: 0.000000, bitrate: 622075 kb/s
    Stream #0:0: Video: rawvideo (NV12 / 0x3231564E), nv12, 1920x1080, 622080 kb/s, 25 tbr, 25 tbn, 25 tbc

2.10.1.3 打开摄像头
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 ! autovideoconvert ! autovideosink

2.11 RTC

主板包含2个RTC,其中/dev/rtc0为外部RTC(HYM8563),/dev/rtc1为CPU内部的RTC(RK808)。系统默认使用rtc0的时间。

2.11.1 获取RTC时间

root@ido:~# hwclock
2022-11-10 02:16:23.617474+00:00

2.11.2 设置RTC时间

root@ido:~# hwclock
2022-11-18 08:30:40.778874+00:00
root@ido:~# date -s '2022-11-10 10:17:00'
Thu Nov 10 10:17:00 UTC 2022
root@ido:~# hwclock -w
root@ido:~# hwclock
2022-11-18 08:31:06.829691+00:00
root@ido:~#

注:如果接入网络的话可能会设置失败,因为网络每隔一段时间会直接获取最新时间。

2.11.3 RTC定时开机

CPU内部的rtc1支持支持定时开机功能。

以下测试关机60秒定时开机:

root@ido:~# echo +60 > /sys/class/rtc/rtc1/wakealarm
root@ido:~# poweroff
         Stopping Session c1 of user ido.
         Stopping Session c2 of user root.
[  OK  ] Removed slice system-modprobe.slice.
[  OK  ] Stopped target Bluetooth.
...
[  OK  ] Reached target Shutdown.
[  OK  ] Reached target Final Step.
[  OK  ] Finished Power-Off.
[  OK  ] Reached target Power-Off.
[ 1195.829009] Local MAC: 82:4c:21:62:f5:35
[ 1195.834186] set rk809 rtc alarm!
[ 1195.837515] reboot: Power down

等待60秒后,主板会开机。

2.12 开机自启动

默认系统开机会运行/etc/rc.local脚本,将要开机执行的程序放到该脚本中即可。

2.13 屏幕控制

2.13.1 背光调节

通过修改/sys/class/backlight/backlight/brightness的值,实现背光的调节,范围取0-255,值越大,亮度越高。

设置亮度为100:

root@ido:~# echo 100 >  /sys/class/backlight/backlight/brightness
root@ido:~#

2.13.2 屏幕旋转

使用xrandr工具可以实现屏幕的旋转。

2.13.2.1 临时旋转

系统启动后,执行xrandr -o normal,inverted,left,right,可以实现临时旋转屏幕方向,其中normal表示顺时针旋转0度,inverted表示顺时针旋转180度,left表示顺时针旋转270度,right表示顺时针旋转90度。

root@ido:~# xrandr -o inverted
2.13.2.2 永久旋转

修改/etc/default/xrandr启动文件,可以实现永久旋转。

以旋转180度为例:

root@ido:~# cat /etc/default/xrandr
#!/bin/sh
        /usr/bin/xrandr -o inverted
root@ido:~#

这样修改后,每次重启设备,桌面将旋转180度。

2.14 按键

主板共配置3个按键:

标记

名称

功能

SW1

recovery

用于烧录,或上报KEY_VOLUMEUP

SW2

reset

硬件复位

SW3

power_on

电源键,用于开关机及待机唤醒,或上报KEY_POWER

2.15 双排针功能及接口

主板预留了40Pin的双排针接口,包含一路UART、一路I2C、一路SPI及19个GPIO。

2.15.1 双排针Pin功能定义

各个Pin的功能定义见下表:

序号

定义

电平

说明

1

VDD_3V3

3.3V

供电输出3.3V

2

VDD_5V

5V

可做5V输入供电,也可输出5V

3

I2C_SDA

3.3V

I2C数据信号

4

VDD_5V

5V

可做5V输入供电,也可输出5V

5

I2C_SCL

3.3V

I2C时钟信号

6

GND

GND

电源地

7

GPIO_7

3.3V

gpio编号为23

8

UART_TXD

3.3V

/dev/ttyS0 发送

9

GND

GND

电源地

10

UART_RXD

3.3V

/dev/ttyS0 接收

11

GPIO_0

3.3V

gpio编号为15

12

GPIO_1

3.3V

gpio编号为22

13

GPIO_2

3.3V

gpio编号为20

14

GND

GND

电源地

15

GPIO_3

3.3V

gpio编号为21

16

GPIO_4

3.3V

gpio编号为124

17

VDD_3V3

3.3V

供电输出3.3V

18

GPIO_5

3.3V

gpio编号为125

19

SPI_MOSI

3.3V

SPI数据信号

20

GND

GND

电源地

21

SPI_MISO

3.3V

SPI数据信号

22

GPIO_6

3.3V

gpio编号为130

23

SPI_SCLK

3.3V

SPI时钟信号

24

SPI_CS0

3.3V

SPI片选信号0

25

GND

GND

电源地

26

SPI_CS1

3.3V

SPI片选信号1

27

GPIO_30

3.3V

gpio编号为138

28

GPIO_31

3.3V

gpio编号为139

29

GPIO_21

3.3V

gpio编号为132

30

GND

GND

电源地

31

GPIO_22

3.3V

gpio编号为121

32

GPIO_26

3.3V

gpio编号为120

33

GPIO_23

3.3V

gpio编号为122

34

GND

GND

电源地

35

GPIO_24

3.3V

gpio编号为127

36

GPIO_27

3.3V

gpio编号为123

37

GPIO_25

3.3V

gpio编号为133

38

GPIO_28

3.3V

gpio编号为126

39

GND

GND

电源地

40

GPIO_29

3.3V

gpio编号为131

2.15.1.1 UART

双排针包含一路UART接口,电平类型为TTL电平,系统中对应的设备节点为/dev/ttyS0。

2.15.1.2 SPI

双排针包含一路SPI接口,系统中对应的设备节点为/dev/spidev3.0。

2.15.1.3 I2C

双排针包含一路I2C接口,系统种对应的设备节点为/dev/i2c-2。

2.15.1.4 GPIO

双排针共包含19个GPIO接口。

以pin7的GPIO_7为例,对应系统的gpio number 为23,可通过sysctl的方式控制此路GPIO的方向和电平。

输出模式

#导出gpio23
echo 23 > /sys/class/gpio/export
# 设置GPIO方向为输出
echo out > /sys/class/gpio/gpio23/direction
# 设置输出高电平
echo 1 > /sys/class/gpio/gpio23/value
# 设置输出低电平
echo 0 > /sys/class/gpio/gpio23/value

注:输出高指3.3v,输出低指0v。

输入模式

#导出gpio23,如果已经导出过可以不用此操作
echo 23 > /sys/class/gpio/export
# 设置GPIO方向为输入
echo in > /sys/class/gpio/gpio23/direction
# 读取GPIO接口电平
cat /sys/class/gpio/gpio23/value

返回0指输入低电平(0v),返回1指输入高电平(3.3v)。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值