RTL-8710 openocd support
OpenOCD support for RTL8710 and integrated flash.
Uses and links against ROM functions, they're there anyway so whatever, we get a smaller flasher binary and codebase this way too.
pins:
SWD
- SWDIO: GE3
- SWCLK: GE4
JTAG
- TRST: GE0
- TDI: GE1
- TDO: GE2
- TMS: GE3
- TCK: GE4
building:
make
RTL8710 OpenOCD Commands
Core Functions
-
rtl8710_flasher_initinit flasher, loads firmware and reads flash ID to determine capacity -
rtl8710_flasher_mrw [reg]
reads 32-bit value from specified register -
rtl8710_flasher_waitpolls control register atbuffer + 0x00until operation completes -
rtl8710_flasher_load_block [filename] [offset] [length]loads data block from file into buffer atbuffer + 0x20 -
rtl8710_flasher_block [command] [offset] [len]internal function for read/write/verify operations. Command must be"read","write"or"verify"
Block Operations
-
rtl8710_flasher_read_block [offset] [len]reads block from flash into buffer -
rtl8710_flasher_write_block [offset] [len]writes buffer contents to flash -
rtl8710_flasher_verify_block [offset] [len]verifies flash contents against buffer
Flash Commands
-
rtl8710_flash_read_idreads JEDEC ID and displays manufacturer ID, memory type and capacity -
rtl8710_flash_read_macreads MAC address from flash offset0xA088 -
rtl8710_flash_erase [type] [offset]erases flash memory. Type must be"mass"or"sector". For sector erase, specify offset -
rtl8710_flash_mass_eraseperforms mass erase of entire flash chip -
rtl8710_flash_sector_erase [offset]erases single sector at specified offset -
rtl8710_flash_read [filename] [offset] [size]readssizebytes from flash atoffsettofilename -
rtl8710_flash_write [filename] [offset]writes file to flash atoffset, using configured buffer size chunks -
rtl8710_flash_verify [filename] [offset]verifies flash contents against file atoffset, using configured buffer size chunks
Configuration
-
rtl8710_flash_auto_erase [1/0]enables/disables automatic sector erase before write operations -
rtl8710_flash_auto_verify [1/0]enables/disables automatic verification after write operations
System Control
rtl8710_reboottriggers system reboot by writing0x05FA0007to AIRCR register @0xE000ED0C
Example Usage
# Read 1MB from flash
openocd -f interface/stlink-v2-1.cfg -f rtl8710.ocd -c "init" -c "reset halt" \
-c "rtl8710_flash_read_id" -c "rtl8710_flash_read dump.bin 0 1048576" -c "shutdown"
# write to flash with auto erase/verify
openocd -f interface/stlink-v2-1.cfg -f rtl8710.ocd -c "init" -c "reset halt" \
-c "rtl8710_flash_auto_erase 1" -c "rtl8710_flash_auto_verify 1" \
-c "rtl8710_flash_write dump.bin 0" -c "shutdown"
About
RTL8710 OpenOCD support based on work by Rebane (rebane@alkohol.ee)
This document and the attached source code is released under GPLv2.