arm调试java_使用J-Link GDB Server + Eclipse CDT进行ARM程序调试
之前我预告过这篇文章,这段时间以来,我工作一直比较忙,而且在装修我的小破窝,生活的压力让我把业余的时间都贡献给奥山战场了,我的小牧师,杀人很慢,被杀倒是挺速度的,呵呵;想当年上学的时候,我也是副本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)
arm调试java_使用J-Link GDB Server + Eclipse CDT进行ARM程序调试相关推荐
- gdb linux下载,GDB 7.11 发布下载,程序调试利器
GDB 7.11 发布下载了,该版本值得关注的改进记录包括: * Per-inferior thread numbers (thread numbers are now per inferior in ...
- stm32cubeIDE STLINK连接SWD接口调试,启动GDB server失败的处理
stm32cubeIDE STLINK连接SWD接口调试,启动GDB server失败的处理 报警提示 Failed to bind to port 61234, error code -1: No ...
- matlab debug出现k,MATLAB下的程序调试
文章主要内容摘自<MATLAB 7.0从入门到精通>,求是科技编著. 程序错误一般分为两种:语法错误和逻辑错误.对于语法错误通常MATLAB会报错,并指出错误所在位置方便用户纠正.对于逻辑 ...
- Python之程序调试
Python之程序调试 一.前言 二.使用自动的IDLE进行程序调试 三.使用assert 语句调试程序 一.前言 在程序开发过程中,免不了会出现一些错误,有语法方面的,也有逻辑方面的.对于语法方 ...
- linux 编译 freescale arm 的gdb server
一.gdb server 的生成 1.官网下载 gdb-7.8.tar.gz http://ftp.gnu.org/gnu/gdb 2.解压 $ tar zxf gdb-7.8.tar.gz 参考 g ...
- gdb的简单使用和gdb+gdbserver方式进行ARM程序调试
gdb的简单使用 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB ...
- 用GDB Server进行远程调试
某些时候由于模拟环境的限制,调试必须要在目标板上进行.由于嵌入式系统资源比较有限,一般不能在目标板上直接构建GDB的调试环境,这时我们通常采用gdb+gdbserver的远程调试方法:gdbserve ...
- CLion配置STM32开发环境(JLink GDB Server)
Hi,我是嘉赫. 终于忍受不了Keil了,需要换一个Windows和Mac通用的STM32开发环境. 其实早就受不了Keil了,虽然各路大佬都有很多其他IDE的环境配置,但是总觉得差强人意.现在终于发 ...
- 软件调试的艺术笔记:GDB
很久之前,在https://blog.csdn.net/fengbingchun/article/details/41413381中简单整理过gdb中常用的一些命令,不齐全,这里按照<软件调试的 ...
最新文章
- 某程序员炫耀:因长得太帅被女领导追求,三年就提拔到总监!程序员搞技术没用,健身护肤才是王道!...
- 鱼油账号记录程序 - 零基础入门学习Delphi38
- mysql 存储过程 嵌套if_mysql存储过程if嵌套if的写法
- AC日记——[SDOI2010]大陆争霸 洛谷 P3690
- Kubernetes二进制集群部署+Web管理界面+kubectl 命令管理+YAML文件详解(集合)
- 如何用MaskBlt实现两个位图的合并,从而实现背景透明
- SCVMM2012 SP1 之P2V转换
- C++之String的find方法,查找一个字符串在另一个字符串的什么位置;leveldb字符串转数字解析办法...
- Exchange 2010与Exchange Online混合部署PART 1:添加域名
- @font-face 字体图标的应用
- 问题:脚本之家的几个页面
- SAP案例教程FIAA固定资产后台配置
- TypeScript瞎看看
- JS计算两个数组的交集、差集、并集、补集(多种实现方式)
- Black Hat USA 2011: Alexander Polyakov - CTO - ERPScan
- mpeg 音频格式科普
- python开发工程师需要掌握什么技能 知乎_全栈工程师自述:我的编程能力为什么突飞猛进?|知乎4千4百赞...
- PAKDD 2019 AutoML 挑战赛圆满落幕,中国队伍包揽前三...
- 计算机原理及应用自测题4,自测题-微计算机原理-电子发烧友网站
- VSLAM与VIO的3D建图,重定位与世界观综述