Stm32.cfgを読む
出典: Wikimura
OpenOCDのtargetディレクトリにあるstm32.cfgは、ターゲットデバイス用のTAPを設定するための記述があるようです。 それを読んでみます。
stm32.cfg
# script for stm32
if { [info exists CHIPNAME] } {
set _CHIPNAME $CHIPNAME
} else {
set _CHIPNAME stm32
}
- CHIPNAMEという変数があるか?
- あるなら_CHIPNAME変数に既存のCHIPNAMEを代入
- なければ_CHIPNAME変数に文字列stm32を入れる
if { [info exists ENDIAN] } {
set _ENDIAN $ENDIAN
} else {
set _ENDIAN little
}
- ENDIANという変数があるか?
- あるなら_ENDIAN変数に既存のENDIANを代入
- なければ_ENDIAN変数に文字列littleを入れる
# jtag speed jtag_khz 500
- ドングルの設定([8]参照)
jtag_nsrst_delay 100 jtag_ntrst_delay 100 #use combined on interfaces or targets that can't set TRST/SRST separately reset_config trst_and_srst
- リセットに関する設定([2]参照)
#jtag scan chain
if { [info exists CPUTAPID ] } {
set _CPUTAPID $CPUTAPID
} else {
# See STM Document RM0008
# Section 26.6.3
set _CPUTAPID 0x3ba00477
}
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
- CPUTAPIDという変数があるか?
- あるなら_CPUTAPID変数に既存のCPUTAPIDを代入(予め用意しておかないといけない)
- なければ_CPUTAPID変数に文字列0x3ba00477を入れる(STMicroelectronicsのリファレンスマニュアルRM0008、26.6.3にIDについての記述がある[4])
- 新しいCPU用TAPを生成する([5]参照)
if { [info exists BSTAPID ] } {
set _BSTAPID $BSTAPID
} else {
# See STM Document RM0008
# Section 26.6.2
# Medium Density RevA
set _BSTAPID 0x06410041
# Rev B and Rev Z
set _BSTAPID 0x16410041
# High Density Devices, Rev A
set _BSTAPID 0x06414041
}
jtag newtap $_CHIPNAME bs -irlen 5 -ircapture 0x1 -irmask 0x1 -expected-id $_BSTAPID
- BSTAPIDという変数があるか?
- あるなら_BSTAPID変数に既存のBSTAPIDを代入
- なければ_BSTAPID変数に文字列0x06414041を入れる
- 3つ連続しているが、最後のが反映される
- 実際には予め用意しておき、else側を使わないこと
- BSTAPID(Boundary Scan Test Access Point ID)は、CPUIDと同様RM0008に記述されているらしい。
- 新しいバウンダリスキャン用TAPを生成する([5]参照)
set _TARGETNAME [format "%s.cpu" $_CHIPNAME] target create $_TARGETNAME cortex_m3 -endian $_ENDIAN -chain-position $_TARGETNAME $_TARGETNAME configure -work-area-virt 0 -work-area-phys 0x20000000 -work-area-size 16384 -work-area-backup 0
- [変数_CHIPNAMEの中身.cpu]を変数_TARGETNAMEに代入
- ターゲットの生成([6]参照)
- ターゲットの設定([6]参照)
flash bank stm32x 0 0 0 0 0 # For more information about the configuration files, take a look at: # openocd.texi
- Flash設定(
このままでは使えない...[7]参照)

