# This script configures OpenOCD for use with an ST-Link V2 programmer/debugger
# and an STM32F4 target microcontroller.
#
# To flash your firmware:
#
#    $ openocd -f openocd_stm32f4.cfg \
#        -c "stm_flash build-BOARD/firmware0.bin 0x08000000 build-BOARD/firmware1.bin 0x08020000"
#
# For a gdb server on port 3333:
#
#    $ openocd -f openocd_stm32f4.cfg


source [find interface/stlink-v2.cfg]
transport select hla_swd
source [find target/stm32f4x.cfg]
reset_config srst_only
init

proc stm_flash { BIN0 ADDR0 BIN1 ADDR1 } {
    reset halt
    sleep 100
    wait_halt 2
    flash write_image erase $BIN0 $ADDR0
    sleep 100
    verify_image $BIN0 $ADDR0
    sleep 100
    flash write_image erase $BIN1 $ADDR1
    sleep 100
    verify_image $BIN1 $ADDR1
    sleep 100
    reset run
    shutdown
}

proc stm_erase {} {
    reset halt
    sleep 100
    stm32f4x mass_erase 0
    sleep 100
    shutdown
}
