diff rvinterf/etmsync/dspapidump.c @ 0:e7502631a0f9

initial import from freecalypso-sw rev 1033:5ab737ac3ad7
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 11 Jun 2016 00:13:35 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rvinterf/etmsync/dspapidump.c	Sat Jun 11 00:13:35 2016 +0000
@@ -0,0 +1,39 @@
+/*
+ * This utility uses ETM in synchronous mode to read and dump the contents
+ * of the DSP API RAM in a target Calypso GSM device while the firmware is
+ * running.
+ */
+
+#include <sys/types.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <strings.h>
+#include <stdint.h>
+#include <endian.h>
+#include "exitcodes.h"
+
+#define	APIF_ADDR		0xFFD00000
+#define	API_SIZE_IN_WORDS	0x2000
+
+single_op_main()
+{
+	uint16_t buf[64], *linebase;
+	unsigned off;
+	int rc, i, j;
+
+	for (off = 0; off < API_SIZE_IN_WORDS; ) {
+		rc = do_memory_read_16(APIF_ADDR + off * 2, buf, 0x40);
+		if (rc)
+			return(rc);
+		for (i = 0; i < 8; i++) {
+			printf("%04X:", off);
+			linebase = buf + i * 8;
+			for (j = 0; j < 8; j++)
+				printf(" %04X", le16toh(linebase[j]));
+			putchar('\n');
+			off += 8;
+		}
+	}
+	return(0);
+}