设为首页 加入收藏

TOP

Linux下的嵌入式目标程序的仿真调试方法
2014-11-24 01:23:00 来源: 作者: 【 】 浏览:2
Tags:Linux 嵌入式 目标 程序 仿真 调试 方法

一、实验目的


1.学习在Linux环境下,目标应用程序仿真调试环境的安装方法;


2.学会在Linux环境下,单步调试运行arm板上的目标程序。


二、实验内容


1.下载源码包gdb-6.6.tar.gz,解压后编译链接,安装


2.通过一个简单的应用程序hello,学会利用gdbserver在主机上通过网络在对arm板上运行的程序进行调试。


三、实验设备


1.一台装有Linux系统的PC机


2.优龙ARM9实验箱


四、实验原理


嵌入式Linux的GDB调试环境由Host端(PC机)和Target端(ARM实验板)两部分组成,Host端使用arm-Linux-gdb调试工具,而Target端需要运行gdbserver,两者之间可通过串口或网口连接,把ARM应用程序在Target端的执行情况返回Host。调试跟踪命令从Host端中的arm-Linux-gdb中发出。


五、实验步骤


1.Host端(PC机)的arm-gdb调试器安装


(1)下载arm-gdb源码包。启动浏览器输入ftp://202.193.9.3,进incoming/embeded_system_upload/experiment文件夹,找到arm-g


源码包gdb-6.6.tar.gz,将其下载到PC机的/usr/local/arm目录下。


(2)在Host端(PC机)建立两个安装目录,启动Linx终端,输如下命令:


#mkdir/usr/local/arm/gdb/arm-gdb


#mkdir/usr/local/arm/gdb/gdbserver


(3)启动Linux终端,输入如下命令


#cd/usr/local/arm进入源码包所在的目录


#tar zxvf gdb-6.6.tar.gz解压源码包到当前目录下


#cd gdb-6.6进入解压后的目录


#ls查看源码包的内容


为了检查系统环境是否满足编译要求,设置编译参数,生成Makefile文件。这需要执行configure命令,并指定如下参数:


#./configure--host=i386-Linux--target=arm-Linux


--prefix=/usr/local/arm/gdb/arm-gdb


--host,指定gdb/gdbserver本身的运行平台,


--target,指定gdb/gdbserver调试的代码所运行的平台,


#make编译链接


#make install安装


至此,Host端的arm-Linux-gdb调试器安装结束,


/usr/local/arm/gdb/armgdb目录下能够看到如下子目录:bininfo,lib,man,share等。


2.Target端的远程调试器gdbserver的安装


(1)在Host端的Linux终端中输入以下命令


#cd/usr/local/gdb-6.6/gdb/gdbserver进入gdbserver的目录


#./configure--host=arm-Linux--target=arm-Linux


--prefix=/usr/local/arm/gdb/gdbserver


(由于gdbserver是运行在arm目标板上,所以--host和--arget参数均选为arm-Linux)


4


#make


#make install


(2)检查Host端的/usr/local/arm/gdb/gdbserver目录,在该目录的bin子目录下应能找到可执行文件arm-Linux-gdbserver。在Host端的Linux终端中输入如下命令:


#cd/usr/local/arm/gdb/gdbserver/bin


#ls


#./arm-Linux-strip arm-Linux-gdbserve(去除文件中的调试信息)


至此Host端和Target端的gdb调试器已安装完成。3.远程调试步聚(1)编写被调试的应用程序hello.c,并使用交叉编译器进行编译,选择参数-g,在目标文件中加入调试信息。启动Linux终端,进行hello.c程序所在的目录,输入如下命令进行编译:


#./arm-Linux-gcc-g hello.c–o hello


(2)为了能够在ARM实验箱上运行arm-Linux-gdbserver,可以采用如下两种方法:①可以将该调试器加入目标板上的文件系统中,然后启动目标板上的Linux操作系统,再执行arm-Linux-gdbserver。②在Host端开启nfs服务器,将Host端建立一个共享目录,将arm-Linux-gdbserver拷贝到该共享目录中。启动目标板上的Linux操作系统,然后将Host端的上共享目录挂载到目标板上的/tmp目录下。


这里将Host端的根目录下的/s3c2410子目录挂载到目标板上的/tmp目录,在Host端的Linux终端中输入如下命令:


#cp/usr/local/arm/gdb/gdbserver/bin/arm-Linux-gdbserver/s3c2410/


#vi/etc/exports


在vi中输入如下内容:/s3c2410 192.168.*.*(rw),并保存退出。


#exportfs-rv//通知系统共享目录改变了,每次修改目录后均需执行此命令。


#/etc/rc.d/init.d/nfs start//在Host端启动NFS报务


(3)在pc机启动minicom输入以下命令进行挂载


#mount 192.168.3.x:/s3c2410/tmp//挂载


#cd/tmp


#ls


(4)在Host端,将被调试的程序源文件与编译好的目标文件拷贝到共享目录/s3c2410g下。即将hello.c文件及其目标文件hello拷贝到目录/s3c2410下。则在minicom中的/tmp目录下面输入以下命令:


#./arm-Linux-gdbserver 192.168.2.*:2345 hello


提示:其中192.168.2.*是Host端(PC机)的IP,2345是gdbserve开启的端口号并监听该端口,可以是比1024大的任意端口(注意端口冲突,可能造成无法通讯,尽量选择大一点的端口号,有利于避免冲突)


(5)在Host端,启动另一个Linux终端,进入/usr/local/arm/gdb/arm-gdb/bin目录,并将被调试程序hello复制到该目录中,输入如下命令:


#cd/usr/local/arm/gdb/arm-gdb/bin


#./arm-Linux-gdb hello


(gdb)target remote 192.168.2.*:2345(其中192.168.2.*为ARM板的IP地址,2345是gdbserver在ARM板上开启的端口)下面在gdb下输入命令开始调试


a.输入list打印出要调试的程序


b.输入b 5,在第5行设置一个断点


c.输入c命令,程序开始执行(不能用r命令)


d.输入next,程序开始单步运行


e.再输入next,可以运行下一句代码


因为这里是输出函数,所以在minimcom的终端可以看见有输出信息到这里,基本的单步调试过程已经结束。如果需要用到别的命令,例如察看变量,在gdb里面打入help all,即可得到所有命令的帮助。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇基于JVM的语言正在开始流行 下一篇深入Java对象及元素的存储区域

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: