mirror of
git://git.code.sf.net/p/openocd/code
synced 2025-07-19 08:38:14 +10:00
The semantics of "-work-area-virt 0" (or phys) changed with the patch to require specifying physical or virtrual work area addresses. Specifying zero was previously a NOP. Now it means that address zero is valid. This patch addresses three related issues: - MMU-less processors should never specify work-area-virt; remove those specifications. Such processors include ARM7TDMI, Cortex-M3, and ARM966. - MMU-equipped processors *can* specify work-area-virt... but zero won't be appropriate, except in mischievous contexts (which hide null pointer exceptions). Remove those specs from those processors too. If any of those mappings is valid, someone will need to submit a patch adding it ... along with a comment saying what OS provides the mapping, and in which context. Example, say "works with Linux 2.6.30+, in kernel mode". (Note that ARM Linux doesn't map kernel memory to zero ...) - Clarify docs on that "-virt" and other work area stuff. Seems to me work-area-virt is quite problematic; not every operating system provides such static mappings; if they do, they're not in every MMU context... Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
72 lines
1.8 KiB
INI
72 lines
1.8 KiB
INI
# script for stm32
|
|
|
|
if { [info exists CHIPNAME] } {
|
|
set _CHIPNAME $CHIPNAME
|
|
} else {
|
|
set _CHIPNAME stm32
|
|
}
|
|
|
|
if { [info exists ENDIAN] } {
|
|
set _ENDIAN $ENDIAN
|
|
} else {
|
|
set _ENDIAN little
|
|
}
|
|
|
|
# Work-area is a space in RAM used for flash programming
|
|
# By default use 16kB
|
|
if { [info exists WORKAREASIZE] } {
|
|
set _WORKAREASIZE $WORKAREASIZE
|
|
} else {
|
|
set _WORKAREASIZE 0x4000
|
|
}
|
|
|
|
# JTAG speed should be <= F_CPU/6. F_CPU after reset is 8MHz, so use F_JTAG = 1MHz
|
|
jtag_khz 1000
|
|
|
|
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
|
|
|
|
#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
|
|
|
|
if { [info exists BSTAPID ] } {
|
|
# FIXME this never gets used to override defaults...
|
|
set _BSTAPID $BSTAPID
|
|
} else {
|
|
# See STM Document RM0008
|
|
# Section 29.6.2
|
|
# Low density devices, Rev A
|
|
set _BSTAPID1 0x06412041
|
|
# Medium density devices, Rev A
|
|
set _BSTAPID2 0x06410041
|
|
# Medium density devices, Rev B and Rev Z
|
|
set _BSTAPID3 0x16410041
|
|
# High density devices, Rev A
|
|
set _BSTAPID4 0x06414041
|
|
# Connectivity line devices, Rev A and Rev Z
|
|
set _BSTAPID5 0x06418041
|
|
}
|
|
jtag newtap $_CHIPNAME bs -irlen 5 -expected-id $_BSTAPID1 \
|
|
-expected-id $_BSTAPID2 -expected-id $_BSTAPID3 \
|
|
-expected-id $_BSTAPID4 -expected-id $_BSTAPID5
|
|
|
|
set _TARGETNAME $_CHIPNAME.cpu
|
|
target create $_TARGETNAME cortex_m3 -endian $_ENDIAN -chain-position $_TARGETNAME
|
|
|
|
$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0
|
|
|
|
flash bank stm32x 0 0 0 0 $_TARGETNAME
|
|
|
|
# For more information about the configuration files, take a look at:
|
|
# openocd.texi
|