“Buildroot 系统使用”的版本间的差异
Sunxiaolin(讨论 | 贡献) (→使用示例) |
Sunxiaolin(讨论 | 贡献) (→使用示例) |
||
第108行: | 第108行: | ||
# 删除网关 | # 删除网关 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | ===导出rootfs=== | ||
+ | |||
+ | 提供两种方式导出rootfs,基于rsync的export_rootfs命令方式,和基于系统recovery模式的dd命令方式。使用性能好的U盘或大容量的移动硬盘并格式成ext4格式可提升导出速度。 | ||
+ | |||
+ | *使用export_rootfs命令导出 | ||
+ | 系统下已添加export_rootfs命令。将U盘或硬盘接入目标板,使用'''mount'''命令找出挂载路径或手动挂载,终端命令行下使用root用户执行: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | export_rootfs /media/norco/upan/ | ||
+ | </syntaxhighlight> | ||
+ | 等待程序执行完成即可,分区镜像保存在'''/media/norco/upan/'''路径下。 | ||
+ | *串口终端下,进入recovery模式,使用dd命令进行克隆 | ||
+ | 在串口终端下使用root用户执行: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | reboot recovery | ||
+ | </syntaxhighlight> | ||
+ | 进入recovery模式,使用'''cat /proc/partitions'''命令找出系统分区,一般为'''/dev/mmcblk1p8'''。将U盘或硬盘接入目标板,使用'''mount'''命令找出挂载路径或手动挂载,终端命令行下执行: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | dd if=/dev/mmcblk1p8 of=/media/usb0/rootfs.img | ||
+ | </syntaxhighlight> | ||
+ | 等待命名完成即可。'''/media/usb0/rootfs.img'''即为系统分区镜像。 | ||
==QT开发== | ==QT开发== |
2020年11月30日 (一) 19:11的版本
该buildroot系统是基于wayland显示协议的嵌入式系统。系统集成的qt支持wayland、wayland-egl、eglfs、linuxfb显示插件。
目录
基础信息
用户密码
系统默认使用root用户登录,并支持root用户ssh远程登录,给目标系统root用户设置密码为root
$ passwd root
> root
> root
系统设置
系统使用基于wayland协议的weston软件来作为显示后端,开机启动脚本为/etc/init.d/S50launcher,脚本中启动了weston软件后又启动了/usr/bin/QLauncher程序,可将该程序替换为其他Qt程序。weston的配置文件为/etc/xdg/weston/weston.ini。常用设置参考如下:
[shell]
panel-position=none
# 取消桌面顶部的任务栏
background-image=/usr/lib/qt/examples/wayland/multi-output/images/background.jpg
# 更换背景图片
background-color=0xFF000000
# 使用颜色参数将桌面背景设置为全黑
[launcher]
icon=/usr/share/weston/terminal.png
path=/usr/bin/weston-terminal
# 在桌面顶部的任务栏中添加程序启动图标
[output]
name=HDMI-A-1
mode=1920x1080@60.0
transform=90
# 将桌面旋转90度
# 参数可从启动weston时的打印查看到
重启脚本命令:
$ /etc/init.d/S50launcher stop
$ /etc/init.d/S50launcher start
使用示例
网络设置
系统下有ifupdown和dhcpcd两套软件可用来管理网络,开机启动脚本分别为/etc/init.d/S40network和/etc/init.d/S41dhcpcd,ifupdown的配置文件为/etc/network/interfaces,dhcpcd的配置文件为/etc/dhcpcd.conf。dhcpcd功能更丰富,建议使用dhcpcd配置网络。dhcpcd默认会对所有可用网络接口配置动态IP
- 使用dhcpcd设置网络
设置静态IP,编辑/etc/dhcpcd.conf,添加内容参考如下:
interface eth0
static ip_address=192.168.0.10/24
static routers=192.168.0.1
static domain_name_servers=1.2.4.8 114.114.114.114
调整网络优先级,编辑/etc/dhcpcd.conf,添加内容参考如下:
interface eth0
metric 200
interface wlan0
metric 300
interface usb0
metric 400
- 连接wifi
系统下使用wpa_supplicant软件连接wifi,开机启动脚本为/etc/init.d/S80wifireconnect,配置文件为/userdata/cfg/wpa_supplicant.conf,系统中提供了wifi_start.sh脚本用于输入wifi账号密码并进行连接,并借助系统下的dhcpcd服务配置了动态IP,参考命令如下:
$ wifi_start.sh norco_2.4G norco85258506
# 账号:norco_2.4G
# 密码:norco85258506
- 4G模块上网
系统默认支持EC20 4G模块,插上4G模块、插上SIM卡、接上天线即可。系统下使用/etc/norco/init.d/ec20.sh脚本拨号上网,动态获取IP,无需要手动操作
- 使用ifupdown设置网络
设置静态IP,编辑/etc/network/interfaces,参考设置如下:
auto eth0
iface eth0 inet static
address 192.168.0.10
gateway 192.168.0.1
netmask 255.255.255.0
broadcast 192.168.0.255
dns-nameservers 1.2.4.8 114.114.114.114
- 常用调试命令
$ ip link set wlan0 up
# 使能wlan0接口
$ iw dev wlan0 scan | grep SSID
# 使用iw命令搜索wifi
$ iwlist wlan0 scan | grep SSID
# 使用iwlist命令搜索wifi
$ cp /etc/wpa_supplicant.conf ./1.conf
$ wpa_passphrase norco_2.4G norco85258506 >> ./1.conf
# 将wifi账号和密码保存到配置文件
$ wpa_cli -i wlan0 disconnect
# 关闭已有的wifi连接
$ killall wpa_supplicant
# 杀死已启动的wpa_supplicant进程
$ wpa_supplicant -B -i wlan0 -c ./1.conf
# 后台运行wpa_supplicant程序,尝试根据配置文件信息连接wifi
$ wpa_cli -i wlan0 scan
# 使用wpa_cli命令扫描wifi
# 先运行wpa_supplicant程序,才可以使用wpa_cli命令
$ wpa_cli -i wlan0 scan_result
# 使用wpa_cli命令查看扫描到的wifi
$ ip addr add 192.168.1.3/24 brd + dev wlan0
# 设置静态IP
$ ip route add default via 192.168.1.1 dev wlan0
# 添加网关
$ ip route delete default via 192.168.1.1
# 删除网关
导出rootfs
提供两种方式导出rootfs,基于rsync的export_rootfs命令方式,和基于系统recovery模式的dd命令方式。使用性能好的U盘或大容量的移动硬盘并格式成ext4格式可提升导出速度。
- 使用export_rootfs命令导出
系统下已添加export_rootfs命令。将U盘或硬盘接入目标板,使用mount命令找出挂载路径或手动挂载,终端命令行下使用root用户执行:
export_rootfs /media/norco/upan/
等待程序执行完成即可,分区镜像保存在/media/norco/upan/路径下。
- 串口终端下,进入recovery模式,使用dd命令进行克隆
在串口终端下使用root用户执行:
reboot recovery
进入recovery模式,使用cat /proc/partitions命令找出系统分区,一般为/dev/mmcblk1p8。将U盘或硬盘接入目标板,使用mount命令找出挂载路径或手动挂载,终端命令行下执行:
dd if=/dev/mmcblk1p8 of=/media/usb0/rootfs.img
等待命名完成即可。/media/usb0/rootfs.img即为系统分区镜像。
QT开发
搭建qt开发环境
主机PC端环境为Ubuntu16.04,目标板系统为buildroot嵌入式系统,默认使用root用户登录,并支持root用户ssh远程登录,给目标系统root用户配置密码为root
$ passwd root
> root
> root
SDK与系统镜像一同发布,从相应的烧录包中获取SDK。SDK中包含交叉编译工具链、qmake、与目标板系统的rootfs。解压SDK到任意目录$TOP_DIR(示例中以路径/home/lin/trash为例),并运行开发环境配置脚本
$ tar host.tar.gz -C $TOP_DIR
$ cd $TOP_DIR/host
$ ./relocate-sdk.sh
使用终端命令行编译运行qt程序
qt程序使用SDK中的qt5 examples例程,通过qmake、make命令进行编译
$ export PATH=$TOP_DIR/host/bin:$PATH
$ cd $TOP_DIR/host/aarch64-buildroot-linux-gnu/sysroot/usr/lib/qt/examples/opengl/hellowindow
$ qmake
$ make
生成hellowindow程序,可通过scp拷贝到目标板中直接运行
$ scp hellowindow root@10.168.1.247:
$ ssh root@10.168.1.247
$ ./hellowindow
系统在/etc/init.d/S50launcher开机启动服务中,启动了wayland显示服务,并运行了QLauncher桌面,若使用eglfs或linuxfb显示插件,则需要移除S50launcher服务
$ mv /etc/init.d/S50launcher ~
$ sync
$ reboot
指定eglfs显示插件运行程序
$ ./hellowindow -platform eglfs
$ ./calculator -platform linuxfb
使用qtcreator开发调试qt程序
qtcreator集成编辑、编译、运行、调试环境于一体,提升开发效率
安装qtcreator
$ sudo apt-get install qtcreator
添加Qt Versions
Tools --> Options --> Build & Run --> Qt Versions --> Add --> 选中qmake路径 --> Apply
添加Compilers
Tools --> Options --> Build & Run --> Compilers --> Add --> GCC -- 选中g++路径 --> Apply
注意:选中g++路径,并修改ABI一栏明确指示平台架构为arm
添加Debuggers(可选项)
Tools --> Options --> Build & Run --> Debuggers --> Add --> 选中gdb路径 --> Apply
添加Devices(可选项)
Tools --> Options --> Devices --> Add --> General Linux Device --> start Wizard
并点击"Test"测试设备联通
添加Kits
Tools --> Options --> Build & Run --> Kits --> Add --> Apply
打开 hellowindow 工程并选择Kits
Welcome --> Open Porject --> 选择工程路径 /home/lin/trash/host/aarch64-buildroot-linux-gnu/sysroot/usr/lib/qt/examples/opengl/hellowindow/hellowindow.pro --> Configure Project
编译运行 hellowindow
Build --> Build Project "hellowindow" --> 重启qtcreator --> Build --> Run
配置debug模式
Projects --> buildroot-kit --> Build
注意:找到 Build Steps --> qmake --> Details --> Additional arguments --> 添加 QMAKE_CXXFLAGS+=-g
Projects --> buildroot-kit --> Run
注意:找到 Run Environment --> Details --> 点击 Fetch Device Environment
重新编译并调试运行
Build --> Clean Project "hellowindow"
Debug --> Start Debugging --> Start Debugging