Gdb 在OpenOCD中配置辅助核心

Gdb 在OpenOCD中配置辅助核心,gdb,lpc,cortex-m,openocd,Gdb,Lpc,Cortex M,Openocd,我在使用OpenOCD编程和调试LPC4357微控制器时遇到问题。该芯片有一个Cortex M4内核和一个secondary Cortex M0内核。这是我正在使用的OpenOCD配置: source [find target/swj-dp.tcl] adapter_khz 1000 if { [info exists CHIPNAME] } { set _CHIPNAME $CHIPNAME } else { set _CHIPNAME lpc43xx } if { [i

我在使用OpenOCD编程和调试LPC4357微控制器时遇到问题。该芯片有一个Cortex M4内核和一个secondary Cortex M0内核。这是我正在使用的OpenOCD配置:

source [find target/swj-dp.tcl]

adapter_khz 1000

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

if { [info exists M4_JTAG_TAPID] } {
    set _M4_JTAG_TAPID $M4_JTAG_TAPID
} else {
    set _M4_JTAG_TAPID 0x4ba00477
}

if { [info exists M4_SWD_TAPID] } {
    set _M4_SWD_TAPID $M4_SWD_TAPID
} else {
    set _M4_SWD_TAPID 0x2ba01477
}

if { [using_jtag] } {
    set _M4_TAPID $_M4_JTAG_TAPID
} {
    set _M4_TAPID $_M4_SWD_TAPID
}

if { [info exists M0_JTAG_TAPID] } {
    set _M0_JTAG_TAPID $M0_JTAG_TAPID
} else {
    set _M0_JTAG_TAPID 0x0ba01477
}

swj_newdap $_CHIPNAME m4 -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_M4_JTAG_TAPID
swj_newdap $_CHIPNAME m0 -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_M0_JTAG_TAPID

target create $_CHIPNAME.m0 cortex_m -chain-position $_CHIPNAME.m0
target create $_CHIPNAME.m4 cortex_m -chain-position $_CHIPNAME.m4

set _WORKAREASIZE 0x2000
$_CHIPNAME.m4 configure -work-area-phys 0x10000000 -work-area-size $_WORKAREASIZE

set _FLASHNAME $_CHIPNAME.flash
flash bank flashA lpc2000 0x1a000000 0x80000 0 0 $_CHIPNAME.m4 lpc4300 107000 calc_checksum
flash bank flashB lpc2000 0x1b000000 0x80000 0 0 $_CHIPNAME.m4 lpc4300 107000 calc_checksum

cortex_m reset_config vectreset
尝试使用GDB的load命令向内部闪存写入内容将出现以下错误:

Error: timed out while waiting for target halted
TARGET: lpc43xx.m0 - Not halted
in procedure 'reset'
in procedure 'ocd_bouncer'

in procedure 'reset'

Error: Target not halted
Error: failed erasing sectors 0 to 3
Error: flash_erase returned -304
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x41000000 pc: 0x10402d5e msp: 0x10089c70, semihosting
Info : Halt timed out, wake up GDB.
现在我怀疑问题在于OpenOCD认为在写入flash之前必须停止M0内核,而M0内核没有响应停止请求

原因是M0内核甚至没有运行,因此无法停止。它的复位和时钟信号由M4内核控制,只有在以后的引导顺序中才启用

有没有办法告诉OpenOCD,在M4固件启用M0内核之前,M0内核不可用?

target create $_CHIPNAME.m0 cortex_m -chain-position $_CHIPNAME.m0
target create $_CHIPNAME.m4 cortex_m -chain-position $_CHIPNAME.m4`
尝试交换这些行。第一个创建的目标——M0——似乎是默认目标

您也可以使用targets$\u CHIPNAME.m4命令-注意命令中的复数形式