2010-05-29 04:52:53 +02:00
|
|
|
# script for stm32
|
|
|
|
|
|
|
|
interface ft2232
|
|
|
|
ft2232_device_desc "Olimex OpenOCD JTAG"
|
|
|
|
ft2232_layout olimex-jtag
|
|
|
|
ft2232_vid_pid 0x15ba 0x0003
|
|
|
|
|
|
|
|
if { [info exists CHIPNAME] } {
|
|
|
|
set _CHIPNAME $CHIPNAME
|
|
|
|
} else {
|
|
|
|
set _CHIPNAME stm32
|
|
|
|
}
|
|
|
|
|
|
|
|
if { [info exists ENDIAN] } {
|
|
|
|
set _ENDIAN $ENDIAN
|
|
|
|
} else {
|
|
|
|
set _ENDIAN little
|
|
|
|
}
|
|
|
|
|
|
|
|
# jtag speed speed should be <= F_CPU/6. F_CPU after reset is 8MHz, so ufse 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
|
2010-06-06 03:46:22 +02:00
|
|
|
# Section 30.6.3
|
2010-05-29 04:52:53 +02:00
|
|
|
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-virt 0 -work-area-phys 0x20000000 -work-area-size 0x5000 -work-area-backup 0
|
2010-09-01 04:05:39 +02:00
|
|
|
# TODO: native
|
2010-09-01 06:02:36 +02:00
|
|
|
#$_TARGETNAME configure -work-area-virt 0 -work-area-phys 0x20000000 -work-area-size 0x10000 -work-area-backup 0
|
2010-05-29 04:52:53 +02:00
|
|
|
|
|
|
|
flash bank stm32x 0x08000000 0x00020000 0 0 $_TARGETNAME
|
|
|
|
|
|
|
|
proc flash_chip {} {
|
|
|
|
echo "Halting..."
|
|
|
|
halt
|
2010-08-06 03:43:41 +02:00
|
|
|
echo "Erasing..."
|
2010-05-29 04:52:53 +02:00
|
|
|
flash erase_address 0x08000000 0x20000
|
2010-09-01 04:05:39 +02:00
|
|
|
# TODO: native
|
|
|
|
#flash erase_address 0x08000000 0x80000
|
2010-05-29 04:52:53 +02:00
|
|
|
echo "Flashing image..."
|
make: Modularize makefiles, add dependency tracking, build-type tracking
Major build system rewrite. New and exciting:
1. Proper dependency tracking. All source files including header files
should be properly tracked and recompiled as necessary when they are
changed.
2. Build-type tracking. If the target changes from 'ram' to 'flash,'
for example, the build system will force a rebuild rather than
incorrectly link modules to a different address.
3. New targets:
The old 'ram,' 'flash,' and 'jtag' targets have been replaced with
the environment variable MAPLE_TARGET, which controls the link address.
Users can either export it to their environment, or pass MAPLE_TARGET on
the command-line. Once this is set, sketches can be compiled with 'make
sketch,' or simply 'make.'
Note: the default is MAPLE_TARGET='flash.'
The target 'install' now automagically uploads the sketch to the board
using the appropriate method.
The 'run' target has been renamed to 'debug.' It starts an openocd gdb
server.
4. Odds and ends:
-Verbose and 'quiet' modes. Set V=1 for verbose compilation, the default
is quiet.
-Object file sizes and disassembly information is generated and placed
in build/$(BOARD).sizes and build/$(BOARD).disas, respectively.
-Parallel make with -j should speed things up if you have multiple
cores.
2010-06-24 17:16:26 +02:00
|
|
|
flash write_bank 0 build/maple.bin 0
|
2010-05-29 04:52:53 +02:00
|
|
|
echo "Verifying image..."
|
make: Modularize makefiles, add dependency tracking, build-type tracking
Major build system rewrite. New and exciting:
1. Proper dependency tracking. All source files including header files
should be properly tracked and recompiled as necessary when they are
changed.
2. Build-type tracking. If the target changes from 'ram' to 'flash,'
for example, the build system will force a rebuild rather than
incorrectly link modules to a different address.
3. New targets:
The old 'ram,' 'flash,' and 'jtag' targets have been replaced with
the environment variable MAPLE_TARGET, which controls the link address.
Users can either export it to their environment, or pass MAPLE_TARGET on
the command-line. Once this is set, sketches can be compiled with 'make
sketch,' or simply 'make.'
Note: the default is MAPLE_TARGET='flash.'
The target 'install' now automagically uploads the sketch to the board
using the appropriate method.
The 'run' target has been renamed to 'debug.' It starts an openocd gdb
server.
4. Odds and ends:
-Verbose and 'quiet' modes. Set V=1 for verbose compilation, the default
is quiet.
-Object file sizes and disassembly information is generated and placed
in build/$(BOARD).sizes and build/$(BOARD).disas, respectively.
-Parallel make with -j should speed things up if you have multiple
cores.
2010-06-24 17:16:26 +02:00
|
|
|
verify_image build/maple.bin 0x08000000 bin
|
2010-05-29 04:52:53 +02:00
|
|
|
echo "Checksum verified, resetting chip"
|
|
|
|
reset run
|
|
|
|
echo "Daemon shutdown"
|
|
|
|
shutdown
|
|
|
|
}
|
|
|
|
|
|
|
|
init
|
|
|
|
flash_chip
|