TI中文支持网
TI专业的中文技术问题搜集分享网站

求助!!J-link+Openocd调试am3358的SPL,内部SRAM无法访问的问题

开发平台:Eclipse 4.4.2 , Ubuntu14.04,openocd-0.9.0 , gdb调试,jlink V8仿真器(已升级到最新固件),Beaglebone black中国版。

1、使用Jlink官方的驱动,在SRAM中和DDR中分别调试SPL和u-boot都没有问题。

2、使用openocd调试,在DDR中调试一切正常。

3、使用openocd调试,准备在SRAM中调试时,在download的时候 openocd提示如下的错误(地址不只是0x402f10a4 ):

        MEM_AP_CSW 0x2800062, MEM_AP_TAR 0x402f10a4 . Failed to read memory at 0x402f10a4 

4、说明:MMU I-cache D-cache都已经关闭,SPL的text_base是0x402f0400,总大小大概79K。

5、在U-boot调试时,尝试访问0x402f0400到0x402fffff之间的memory,也都无法访问。

问题:CPU内部的那64K SRAM是否有什么寄存器可以禁止外部访问?应该在哪打开?

            用Jlink自带的驱动是全部可以访问的(除了前面1K的空间)。

   跪求解答!!

openocd.cfg文件如下:

还有一问题,下面的 dbgbase 0x80001000 ,为什么是0x80001000 ?这不是DDR的内存区域么?跟debug有什么关系呢?

#
# Segger J-Link
#
# http://www.segger.com/jlink.html
#

interface jlink

gdb_port 2331

telnet_port 4444

adapter_khz 2000

#—————————————————————-

source [find target/icepick.cfg]

if { [info exists CHIPNAME] } {
set _CHIPNAME $CHIPNAME
} else {
set _CHIPNAME am335x
}

if { [info exists ENDIAN] } {
set _ENDIAN $ENDIAN
} else {
set _ENDIAN little
}

#
# M3 DAP
#
if { [info exists M3_DAP_TAPID] } {
set _M3_DAP_TAPID $M3_DAP_TAPID
} else {
set _M3_DAP_TAPID 0x4b6b902f
}
jtag newtap $_CHIPNAME m3_dap -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_M3_DAP_TAPID -disable
jtag configure $_CHIPNAME.m3_dap -event tap-enable "icepick_d_tapenable $_CHIPNAME.jrc 11 0"

#
# Main DAP
#
if { [info exists DAP_TAPID] } {
set _DAP_TAPID $DAP_TAPID
} else {
set _DAP_TAPID 0x4b6b902f
}
jtag newtap $_CHIPNAME dap -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_DAP_TAPID -disable
jtag configure $_CHIPNAME.dap -event tap-enable "icepick_d_tapenable $_CHIPNAME.jrc 12 0"

#
# ICEpick-D (JTAG route controller)
#
if { [info exists JRC_TAPID] } {
set _JRC_TAPID $JRC_TAPID
} else {
set _JRC_TAPID 0x0b94402f
}
jtag newtap $_CHIPNAME jrc -irlen 6 -ircapture 0x1 -irmask 0x3f -expected-id $_JRC_TAPID -ignore-version
jtag configure $_CHIPNAME.jrc -event setup "jtag tapenable $_CHIPNAME.dap"
# some TCK tycles are required to activate the DEBUG power domain
jtag configure $_CHIPNAME.jrc -event post-reset "runtest 1000"

#
# Cortex A8 target
#
set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME cortex_a -chain-position $_CHIPNAME.dap -dbgbase 0x80001000

# SRAM: 64K at 0x4030.0000; use the first 16K
$_TARGETNAME configure -work-area-phys 0x40300000 -work-area-size 0x4000

$_TARGETNAME configure -event gdb-attach {
am335x.cpu cortex_a dbginit
halt
echo "disable mmu icache dcache…"

# disable mmu icache dcache
arm mcr 15 0 1 0 0 12912760 poll
}

$_TARGETNAME configure -event "reset-assert" {

global _CHIPNAME

echo "………………………………………"
# assert warm system reset through ICEPick
icepick_c_wreset $_CHIPNAME.jrc
}
targets
#—————————————————————-
init
reset_config trst_and_srst combined  

changwu xie1:

有人么???

Steven Liu1:

JLink用的不多,所以没太明白你上面的用法。一般我这边JLink,通过JTAG口,主机使用IAR进行调试。调试的一般是裸跑的程序比较多,调试Linux不怎么多。

没明白后面讲述的问题是怎么个意思。

对于CPU内部的RAM这里,这块是可以访问的,但是在Linux的使用过程中,前1KB的空间,和最后18K的空间,是被占用了的。你可以参考这里有些说明:

http://processors.wiki.ti.com/index.php/AM335x_U-Boot_User%27s_Guide#Two_stage_U-Boot_design

changwu xie1:

回复 Steven Liu1:

你好,感谢您的回答!

          我没有去访问前1K的空间,text_base是从0x402f0400开始的。

           最后面那个问题,是说Openocd里面需要指定debug 相关的一个地址(不指定无法调试),但是我在TI的TRM里面没有看到这个地址的任何说明。

PS:现在通过openocd手动指定CoreSight的dap 1(APB_AP)可以访问了,能在SRAM中调试SPL但是调试时运行速度很慢。

          

赞(0)
未经允许不得转载:TI中文支持网 » 求助!!J-link+Openocd调试am3358的SPL,内部SRAM无法访问的问题
分享到: 更多 (0)