打印

J-LINK调试710

[复制链接]
3695|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
3B1105|  楼主 | 2010-8-14 22:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在使用J-LINK调试710的时候,连接正常,但设置完断点,一运行continue指令的时候,便出现一个Starting target CPU....就死在这了,找了很久,找解决得了,按照万工的提示,改了初始化地址,可还是不行。
请高手帮我解答下,指导下主要是什么原因,初始化的地址我也按bootloader的init.s里面的值进行改了,sp和pc 我用AXD连接的时候,看到的寄存器值 SP和PC都是0x0,不知道还有什么地方 有问题?

下面是我的调试信息:
Connected to 192.168.1.51
Reading register (PC = 0x00000000)
Read 4 bytes @ address 0x00000000 (Data = 0xE59FF018)
JTAG speed set to 30 kHz
Target endianess set to "little endian"
Resetting target
/*下面初始化值都是按照bootloader里面的值的*/
Writing register (CPSR = 0x000000D3)     /*禁止全局中断*/
Writing 0x000530C0 @ address 0xFFF01000       /*EBICON寄存器*/
Writing 0xFC040080 @ address 0xFFF01004   /*ROM(FLASH)*/
Writing 0x000090E4 @ address 0xFFF01008   /*SDCONF0:SDRAM(16 M)*/
Writing 0x020090E4 @ address 0xFFF0100C  /*SDCONF1*/
Writing 0x0000015B @ address 0xFFF01010  /*SDTIME0*/
Writing 0x0000015B @ address 0xFFF01014  /*SDTIME1*/
Writing register (R13_USR = 0xE59FF018)
Writing register (R15 (PC) = 0xE59FF018)
Setting breakpoint @ address 0x000000A4, Size = 4, BPHandle = 0x0002
Starting target CPU.../*死在这里了....*/


下面是我的 .gdbinit文件
#
#J-LINK GDB SERVER initialization
#
#This connects to a GDB Server listening
#for commands on remote host at tcp port 2331
target remote 192.168.1.103:2331
#Set JTAG speed to 30kHz
monitor speed 30
#Set GDBServer to little endian
monitor endian little
#Reset the chip to get to a known state
monitor reset

#
#CPU core initialization (to be done by user)
#
#Set the processor mode
monitor reg cpsr = 0xd3
#Initialize the CPU register including EBI,SDRAM,ROM and so on.
monitor memU32 0xFFF01000 = 0x000530C0
monitor memU32 0xFFF01004 = 0xFE040080
monitor memU32 0xFFF01008 = 0x000090E4
monitor memU32 0xFFF0100C = 0x020090E4
monitor memU32 0xFFF01010 = 0x0000015B
monitor memU32 0xFFF01014 = 0x0000015B

#Set auto JTAG speed
#monitor speed auto
#Setup GDB FOR FASTER DOWNLOADS
set remote memory-write-packet-size 1024
set remote memory-write-packet-size fixed
#Load the program executable called "*.gdb"
#load sample.gdb

#monitor flash download = 1
#
#Initializing PC and stack pointer
#RAM_START_ADDR is at 0x0
#
monitor reg r13 = (0x0)
monitor reg pc = (0x0)
#monitor go

相关帖子

沙发
6019实验室| | 2010-8-14 22:24 | 只看该作者
30KHz?

夸张得多了点吧?
赶快改成8000Hz试试!

使用特权

评论回复
板凳
huzixian| | 2010-8-15 11:49 | 只看该作者
monitor reg r13 = (0x0)
monitor reg pc = (0x0)
这个对不对,是不是应该改成0x8000之类的??我也没用过这个

使用特权

评论回复
地板
3B1105|  楼主 | 2010-8-15 11:55 | 只看该作者
2# 6019实验室
我用5K试过一样的问题,但没有试过8K的,明天再试一下。
我的.gdbinit对不对?还有出现starting target CPU...这是什么问题啊?

使用特权

评论回复
5
3B1105|  楼主 | 2010-8-15 11:56 | 只看该作者
3# huzixian
因为我想是这样的,在板子上电的时候,是由仿真器托管了bootloader的操作,在进行完硬件的初始化之后,bootloader的代码并不有拷贝到RAM里,如果程序下载到RAM里执行,这个SP和PC为0应该是情理之中的啊。
  也不是完全不能调试,断点可以设的,但运行到第一个断点的时候,就不能再走到下一个断点了,而且也看不到本地变量的值,如果这个时候再执行一次continue的话,就死在那了,TARGET端就出现starting target CPU.....

使用特权

评论回复
6
6019赵文| | 2010-8-15 21:46 | 只看该作者
3# huzixian
这个应该是不对的。
如果是ADS1.2开发的,那么,就需要把PC设成axf文件中的起始入口地址。
如果是Linux程序或者其他GNU的工具软件,不需要设置,但是需要加上load xxx.axf;
如果是Keil, 则不需要使用GDB,而直接使用Keil的初始化配置文件(功能上类似.gdbinit,但语法上略有不同)

使用特权

评论回复
7
linux1| | 2010-8-15 22:02 | 只看该作者
能详细介绍你的开发环境么?
比如,编译器,编译选项,调试主机,Target,firmware的构成等等,不然俺比较难判断。

使用特权

评论回复
8
3B1105|  楼主 | 2010-8-16 22:19 | 只看该作者
我用的linux下的insight编译出来的arm-elf-insight,load xxx.axf?我用的编译的xxx.gdb

使用特权

评论回复
9
3B1105|  楼主 | 2010-8-16 22:19 | 只看该作者
7# linux1
好的,用的是华邦710开发板带的BSP,cross-compiler是arm_tools,3.0版本的,
调试主机是Readhat 9,GDB是GDB图形前端软件insight,编译后生成的arm-elf-insight,,Target是710 EV_BOARD开发板,
16M SDRAM + 4M FLASH

使用特权

评论回复
10
米其林r| | 2010-8-17 21:35 | 只看该作者
调试的对象是基于Linux的应用程序?
如果是这样的话,用JTAG来调试就不是很适合了.
建议: 目标板是710EVB,用arm-elf-insight + GDB Server来调试应用程序。
JTAG比较适合用来调试OS或者裸奔程序,如果调试基于OS的应用,特别是有进程/线程一类的应用,JTAG会有很多局限,基于JTAG的调试涉及到了太多的底层硬件细节,而应用程序从概念上来讲,更多的是与硬件无关的。

理论上来说,JLink也是可以调试应用的,不过我没有试过,总觉得太麻烦.

我用JLink调试过bootloader, eCOS, Linux驱动以及裸奔代码,没有用JLink调试过应用程序.
调试基于uClinux应用程序的时候,基本上用 GDB Server + Insight的组合.

使用特权

评论回复
11
3B1105|  楼主 | 2010-8-17 22:00 | 只看该作者
我现在就是要调试基于uclinux的多线程程序,刚才的问题也是基于uclinux的应用程序,华邦自带的那个gdbserver程序不好使,在断点处不停,我自己在uclinux官网上找了个gdb来编译的GDBSERVER,但是对多线程不支持,我试图让他支持多线程,但每次都提示一个UC-LIBC库的libc.a有问题。实在无法解决的情况下,手边也有个J-LINK,所以就试图把J-LINK用起来调试。
没办法啊,LinuxHacketCN大哥,你有uclinux的GDBSERVER程序吗?
你是否在710上用GDBSERVER+insight来调试过应用程序呢?

使用特权

评论回复
12
年轻不在| | 2010-8-17 22:16 | 只看该作者
有个uClinux上的gdbserver,是我自己编译后用于W90N745上的,有两年多了。不知道现在还能不能用?
我找找看,没试过多线程的调试。一般来说,多线程调试的时候,先把单个线程调试通过后再集成,集成后的调试要充分利用控制台或log文件。

使用特权

评论回复
13
gjdzgcs| | 2011-8-30 07:29 | 只看该作者
:lol

使用特权

评论回复
14
linxiaotuzi| | 2011-8-30 15:28 | 只看该作者
用的是什么IDE呀

使用特权

评论回复
15
lgm888| | 2011-8-31 15:53 | 只看该作者
我是来学习的!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

315

主题

1645

帖子

4

粉丝