arm调试java_使用J-Link GDB Server + Eclipse CDT进行ARM程序调试

本文介绍了如何利用J-Link GDB Server和Eclipse CDT进行ARM程序的调试,特别是针对AT91SAM9263 CPU。通过ZylinCDT插件,可以方便地设置Initiate Commands和Run Commands,实现对PLL和SDRAM的初始化,以及u-boot的加载。Eclipse结合J-Link提供了便捷的交叉开发环境,虽然在代码编辑功能上不如Source Insight,但对于简单的项目是个不错的选择。
摘要由CSDN通过智能技术生成

之前我预告过这篇文章,这段时间以来,我工作一直比较忙,而且在装修我的小破窝,生活的压力让我把业余的时间都贡献给奥山战场了,我的小牧师,杀人很慢,被杀倒是挺速度的,呵呵;想当年上学的时候,我也是副本RL,逃课带MC;现在工作了就只能沦为战场混荣誉的了……平时没有太多时间,职业不开UT跟混收麦子;周末开UT打各种麦子和各种国家队。

在开始前另外提一件事情,我之前说想找个便宜的PowerPC调试解决方案,现在其实我也算找到了——还是Macraigor的OCDRemote,用起来和OpenOCD差不多,具体用法和支持的器件请看Macraigor的官网http://www.macraigor.com/。不过,“0f 84 f0 fc ff ff”->“0f 85 f0 fc ff ff”;我所提供的信息来自互联网,仅可以用于个人学习和研究,对于产生的后果,我不负任何责任;如果你喜欢这个软件,请联系Macraigor的销售,购买他们的调试硬件。但OCDRemote + Wiggler目前并不支持e300、e500内核,我要用的MPC8313还是调试不了……

首先明确一下,为什么我要抛开IAR、ADS、Keil这样的IDE选择GNU阵营的东西——这并不是因为GNU是自由软件,而是因为在一个CPU刚上手的时候,往往还是需要别人的代码来参考的,u-boot里面的样例很多,但是移植到IDE环境下开发却很困难。

之前这篇文章里http://xianzilu.spaces.live.com/blog/cns!4201FDC93932DDAF!485.entry,我介绍过J-Link是一个非常不错的ARM调试工具,它的软件包里带有GDB Server。J-Link在JTAG频率为8MHz时,ARM926EJ-S可以达到300~400kB/s的下载速度。Eclipse是一个免费的JAVA开发调试IDE,因为它很受欢迎,所以Eclipse也增加了对C/C++开发的支持;过去是需要下载Eclipse,然后再下载C/C++开发插件CDT,现在官网已经有直接打包好的Eclipse + CDT下载了,地址是http://www.eclipse.org/downloads/,无论你在Windows还是在Linux下使用Eclipse,都需要安装Java Runtime Environment。但我们进行的是交叉开发,CDT里头自带的Debug Configuration无法完成这种开发,需要安装一个插件。具体步骤:首先确认你的操作系统可以上网(实际的、虚拟机里的都一样);然后在Eclipse的菜单里选择Help->Software Updates;选择Available Software选项卡,点Add Site按钮;输入地址http://www.zylin.com/zylincdt,列表里就多了一项;刷新之后点上面的Install按钮安装。

ZylinCDT用起来很方便,只需要在Debug Configuration里面配置Commands选项卡,填入Initiate Commands和Run Commands;其他和Eclipse自己的Debug Configuration差不多。事实上,ZylinCDT就是用这些填入的内容取代了正常的GDB初始化命令,给出我的Initiate Commands给大家参考(Run Commands为空):

target remote 192.168.5.133:2331

# Disable watchdog

monitor memU32 0xfffffd44 = 0x00008000

# PD6 - EBI0_NCS4, PD11 - EBI0_NCS2, PD15 - EBIO_CS3/NANDCS, PD16~PD31 - EBI0_D16~EBI0_D31

monitor memU32 0xfffff844 = 0xffff8840

monitor memU32 0xfffff864 = 0xffff8840

monitor memU32 0xfffff870 = 0xffff8840

monitor memU32 0xfffff804 = 0xffff8840

# Configure the EBI0 Slave Slot Cycle to 64

monitor memU32 0xffffec50 = 0x00000040

# Initialize the matrix, VDDIOMSEL = 1 -> Memories are 3.3V powered

monitor memU32 0xffffed20 = 0x0001000a

# Configure SDRAM Configuration Register

monitor memU32 0xffffe208 = 0x85227259

monitor sleep 10

# Perform Command - Precharge All

monitor memU32 0xffffe200 = 0x00000002

monitor memU32 0x20000000 = 0x00000000

monitor sleep 20

# Perform Command - Refresh for 8 times

monitor memU32 0xffffe200 = 0x00000004

monitor memU32 0x20000004 = 0x00000001

monitor memU32 0xffffe200 = 0x00000004

monitor memU32 0x20000008 = 0x00000002

monitor memU32 0xffffe200 = 0x00000004

monitor memU32 0x2000000c = 0x00000003

monitor memU32 0xffffe200 = 0x00000004

monitor memU32 0x20000010 = 0x00000004

monitor memU32 0xffffe200 = 0x00000004

monitor memU32 0x20000014 = 0x00000005

monitor memU32 0xffffe200 = 0x00000004

monitor memU32 0x20000018 = 0x00000006

monitor memU32 0xffffe200 = 0x00000004

monitor memU32 0x2000001c = 0x00000007

monitor memU32 0xffffe200 = 0x00000004

monitor memU32 0x20000020 = 0x00000008

# Perform Command - Load Mode Register

monitor memU32 0xffffe200 = 0x00000003

monitor memU32 0x20000024 = 0xcafedede

# Set Refresh Timer

monitor memU32 0xffffe204 = 0x000002bc

# Perform Command - Set Normal mode

monitor memU32 0xffffe200 = 0x00000000

monitor memU32 0x20000000 = 0x00000000

file /home/lxz/share/u-boot-1.3.4/u-boot

load

我调试的目标CPU是AT91SAM9263,通过以上的初始化命令,可以实现PLL、SDRAM的初始化,并将u-boot带码加载到内存中。J-Link的monitor命令可以看J-Link安装之后的文档J-Link GDB server user guide的3.4节Supported remote commands。

今天说的这些事情没有什么难度,用Eclipse + J-Link调试的关键就是要用ZylinCDT这样的插件,关于ZylinCDT的信息可以看它的官网http://www.zylin.com/,解释的比我说的详细多了。Eclipse的教学文档网络上也多得很,Eclipse本身界面就很友好,不用什么教学,自己摸索一会儿也就会了。我就总结下:Eclipse可以自动创建Makefile,虽然使用的是GCC工具链,却有像ADS、Codewarrior这样IDE环境的便利;对于U-boot、Linux内核这样的有现成Makefile的程序,Eclipse能将它们导入,一样能调试。但是,和Source Insight强大的自动完成功能相比,Eclipse逊色太多了。我的开发解决方案是:Linux虚拟机下的SMB共享代码 + Windows下的Source Insight编辑 + Linux虚拟机下的arm-linux-gcc编译 + Windows下的J-Link GDB Server + Linux虚拟机下的Eclipse CDT & ZylinCDT;呵呵,好绕啊;但如果代码不复杂,就直接用Eclipse编辑也挺好。

(ee_site)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值