最近一直想调试U-BOOT,可是那是在GCC下编译得到的,没法用axd单步调试,百度了很久终于找到了在eclipse下可以调试。今天把它写成心得发上来。本人水平有限,主要参考的是www.aiothome.com 里面的UBOOT专区里面的前辈们的文章,有兴趣的同学可以去那看看。(真心感觉友善的论坛真不错)首先要下载eclipse,最好是带cdt的版本;//然后在线安装Zylin插件;//http://opensource.zylin.com/zylincdt安装好之后,它是自动将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重新编辑 ]