Browse Source

Firmware/CLI: add commands 'hexdump' and 'loadraw'

Maximilian Rehkopf 12 years ago
parent
commit
d1cb50828c
1 changed files with 20 additions and 2 deletions
  1. 20 2
      src/cli.c

+ 20 - 2
src/cli.c

@@ -58,8 +58,8 @@ static char *curchar;
 
 /* Word lists */
 static char command_words[] =
-  "cd\0reset\0sreset\0dir\0ls\0test\0resume\0loadrom\0loadraw\0saveraw\0put\0d4\0vmode\0mapper\0settime\0time\0setfeature\0";
-enum { CMD_CD = 0, CMD_RESET, CMD_SRESET, CMD_DIR, CMD_LS, CMD_TEST, CMD_RESUME, CMD_LOADROM, CMD_LOADRAW, CMD_SAVERAW, CMD_PUT, CMD_D4, CMD_VMODE, CMD_MAPPER, CMD_SETTIME, CMD_TIME, CMD_SETFEATURE };
+  "cd\0reset\0sreset\0dir\0ls\0test\0resume\0loadrom\0loadraw\0saveraw\0put\0d4\0vmode\0mapper\0settime\0time\0setfeature\0hexdump\0";
+enum { CMD_CD = 0, CMD_RESET, CMD_SRESET, CMD_DIR, CMD_LS, CMD_TEST, CMD_RESUME, CMD_LOADROM, CMD_LOADRAW, CMD_SAVERAW, CMD_PUT, CMD_D4, CMD_VMODE, CMD_MAPPER, CMD_SETTIME, CMD_TIME, CMD_SETFEATURE, CMD_HEXDUMP };
 
 /* ------------------------------------------------------------------------- */
 /*   Parse functions                                                         */
@@ -288,6 +288,11 @@ static void cmd_loadrom(void) {
   set_mcu_ovr(0);
 }
 
+static void cmd_loadraw(void) {
+  uint32_t address = parse_unsigned(0,16777216);
+  load_sram((uint8_t*)curchar, address);
+}
+
 static void cmd_saveraw(void) {
   uint32_t address = parse_unsigned(0,16777216);
   uint32_t length = parse_unsigned(0,16777216);
@@ -391,6 +396,11 @@ void cmd_setfeature(void) {
   fpga_set_features(feat);
 }
 
+void cmd_hexdump(void) {
+  uint32_t offset = parse_unsigned(0, 16777215);
+  uint32_t len = parse_unsigned(0, 16777216);
+  sram_hexdump(offset, len);
+}
 /* ------------------------------------------------------------------------- */
 /*   CLI interface functions                                                 */
 /* ------------------------------------------------------------------------- */
@@ -481,6 +491,10 @@ void cli_loop(void) {
       cmd_loadrom();
       break;
 
+    case CMD_LOADRAW:
+      cmd_loadraw();
+      break;
+
     case CMD_SAVERAW:
       cmd_saveraw();
       break;
@@ -516,6 +530,10 @@ void cli_loop(void) {
     case CMD_SETFEATURE:
       cmd_setfeature();
       break;
+
+    case CMD_HEXDUMP:
+      cmd_hexdump();
+      break;
     }
   }
 }