main: Add peek and poke commands
This commit is contained in:
parent
48710a3b69
commit
a066600558
1 changed files with 50 additions and 1 deletions
51
main.c
51
main.c
|
@ -6,7 +6,7 @@
|
||||||
#include "serial.h"
|
#include "serial.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
|
||||||
#define AUTOMATED
|
//#define AUTOMATED
|
||||||
|
|
||||||
#if !defined(AUTOMATED)
|
#if !defined(AUTOMATED)
|
||||||
#define PROMPT "fernly> "
|
#define PROMPT "fernly> "
|
||||||
|
@ -342,6 +342,8 @@ static int loop(void)
|
||||||
|
|
||||||
static int cmd_help(int argc, char **argv);
|
static int cmd_help(int argc, char **argv);
|
||||||
static int cmd_hex(int argc, char **argv);
|
static int cmd_hex(int argc, char **argv);
|
||||||
|
static int cmd_peek(int argc, char **argv);
|
||||||
|
static int cmd_poke(int argc, char **argv);
|
||||||
static int cmd_swi(int argc, char **argv);
|
static int cmd_swi(int argc, char **argv);
|
||||||
static int cmd_reboot(int argc, char **argv);
|
static int cmd_reboot(int argc, char **argv);
|
||||||
static int cmd_args(int argc, char **argv);
|
static int cmd_args(int argc, char **argv);
|
||||||
|
@ -367,6 +369,16 @@ static struct {
|
||||||
.name = "hex",
|
.name = "hex",
|
||||||
.help = "Print area of memory as hex",
|
.help = "Print area of memory as hex",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.func = cmd_peek,
|
||||||
|
.name = "peek",
|
||||||
|
.help = "Look at one area of memory",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.func = cmd_poke,
|
||||||
|
.name = "poke",
|
||||||
|
.help = "Write a value to an area of memory",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.func = cmd_irq,
|
.func = cmd_irq,
|
||||||
.name = "irq",
|
.name = "irq",
|
||||||
|
@ -430,6 +442,43 @@ int cmd_hex(int argc, char **argv)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int cmd_peek(int argc, char **argv)
|
||||||
|
{
|
||||||
|
uint32_t offset;
|
||||||
|
uint32_t val;
|
||||||
|
|
||||||
|
if (argc < 1) {
|
||||||
|
printf("Usage: peek [offset\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
offset = _strtoul(argv[0], NULL, 0);
|
||||||
|
|
||||||
|
printf("Value at 0x%08x: ", offset);
|
||||||
|
printf("0x%08x\n", *((volatile uint32_t *)offset));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int cmd_poke(int argc, char **argv)
|
||||||
|
{
|
||||||
|
uint32_t offset;
|
||||||
|
uint32_t val;
|
||||||
|
|
||||||
|
if (argc < 2) {
|
||||||
|
printf("Usage: poke [offset] [val]\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
offset = _strtoul(argv[0], NULL, 0);
|
||||||
|
val = _strtoul(argv[1], NULL, 0);
|
||||||
|
|
||||||
|
printf("Setting value at 0x%08x to 0x%08x: ", offset, val);
|
||||||
|
writel(val, offset);
|
||||||
|
printf("Ok\n");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int cmd_swi(int argc, char **argv)
|
int cmd_swi(int argc, char **argv)
|
||||||
{
|
{
|
||||||
printf("Generating SWI...\n");
|
printf("Generating SWI...\n");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue