主题 : 用eclipse和JLINK调试gcc下的程序 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 62388
精华: 0
发帖: 16
金钱: 80 两
威望: 16 点
贡献值: 0 点
综合积分: 32 分
注册时间: 2012-01-28
最后登录: 2013-07-14
楼主  发表于: 2012-02-19 21:11

 用eclipse和JLINK调试gcc下的程序

最近一直想调试U-BOOT,可是那是在GCC下编译得到的,没法用axd单步调试,百度了很久终于找到了在eclipse下可以调试。今天把它写成心得发上来。
本人水平有限,主要参考的是www.aiothome.com  里面的UBOOT专区里面的前辈们的文章,有兴趣的同学可以去那看看。(真心感觉友善的论坛真不错)
首先要下载eclipse,最好是带cdt的版本;//
然后在线安装Zylin插件;//http://opensource.zylin.com/zylincdt
然后安装 yagarto-bu-2.20.1_gcc-4.5.1-c-gdb-7.1_eabi    http://www.yagarto.de/#download
安装好之后,它是自动将C:\Program Files\yagarto\bin添加到环境变量中的,所以可以直接使用下面的工具

 
 
环境搭建好之后就开始调试
 
打开eclipse新建一个c工程,命名为beep,(我写的一个蜂鸣器程序),选择Makefile Project中的Empty Project ,左边选择Other toolchain,点击finish

然后import 选项中的FileSystem,把你写的*.S *.c *.lds makefile等一套文件都添加进来

 

然后将makefile中的arm-linux-gcc改成arm-none-eabi-gcc,其余的几个LD OBJDUMP 等都改成arm-none-eabi-,因为环境变量里是arm-none-eabi-的了。在gcc的里面要加上-g,不然会can’t find the soursefile的。

然后编译一下,就可以看到我们熟悉可爱的*.bin elf格式的start文件了。注意,这里的lds文件我写的是0x50008000,开始的,好像在0x00000000中调试不起来,(只能在内存中调试,求高手解决这个问题)。
然后点击Debug选项中的Debug Configurations选项进行仿真,前提是你要打开J-Link GDB Server。(推荐使用jlink v4.10i版本)

选择Zylin Native来仿真,在main选项卡里设置成如下图所示

Debugger选向卡里设置成如下图所示,(前提是你要有main函数)
command选项卡里‘Initialize’中填入如下内容:
target remote localhost:2331
monitor reset 0                
monitor halt
load
然后按debug就可以仿真了。这时就可以单步仿真了。
当然你按照我说的一步步做,如果一次成功,那么恭喜你,如果有问题,也不要慌,慢慢找原因,因为这也是一种学习的过程。我写这个文章的时候调试UBOOT还没有成功呢,继续找原因,有高手成功的请不吝赐教。(因为uboot好像不能通过此法来编译,一编译错误一大堆,只能将gcc下编译好的elf格式的u-boot拿过来直接调试)

原来的word和一个简单的测试程序在file.rar中
[ 此帖被wh_1988在2012-02-19 22:35重新编辑 ]
附件设置隐藏,需要回复后才能看到
虚心使人进步
sui
级别: 侠客
UID: 14645
精华: 0
发帖: 78
金钱: 395 两
威望: 79 点
贡献值: 0 点
综合积分: 156 分
注册时间: 2010-02-18
最后登录: 2019-01-05
1楼  发表于: 2013-01-27 01:05

 回 楼主(wh_1988) 的帖子