专栏中心

EEPW首页 > 专栏 > 学习4412开发板gdb和gdbserver的调试

学习4412开发板gdb和gdbserver的调试

发布人:daybydayi 时间:2019-12-10 来源:工程师 发布文章

因为有很多的小伙伴是从单片机转过来的,用惯了单片机上的JLINK调试程序,换到Linux上非常的不习惯。确实,如果能设置断点,单步调试,查看变量,那确实是太爽了,那么在我们的Linux可以做到吗,答案当然是可以的。      

      在之前的文章中,对gdb调试做过一期简单的介绍番外篇|使用gdb对程序进行调试,但是之前的文章我们是在ubuntu上对应用程序进行的调试,不是在ARM板上进行的调试,相对于其他的软件开发,嵌入式软件的调试手段比较有限,我相信一定有很多人的调试手段依然是使用最原始的打印的办法。这一期我们就介绍一种可以在ARM板上调试应用代码的办法。

基本思路

      采用这种的方式进行远程调试,目标系统必须包括gdbserver程序,宿主机也必须安装gdb程序。一般linux发行版中都有一个可以运行的gdb,但我们不能直接使用该发行版中的gdb来做远程调试,而要获取gdb的源代码包,针对arm平台作一个简单配置,重新编译得到相应gdb,如armv4。

     接下来,大家跟着法师的思路,一起来搭建这个调试环境。在任意ARM板,都可以搭建。

iTOP4412搭建环境

1.jpg

搭建步骤

第一步:下载gdb压缩包

   下载地址:http://ftp.gnu.org/gnu/gdb/  这里我们下载的是gdb-7.8.1.tar.gz这个版本。

第二步:编译并安装gdb

     把gdb压缩包放到ubuntu之后,我们进入到解压生成的文件,如下图示:

2.jpg

生成Makefile,输入以下命令:target为目标平台,prefix为安装路径。

/configure -target=arm-none-linux-gnueabi --prefix=/home/arm-linux-gdb/arm-linux-gdb

如下图所示:

3.jpg

编译gdb,输入make,编译成功如下图所示:

4.jpg

 安装gdb,输入命令make install,一会我们在ubuntu上启动的就是这个gdb,安装成功如下图所示:

5.jpg

进入gdb源码下的gdb/gdbserver目录,如下图所示:

6.jpg

生成Makefile,输入以下命令:target为目标平台,prefix为安装路径。

./configure -target=arm-none-linux-gnueabi --prefix=/home/arm-linux-gdb/arm-linux-gdbserver

7.jpg

 然后执行make命令,注意,这里交叉编译器一定要写绝对路径。如下图所示:

make CC=/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-gcc
编译过程中会出现以下错误:

8.jpg

我们打开当前路径下的config.h文件,如下图所示:

9.jpg

注释掉196行左右的HAVE_SYS_REG_H这个宏定义,如下图所示:

10.jpg

注释掉116行#include<sys/reg.h>头文件,如下图所示:

11.jpg

保存退出,然后再次编译。编译成功如下图所示:

12.jpg

编译完成后,使用make install 命令安装,安装完成后会在安装路径生成一个文件夹,如下图所示:

13.jpg

第三步,在ARM板上搭建远程调试环境

     把gdb/gdbserver下的gdbserver 拷贝到开发板的bin文件夹下。

14.jpg

拷贝完成如下图所示:

15.jpg

测试

测试代码:

16.jpg

编译测试程序,编译的时候要加-g参数,编译完成之后,我们把测试代码通过NFS放在开发板上,然后在测试代码所在的路径下输入以下命令启动服务器,其中192.168.2.230为ubuntu的IP,5000为端口号。

gdbserver 192.168.2.230:5000 ./test

启动成功如下图所示:

17.jpg

 在测试程序test所在目录启动ubuntu上的gdb,这里启动的gdb为我们刚刚安装的gdb,我们输入以下命令:

/home/arm-linux-gdb/arm-linux-gdb/bin/arm-none-linux-gnueabi-gdb test

启动成功后如下图所示:

18.jpg

连接开发板,输入以下命令,192.168.2.23为开发板的IP,5000为端口号。

target remote 192.168.2.23:5000

连接成功后开发板会打印以下信息,如下图所示:

19.jpg

接下来,我们就可以在ubuntu上使用命令来设置断点,单步调试开发板上的程序了

20.jpg


专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

Proximus Global推出全新AI驱动的垃圾短信与欺诈防护解决方案365guard

模拟电子技术 第二十讲

视频 2010-01-20

Bourns推出具备高可靠性全新多层共模滤波器采用复合共烧材料单体结构

安森美AI数据中心系统方案指南上线

艾迈斯欧司朗IR:6树立红外技术新标杆

模拟电子技术 第十八讲

视频 2010-01-20

模拟电子技术 第十九讲

视频 2010-01-20

IAR平台全面升级,提升瑞萨MCU架构的嵌入式软件开发效率

嵌入式系统 2025-06-25

拓展加速度测量范围,BHI385为下一代运动穿戴设备解锁高冲击动作追踪新体验

英飞凌推出XENSIV™ TLE4802SC16-S0000

STARplug TEA152X高效、低功耗电源管理器件 (英)

硅基显示:下一代技术新战场

模拟电子技术 第二十二讲

视频 2010-01-20

Bourns全新扩展POWrFuse™系列,具备更高电压额定值、更宽电流范围与多样封装选项

STARplug design wizard V1.0 (for Wi...

SPX2975 400mA低压差调节器(英)

罗姆与芯驰科技联合开发出车载SoC X9SP参考设计

模拟电子技术 第二十一讲

视频 2010-01-20
更多 培训课堂
更多 焦点
更多 视频

技术专区