#!/usr/bin/env bash # Dump every GPIOB register, to see how the port is actually configured. # # Layout from py32f071xB.h: MODER 0x00, OTYPER 0x04, OSPEEDR 0x08, PUPDR 0x0C, # IDR 0x10, ODR 0x14. set -uo pipefail # shellcheck source=tools/uvk5_elf.sh . "$(dirname "$0")/uvk5_elf.sh" ELF=$(uvk5_find_elf) || { echo "SKIP no firmware found; set ELF or put one in assets/firmware" >&2; exit 0; } BASE=0x50000400 SCRIPT=$(mktemp --suffix=.gdb) trap 'rm -f "$SCRIPT"' EXIT { echo "set confirm off" echo "set pagination off" echo "target remote :1234" echo "printf \"MODER \"" echo "x/1xw $((BASE + 0x00))" echo "printf \"PUPDR \"" echo "x/1xw $((BASE + 0x0c))" echo "printf \"IDR \"" echo "x/1xw $((BASE + 0x10))" echo "printf \"ODR \"" echo "x/1xw $((BASE + 0x14))" echo "detach" echo "quit" } >"$SCRIPT" gdb-multiarch -batch -x "$SCRIPT" "$ELF" 2>/dev/null | grep -E "MODER|PUPDR|IDR|ODR|0x5000"