view rvinterf/etmsync/memcmd.c @ 384:3eb92855f7b9
fcup-smsendpdu program written, compiles
author |
Mychaela Falconia <falcon@freecalypso.org> |
date |
Fri, 09 Mar 2018 03:29:40 +0000 (2018-03-09) |
parents |
e7502631a0f9 |
children |
|
line source
/*
* User commands for reading memory regions and Calypso die ID via ETM
*/
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include "etm.h"
#include "tm3.h"
#include "limits.h"
#include "localtypes.h"
#include "exitcodes.h"
static void
memdump_line(addr, buf, len)
u32 addr;
u_char *buf;
{
int i, c;
printf("%08X: ", addr);
for (i = 0; i < 16; i++) {
if (i < len)
printf("%02X ", buf[i]);
else
fputs(" ", stdout);
if (i == 7 || i == 15)
putchar(' ');
}
for (i = 0; i < len; i++) {
c = buf[i];
if (c < ' ' || c > '~')
c = '.';
putchar(c);
}
putchar('\n');
}
cmd_memdump(argc, argv)
char **argv;
{
u_char databuf[MAX_MEMREAD_BYTES];
u32 memaddr;
int rc, sz, off, l;
memaddr = strtoul(argv[1], 0, 16);
sz = strtoul(argv[2], 0, 16);
rc = do_memory_read(memaddr, databuf, sz);
if (rc)
return(rc);
for (off = 0; off < sz; off += 16) {
l = sz - off;
if (l > 16)
l = 16;
memdump_line(memaddr + off, databuf + off, l);
}
return(0);
}
cmd_omemdump(argc, argv)
char **argv;
{
u_char databuf[TM3_MEMREAD_MAX];
u32 memaddr;
int rc, sz, off, l;
memaddr = strtoul(argv[1], 0, 16);
sz = strtoul(argv[2], 0, 16);
rc = do_memory_read_tm3(memaddr, databuf, sz);
if (rc)
return(rc);
for (off = 0; off < sz; off += 16) {
l = sz - off;
if (l > 16)
l = 16;
memdump_line(memaddr + off, databuf + off, l);
}
return(0);
}
cmd_dieid()
{
u_char buf[8];
int rc;
rc = do_dieid_read(buf);
if (rc)
return(rc);
printf("%02X %02X %02X %02X %02X %02X %02X %02X\n", buf[0], buf[1],
buf[2], buf[3], buf[4], buf[5], buf[6], buf[7]);
return(0);
}