前 言
本文档为Linux应用开发的指引文档,提供Linux应用开发环境、开发流程等说明,以及对平台关键技术及其支持情况进行简要介绍。
当前应用开发支持情况如下表所示。

在完成开发环境搭建后,可参考本文的“Linux常用开发案例”章节熟悉基本的应用开发流程,然后可参考如下文档进行产品应用开发。
(1)图形界面开发:参考《图形用户界面(GUI)开发手册》,其中包含Qt和LVGL的开发指引;
(2)视频图像处理开发:参考《视频图像处理开发手册》;
(3)Docker开发:参考《Docker开发手册》,主要介绍Docker安装、构建镜像与下载镜像等;
(4)NPU开发:参考《NPU开发手册》,主要演示基于NPU的案例开发;
(5)ROS2开发:参考《ROS2开发手册》,主要演示ROS系统(版本:ROS2 Humble)使用说明;
(6)Modbus开发:参考《Modbus应用开发手册》,主要介绍Modbus协议开发案例。
开发环境
Windows开发环境:Windows1064bit、Windows764bit
Linux开发环境:VMware16.2.5、Ubuntu22.04.564bit
系统版本:Tronlong-Desktop 22.04(类Ubuntu)、Linux-6.1.115、U-Boot-2017.09
sysroot:RK3576-Tronlong-Desktop-22.04-sysroot-[版本号].tar.gz
应用开发交叉编译工具:gcc-11-aarch64-linux-gnu_11.4.0-1ubuntu1~22.04cross1_amd64.tar.gz
备注:本文基于2GByte LPDDR4X、16GByte eMMC配置单板机进行演示。
术语表
为便于阅读,下表对文档出现的关键术语进行解释;对于广泛认同释义的术语,在此不做注释。

注意事项
无特殊说明情况下,本文默认从eMMC启动系统,使用DEBUG作为调试串口,使用HDMI显示屏作为显示输出。
1开发环境搭建说明
1.1安装应用开发交叉编译工具链
本文主要提供适配应用开发的交叉编译工具链安装方式,包括网络安装、本地安装,请根据实际环境选择其中一种方式进行安装。
(1)通过网络安装
Host# sudo apt update
Host# sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
图 1
图 2
安装完成后,可执行如下命令查看交叉编译工具链版本号。
Host# aarch64-linux-gnu-gcc --version
Host# aarch64-linux-gnu-g++ --version
图 3
可以看到交叉编译工具版本为11.4.0即为安装成功,同时交叉编译工具链默认安装在"/usr/bin/"目录下。
Host# ls /usr/bin/aarch64-linux-gnu-*
图 4
(2)本地安装
我司提供的交叉编译链压缩包位于产品资料“4-软件资料LinuxTools”目录下,请将其拷贝至上位机Ubuntu系统任意路径,执行如下命令进行安装。
Host# tar -zxf gcc-11-aarch64-linux-gnu_11.4.0-1ubuntu1~22.04cross1_amd64.tar.gz
Host# sudo dpkg -i ./*.deb
图 5
图 6
安装完成后,可执行如下命令查看具体版本号。
Host# aarch64-linux-gnu-gcc --version
Host# aarch64-linux-gnu-g++ --version
图 7
可以看到交叉编译工具版本号为11.4.0即为安装成功,同时应用交叉编译工具链默认安装在"/usr/bin/"目录下。
Host# ls /usr/bin/aarch64-linux-gnu-*
图 8
1.2安装sysroot
我司提供的sysroot压缩包主要包含应用开发时所需的库(常用开发库、Qt库等),适用于Linux系统应用开发。
请将产品资料“4-软件资料LinuxLinuxSDK”目录下的sysroot压缩包拷贝至上位机Ubuntu系统"/home/tronlong/RK3576/"目录。执行如下命令,将其解压,解压完成后会在当前目录下生成一个"sysroot"目录和environment文件,"sysroot"目录包含sysroot相关文件。
备注:sysroot压缩包版本以实际情况为准。
Host# tar -zxf rk3576-Tronlong-Desktop-22.04-sysroot-v1.0.tar.gz
图 9
执行如下命令,设置交叉编译工具链和sysroot环境变量。
备注:由于Linux应用开发与Linux系统开发使用不同的交叉编译工具链,因此执行如下命令完成应用开发环境变量配置后,当前Terminal命令行终端将不再适用U-Boot、内核开发。如需进行U-Boot、内核开发,请另行打开一个Terminal命令行终端。
Host# source /home/tronlong/RK3576/environment
Host# export
图 10
图 11
2GDB调试说明
GDB为GNU推出的经典命令行调试工具,在Linux系统下广泛使用。它功能强大,能让开发者单步执行程序、逐过程或逐语句调试,自由跳入或跳出函数,还能按条件设置断点,实时查看变量值,精准定位程序问题。
GDB支持多种语言,包括汇编、C/C++、D、Fortran、GO、Objective-C、OpenCL等。此外,它有远程调试模式,在嵌入式系统调试中优势明显。借助TCP/IP协议及专有通信协议,可让调试程序的主机与运行程序的目标机跨设备协作,高效完成调试任务。
2.1调试环境搭建
在RK3576工作目录下执行如下命令,创建gdb-test目录并安装GDB调试工具。
Host# mkdir gdb-test
Host# sudo apt install gdb gdbserver gdb-multiarch -y
图 12
2.2演示程序创建与编译
执行如下命令,进入gdb-test目录并新建一个GDB调试演示程序。
Host# cd gdb-test
Host# vi test.c
图 13
输入以下内容:
#include
void show() {
printf("shown");
}
int main(int argc, char *argv[])
{
int arr[4] = {1, 2, 3, 4};
int i = 0;
for (i = 0; i < 4; i++) {
printf("arr[%d]: %dn", i, arr[i]);
}
show();
return 0;
}
图 14
执行如下命令,进行程序编译,编译完成将会生成test可执行程序。
Host# aarch64-linux-gnu-gcc -g test.c -o test
备注:编译时需添加-g参数,生成的可执行文件才带有调试信息。
图 15
请将单板机与PC机连接至同一个路由器,使用Type-C线将单板机的DEBUG调试串口连接至PC机,然后将单板机上电启动。将编译后的test可执行文件拷贝至单板机系统任意目录下。
Target# lstest
图 16
2.3调试程序运行
执行如下命令,查看虚拟机的IP地址。
Host# ifconfig
图 17
在单板机系统test文件所在路径下,执行如下命令运行gdbserver程序,开启监听。
备注:192.168.13.36为虚拟机的IP地址;1234为连接的端口号(自行设置);test为将要进行调试的程序。
Target# gdbserver 192.168.13.36:1234 test
图 18
在虚拟机系统test文件所在路径下,执行如下命令使用GDB调试工具进行调试。
Host# gdb-multiarch test
图 19
执行如下命令,连接单板机。192.168.13.58为单板机的IP地址,请以实际情况为准。
(gdb) target remote 192.168.13.58:1234
图 20
同时,单板机DEBUG调试串口打印连接成功的相关信息。
图 21
2.4程序调试
本章节主要演示GDB调试的几个常用命令的使用方法。
2.4.1list命令
用于列出源码,简写:l。
图 22
2.4.2break命令
用于设置断点,简写:b。
分别在main函数和第11行设置断点。
图 23
2.4.3info breakpoints命令
用于显示断点的状态,简写:infob。
图 24
2.4.4continue命令
用于恢复程序执行,简写:c。此命令使GDB恢复程序的执行,直至断点触发或程序结束。
图 25
以上调试过程在第二个断点中,每输入一次c命令,将会依次打印arr[]数组的元素值,然后程序执行结束。同时,单板机DEBUG调试串口打印相关信息。
图 26
2.4.5print命令
用于打印变量或者变量地址,简写:p。
设置断点后,可依次打印当前变量i的值。
图 27
以上调试过程在每处断点中,使用print命令打印变量i的值。同时,单板机DEBUG调试串口打印相关信息。
图 28
2.4.6quit命令
退出GDB模式,简写:q。当程序调试完成后,使用quit命令退出GDB调试。
图 29
审核编辑 黄宇
-
单板机
+关注
关注
1文章
57浏览量
18945 -
MQTT
+关注
关注
5文章
748浏览量
25377 -
rk3576
+关注
关注
1文章
321浏览量
1755
发布评论请先 登录
基于RK3576单板机的Modbus数据采集开发指南
RK3576单板机Docker镜像构建与容器运行手册
RK3576单板机玩转ROS2:通信测试+编译部署全流程详解
RK3576 单板机 NPU 边缘 AI 开发手册
RK3576 单板机高清视频图像处理开发实战手册(三)
RK3576 单板机高清视频图像处理开发实战手册(二)
RK3576 单板机高清视频图像处理开发实战手册(一)
RK3576 单板机嵌入式 Qt 界面与多屏异显开发手册(三)
RK3576 单板机嵌入式 Qt 界面与多屏异显开发手册(一)
RK3576 单板机 LinuxSDK 开发与系统定制手册(二)
RK3576 单板机 LinuxSDK 开发与系统定制手册(一)
RK3576 单板机系统使用手册:配置、升级与组件安装指南(三)
RK3576 单板机系统使用手册:配置、升级与组件安装指南(二)
RK3576 单板机系统使用手册:配置、升级与组件安装指南(一)
RK3576 单板机 C/Python/MQTT 应用开发手册(一)
评论