Debian Base 系统使用
目录
基础信息
- 用户密码
user: root
passwd: root
使用示例
视频硬件编解码
- 使用gstreamer播放视频
$ gst-play-1.0 /usr/local/test.mp4
- 播放4K视频
$ gst-launch-1.0 playbin uri=file:///root/4k.mp4
- 列出一些gstreamer命令
$ gst-launch-1.0 playbin uri=file:///usr/local/test.mp4
$ gst-launch-1.0 uridecodebin uri=file:///usr/local/test.mp4 ! kmssink
$ gst-launch-1.0 filesrc location=/usr/local/test.mp4 ! queue ! qtdemux name=dmux dmux.video_0 ! queue ! h264parse ! mppvideodec ! kmssink dmux.audio_0 ! queue ! aacparse ! faad ! autoaudiosink
$ gst-inspect-1.0 kmssink
# 查看插件信息
$ gst-discoverer-1.0 /usr/local/test.mp4
# 查看视频信息
导出主板上的根文件系统分区镜像rootfs.img
1. 将U盘的第一个分区格式化成ext4格式
2. 在U盘的第一个分区根目录下创建export_rootfs文件
3. 将U盘插到主板上,重新给主板上电
4. 等待rootfs.img自动导出,此时系统会进入recovery模式,不会进入正常系统界面。导出完成后,系统会自动重启进入正常系统界面
5. U盘中的rootfs.img即为根文件系统分区镜像
在Windows电脑主机上制作完整固件
1. 解包完整固件update.img
- 将下载的烧录包解压到当前文件夹,进入tools目录,将烧录工具windows.zip解压到当前文件夹,进入windows\RKDevTool\rockdev目录,双击执行nc-unpack.bat解包脚本,等待解包完成后各分区镜像保存在Output\Image目录中
2. 替换根文件系统分区镜像rootfs.img
- 将导出的根文件系统分区镜像rootfs.img拷贝替换到Output\Image目录中
3. 打包完整固件update.img
- 双击执行nc-pack.bat打包脚本,等待打包完成后完整固件update.img保存在Output目录中
在Windows电脑主机上烧录固件
安装驱动
将下载的烧录包解压到当前文件夹,进入tools目录,将烧录工具windows.zip解压到当前文件夹,进入windows目录,将驱动DriverAssitant_v*.zip解压到当前文件夹,进入DriverAssitant_v*目录,双击DriverInstall.exe安装驱动。
运行烧录工具
进入tools\windows\RKDevTool\RKDevTool_Release目录,双击RKDevTool.exe运行烧录工具。
连接烧录线
将主板和Windows电脑通过一根USB烧录线进行连接。
让主板进入烧录模式
在主板系统终端下执行命令:
reboot loader
主板会被烧录工具识别成一个LOADER设备或MASKROM设备。
烧录完整固件update.img
点击“升级固件” --> 点击“固件”并选中完整固件update.img --> 点击“升级”
烧录完成后,设备自动重启进入正常工作模式。
单独烧录内核分区镜像boot.img
在设备处于LOADER模式下,可以单独烧录boot分区镜像或rootfs等其他分区镜像,点击“设备分区表”可以看到设备的分区信息。
只勾选boot一栏 --> 确认地址与设备分区地址一致 --> 选中boot.img所在路径 --> 点击“执行”
烧录完成后,设备会自动重启或需手动断电重启,进入正常工作模式。
在Linux下打包完整固件
unpack.sh用于将完整固件解包成各个分区镜像;打包工具脚本mkupdate.sh用于将各分区镜像打包成一个完整的固件。
- 将烧录、解包、打包工具linux.tar.gz解压到当前目录
tar xvf linux.tar.gz
- 解包update.img
cd linux/Linux_Pack_Firmware/rockdev
ln -sfr ../../../../update.img update.img
./unpack.sh
- 根据需要替换指定分区镜像,比如替换根文件系统分区镜像output/Image/rootfs.img
- 进行必要的移动拷贝,使用初始固件的分区参数、各分区镜像、打包配置文件
mv output/parameter.txt output/Image/
mv output/MiniLoaderAll.bin output/Image/
mv output/package-file .
ln -sfr output/Image/ Image
- 根据芯片平台执行对应的打包脚本,完成后完整固件update.img保存在当前目录
./rk3399-mkupdate.sh
在Linux下烧录固件
烧录工具upgrade_tool可用于升级固件。
- 连接好USB烧录线连接后,在主板的系统终端下执行如下命令,让主板进入烧录模式
reboot loader
- 将烧录、解包、打包工具linux.tar.gz解压到当前目录,并进行简单设置
tar xvf linux.tar.gz
cd linux/Linux_Upgrade_Tool/Linux_Upgrade_Tool && chmod a+x upgrade_tool && sudo cp upgrade_tool /usr/local/bin
mkdir ~/.config/upgrade_tool/
cp config.ini ~/.config/upgrade_tool/
- 烧录完整固件及各分区镜像的命令
sudo upgrade_tool uf update.img
# 烧录完整固件
sudo upgrade_tool di -p parameter.txt
# 烧录分区参数
sudo upgrade_tool di -uboot uboot.img
# 烧录uboot分区镜像
sudo upgrade_tool di -b boot.img
# 烧录内核分区镜像
sudo upgrade_tool di -rootfs rootfs.img
# 烧录根文件系统分区镜像rootfs.img
sudo upgrade_tool di -r recovery.img
# 烧录recovery镜像
sudo upgrade_tool di -userdata userdata.img
# 烧录userdata分区镜像
OpenCL
- 安装并运行
clinfo
,查看OpenCL相关信息
$ sudo apt-get install -f -y clinfo
$ clinfo
Number of platforms 1
Platform Name ARM Platform
Platform Vendor ARM
Platform Version OpenCL 1.2 v1.r14p0-01rel0-git(a79caef).8ddfd7584149d9238dced4e406610de7
Platform Profile FULL_PROFILE
Platform Extensions cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addy
Platform Extensions function suffix ARM
Platform Name ARM Platform
Number of devices 1
Device Name Mali-T860
Device Vendor ARM
Device Vendor ID 0x8602000
Device Version OpenCL 1.2 v1.r14p0-01rel0-git(a79caef).8ddfd7584149d9238dced4e406610de7
Driver Version 1.2
Device OpenCL C Version OpenCL C 1.2 v1.r14p0-01rel0-git(a79caef).8ddfd7584149d9238dced4e406610de7
Device Type GPU
Device Profile FULL_PROFILE
Max compute units 4
Max clock frequency 800MHz
Device Partition (core)
Max number of sub-devices 0
Supported partition types None
Max work item dimensions 3
Max work item sizes 256x256x256
Max work group size 256
...
网络设置
系统下有ifupdown和network-manager两套软件在管理网络,ifupdown的配置文件为/etc/network/interfaces,network-manager通过命令行nmcli来设置网络。network-manager功能更强大,对于/etc/network/interfaces中声明过的网络接口network-manager默认不再管理。系统默认没有对/etc/network/interfaces进行设置,从而network-manager接管了eth0,配置了DHCP
- 使用ifupdown设置网络
编辑/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
重启系统生效
- 使用network-manager的命令行工具nmcli设置网络
常用命令:
$ nmcli connection show
# 查看连接
$ nmcli device status
# 查看网络接口状态
$ nmcli device show
# 查看网络接口网络信息
$ nmcli general status
# 查看总体状态
$ nmcli connection add con-name "my_connection" type ethernet ifname eth0
# 添加连接
$ nmcli connection up my_connection
# 使用连接
$ nmcli connection down my_connection
# 不使用连接
$ nmcli connection delete my_connection
# 删除连接
$ nmcli connection show id my_connection
# 查看连接详细信息
设置静态IP命令参考如下:
$ nmcli connection add con-name my_static_ip ifname eth0 type ethernet ip4 192.168.0.10/24 gw4 192.168.0.1
# 添加名为"my_static_ip"的静态IP连接
# 生成配置文件/etc/NetworkManager/system-connections/my_static_ip
$ nmcli connection modify my_static_ip ipv4.dns "1.2.4.8 8.8.8.8"
# 设置DNS
$ nmcli connection up my_static_ip
# 使用连接
$ nmcli connection down my_static_ip
# 不使用连接
$ nmcli connection delete my_static_ip
# 删除连接
设置动态IP命令参考如下:
$ nmcli connection add con-name my_dynamic_ip ifname eth0 type ethernet
# 添加名为"my_dynamic_ip"的动态IP连接
# 生成配置文件/etc/NetworkManager/system-connections/my_dynamic_ip
$ nmcli connection up my_dynamic_ip
# 使用连接
$ nmcli connection down my_dynamic_ip
# 不使用连接
$ nmcli connection delete my_dynamic_ip
# 删除连接
连接wifi命令参考如下:
$ nmcli device wifi list
# 查看wifi列表
$ nmcli device wifi connect norco_2.4G password norco85258506
# 连接wifi
# 生成配置文件/etc/NetworkManager/system-connections/norco_2.4G
$ nmcli connection down norco_2.4G
# 关闭连接
$ nmcli connection delete norco_2.4G
# 删除连接
$ nmcli radio wifi off
# 关闭wifi
$ nmcli radio wifi on
# 打开wifi
QT开发
qt程序测试脚本
系统中添加了qt_test.sh和qt_test_touchscreen.sh测试脚本,在系统终端下直接运行
基于linuxfb或eglfs显示运行qt程序
$ qt_test.sh linuxfb
$ qt_test.sh eglfs
基于libinput或tslib或evdev适配触摸屏运行qt程序
$ qt_test_touchscreen.sh libinput
$ qt_test_touchscreen.sh tslib
$ qt_test_touchscreen.sh evdev
注意:在一次开机系统运行过程中,若使用了DRM,则不可再直接操作FB。在qt_test.sh脚本中启用了QT_QPA_FB_DRM=1,而qt_test_touchscreen.sh脚本为了可能会使用到tslib校准程序没有设置QT_QPA_FB_DRM,一次开机仅可选择其中一个脚本执行
搭建qt开发环境
主机PC端环境为Ubuntu16.04,目标板系统为debian base系统,默认使用root用户自动登录,并支持root用户ssh远程登录,系统中移植了qt,支持eglfs、linuxfb显示插件。
SDK与系统镜像一同发布,从相应的烧录包中获取SDK。SDK中包含交叉编译工具链、qmake、与目标板系统qt环境。解压SDK到任意目录$TOP_DIR(示例中以路径/opt/data为例),并运行开发环境配置脚本
$ 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拷贝到目标板中,并配置qt运行环境变量后运行
$ scp hellowindow root@10.168.1.157:
$ ssh root@10.168.1.157
$ export LD_LIBRARY_PATH=/opt/data/target/usr/lib
$ export QT_QPA_PLATFORM_PLUGIN_PATH=/opt/data/target/usr/lib/qt/plugins
指定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
GDB Server executable路径为: /opt/data/target/usr/bin/gdbserver
并点击"Test"测试设备联通
添加Kits
Tools --> Options --> Build & Run --> Kits --> Add --> Apply
打开 calculator 工程并选择Kits
Welcome --> Open Porject --> 选择工程路径 /opt/data/host/aarch64-buildroot-linux-gnu/sysroot/usr/lib/qt/examples/widgets/widgets/calculator/calculator.pro --> Configure Project
编译运行 calculator
Build --> Build Project "calculator" --> 重启qtcreator
Projects --> debian-kit --> Run
注意:找到 Run Environment --> Details --> Batch Edit 添加QT运行环境变量
Build --> Run
配置debug模式
Projects --> debian-kit --> Build
注意:找到 Build Steps --> qmake --> Details --> Additional arguments --> 添加 QMAKE_CXXFLAGS+=-g
重新编译并调试运行
Build --> Clean Project "calculator"
Debug --> Start Debugging --> Start Debugging