# Copied and adapted from random internet sources. # Unlocking is not needed, but every 1k block of Flash Ram is write protected # - see: http://openocd.org/doc/html/Flash-Commands.html#flashprotect # Typical usages: # openocd -f ./openocd_rs41.cfg -c "init; halt; flash protect 0 0 31 off; exit" # to unlock 64k of Flash for programming # openocd -f ./openocd_rs41.cfg -c "program RS41ng.elf verify reset exit" # to program the connected rs41 # openocd -f ./openocd_rs41.cfg -c "init; reset; exit" # will reset the connected rs41 # # Debugging with semihosting, use GDB commands: # target remote localhost:3333 # monitor arm semihosting enable # load build/src/RS41ng.elf # monitor reset halt # continue # Normal use is with cheap STLINKv2 clone source [find interface/stlink-v2.cfg] # Alternative is to connect directly to a Raspberry Pi3 # Find AdaFruit tutorial to build and run OpenOCD on RPi: # source [find interface/raspberrypi2-native.cfg] # bcm2835gpio_swd_nums 25 24 # bcm2835gpio_speed_coeffs 194938 48 # bcm2835gpio_srst_num 18 # reset_config srst_only srst_push_pull set WORKAREASIZE 0x2000 # RS41 uses stm32f1 cortex m3 source [find target/stm32f1x.cfg] # example script: proc RS41 {will_fail} { init sleep 200 reset halt wait_halt stm32f1x unlock $will_fail sleep 10 shutdown } # # Uncommon usage: # openocd -f ./openocd_rs41.cfg -c "init; halt; stm32f1x options_read 0; exit" # check setings before changing them # openocd -f ./openocd_rs41.cfg -c "init; halt; stm32f1x unlock 0; exit" # is not needed just to re-program RS41 # openocd -f ./openocd_rs41.cfg -c "RS41 0" # to run a macro written above #