int db_help_cmd(char *, char*, char*, char*);
int db_ldr_cmd(char*, char*, char*, char*);
int db_str_cmd(char*, char*, char*, char*);
-int db_dump_memory(char* cmd, char* param1, char* param2, char* param3);
int db_info_cmd(char*, char*, char*, char*);
int db_cmd_dbg(char*, char*, char*, char*);
int db_usb_cmd(char*, char*, char*, char*);
{"STR", "<Hex addr> <Hex value>, Store word", db_str_cmd},
{"STRH", "<Hex addr> <Hex value>, Store half word", db_str_cmd},
{"STRB", "<Hex addr> <Hex value>, Store byte", db_str_cmd},
- {"DUMP", "<Hex addr>, Dump memory", db_dump_memory},
{"INFO", ", Print debug information", db_info_cmd},
{"USB", ", usb releated command", db_usb_cmd},
{"INTR", ", intr releated command", db_intr_cmd},
}
if (cmd_not_found)
{
- zm_uart_send("Error, HELP for command list.\n\r", 31);
+ A_PRINTF("Error, HELP for command list.\n\r");
}
}
- zm_uart_send(">", 1);
+ A_PRINTF(">");
return;
}
{
A_STRCPY(cmd_line, cmd_buffer[cmd_buf_loc]);
*i = A_STRLEN(cmd_buffer[cmd_buf_loc]);
- zm_uart_send("\r>", 2);
- zm_uart_send(cmd_line, *i);
+ A_PRINTF("\r>");
+ A_PRINTF("%s", cmd_line);
}
break;
case 13 : /* Return */
pressed_time = 0;
cmd_line[*i] = 0;
- zm_uart_send("\n\r", 2);
+ A_PRINTF("\n\r");
if (*i != 0)
{
//Filter duplicated string in command history
if (*i > 0)
{
*i = *i-1;
- zm_uart_send("\b \b", 3);
+ A_PRINTF("\b \b");
}
break;
case 0 : //None
//}
cmd_line[*i] = ch;
*i = *i + 1;
- zm_uart_send(&ch, 1);
+ A_PRINTF("%c", ch);
}
}
}
else
{
ch = 7; /* Beep */
- zm_uart_send(&ch, 1);
+ A_PRINTF("%c", ch);
}
break;
} /* end of switch */
i = 0;
- zm_uart_send(ATH_DEBUGGER_VERSION_STR,
- A_STRLEN(ATH_DEBUGGER_VERSION_STR));
- zm_uart_send(ATH_COMMAND_LIST_STR,
- A_STRLEN(ATH_COMMAND_LIST_STR));
+ A_PRINTF("%s %s\n", ATH_DEBUGGER_VERSION_STR, ATH_COMMAND_LIST_STR);
while (command_table[i].cmd_func)
{
- zm_uart_send(command_table[i].cmd_str,
- A_STRLEN(command_table[i].cmd_str));
- zm_uart_send("\t", 1);
- zm_uart_send(command_table[i].help_str,
- A_STRLEN(command_table[i].help_str));
- zm_uart_send("\n\r", 2);
+ A_PRINTF("%s\t%s\n\r", command_table[i].cmd_str,
+ command_table[i].help_str);
i++;
}
return i;
{
if( addr == 0 )
{
- zm_uart_send("Error! bad address 0x%08x.\n\r", (unsigned long)addr);
+ A_PRINTF("Error! bad address 0x%08x.\n\r",
+ (unsigned long)addr);
return -1;
}
if (strcmp(cmd, "LDR") == 0)
db_hex_to_ascii(val, val_str);
db_hex_to_ascii(addr, addr_str);
- zm_uart_send(addr_str, A_STRLEN(addr_str));
- zm_uart_send(" : ", 3);
- zm_uart_send(val_str, A_STRLEN(val_str));
- zm_uart_send("\n\r", 2);
-
+ A_PRINTF("%s : %s\n\r", addr_str, val_str);
return 0;
}
else
{
- zm_uart_send("Error! Incorrect format.\n\r", 26);
+ A_PRINTF("Error! Incorrect format.\n\r");
return -1;
}
db_hex_to_ascii(val, val_str);
db_hex_to_ascii(addr, addr_str);
- zm_uart_send(addr_str, A_STRLEN(addr_str));
- zm_uart_send(" : ", 3);
- zm_uart_send(val_str, A_STRLEN(val_str));
- zm_uart_send("\n\r", 2);
-
+ A_PRINTF("%s : %s\n\r", addr_str, val_str);
return 0;
}
else
{
- zm_uart_send("Error! Incorrect format.\n\r", 26);
+ A_PRINTF("Error! Incorrect format.\n\r");
return -1;
}
}
-// macro extension the address to dump the memory
-#define FOUR_BYTE_HEX_DUMP(addr) (" %02x %02x %02x %02x", \
- *(uint8_t*)((addr)+3), *(uint8_t*)((addr)+2), \
- *(uint8_t*)((addr)+1), *(uint8_t*)((addr)))
-
-
-int db_dump_memory(char* cmd, char* param1, char* param2, char* param3)
-{
- unsigned long addr;
- unsigned long length;
- unsigned long ptrAddr;
- int i;
-
- if (db_ascii_to_hex(param1, &addr) != -1 &&
- (db_ascii_to_int(param2, &length) != -1))
- {
- // if no length, default is 128 bytes to dump
- if( length == 0 )
- length = 128;
- addr &= 0xfffffffc;
-
- A_PRINTF("length: %d\n\r", length);
-
- //zm_uart_send(" 7 6 5 4 3 2 1 0\n\r", 28);
- A_PRINTF(" 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00\n\r");
- A_PRINTF("------------------------------------------------------------\n\r");
- for (i=0; i<length/16; i++)
- {
- //zfUartSendHex((unsigned long)addr);
- A_PRINTF("%08x: ", (unsigned long)addr);
-
- ptrAddr = (unsigned long *)addr;
-
- // dump from MSB to LSB
- A_PRINTF FOUR_BYTE_HEX_DUMP(ptrAddr+12);
- A_PRINTF FOUR_BYTE_HEX_DUMP(ptrAddr+8);
- A_PRINTF(" -");
- A_PRINTF FOUR_BYTE_HEX_DUMP(ptrAddr+4);
- A_PRINTF FOUR_BYTE_HEX_DUMP(ptrAddr);
- A_PRINTF("\n\r");
- addr+=16;
- }
-
- // the rest of the byte to dump
- if( (length %16)!=0 )
- {
- A_PRINTF("%08x: ", (unsigned long)addr);
-
- // make the space, since we dump MSB first
- for(i=0; i<(16-(length %16)); i++)
- A_PRINTF(" ");
-
- // if less than 8 bytes, add 2 more space for " -"
- if( (length%16) < 8 )
- A_PRINTF(" ");
-
- for(i=0; i<length%16; i++)
- {
- // MSB first,
- A_PRINTF(" %02x", *(uint8_t*)((addr+(length%16)-1)-i));
-
- if((16-(length%16))+i==7)
- A_PRINTF(" -");
- }
- }
- A_PRINTF("\n\r");
- return 0;
- }
- return -1;
-}
-
LOCAL void dbg_timer_func(A_HANDLE alarm, void *data)
{
A_PRINTF("this is a timer alarm function 0x%08x\n\r", xthal_get_ccount());