static int db_hex_to_ascii(unsigned long, char *);
static void zf_debug_task(void);
-int db_info_intr(char* cmd, char* param1, char* param2, char* param3);
-
-extern u32_t this_is_global_variables;
-
/* Console debug command table */
const struct DB_COMMAND_STRUCT command_table[] =
{
uint16_t gvLen;
int pressed_time;
-//////////////////////////////////////////////////
-#define MAX_REG_NUM 16
+static void db_incorect_format(void)
+{
+ A_PRINTF("Error! Incorrect format.\n\r");
+}
-typedef struct reg_elem {
- unsigned char valid;
- unsigned char mode; // byte, half-word word
- unsigned long reg_addr;
-} t_reg_elem;
+static void db_unknown_command(void)
+{
+ A_PRINTF("Error! Unknown command.\n\r");
+}
-t_reg_elem reg_buffer[MAX_REG_NUM];
+static void db_print_dump(const char *mem1, const char *mem2)
+{
+ unsigned int i = 0;
+ const char *tmp;
+
+ do {
+ if (i == 0) {
+ A_PRINTF("\n\r%06x: ", mem1);
+ tmp = mem1;
+ }
-//////////////////////////////////////////////////
+ A_PRINTF("%04x ", *(uint16_t *)mem1);
+
+ mem1 += 2;
+ i++;
+
+ if (i == 8) {
+ A_PRINTF(" ");
+ do {
+ if (*tmp > 0x20 && *tmp < 0x7e)
+ A_PRINTF("%c", *tmp);
+ else
+ A_PRINTF(".");
+ tmp++;
+ } while (tmp < mem1);
+ i = 0;
+ }
+ } while (mem1 < mem2);
+ A_PRINTF("\n\r");
+}
static void zf_debug_init(void)
{
A_PRINTF("%s : %s\n\r", addr_str, val_str);
return 0;
}
- else
- {
- A_PRINTF("Error! Incorrect format.\n\r");
- return -1;
- }
+ db_incorect_format();
+ return -1;
}
static int db_str_cmd(char *cmd, char *param1, char *param2, char *param3)
A_PRINTF("%s : %s\n\r", addr_str, val_str);
return 0;
}
- else
- {
- A_PRINTF("Error! Incorrect format.\n\r");
- return -1;
- }
+ db_incorect_format();
+ return -1;
}
LOCAL void dbg_timer_func(A_HANDLE alarm, void *data)
return 0;
}
-uint32_t usb_swap_flag = 0; //default
-uint32_t usb_swap_flag_changed = 0;
static int db_usb_cmd(char *cmd, char *param1, char *param2, char *param3)
{
A_PRINTF("THIS IS USB COMMAND\n\r");
HTC_Ready(htc_handle);
}
-#define WRITE_USB_DESC(pDesc, Offset) \
- { \
- uint16_t *pSrc = 0; \
- uint16_t mSize = 0; \
- pSrc = (uint16_t *)(pDesc); \
- mSize = (*pSrc&0xff)/2; \
- A_PRINTF("0x%04x, 0x%04x, 0x%08x\n", Offset, mSize, pSrc); \
- A_EEP_WRITE(Offset, mSize, pSrc); \
- A_DELAY_USECS(500); \
- }
-
-#define READ_USB_DESC(pDesc, Offset, Size) \
- { \
- uint16_t *pDst; \
- uint16_t mSize; \
- pDst = (uint16_t *)pDesc; \
- A_EEP_READ(Offset, 1, &mSize); \
- mSize = mSize &0xff; \
- mSize = mSize/2; \
- if( mSize > Size) \
- mSize = Size; \
- A_PRINTF("0x%04x, 0x%04x, 0x%08x\n", Offset, mSize, pDst); \
- A_EEP_READ(Offset, mSize, pDst); \
- A_DELAY_USECS(500); \
- }
-
-
-////////////////////////////////////////////////////////////////////////////////////////////////
-
-extern uint16_t UsbDeviceDescriptor[];
-extern uint16_t String00Descriptor[];
-extern uint16_t String10Descriptor[];
-extern uint16_t String20Descriptor[];
-extern uint16_t String30Descriptor[];
-
static int db_wdt_cmd(char *cmd, char *param1, char *param2, char *param3)
{
if ( strcmp(param1, "rst") == 0 )
{
- A_PRINTF(" reseting.....................\n\n\r");
+ A_PRINTF(" reseting...\n\n\r");
A_WDT_RESET();
}
else if( strcmp(param1, "on") == 0 )
}
else if ( strcmp(param1, "boot") == 0 )
{
+ A_PRINTF("Last BOOT is ");
if (ENUM_WDT_BOOT == A_WDT_LASTBOOT() )
- A_PRINTF("LAST BOOT IS %s", "wdt");
+ A_PRINTF("wdt");
else
- A_PRINTF("LAST BOOT IS %s", "normal boot");
+ A_PRINTF("normal boot");
}
else if (strcmp(param1, "loop") == 0 )
{
T_WDT_CMD wdt_cmd;
uint32_t time_offset;
- A_PRINTF(" doing the wdt reseting................\n\n\r");
+ A_PRINTF(" doing the wdt reseting...");
if( db_ascii_to_hex(param2, &time_offset)!=0 )
{
if( time_offset < 0 || time_offset >0xffffffff )
time_offset = 0xffffff;
}
- A_PRINTF(" doing the wdt reseting (wdt tick: 0x%08x................\n\n\r", time_offset);
+ A_PRINTF(" (wdt tick: 0x%08x...\n\n\r", time_offset);
wdt_cmd.cmd = WDT_TIMEOUT;
wdt_cmd.timeout = time_offset;
{
T_WDT_CMD wdt_cmd;
uint32_t time_offset;
- A_PRINTF(" doing the wdt reseting................\n\n\r");
+ A_PRINTF(" doing the wdt reseting...");
if( db_ascii_to_hex(param3, &time_offset)!=0 )
{
if( time_offset < 0 || time_offset >0xffffffff )
time_offset = 0xffffff;
}
- A_PRINTF(" doing the wdt reseting (wdt tick: 0x%08x................\n\n\r", time_offset);
+ A_PRINTF(" (wdt tick: 0x%08x...\n\n\r", time_offset);
wdt_cmd.cmd = WDT_TIMEOUT;
wdt_cmd.timeout = time_offset;
return 0;
}
- else
- {
- A_PRINTF("Error! Incorrect format.\n\r");
- return -1;
- }
+
+ db_incorect_format();
+ return -1;
}
else if (strcmp(param2, "b") == 0)
{
return 0;
}
- else
- {
- A_PRINTF("Error! Incorrect format.\n\r");
- return -1;
- }
+
+ db_incorect_format();
+ return -1;
+
}
else if (strcmp(param1, "c") == 0)
{
A_PRINTF("\n\r");
return 0;
}
- else
- {
- A_PRINTF("Error! Unknown command.\n\r");
- return -1;
- }
+
+ db_unknown_command();
+ return -1;
}
/* Serial Flash -> Program */
A_PRINTF("\n\r");
return 0;
}
- else
- {
- A_PRINTF("Error! Incorrect format.\n\r");
- return -1;
- }
+
+ db_incorect_format();
+ return -1;
}
/* Serial Flash -> Read, Fast Read to UART */
fast = 1;
else
{
- A_PRINTF("Error! Unknown command.\n\r");
+ db_unknown_command();
return -1;
}
A_PRINTF("\n\r");
return 0;
}
- else
- {
- A_PRINTF("Error! Incorrect format.\n\r");
- return -1;
- }
+
+ db_incorect_format();
+ return -1;
}
/* Serial Flash -> Read, Fast Read to Memory */
fast = 1;
else
{
- A_PRINTF("Error! Unknown command.\n\r");
+ db_unknown_command();
return -1;
}
A_PRINTF("\n\r");
return 0;
}
- else
- {
- A_PRINTF("Error! Incorrect format.\n\r");
- return -1;
- }
+
+ db_incorect_format();
+ return -1;
}
/* Serial Flash -> Read Status Register */
A_PRINTF("memcmp(buf1, buf2, len) = %d\n\r", A_MEMCMP(buf1, buf2, len));
return 0;
}
- else
- {
- A_PRINTF("Error! Incorrect format.\n\r");
- return -1;
- }
+
+ db_incorect_format();
+ return -1;
}
/* Memory Dump */
static int db_cmd_memdump(char *cmd, char *param1, char *param2, char *param3)
{
- A_UINT32 i;
- unsigned long addr1, addr2, t_addr;
- A_UINT32 *val;
+ unsigned long addr1, addr2;
if (db_ascii_to_hex(param1, &addr1) != -1 && db_ascii_to_hex(param2, &addr2) != -1 && addr1 < addr2 && addr1%4 == 0)
{
- A_PRINTF("addr data data data data data data data data\n\r");
- A_PRINTF("====== ======== ======== ======== ======== ======== ======== ======== ========");
-
- for (i = 0, t_addr = addr1; t_addr < addr2; i++, t_addr += 4)
- {
- if ((i%8) == 0)
- A_PRINTF("\n\r%06X ", t_addr);
-
- val = (A_UINT32 *)t_addr;
- A_PRINTF("%08X ", *val);
- }
-
- A_PRINTF("\n\r");
+ db_print_dump((const char *)addr1, (const char *)addr2);
return 0;
}
- else
- {
- A_PRINTF("Error! Incorrect format.\n\r");
- return -1;
- }
+
+ db_incorect_format();
+ return -1;
}
void cmnos_dbg_module_install(struct dbg_api *apis)
{