OpenOCD를 사용하여 LPC4357 마이크로 컨트롤러를 프로그래밍하고 디버깅하는 데 문제가 있습니다. 이 칩은 코어 텍스 M4 코어와 2 차 코어 텍스 M0 코어를 가지고있다. 오류가 다음 줄 것이다 내부 플래시에 뭔가를 작성하는 GDB의 부하 명령을 사용하려고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
: 이것은 내가 사용 OpenOCD의 설정 지금
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 플래시 쓰기를하기 전에 M0 코어를 멈춰야한다고 생각하고, M0 코어가 정지 요청에 응답하지 않습니다.
이유는 M0 코어가 실행 중이 아니므로 정지 할 수 없기 때문입니다. 리셋 및 클럭 신호는 M4 코어에 의해 제어되며 나중에 부팅 순서에서만 활성화됩니다.
OpenOCD에게 M0 펌웨어가 M4 펌웨어에 의해 활성화 될 때까지 M0 코어를 사용할 수 없다는 것을 알리는 방법이 있습니까? 미묘한