1. Buildroot 使用手册¶
1.1. 桌面应用¶
官方发布的 Buildroot 固件,默认支持 Wayland 桌面环境和一些 Qt 应用,如下图:
1.1.4. qcamera¶
qcamera 是一款相机应用,可以进行拍摄和录像。
设备连接摄像头的情况下启动 qcamera 将自动显示摄像头画面,右侧按钮:
Image Mode: 照相模式,点击可切换为 Video Mode 视频录制模式。
Capture: 捕捉图像,在 Video Mode 下会变为 Record 录制按钮。
Exit: 退出。
1.2. 用户和密码¶
用户:root
密码:firefly
1.3. WiFi 连接¶
1.3.1. 修改配置文件的方式¶
1.3.1.1. 方式1¶
通过 qsetting QT应用进行配置。
1.3.1.2. 方式2¶
修改如下文件:
vi /data/cfg/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
添加如下配置项
network={
ssid="WiFi-AP" // WiFi 名字
psk="12345678" // WiFi 密码
key_mgmt=WPA-PSK // 加密方式
# key_mgmt=NONE // 不加密
}
启动wpa_supplicant进程
wpa_supplicant -B -i wlan0 -c /data/cfg/wpa_supplicant.conf
1.3.2. 临时修改的方式¶
修改如下文件:
vi /data/cfg/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
启动wpa_supplicant进程:
wpa_supplicant -B -i wlan0 -c /data/cfg/wpa_supplicant.conf
1.3.2.1. 通过wpa_cli配置WiFi¶
常用命令:
wpa_cli -i wlan0 scan // 搜索附近wifi网络
wpa_cli -i wlan0 scan_result // 打印搜索wifi网络
wpa_cli -i wlan0 add_network // 添加一个网络连接
如果要连接加密方式是[WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS] (wpa加密),wifi名称是name,wifi密码是:psk。操作如下:
wpa_cli -i wlan0 set_network 0 ssid '"name"'
wpa_cli -i wlan0 set_network 0 psk '"psk"'
wpa_cli -i wlan0 set_network 0 key_mgmt WPA-PSK
wpa_cli -i wlan0 enable_network 0 //使能WiFi
如果要连接加密方式是[WEP][ESS] (wep加密),wifi名称是name,wifi密码是psk。操作如下:
wpa_cli -i wlan0 set_network 0 ssid '"name"'
wpa_cli -i wlan0 set_network 0 key_mgmt NONE
wpa_cli -i wlan0 set_network 0 wep_key0 '"psk"'
wpa_cli -i wlan0 enable_network 0
如果要连接加密方式是[ESS] (无加密),wifi名称是name。操作如下:
wpa_cli -i wlan0 set_network 0 ssid '"name"'
wpa_cli -i wlan0 set_network 0 key_mgmt NONE
wpa_cli -i wlan0 enable_network 0
使能保存WIFI连接信息
wpa_cli -i wlan0 set update_config 1
保存WIFI连接信息
wpa_cli -i wlan0 save_config
连接已有的连接
wpa_cli -i wlan0 list_network // 列举所有保存的连接
wpa_cli -i wlan0 select_network 0 // 连接第1个保存的连接
wpa_cli -i wlan0 enable_network 0 // 使能第1个保存的连接
关闭WiFi
ifconfig wlan0 down
1.4. 音/视频播放¶
# 播放 wav
aplay test.wav
gstwavplay.sh test.wav
# 播放 mp3
mp3play.sh test.mp3
gstmp3play.sh test.mp3
# 播放 mp4
gstmp4play.sh test.mp4
gstvideoplay.sh test.mp4
1.5. SSH¶
官方发布的 SDK 默认已开启 ssh,用户为”root”,密码为”firefly”。如果不需要修改用户登录密码,可以跳过此章节。
1.5.1. 修改方法¶
使能SSH相关选项
openssh
BR2_PACKAGE_OPENSSH=y
配置登录的账户root和密码
BR2_TARGET_ENABLE_ROOT_LOGIN=y BR2_TARGET_GENERIC_ROOT_PASSWD="firefly"
修改配置文件
修改板卡里
/etc/ssh/sshd_config
文件
PermitRootLogin yes
1.7. 恢复出厂设置¶
注意:此出厂设置表示恢复为设备最后一次升级固件之后的初始状态。
1.7.1. 方法1¶
通过 qsetting QT 应用进行配置,点击 “Factory Reset” 功能选项进行操作。
1.8. 固件本地升级¶
Buildroot 支持从外部存储设备升级固件,以下是升级流程说明。关于如何编译 Buildroot 固件请用户参考相应板卡维基的编译 Buildroot 固件页面。
1.8.1. 制作升级固件¶
按照正常的固件编译流程,制作用于升级的固件。
升级固件不一定要全分区升级,可修改 package-file
文件,将不要升级的分区注释掉,或者改为RESERVED
(1)修改文件 tools/linux/Linux_Pack_Firmware/rockdev/package-file
例如,将 rootfs
的相对路径改为 RESERVED
,这样就不会打包根文件系统,即不升级根文件系统分区。
# name relative path
#
#hwdef hwdef
package-file package-file
bootloader image/miniloaderall.bin
parameter image/parameter.txt
trust image/trust.img
uboot image/uboot.img
misc image/misc.img
boot image/boot.img
recovery image/recovery.img
rootfs RESERVED
oem image/oem.img
userdata:grow image/userdata.img
backup RESERVED
(2)编译固件
./build.sh updateimg
将制作好的升级固件拷贝到 U 盘、TF 卡或者设备的 /userdata/
目录下,重命名为 update.img
。
注意: 若将升级固件放至设备的 /userdata/
目录,则不要打包 userdata.img
,将 image/userdata.img
改为 RESERVED
。
1.9. 固件网络升级¶
firmwareota 是一个 Qt 桌面应用,支持从网络下载固件进行网络升级,下面是使用说明。
1.9.1. 安装说明¶
(1)下载
点击下载链接(提取码:1234)
(2)解压和安装
tar -zxvf firmwareota.tar.gz
安装目录结构,将文件拷贝到设备对应目录
└── usr
├── bin
│ └── firmwareota
└── share
├── applications
│ └── firmwareota.desktop
└── icon
└── icon_firmwareota.png
(3)重启QLauncher桌面应用(或者直接重启开发板)
/etc/init.d/S50launcher stop
/etc/init.d/S50launcher start
重启桌面之后即可打开 firmwareota 应用。
1.9.2. 设置下载地址¶
程序会通过默认的 Http 地址下载列表文件 ota_list
,解析列表文件获取固件下载链接。
列表文件格式,例:
firmware_name_1
http://192.168.2.11:8000/firmware_name_1
firmware_name_2
http://192.168.2.11:8000/firmware_name_2
...
我们可以通过添加 /userdata/list_url
文件,设置指定列表文件下载地址,例:
http://192.168.2.11:8000/ota_list
1.10. Weston 配置¶
我们可以通过配置 Weston 对显示进行一些自定义设置,下文对部分设置进行说明。
1.10.1. 状态栏设置¶
Weston 支持在 weston.ini 配置文件的 shell 段设置状态栏的背景色、位置,以及在 launcher 段设置快捷启动程序,如:
# /etc/xdg/weston/weston.ini
[shell]
# 颜色格式为 ARGB8888
panel-color=0xff002244
# top|bottom|left|right|none
panel-position=bottom
[launcher]
icon=/usr/share/weston/terminal.png
path=/usr/bin/weston-terminal
[launcher]
# 图标路径
icon=/usr/share/weston/icon_flower.png
# 快捷启动命令
path=/usr/bin/qsetting
1.10.2. 背景设置¶
Weston 支持在 weston.ini 配置文件的 shell 段设置背景图案、颜色,如:
# /etc/xdg/weston/weston.ini
[shell]
# 背景图案(壁纸)绝对路径
background-image=/usr/share/weston/background.png
# scale|scale-crop|tile
background-type=scale
# 颜色格式为 ARGB8888,未设置背景图案时生效
background-color=0xff002244
1.10.3. 待机及锁屏配置¶
Weston 的超时待机时长可以在启动参数中配置,也可以在 weston.ini 的 core 段配置,如:
# /etc/init.d/S50launcher
start)
...
# 0 为禁止待机,单位为秒
weston --tty=2 -B=drm-backend.so --idle-time=0&
或者:
# /etc/xdg/weston/weston.ini
[core]
# 设置 5 秒未操作后进入待机状态
idle-time=5
1.10.4. 显示颜色格式配置¶
Buildroot SDK 内 Weston 目前默认显示格式为 ARGB8888,对于某些低性能平台,可以在 weston.ini 的 core 段配置为 RGB565,如:
# /etc/xdg/weston/weston.ini
[core]
# xrgb8888|rgb565|xrgb2101010
gbm-format=rgb565
也可以在 weston.ini 的 output 段单独配置每个屏幕的显示格式,如:
# /etc/xdg/weston/weston.ini
[output]
# output 的 name 可以查看 /sys/class/drm/card0-name
name=LVDS-1
# xrgb8888|rgb565|xrgb2101010
gbm-format=rgb565
1.10.5. 屏幕方向设置¶
Weston 的屏幕显示方向可以在 weston.ini 的 output 段配置,如:
# /etc/xdg/weston/weston.ini
[output]
name=LVDS-1
# normal|90|180|270|flipped|flipped-90|flipped-180|flipped-270
transform=180
如果需要动态配置屏幕方向,可以通过动态配置文件,如:
echo "output:all:rotate90" > /tmp/.weston_drm.conf # 所有屏幕旋转 90 度
echo "output:eDP-1:rotate180" > /tmp/.weston_drm.conf # eDP-1 旋转 180 度
1.10.6. 分辨率及缩放配置¶
Weston 的屏幕分辨率及缩放可以在 weston.ini 的 output 段配置,如:
# /etc/xdg/weston/weston.ini
[output]
name=HDMI-A-1
# 需为屏幕支持的有效分辨率
mode=1920x1080
# 需为整数倍数
scale=2
如果需要动态配置分辨率及缩放,可以通过动态配置文件,如:
echo "output:HDMI-A-1:mode=800x600" > /tmp/.weston_drm.conf # 修改 HDMI-A-1 分辨率为800x600
这种方式缩放时需要依赖 RGA 加速。
1.10.7. 冻结屏幕¶
在启动 Weston 时,开机 logo 到 UI 显示之间存在短暂切换黑屏。如需要防止黑屏,可以通过以下种动态配置文件方式短暂冻结 Weston 屏幕内容:
# /etc/init.d/S50launcher
start)
...
export WESTON_FREEZE_DISPLAY=/tmp/.weston_freeze # 设置特殊配置文件路径
touch /tmp/.weston_freeze # 冻结显示
weston --tty=2 -B=drm-backend.so --idle-time=0&
...
sleep 1 && rm /tmp/.weston_freeze& # 1 秒后解冻
1.10.8. 多屏配置¶
Buildroot SDK 的 Weston 支持多屏同异显及热拔插等功能,不同显示器屏幕的区分根据 drm 的 name (通过 /sys/class/drm/card0-name 获取),相关配置通过环境变量设置,如:
# /etc/init.d/S50launcher
start)
...
export WESTON_DRM_PRIMARY=HDMI-A-1 # 指定主显为 HDMI-A-1
export WESTON_DRM_MIRROR=1 # 使用镜像模式(多屏同显),不设置此环境变量即为异显
export WESTON_DRM_KEEP_RATIO=1 # 镜像模式下缩放保持纵横比,不设置此变量即为强制全屏
export WESTON_DRM_PREFER_EXTERNAL=1 # 外置显示器连接时自动关闭内置显示器
export WESTON_DRM_PREFER_EXTERNAL_DUAL=1 # 外置显示器连接时默认以第一个外显为主显
weston --tty=2 -B=drm-backend.so --idle-time=0&
镜像模式缩放显示内容时需要依赖 RGA 加速。
同时也支持在 weston.ini 的 output 段单独禁用指定屏幕:
# /etc/xdg/weston/weston.ini
[output]
name=LVDS-1
mode=off
# off|current|preferred|<WIDTHxHEIGHT@RATE>
1.10.9. 输入设备相关配置¶
Weston 服务默认需要至少一个输入设备,如无输入设备,则需要在 weston.ini 中的 core 段特殊设置:
# /etc/xdg/weston/weston.ini
[core]
require-input=false