mirror of
git://git.code.sf.net/p/openocd/code
synced 2025-07-19 05:55:41 +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>
62 lines
1.7 KiB
INI
62 lines
1.7 KiB
INI
#Script for AT91EB40a
|
|
|
|
if { [info exists CHIPNAME] } {
|
|
set _CHIPNAME $CHIPNAME
|
|
} else {
|
|
set _CHIPNAME at91eb40a
|
|
}
|
|
|
|
if { [info exists ENDIAN] } {
|
|
set _ENDIAN $ENDIAN
|
|
} else {
|
|
set _ENDIAN little
|
|
}
|
|
|
|
if { [info exists CPUTAPID ] } {
|
|
set _CPUTAPID $CPUTAPID
|
|
} else {
|
|
# force an error till we get a good number
|
|
set _CPUTAPID 0x1f0f0f0f
|
|
}
|
|
|
|
|
|
#Atmel ties SRST & TRST together, at which point it makes
|
|
#no sense to use TRST, but use TMS instead.
|
|
#
|
|
#The annoying thing with tying SRST & TRST together is that
|
|
#there is no way to halt the CPU *before and during* the
|
|
#SRST reset, which means that the CPU will run a number
|
|
#of cycles before it can be halted(as much as milliseconds).
|
|
reset_config srst_only srst_pulls_trst
|
|
|
|
#jtag scan chain
|
|
#format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE)
|
|
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
|
|
|
|
#target configuration
|
|
set _TARGETNAME $_CHIPNAME.cpu
|
|
target create $_TARGETNAME arm7tdmi -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm7tdmi-s_r4
|
|
|
|
# speed up memory downloads
|
|
arm7_9 fast_memory_access enable
|
|
arm7_9 dcc_downloads enable
|
|
|
|
#flash driver
|
|
flash bank ecosflash 0x01000000 0x200000 2 2 0 ecos/at91eb40a.elf
|
|
|
|
# required for usable performance. Used for lots of
|
|
# other things than flash programming.
|
|
$_TARGETNAME configure -work-area-phys 0x00030000 -work-area-size 0x10000 -work-area-backup 0
|
|
|
|
$_TARGETNAME configure -event reset-init {
|
|
puts "Running reset init script for AT91EB40A"
|
|
# Reset script for AT91EB40a
|
|
reg cpsr 0x000000D3
|
|
mww 0xFFE00020 0x1
|
|
mww 0xFFE00024 0x00000000
|
|
mww 0xFFE00000 0x01002539
|
|
mww 0xFFFFF124 0xFFFFFFFF
|
|
mww 0xffff0010 0x100
|
|
mww 0xffff0034 0x100
|
|
}
|