openocd-cheatsheet/openocd-chsh.txt

126 lines
3.3 KiB
Plaintext

usage:
openocd -f cmds/from/file.cfg -c "command inline"
default -f path: /usr/share/openocd/scripts/
starts gdb automatically, gdb_port for setting port, default 3333. use gdb for cpu debugging
can interactively enter commands, telnet_port, default 4444
===
select interface (jtag dongle):
-f interface/ifname.cfg eg. buspirate
select cpu:
-f target/targetname.cfg eg. zynq_7000
select devboard (jtag+cpu+...):
-f board/boardname.cfg eg. stm32f0discovery
see /usr/share/openocd/scripts/ for existing ones
===
general commands:
help <name> : get help for a command
exit : close telnet session, leave openocd running
shutdown : stop openocd
adapter config:
adapter driver <name> : select adapter driver (cf. interfaces/*.cfg)
transport select <transport> : select phsyical debug itf (jtag, swd, ...)
adapter speed <khz> : select jtag/swd/.. speed
debugging:
init : need to run this before running commands that interact with the device, and after setting up all interfaces/targets/...!
scan_chain : scan which jtag devices are available
reg [<name>]: get/set registers
halt : halt target for debugging
resume [<addr>]: resume cpu, optionally at addr
step [<addr>]: step 1 insn, opt. at addr
reset : hard reset
m[dw][bhwd] : memory Display/Write, byte/halfword/word/doubleword (8..64 bit)
dump_image <file> <addr> <size> : dump memory to file
load_image <file> [<addr>] [<size>] : write file to memory
virt2phys : addr xlat if mmu enabled
flash commands:
flash banks : list flash existing on platform
flash info <bankno> : print info (size, prot, sectors, etc) of flash bank
flash read_bank <bankno> <filename> [<addr> [<len>]] : dump flash to file
program <filename> [preverify|verify|reset|exit|<addr>] : program flash
flash erase_sector <bankno> <startsec> <endsec>|last | erase_address <addr> <len>: erases flash (mmapped). see flash banks/info output
flash erase_check <bankno> : check if flash is erased
note: flash drivers can have extra options, w/ lock/protect/... stuff
not covered: erasing flash
nand commands:
nand list : like flash banks
nand probe <num> : needs to be done before commands below
nand info <num> : show info
nand dump <num> <file> <off> <len> : dump nand to file
nand write <num> <file> <off> : write image to nand
nand erase <num> [<off> <len>] : erase nand
nand check_bad_blocks <num> : check bad blocks on device
putting it together:
"i want to load my program into ram & debug it with gdb":
openocd -f board/mydevboard.cfg -c init -c "load_image myfirmware.elf" -c "reset halt"
# gdbserver now running on port 3333, halted at reset vector
# or put this in a script file & then do -f ./thescript.cfg
"but its not a devboard":
openocd -f interface/probe.cfg -f target/mymcu.cfg -c init \
-c "load_image myfirmware.elf" -c "reset halt"
# gdbserver now running on port 3333, halted at reset vector
"tell me what this device is":
openocd -f interface/probe.cfg -c "transport select jtag" -c "adapter speed khz" \
-c init -c scan_chain -c shutdown
openocd -f interface/probe.cfg -c "transport select jtag" -c "adapter speed khz" \
-f target/themcu.fg -c init -c "flash banks" -c "flash info 0" -c shutdown
"i want to dump the flash in this mcu i found":
openocd -f interface/probe.cfg -f target/themcu.fg \
-c init -c "flash read_bank 0 flashdump.bin" -c shutdown