]>
cloudbase.mooo.com Git - z180-stamp.git/blob - avr/debug.c
4 #include <avr/eeprom.h>
15 static void print_blanks(uint_fast8_t count
)
22 void dump_ram(const uint8_t *startaddr
, int len
, char *title
)
25 uint8_t pre
= (size_t) startaddr
% 16;
26 const uint8_t *addr
= (uint8_t *) ((size_t) startaddr
& ~0x0f);
31 printf_P(PSTR("%s\n"),title
);
37 printf_P(PSTR(" %.4x:"), (size_t) addr
);
38 print_blanks(3 * pre
);
39 for (i
= pre
; i
< llen
; i
++)
40 printf_P(PSTR(" %.2x"), addr
[i
]);
41 print_blanks(3 * (16 - i
+ 1) + pre
);
42 for (i
= pre
; i
< llen
; i
++)
43 printf_P(PSTR("%c"), isprint(addr
[i
]) ? addr
[i
] : '.');
54 extern unsigned int __brkval
;
56 dump_ram((uint8_t *) __malloc_heap_start
,
57 __brkval
- (unsigned int) __malloc_heap_start
,
61 /* TODO: combine with dump_ram() */
62 void dump_eep(const uint8_t *addr
, unsigned int len
)
67 printf_P(PSTR("eeprom dump:"));
69 printf_P(PSTR("\n 0x%.4x:"), (unsigned int) addr
);
70 for (i
= 0; i
<16; i
++)
71 buf
[i
] = eeprom_read_byte(addr
+ i
);
72 for (i
= 0; i
<16; i
++)
73 printf_P(PSTR(" %.2x"), buf
[i
]);
75 for (i
= 0; i
<16; i
++)
76 printf_P(PSTR("%c"), isprint(buf
[i
]) ? buf
[i
] : '.');
79 len
-= len
> 16 ? 16 : len
;
88 int do_dump_eep(cmd_tbl_t
*cmdtp
, int flag
, int argc
, char * const argv
[])
96 /* We use the last specified parameters, unless new ones are
103 return CMD_RET_USAGE
;
105 if ((flag
& CMD_FLAG_REPEAT
) == 0) {
106 /* Address is specified since argc > 1 */
107 addr
= (const uint8_t *) (size_t) strtoul(argv
[1], NULL
, 16);
109 /* If another parameter, it is the length to display. */
111 length
= (uint16_t) strtoul(argv
[2], NULL
, 16);
114 /* Print the lines. */
115 dump_eep(addr
, length
);
120 int do_eep_cp(cmd_tbl_t
*cmdtp
, int flag
, int argc
, char * const argv
[])
122 uint16_t src
, dest
, count
;
129 return CMD_RET_USAGE
;
131 src
= (size_t) strtoul(argv
[1], NULL
, 16);
132 dest
= (size_t) strtoul(argv
[2], NULL
, 16);
133 count
= (size_t) strtoul(argv
[3], NULL
, 16);
136 debug("src > EEPROM size: 0x%04x\n", src
);
140 debug("dest > EEPROM size: 0x%04x\n", dest
);
143 if (count
> E2END
+1) {
144 debug("count > EEPROM size: 0x%04x\n", count
);
148 debug("Zero length ???\n");
159 while (count
-- > 0) {
161 data
= eeprom_read_byte((uint8_t *) src
);
162 eeprom_write_byte((uint8_t *) dest
, data
);