1. Buildroot 使用手册

1.1. 桌面应用

官方发布的 Buildroot 固件,默认支持 Wayland 桌面环境和一些 Qt 应用,如下图:

_images/Buildroot_Desktop1.png

1.1.1. multivideoplayer

多路视频播放器用于测试设备的多路视频播放能力、显示能力以及硬件解码能力。

_images/buildroot_multi_video.png

1.1.2. qfm

qfm 是一个文件浏览应用

_images/buildroot_file_manage.png

1.1.3. qplayer

qplayer 是一个多功能播放器,可以播放视频、音频和浏览图片。

_images/buildroot_qplayer.png

1.1.4. qcamera

qcamera 是一款相机应用,可以进行拍摄和录像。

_images/buildroot_qcamera.png

设备连接摄像头的情况下启动 qcamera 将自动显示摄像头画面,右侧按钮:

  • Image Mode: 照相模式,点击可切换为 Video Mode 视频录制模式。

  • Capture: 捕捉图像,在 Video Mode 下会变为 Record 录制按钮。

  • Exit: 退出。

1.1.5. qsetting

qsetting 是系统设置工具,可以设置 WiFi ,蓝牙,恢复出厂以及固件升级。

_images/buildroot_setting.png

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.6. 外部存储设备

Buildroot 支持自动挂载外部存储设备:

  • U 盘挂载路径:/udisk

  • TF 卡挂载路径:/sdcard

1.7. 恢复出厂设置

注意:此出厂设置表示恢复为设备最后一次升级固件之后的初始状态。

1.7.1. 方法1

通过 qsetting QT 应用进行配置,点击 “Factory Reset” 功能选项进行操作。

1.7.2. 方法2

通过 update 命令

update
# 或者
update factory / update 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.8.2. 升级过程

1.8.2.1. 方法1

通过 qsetting QT应用进行配置。点击 “Update” 功能选项进行操作。

1.8.2.2. 方法2

通过 update 命令。

# U 盘
update ota /udisk/update.img
# TF 卡
update ota /sdcard/update.img
# /userdata/
update ota /userdata/udpate.img

等待升级完成,升级成功后,设备会重新启动进入系统。

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 应用。

_images/Buildroot_firmwareota.png

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