DR1平台Linux应用开发指南:含GDB调试、Python及MQTT实战
前言本文为创龙科技编写的Linux应用开发的指引文档,提供Linux应用开发环境、开发流程等说明,以及对平台关键技术及其支持情况进行简要介绍。同时本文将对部分通用开发技术进行说明,其它应用开发内容请按文中说明选择对应参考文档进行阅读。当前应用开发支持情况如下表所示。https://file1.elecfans.com/web3/M00/45/A2/wKgZO2lbdamAQEqRAAAW4Efnnak361.png
在完成开发环境搭建后,可参考本文的“Linux常用开发案例”章节熟悉基本的应用开发流程,然后可参考如下文档进行产品应用开发。(1)图形界面开发:暂无参考;(2)视频图像处理开发:暂无参考。开发环境Windows开发环境:Windows10 64bitLinux开发环境:VMware16.2.5、Ubuntu22.04.4 64bitLinuxSDK开发包:LinuxSDK-[版本号](基于SDK_2025.1)交叉编译工具链:应用开发:gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnuU-Boot、内核开发:gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu评估板系统版本:U-Boot-2021.01、Linux-6.1.111、Buildroot-2022.02备注:本文基于8GByte eMMC、1GByte DDR配置核心板进行演示。
术语表为便于阅读,下表对文档出现的关键术语进行解释;对于广泛认同释义的术语,在此不做注释。
https://file1.elecfans.com/web3/M00/45/A3/wKgZPGlbdbmAbiiSAAA1gnmDsns568.png
注意事项(1)无特殊说明情况下,默认使用USB TO UART1接口作为调试串口,使用Linux系统启动卡启动系统,通过路由器与PC机进行网络连接。请根据评估底板丝印将启动方式选择拨码开关拨为011(1~3),此档位为Micro SD启动模式。(2)本文档涉及的开发案例位于产品资料“4-软件资料\Demo\”路径下的base-demos目录。base-demos目录存放Linux常用开发案例,案例bin目录存放可执行文件,案例src目录存放源码。
1开发环境搭建说明1.1LinuxSDK使用说明请参考《开发环境搭建》的LinuxSDK安装章节正确解压LinuxSDK并安装相关依赖软件,然后参考《Linux系统开发手册》的LinuxSDK配置与编译章节正确编译LinuxSDK,生成支持应用开发的交叉编译工具链。编译完LinuxSDK后,请执行如下命令,完成Linux应用开发的环境变量配置,即可进行Linux应用开发。Host# export PATH=/home/tronlong/DR1/SDK_2025.1/device/output/anlogic_dr1m90/buildroot/host/bin/:$PATH
https://file1.elecfans.com/web3/M00/45/A3/wKgZPGlbdhWAJI-MAABNALVCKf4451.png
图 1
1.2工具链使用说明通过export命令完成环境变量配置后,请执行如下命令,查看编译工具链版本。Host# aarch64-linux-gnu-gcc -v
https://file1.elecfans.com/web3/M00/45/A2/wKgZO2lbdj6Ad7ahAAHO0dHHpd0440.png
图 2
2GDB调试说明GDB为GNU推出的经典命令行调试工具,在Linux系统下广泛使用。它功能强大,能让开发者单步执行程序、逐过程或逐语句调试,自由跳入或跳出函数,还能按条件设置断点,实时查看变量值,精准定位程序问题。GDB支持多种语言,包括汇编、C/C++、D、Fortran、GO、Objective-C、OpenCL等。此外,它有远程调试模式,在嵌入式系统调试中优势明显。借助TCP/IP协议及专有通信协议,可让调试程序的主机与运行程序的目标机跨设备协作,高效完成调试任务。2.1调试环境搭建请先参考产品资料用户手册目录下的《开发环境搭建》和《Linux系统开发手册》安装、编译LinuxSDK。GDB调试工具压缩包gdb-10.2.tar.xz位于LinuxSDK源码目录"buildroot/dl/gdb/"下。
https://file1.elecfans.com/web3/M00/45/A3/wKgZO2lbeCqAWNzgAAAzssZTMYM870.png
图 3
在DR1工作目录下执行如下命令,创建gdb-tool目录用于存放GDB调试工具压缩包,将GDB调试工具包拷贝至该目录下并解压。Host# mkdir gdb-toolHost# cd gdb-toolHost# cp /home/tronlong/DR1/SDK_2025.1/buildroot/dl/gdb/gdb-10.2.tar.xz /home/tronlong/DR1/gdb-tool/Host# tar -xvf gdb-10.2.tar.xz
https://file1.elecfans.com/web3/M00/45/A3/wKgZO2lbeDWADui3AAB3jA7ageY966.png
图 4
https://file1.elecfans.com/web3/M00/45/A3/wKgZPGlbeDWAU1zLAABM8R5XziM496.png
图 5
执行如下命令,配置交叉编译工具链环境变量,并新建install目录用于存放编译生成的GDB调试工具。Host# export PATH=/home/tronlong/test/sdk/SDK_2025.1/device/output/anlogic_dr1m90/buildroot/host/bin:$PATHHost# mkdir install
https://file1.elecfans.com/web3/M00/45/A3/wKgZPGlbeEWAZJbvAACFA_uhan4902.png
图 6
执行如下命令,进入GDB调试工具包目录,配置GDB调试工具。Host# cd gdb-10.2Host# ./configure --target=aarch64-linux-gnu --prefix=/home/tronlong/DR1/gdb-tool/install/备注:--target表示GDB调试工具名称前缀,选择aarch64-linux-gnu ;--prefix表示存放目录,选择新建的install目录。
https://file1.elecfans.com/web3/M00/45/A3/wKgZO2lbeFCADfDYAADU0ez-OZ4675.png
图 7
https://file1.elecfans.com/web3/M00/45/A3/wKgZPGlbeFCAaPqLAADdsJhM2WA198.png
图 8
执行如下命令进行编译。Host# make
https://file1.elecfans.com/web3/M00/45/A3/wKgZO2lbeGOAXo05AAFFac7Wsq8526.png
图 9
https://file1.elecfans.com/web3/M00/45/A3/wKgZPGlbeGOALIffAADbhWsjLfs788.png
图 10
执行如下命令安装GDB调试工具,将会在”install/bin”目录下生成GDB调试工具。Host# make install
https://file1.elecfans.com/web3/M00/45/A4/wKgZPGlbeHOADOd_AAEztAZxxLo213.png
图 11
https://file1.elecfans.com/web3/M00/45/A3/wKgZO2lbeHOAZBd_AAEgUZOH74Y513.png
图 12
https://file1.elecfans.com/web3/M00/45/A4/wKgZPGlbeHSAC_rOAAA4w05g_WA152.png
图 13
2.2演示程序创建与编译在gdb-tool目录下执行如下命令,新建一个GDB调试演示程序。Host# vi test.cHost# cat test.c
https://file1.elecfans.com/web3/M00/45/A3/wKgZO2lbeIyAU9ATAAB4CrkjAYs836.png
图 14
演示程序代码如下:
#includevoid show() { printf("show\n");}
int main(int argc, char *argv[]){ int arr = {1, 2, 3, 4}; int i = 0; for (i = 0; i < 4; i++) { printf("arr[%d]: %d\n", i, arr); } show(); return 0;}
执行如下命令,进行程序编译,编译完成将会生成test可执行程序。备注:编译时需添加-g参数,生成的可执行文件才带有调试信息。Host# aarch64-linux-gnu-gcc -g test.c -o test
https://file1.elecfans.com/web3/M00/45/A3/wKgZO2lbeJaAFdZVAABXNTn-oNg853.png
图 15
评估板与PC机连接至同一个路由器后进行上电,将编译后的可执行文件test拷贝至评估板文件系统任意目录下。Target# ls test
https://file1.elecfans.com/web3/M00/45/A4/wKgZPGlbeJ6AabRDAAAE9Sd8XIs661.png
图 16
2.3调试程序运行执行如下命令,查看虚拟机的IP地址。Host# ifconfig
https://file1.elecfans.com/web3/M00/45/A3/wKgZO2lbeKWAYPq8AAGA-eA9ibQ319.png
图 17
在评估板文件系统test文件所在路径下,执行如下命令运行gdbserver程序,开启监听。备注:192.168.13.81为虚拟机的IP地址;1234为连接的端口号(自行设置);test为将要进行调试的程序。Target# gdbserver 192.168.13.81:1234 test
https://file1.elecfans.com/web3/M00/45/A4/wKgZPGlbeLuACGQFAAASAg8upAo945.png
图 18
在虚拟机test文件所在路径下,执行如下命令使用GDB调试工具进行程序调试。Host# ./install/bin/aarch64-linux-gnu-gdb test
https://file1.elecfans.com/web3/M00/45/A3/wKgZO2lbeMKAJf9-AAD_Keh8s2Q863.png
图 19
执行如下命令,连接评估板。192.168.13.47为评估板的IP地址,请以实际情况为准。(gdb) target remote 192.168.13.47:1234
https://file1.elecfans.com/web3/M00/45/A4/wKgZPGlbeMmAb8KJAACmvT_t9hI228.png
图 20
同时,串口调试终端显示连接成功的相关信息。
https://file1.elecfans.com/web3/M00/45/A3/wKgZO2lbeNCAFUjHAAAWn7y7_R4342.png
图 21
2.4 程序调试本章节主要演示GDB调试的几个常用命令的使用方法。2.4.1 list命令用于列出源码,简写:l。
https://file1.elecfans.com/web3/M00/45/A3/wKgZO2lbeNaADCH8AABiyg4_q08562.png
图 22
2.4.2 break命令用于设置断点,简写:b。分别在main函数和第10行设置断点。
https://file1.elecfans.com/web3/M00/45/A4/wKgZPGlbeN2AEO-sAAA3M-GiKoQ056.png
图 23
2.4.3 info breakpoints命令用于显示断点的状态,简写:info b。
https://file1.elecfans.com/web3/M00/45/A4/wKgZPGlbeRCACgstAABEcRxJziM268.png
图 24
2.4.4 continue命令用于恢复程序执行,简写:c。此命令使GDB恢复程序的执行,直至断点触发或程序结束。
https://file1.elecfans.com/web3/M00/45/A4/wKgZPGlbeRyAOaF_AAB354HpSeM658.png
图 25
以上调试过程在第二个断点中,每输入一次c命令,将会依次打印arr[]数组的元素值,然后程序执行结束。同时,串口调试终端打印相关信息。
https://file1.elecfans.com/web3/M00/45/A4/wKgZO2lberKAJoJOAAAioBOYThc227.png
图 26
2.4.5 print命令用于打印变量或者变量地址,简写:p。设置断点后,可依次打印当前变量i的值。
https://file1.elecfans.com/web3/M00/45/A5/wKgZPGlberuAAY8-AAHHOj5MzCM173.png
图 27
以上调试过程在每处断点中,使用print命令打印变量i的值。同时,串口调试终端打印相关信息。
https://file1.elecfans.com/web3/M00/45/A5/wKgZPGlbesSAQB2mAAAiNHXN9dM500.png
图 28
2.4.6 quit命令退出GDB模式,简写:q。当程序调试完成后,使用quit命令退出GDB调试。
https://file1.elecfans.com/web3/M00/45/A4/wKgZO2lbesuAQ2NSAAA8favW3JQ895.png
图 29
同时,串口调试终端打印相关信息。
https://file1.elecfans.com/web3/M00/45/A4/wKgZO2lbetOABCdKAAAifo_tGeg469.png
图 30
由于篇幅过长等原因,部分内容均不逐一展示,如需获取完整版详细资料,请关注创龙科技微信公众号或官网,或者评论区留言,感谢您的支持!
页:
[1]