建立jlink+arm-linux-insight+GDB Server调试环境
一、方案
1、 linux gcc编译,windows ads或iar调试。
2、 linux gcc编译,windows keil或realview调试。
3、 windows下ads或keil或iar编译调试。
4、 虚拟机linux gcc编译,然后运行gdb通过串口tcp远程调试win主机的target, 需要win端有一个gdbserver,如jlink gdbserver.
5、 纯linux下gcc编译,gdb+openocd+jlink或wiggler调试。
http://bbs.ednchina.com/BLOG_ARTICLE_280777.HTM
二、调试环境的建立
这里采用第4点的方法来建立调试环境, 作者使用主机windowsXP+虚拟机ubuntu10.4系统。
1、主机windows下安装usb驱动,jlink驱动,里面会自带jlink gdb server。
我使用Setup_JLinkARM_V424f.exe,网上下载,按步骤安装即可,安装后就可以识别到jlink。
(1)、J-Flash ARM V4.24f的使用。
可使用该工具下载bin文件到开发板子。
使用方法参考《jlink-jflash 手册(新).pdf》
(2)、gdb server
在程序-> SEGGER -> J-Flash ARM V4.24f -> j-Link GDB Server 打开该工具,如开发板子链接成功,则如下显示:
留意:1、Localhost only勾上后只能本机调试,对应ip为127.0.0.1。如果在虚拟机arm-linux-insight连接GDB Server,则不需要勾选该项;2、Little endian需要和编译器中设置的对应,不然无法断点和单步调试。
2、虚拟机ubuntu下安装arm-linux-gdb
(1)、下载gdb源码,
源码地址:http://www.gnu.org/software/gdb/download/
最新版本为gdb-6.5.tar.bz2。下载到某个目录,笔者下载到/home/share下。但要注意,gdb的版本需要和croostool 相匹配。
(2)、下载完后,进入/home/share目录,配置编译步骤如下:
#tar jxvf gdb-6.5-tar-bz2
#cd gdb-6.5
#./configure --target=arm-linux --prefix=/usr/local/arm-gdb –v
(--target配置gdb的目标平台,--prefix配置安装路径,当然其他路径也可以, .跟下面配置一致即可,须在环境变量中声明,启动arm-linux-gdb需要,可更改/etc/profile或~/.bash_profile或~/.bashrc,添加export PATH=$PATH:/usr/local/arm-gdb/bin,这样可以找到路径).
#make (这里的时候configure: error: no termcap library found
make[1]: *** [configure-gdb] 错误 1
解决方法:sudo apt-get install libncurses5-dev
安装完后,在make就OK了!)
#make install
3、安装insight 6.8.1
(1)、安装较低版本的gcc
#apt-get install gcc-4.2
#ln -s gcc-4.2 gcc
#gcc –v
(2)、下载insight源码,下载路径:ftp://sourceware.org/pub/insight/releases
(3)、安装arm-linux-insight
1) 安装X界面开发库 sudo apt-get install libx11-dev (包启在libgd2-xpm-dev)
2) 安装安装termcap库(gdb需要)sudo apt-get install libncurses5-dev
3) 修改端口
insight编译之前,要修改下源码,就是修改默认的端口,否则会是1000不能改的,因为我用的是jlink,其端口2331是不能修改的,所以只有修改gdb的端口了,找到/gdb/gdbtk/libaray/targetselection.itb ,查找1000,将其修改为2331(jlink端口)
4) ./configure --target=arm-linux --enable-sim --prefix=/usr/local/insight
5) make ; make install
6) 最后添加其路径到系统中去,修改/etc/environment 添加/usr/local/insight/bin. 更新下此文件 source /etc/environment
(4)、arm-linux-insight的使用
连接好硬件: jlink连接好开发板和pc,
打开windows端的jlinks gdb server ,如果硬件连接成功,jlink和Tagget 后面会变绿色, waiting for connection是红色的
linux端打开arm-linux-insight ,选择file->open,选择打开你刚刚编译好的一个elf格式的中间文件,选择file->targetsetting
Target:Remote/TCP
Hostname:192.168.1.172
Port:2331
注意:这里的hostname指的是你的windows的ip,windows的ip和虚拟机的ip要在同一个网段,主机与虚拟机的连接采用bridged,
而且要保证主机与虚拟机可以正常通讯。
设置好之后点击Run->connect to target,连接成功的话gdbserver的GDB 后面会显示Connected to 192.168.xxx.xxx,这个是你虚拟机的ip,到这里就ok了.
三、问题集锦:
1、使用insight连接不到GDB Server的原因如下:
将Localhost only的勾去掉即可,当选择该项时,表示只能本地主机连接,使用127.0.0.1的ip地址,虚拟机linuxl连接不到。
2、不能断点调试的原因:
端对齐没选择正确导致,需要选择Little endian。
另外,在虚拟机insight需要先把调试的elf 选择Run->download. 然后才可以设置断点,进行调试等动作。