之前我预告过这篇文章,这段时间以来,我工作一直比较忙,而且在装修我的小破窝,生活的压力让我把业余的时间都贡献给奥山战场了,我的小牧师,杀人很慢,被杀倒是挺速度的,呵呵;想当年上学的时候,我也是副本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程序调试相关推荐

  1. gdb linux下载,GDB 7.11 发布下载,程序调试利器

    GDB 7.11 发布下载了,该版本值得关注的改进记录包括: * Per-inferior thread numbers (thread numbers are now per inferior in ...

  2. stm32cubeIDE STLINK连接SWD接口调试,启动GDB server失败的处理

    stm32cubeIDE STLINK连接SWD接口调试,启动GDB server失败的处理 报警提示 Failed to bind to port 61234, error code -1: No ...

  3. matlab debug出现k,MATLAB下的程序调试

    文章主要内容摘自<MATLAB 7.0从入门到精通>,求是科技编著. 程序错误一般分为两种:语法错误和逻辑错误.对于语法错误通常MATLAB会报错,并指出错误所在位置方便用户纠正.对于逻辑 ...

  4. Python之程序调试

    Python之程序调试 一.前言 二.使用自动的IDLE进行程序调试 三.使用assert 语句调试程序 一.前言   在程序开发过程中,免不了会出现一些错误,有语法方面的,也有逻辑方面的.对于语法方 ...

  5. 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 ...

  6. gdb的简单使用和gdb+gdbserver方式进行ARM程序调试

    gdb的简单使用 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB ...

  7. 用GDB Server进行远程调试

    某些时候由于模拟环境的限制,调试必须要在目标板上进行.由于嵌入式系统资源比较有限,一般不能在目标板上直接构建GDB的调试环境,这时我们通常采用gdb+gdbserver的远程调试方法:gdbserve ...

  8. CLion配置STM32开发环境(JLink GDB Server)

    Hi,我是嘉赫. 终于忍受不了Keil了,需要换一个Windows和Mac通用的STM32开发环境. 其实早就受不了Keil了,虽然各路大佬都有很多其他IDE的环境配置,但是总觉得差强人意.现在终于发 ...

  9. 软件调试的艺术笔记:GDB

    很久之前,在https://blog.csdn.net/fengbingchun/article/details/41413381中简单整理过gdb中常用的一些命令,不齐全,这里按照<软件调试的 ...

最新文章

  1. 某程序员炫耀:因长得太帅被女领导追求,三年就提拔到总监!程序员搞技术没用,健身护肤才是王道!...
  2. 鱼油账号记录程序 - 零基础入门学习Delphi38
  3. mysql 存储过程 嵌套if_mysql存储过程if嵌套if的写法
  4. AC日记——[SDOI2010]大陆争霸 洛谷 P3690
  5. Kubernetes二进制集群部署+Web管理界面+kubectl 命令管理+YAML文件详解(集合)
  6. 如何用MaskBlt实现两个位图的合并,从而实现背景透明
  7. SCVMM2012 SP1 之P2V转换
  8. C++之String的find方法,查找一个字符串在另一个字符串的什么位置;leveldb字符串转数字解析办法...
  9. Exchange 2010与Exchange Online混合部署PART 1:添加域名
  10. @font-face 字体图标的应用
  11. 问题:脚本之家的几个页面
  12. SAP案例教程FIAA固定资产后台配置
  13. TypeScript瞎看看
  14. JS计算两个数组的交集、差集、并集、补集(多种实现方式)
  15. Black Hat USA 2011: Alexander Polyakov - CTO - ERPScan
  16. mpeg 音频格式科普
  17. python开发工程师需要掌握什么技能 知乎_全栈工程师自述:我的编程能力为什么突飞猛进?|知乎4千4百赞...
  18. PAKDD 2019 AutoML 挑战赛圆满落幕,中国队伍包揽前三...
  19. 计算机原理及应用自测题4,自测题-微计算机原理-电子发烧友网站
  20. VSLAM与VIO的3D建图,重定位与世界观综述

热门文章

  1. 哈尔滨师范大学计算机科学与技术专业怎么样,哈尔滨师范大学怎么样好不好(全国排名-王牌专业-网友评价)...
  2. 数值分析实验 实验1-1 拉格朗日插值公式 python3实现
  3. ug五轴编程视频教程
  4. 生物信息分析全景介绍
  5. 一年节气查询阳历日期与节气名称
  6. java用户头像保存_微信授权后获取用户头像保存到服务器
  7. [杂]图多杀猫的英语说法
  8. 蛋糕店会员卡充值方案有哪些?
  9. 决策树及集成模型 python实现
  10. 迷你歌词(MiniLyrics)破解小记