diff options
| author | Felipe Balbi <[email protected]> | 2025-11-07 11:00:15 -0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-11-07 11:00:15 -0800 |
| commit | 5632acec18cc5906b1625a8facf530db56c73300 (patch) | |
| tree | abf2897f4b2f9814069c64611896be2d42cf2ce8 /tools | |
| parent | 47e383545f4aac3bfaec0563429cc721540e665a (diff) | |
| parent | 9590d94ee9ba016f65a13100c429fc56ffe58e40 (diff) | |
Merge pull request #1 from bogdan-petru/import/mcxa276-initial
feat(mcxa276): initial HAL import
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/run_and_attach_rtt.sh | 24 | ||||
| -rw-r--r-- | tools/run_jlink_noblock.sh | 76 |
2 files changed, 100 insertions, 0 deletions
diff --git a/tools/run_and_attach_rtt.sh b/tools/run_and_attach_rtt.sh new file mode 100644 index 000000000..13041d06b --- /dev/null +++ b/tools/run_and_attach_rtt.sh | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | #!/usr/bin/env bash | ||
| 2 | set -euo pipefail | ||
| 3 | |||
| 4 | ELF="${1:-target/thumbv8m.main-none-eabihf/debug/examples/hello}" | ||
| 5 | PROBE_ID="${2:-1fc9:0143:H3AYDQVQMTROB}" | ||
| 6 | CHIP="${3:-MCXA276}" | ||
| 7 | SPEED="${4:-1000}" | ||
| 8 | |||
| 9 | # 1) Flash & run using the existing run.sh (probe is in use only during this step) | ||
| 10 | ./run.sh "$ELF" | ||
| 11 | |||
| 12 | # 2) Give target a short moment to boot and set up RTT CB in RAM | ||
| 13 | sleep 0.5 | ||
| 14 | |||
| 15 | # 3) Attach RTT/defmt using probe-rs (no flashing) | ||
| 16 | exec probe-rs attach \ | ||
| 17 | --chip "$CHIP" \ | ||
| 18 | --probe "$PROBE_ID" \ | ||
| 19 | --protocol swd \ | ||
| 20 | --speed "$SPEED" \ | ||
| 21 | "$ELF" \ | ||
| 22 | --rtt-scan-memory \ | ||
| 23 | --log-format oneline | ||
| 24 | |||
diff --git a/tools/run_jlink_noblock.sh b/tools/run_jlink_noblock.sh new file mode 100644 index 000000000..3ea1f2b4b --- /dev/null +++ b/tools/run_jlink_noblock.sh | |||
| @@ -0,0 +1,76 @@ | |||
| 1 | #!/usr/bin/env bash | ||
| 2 | set -euo pipefail | ||
| 3 | |||
| 4 | ELF="${1:-}" | ||
| 5 | PROBE_ID="${2:-1366:0101:000600110607}" # default to your J-Link | ||
| 6 | CHIP="${3:-MCXA276}" | ||
| 7 | SPEED="${4:-1000}" | ||
| 8 | PORT="${PROBE_RS_GDB_PORT:-1337}" | ||
| 9 | |||
| 10 | if [[ -z "${ELF}" || ! -f "${ELF}" ]]; then | ||
| 11 | echo "Usage: $0 <elf> [probe-id] [chip] [speed-khz]" >&2 | ||
| 12 | exit 1 | ||
| 13 | fi | ||
| 14 | |||
| 15 | if ! command -v probe-rs >/dev/null 2>&1; then | ||
| 16 | echo "probe-rs not found (cargo install probe-rs --features cli)" >&2 | ||
| 17 | exit 1 | ||
| 18 | fi | ||
| 19 | if ! command -v gdb-multiarch >/dev/null 2>&1; then | ||
| 20 | echo "gdb-multiarch not found; install it (e.g., sudo apt install gdb-multiarch)." >&2 | ||
| 21 | exit 1 | ||
| 22 | fi | ||
| 23 | |||
| 24 | # Start probe-rs GDB server | ||
| 25 | SERVER_LOG=$(mktemp) | ||
| 26 | probe-rs gdb --chip "${CHIP}" --protocol swd --speed "${SPEED}" --non-interactive "${ELF}" --probe "${PROBE_ID}" \ | ||
| 27 | >"${SERVER_LOG}" 2>&1 & | ||
| 28 | GDB_SERVER_PID=$! | ||
| 29 | |||
| 30 | # Wait for readiness | ||
| 31 | for _ in {1..50}; do | ||
| 32 | if grep -q "Firing up GDB stub" "${SERVER_LOG}"; then break; fi | ||
| 33 | if grep -q "Connecting to the chip was unsuccessful" "${SERVER_LOG}"; then | ||
| 34 | echo "probe-rs gdb server failed. Log:" >&2 | ||
| 35 | sed -e 's/^/ /' "${SERVER_LOG}" >&2 || true | ||
| 36 | kill "${GDB_SERVER_PID}" 2>/dev/null || true | ||
| 37 | exit 1 | ||
| 38 | fi | ||
| 39 | sleep 0.1 | ||
| 40 | done | ||
| 41 | |||
| 42 | # GDB script: load, resume, detach | ||
| 43 | GDB_SCRIPT=$(mktemp) | ||
| 44 | cat >"${GDB_SCRIPT}" <<EOF | ||
| 45 | set pagination off | ||
| 46 | set confirm off | ||
| 47 | set mem inaccessible-by-default off | ||
| 48 | |||
| 49 | target remote :${PORT} | ||
| 50 | monitor halt | ||
| 51 | load | ||
| 52 | set language c | ||
| 53 | # Start clean from Reset vector in RAM | ||
| 54 | set {int}0xE000ED08 = 0x20000000 | ||
| 55 | set \$xpsr = 0x01000000 | ||
| 56 | set \$sp = 0x20020000 | ||
| 57 | set \$pc = Reset | ||
| 58 | monitor resume | ||
| 59 | detach | ||
| 60 | quit | ||
| 61 | EOF | ||
| 62 | |||
| 63 | # Run GDB to program and resume target, then exit (probe released) | ||
| 64 | if ! gdb-multiarch -q -x "${GDB_SCRIPT}" "${ELF}"; then | ||
| 65 | echo "GDB failed; server log:" >&2 | ||
| 66 | sed -e 's/^/ /' "${SERVER_LOG}" >&2 || true | ||
| 67 | kill "${GDB_SERVER_PID}" 2>/dev/null || true | ||
| 68 | exit 1 | ||
| 69 | fi | ||
| 70 | |||
| 71 | # Stop server now that we've detached | ||
| 72 | kill "${GDB_SERVER_PID}" 2>/dev/null || true | ||
| 73 | rm -f "${GDB_SCRIPT}" "${SERVER_LOG}" || true | ||
| 74 | |||
| 75 | echo "Flashed, resumed, and detached (probe free)." | ||
| 76 | |||
