We use some essential cookies to make our website work.

We use optional cookies, as detailed in our cookie policy, to remember your settings and understand how you use our website.

3 posts • Page 1 of 1
tenkoh
Posts: 7
Joined: Sun Jun 21, 2020 3:51 pm

Raspberry Pi 3 Model B+ のJTAG 接続とGDB によるデバッグについて

Sun Jun 21, 2020 3:58 pm

Raspberry Pi 3 Model B+ で、JTAG 接続によりデバッグを開始し
ようとしたところ、ステップによりldr 命令を実行したところでプ
ログラムが暴走し、デバッグ続行が不可能になってしまいます。

【環境】
Raspberry Pi 3 Model B+
ARM-USB-TINY-H
GNU toolchain for Raspberry Pi
OpenOCD 0.10.0


以下のコードを実行すると、プログラムが暴走します。

cps #MODE_SYS
>> ldr r0, =__stack_system
mov sp, r0

>> のところで暴走

暴走時、GDB には以下のメッセージが出力されます。

Opcode 0x1e15ee10, DSCR.ERR=1, DSCR.EL=2

QEMU 上で実行した結果は問題ないので、コードの問題とは考えづ
らいです。

この現象を収めるべく、Google で調べてみたのですが、JTAG 接続
の詳細を記している情報が少なく、自力での解決が難しい状況です。

皆様のお力をお貸しいただけると幸いに存じます。

以上、よろしくお願い致します。

tenkoh
Posts: 7
Joined: Sun Jun 21, 2020 3:51 pm

Re: Raspberry Pi 3 Model B+ のJTAG 接続とGDB によるデバッグについて

Wed Jun 24, 2020 1:23 pm

補足です。

OpenOCD の起動オプションは下記のとおりです。

------------------------------------------------------------
openocd.exe --file C:\Project\scripts\interface\ftdi\olimex-arm-usb-tiny-h.cfg -c "transport select jtag" --file C:\Project\scripts\target\rpi3.cfg
------------------------------------------------------------


しかくolimex-arm-usb-tiny-h.cfg の中身
------------------------------------------------------------
#
# Olimex ARM-USB-TINY-H
#
# http://www.olimex.com/dev/arm-usb-tiny-h.html
#

adapter driver ftdi
ftdi_device_desc "Olimex OpenOCD JTAG ARM-USB-TINY-H"
ftdi_vid_pid 0x15ba 0x002a

ftdi_layout_init 0x0808 0x0a1b
ftdi_layout_signal nSRST -oe 0x0200
ftdi_layout_signal nTRST -data 0x0100 -oe 0x0100
ftdi_layout_signal LED -data 0x0800
------------------------------------------------------------


しかくrpi3.cfg の中身
------------------------------------------------------------
# we need to enable srst even though we don't connect it
reset_config trst_and_srst

adapter speed 1000
jtag_ntrst_delay 500

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

#
# Main DAP
#
if { [info exists DAP_TAPID] } {
set _DAP_TAPID $DAP_TAPID
} else {
set _DAP_TAPID 0x4ba00477
}


jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_DAP_TAPID -enable

set _TARGETNAME $_CHIPNAME.cpu
set _TARGETNAME_1 $_CHIPNAME.cpu1
set _TARGETNAME_2 $_CHIPNAME.cpu2
set _TARGETNAME_3 $_CHIPNAME.cpu3

dap create $_CHIPNAME.dap -chain-position $_TARGETNAME

cti create $_TARGETNAME.cti -dap $_CHIPNAME.dap -ap-num 0 -ctibase 0x80018000
cti create $_TARGETNAME_1.cti -dap $_CHIPNAME.dap -ap-num 0 -ctibase 0x80019000
cti create $_TARGETNAME_2.cti -dap $_CHIPNAME.dap -ap-num 0 -ctibase 0x8001a000
cti create $_TARGETNAME_3.cti -dap $_CHIPNAME.dap -ap-num 0 -ctibase 0x8001b000

target create $_TARGETNAME aarch64 -dap $_CHIPNAME.dap -coreid 0 -dbgbase 0x80010000 -cti $_TARGETNAME.cti
target create $_TARGETNAME_1 aarch64 -dap $_CHIPNAME.dap -coreid 1 -dbgbase 0x80012000 -cti $_TARGETNAME_1.cti
target create $_TARGETNAME_2 aarch64 -dap $_CHIPNAME.dap -coreid 2 -dbgbase 0x80014000 -cti $_TARGETNAME_2.cti
target create $_TARGETNAME_3 aarch64 -dap $_CHIPNAME.dap -coreid 3 -dbgbase 0x80016000 -cti $_TARGETNAME_3.cti

$_TARGETNAME configure -event reset-assert-pre "aarch64 dbginit"
$_TARGETNAME configure -event gdb-attach { halt }
------------------------------------------------------------

tenkoh
Posts: 7
Joined: Sun Jun 21, 2020 3:51 pm

Re: Raspberry Pi 3 Model B+ のJTAG 接続とGDB によるデバッグについて

Thu Jun 25, 2020 12:15 pm

もう一つ補足です。

しかくRaspberry Pi 3 B+ とARM-USB-TINY-H の接続
ピン番号 ピン番号
1 3.3V 3.3V <-> VREF 1
15 TRST GPIO22 <-> TTRST_N 3
37 TDI GPIO26 <-> TTDI 5
13 TMS GPIO27 <-> TTMS 7
22 TCK GPIO25 <-> TTCK 9
16 RTCK GPIO23 <-> TRTCK 11
18 TDO GPIO24 <-> TTDO 13
6 GND Ground <-> GND 4

USB はUSB3.0ポートを使用しています。

3 posts • Page 1 of 1

Return to "日本語"

AltStyle によって変換されたページ (->オリジナル) /