jtagonizer

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 1e97450d418e9f688eccc4c9cf365a0fd2d6570c
parent 51048b297dd7c584297723aea1c8702a0f9d2647
Author: Brian Swetland <swetland@frotz.net>
Date:   Thu, 25 Sep 2014 22:29:10 -0700

tidier tables (in source and output)

Diffstat:
Mdap.c | 17++++++++---------
Mv7debug.h | 79+++++++++++++++++++++++++++++++++++++++++++++++++------------------------------
2 files changed, 57 insertions(+), 39 deletions(-)

diff --git a/dap.c b/dap.c @@ -238,30 +238,29 @@ void dumptable(DAP *dap, u32 n, u32 base) { u32 x, addr; int i; - printf("TABLE @ %08x\n", base); + printf("TABLE @%08x ", base); if (readinfo(dap, n, addr, &cid, &pid0, &pid1)) { - printf(" <error reading cid & pid>\n"); + printf("<error reading cid & pid>\n"); return; } if (dap_mem_rd32(dap, n, base + 0xFCC, &memtype)) { - printf(" <error reading memtype>\n"); + printf("<error reading memtype>\n"); return; } - printf(" CID %08x PID %08x %08d %dKB%s\n", cid, pid1, pid0, + printf("CID %08x PID %08x %08x %dKB%s\n", cid, pid1, pid0, 4 * (1 + ((pid1 & 0xF0) >> 4)), (memtype & 1) ? " SYSMEM": ""); for (i = 0; i < 128; i++) { if (dap_mem_rd32(dap, n, base + i * 4, &x)) break; if (x == 0) break; - addr = base + (x & 0xFFFFF000); - printf(" %02d: @%08x%s%s\n", i, addr, - (x & 1) ? " PRESENT" : "", (x & 2) ? " 32bit" : " 16bit"); if ((x & 3) != 3) continue; + addr = base + (x & 0xFFFFF000); if (readinfo(dap, n, addr, &cid, &pid0, &pid1)) { printf(" <error reading cid & pid>\n"); continue; } - printf(" CID %08x PID %08x %08d %dKB%s\n", cid, pid1, pid0, + printf(" %02d: @%08x CID %08x PID %08x %08x %dKB\n", + i, addr, cid, pid1, pid0, 4 * (1 + ((pid1 & 0xF0) >> 4))); if (((cid >> 12) & 0xF) == 1) { dumptable(dap, n, addr); @@ -310,7 +309,7 @@ int main(int argc, char **argv) { #if 1 for (n = 0; n < 8; n++) { x = 0xefefefef; - dap_mem_rd32(dap, 0, n*4, &x); + dap_mem_rd32(dap, 1, 0x80090FE0 + n*4, &x); printf("%08x: %08x\n", n*4, x); } #endif diff --git a/v7debug.h b/v7debug.h @@ -1,35 +1,54 @@ -// ARM v7 Debug Interface +// ARM Debug Interface // See: Cortex R5 r1p2 TRM // http://infocenter.arm.com/help/topic/com.arm.doc.ddi0460d/DDI0460D_cortex_r5_r1p2_trm.pdf -#define V7DBGDIDR 0x000 // Debug ID Register -#define V7DBGWFAR 0x018 // Watchpoint Fault Address Register -#define V7DBGVCR 0x01C // Vector Catch Register -#define V7DBGECR 0x024 // ? -#define V7DBGDSCCR 0x028 // Debug State Cache Control Register -#define V7DBGDSMCR 0x02C //XXX -#define V7DBGDTRRX 0x080 // Data Transfer Register (host->target) -#define V7DBGITR 0x084 // Instruction Transfer Register -#define V7DBGDSCR 0x088 // Debug Status and Control Register -#define V7DBGDTRTX 0x08C // Data Transfer Register (target->host) -#define V7DBGDRCR 0x090 // Debug Run Control Register -#define V7DBGPCSR 0x0A0 // ? -#define V7DBGCIDSR 0x0A4 // ? -#define V7DBGBVR 0x100 // Breakpoint Value Registers -#define V7DBGBCR 0x140 // Breakpoint Control Registers -#define V7DBGWVR 0x180 // Watchpoint Value Registers -#define V7DBGWCR 0x1C0 // Watchpoint Control Registers -#define V7DBGOSLAR 0x300 // ? -#define V7DBGOSLSR 0x304 // Operating System Lock Status Register -#define V7DBGOSSRR 0x308 // ? -#define V7DBGPRCR 0x310 // Device Power-Down and Reset Control Register -#define V7DBGPRSR 0x314 // Device Power-Down and Reset Status Register -#define V7DBGLAR 0xFB0 // Lock Access Register -#define V7DBGLSR 0xFB4 // Lock Status Register -#define V7DBGAUTHSTATUS 0xDB8 // Authentication Status Register -#define V7DBGDEVID 0xFC8 // Device ID -#define V7DBGDEVTYPE 0xFCC // Device Type -#define V7DBGPID0 0xFD0 -#define V7DBGCID0 0xFF0 +#define DBGDIDR 0x000 // Debug ID Register +#define DBGWFAR 0x018 // Watchpoint Fault Address Register +#define DBGVCR 0x01C // Vector Catch Register +#define DBGECR 0x024 // ? +#define DBGDSCCR 0x028 // Debug State Cache Control Register +#define DBGDSMCR 0x02C // ? +#define DBGDTRRX 0x080 // Data Transfer Register (host->target) +#define DBGITR 0x084 // Instruction Transfer Register +#define DBGDSCR 0x088 // Debug Status and Control Register +#define DBGDTRTX 0x08C // Data Transfer Register (target->host) +#define DBGDRCR 0x090 // Debug Run Control Register +#define DBGPCSR 0x0A0 // ? +#define DBGCIDSR 0x0A4 // ? +#define DBGBVR 0x100 // Breakpoint Value Registers +#define DBGBCR 0x140 // Breakpoint Control Registers +#define DBGWVR 0x180 // Watchpoint Value Registers +#define DBGWCR 0x1C0 // Watchpoint Control Registers +#define DBGOSLAR 0x300 // ? +#define DBGOSLSR 0x304 // Operating System Lock Status Register +#define DBGOSSRR 0x308 // ? +#define DBGPRCR 0x310 // Device Power-Down and Reset Control Register +#define DBGPRSR 0x314 // Device Power-Down and Reset Status Register +#define DBGLAR 0xFB0 // Lock Access Register +#define DBGLSR 0xFB4 // Lock Status Register +#define DBGAUTHSTATUS 0xDB8 // Authentication Status Register +#define DBGDEVID 0xFC8 // Device ID +#define DBGDEVTYPE 0xFCC // Device Type +#define DBGPID0 0xFD0 +#define DBGCID0 0xFF0 + + +#define CID_ROM_TABLE 0xB105100D +#define CID_CORESIGHT 0xB105900D + +// See: A9 TRM +#define PID0_DEBUG 0x000BBC09 + +// See: Zynq TRM +#define PID0_CTI 0x002BB906 +#define PID0_PTM 0x001BB950 +#define PID0_ETB 0x003BB907 +#define PID0_FTM 0x000C9001 +#define PID0_FUNNEL 0x001BB908 +#define PID0_ITM 0x002BB913 +#define PID0_TPIU 0x004BB912 +// 0x000BB4A9 +// 0x000BB9A0 +// 0x021893B2