)
前 言本文档主要介绍基于单板机/工控机的Linux应用开发包括Linux应用开发环境、开发流程以及通用的Linux应用开发案例演示等。备注本文适用于SBC-TLT153单板机及EPC-TLT153工控机系列由SBC-TLT153单板机搭配扩展板与外壳组成文中所有演示均基于512MByte DDR3 512MByte NAND FLASH硬件配置的单板机开展。当前应用开发支持情况如下表所示。在完成开发环境搭建后可参考本文的“Linux常用开发案例”章节熟悉基本的应用开发流程然后可参考用户手册文档进行产品应用开发。开发环境Windows开发环境Windows10 64bitLinux开发环境VMware16.2.5、Ubuntu22.04.4 64bitLinuxSDK开发包LinuxSDK-[版本号]基于aiot-t153-linux-v1.0单板机系统版本Tronlong-Desktop 22.04类Ubuntu、U-Boot-2023.04-rc4、Linux-5.10.198交叉编译工具链Rootfs开发、应用开发arm-linux-gnueabihf-gcc版本为11.4.0U-Boot开发gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi内核开发gcc-linaro-11.3.1-2022.06-x86_64_arm-linux-gnueabihf术语表为便于阅读下表对文档出现的关键术语进行解释对于广泛认同释义的术语在此不做注释。注意事项1无特殊说明情况下本文默认基于NAND FLASH配置单板机进行测试通过NAND FLASH启动系统。默认使用DEBUG作为调试串口使用LVDS显示屏作为显示输出。2我司提供的相关文件支持系统开发和应用开发具体说明如下1 开发环境搭建说明1.1 安装应用交叉编译工具链本文主要提供适配应用开发的交叉编译工具链安装方式包括网络安装、本地安装请根据实际环境选择其中一种方式进行安装。1通过网络安装Host#sudo apt updateHost#sudo apt install gcc-arm-linux-gnueabihf g-arm-linux-gnueabihf安装完成后可执行如下命令查看交叉编译工具链版本号。Host#arm-linux-gnueabihf-gcc --versionHost#arm-linux-gnueabihf-g --version可以看到交叉编译工具版本为11.4.0及以上版本即为安装成功同时交叉编译工具链默认安装在/usr/bin/目录下。Host#ls /usr/bin/arm-linux-gnueabihf-*2本地安装我司提供的交叉编译链压缩包位于产品资料“4-软件资料\Linux\Tools\”目录下请将其拷贝至上位机Ubuntu系统任意路径执行如下命令进行安装。备注离线安装前需清理apt缓存确保安装环境干净。Host#sudo apt-get cleanHost#tar -zxf gcc-arm-linux-gnueabihf-11.4.0-offline.tar.gzHost#sudo cp arm-gcc-offline/*.deb /var/cache/apt/archives/Host#cd /var/cache/apt/archivesHost#sudo apt install ./*.deb安装完成后可执行如下命令查看具体版本号。Host#arm-linux-gnueabihf-gcc --versionHost#arm-linux-gnueabihf-g --version可以看到交叉编译工具版本为11.4.0及以上版本即为安装成功同时交叉编译工具链默认安装在/usr/bin/目录下。Host#ls /usr/bin/arm-linux-gnueabihf-*1.2 安装sysroot我司提供的sysroot压缩包主要包含应用开发时所需的库常用开发库、Qt库等适用于Linux系统应用开发。请将产品资料“4-软件资料\Linux\LinuxSDK\”目录下的sysroot压缩包拷贝至上位机Ubuntu系统/home/tronlong/T153/目录。执行如下命令将其解压解压完成后会在当前目录下生成一个sysroot目录和environment文件sysroot目录包含sysroot相关文件。备注sysroot压缩包版本以实际情况为准。Host#tar -zxf t153-Tronlong-Desktop-22.04-sysroot-v1.0-nand.tar.gz2 GDB调试说明GDB为GNU推出的经典命令行调试工具在Linux系统下广泛使用。它功能强大能让开发者单步执行程序、逐过程或逐语句调试自由跳入或跳出函数还能按条件设置断点实时查看变量值精准定位程序问题。GDB支持多种语言包括汇编、C/C、D、Fortran、GO、Objective-C、OpenCL等。此外它有远程调试模式在嵌入式系统调试中优势明显。借助TCP/IP协议及专有通信协议可让调试程序的主机与运行程序的目标机跨设备协作高效完成调试任务。2.1 调试环境搭建执行如下命令安装gdb调试工具。Host#sudo apt install gdb-multiarch2.2 演示程序创建与编译在T153目录下创建gdb-tool目录在gdb-tool目录下执行如下命令新建一个GDB调试演示程序。Host#mkdir gdb-toolHost#cd gdb-tool/Host#vi test.cHost#cat test.c演示程序代码如下#include stdio.hvoid show() {printf(show\n);}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]: %d\n, i, arr[i]);}show();return 0;}执行如下命令进行程序编译编译完成将会生成test可执行程序。备注编译时需添加-g参数生成的可执行文件才带有调试信息。Host#arm-linux-gnueabihf-gcc -g test.c -o test请将单板机与PC机连接至同一个路由器使用Type-C线将单板机的DEBUG调试串口连接至PC机然后将单板机上电启动。将编译后的test可执行文件拷贝至单板机系统任意目录下。Target#ls test2.3 调试程序运行执行如下命令查看虚拟机的IP地址。Host#ifconfig在单板机系统test文件所在路径下执行如下命令运行gdbserver程序开启监听。备注192.168.12.59为虚拟机的IP地址1234为连接的端口号自行设置test为将要进行调试的程序。Target#gdbserver 192.168.12.59:1234 test在虚拟机test文件所在路径下执行如下命令使用GDB调试工具进行程序调试。Host#gdb-multiarch test执行如下命令连接单板机。192.168.12.37为单板机的IP地址请以实际情况为准。(gdb)target remote 192.168.12.37:1234同时单板机DEBUG调试串口打印连接成功的相关信息。2.4 程序调试本章节主要演示GDB调试的几个常用命令的使用方法。2.4.1 list命令用于列出源码简写l。2.4.2 break命令用于设置断点简写b。分别在main函数和第10行设置断点。2.4.3 info breakpoints命令用于显示断点的状态简写info b。2.4.4 continue命令用于恢复程序执行简写c。此命令使GDB恢复程序的执行直至断点触发或程序结束。以上调试过程在第二个断点中每输入一次c命令将会依次打印arr[]数组的元素值然后程序执行结束。同时单板机DEBUG调试串口打印相关信息。2.4.5 print命令用于打印变量或者变量地址简写p。设置断点后可依次打印当前变量i的值。以上调试过程在每处断点中使用print命令打印变量i的值。同时单板机DEBUG调试串口打印相关信息。2.4.6 quit命令退出GDB模式简写q。当程序调试完成后使用quit命令退出GDB调试。同时单板机DEBUG调试串口打印相关信息。