X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=lib%2Fccdbg-command.c;h=74313bdf8ebbd0aea3485f32232b786aaafecc67;hp=38c006cb99c4ee303493b5baa59f75ad2211ebe0;hb=cc0495b7028f4b1189a00707d828a68534d1dea2;hpb=9025eb792861930e6af918d2727c4f5d97a69936 diff --git a/lib/ccdbg-command.c b/lib/ccdbg-command.c index 38c006cb..74313bdf 100644 --- a/lib/ccdbg-command.c +++ b/lib/ccdbg-command.c @@ -27,10 +27,12 @@ ccdbg_debug_mode(struct ccdbg *dbg) ccdbg_debug(CC_DEBUG_COMMAND, "#\n"); ccdbg_send(dbg, CC_CLOCK|CC_DATA|CC_RESET_N, CC_CLOCK|CC_DATA|CC_RESET_N); ccdbg_send(dbg, CC_CLOCK|CC_DATA|CC_RESET_N, CC_DATA ); + ccdbg_wait_reset(dbg); ccdbg_send(dbg, CC_CLOCK|CC_DATA|CC_RESET_N, CC_CLOCK|CC_DATA ); ccdbg_send(dbg, CC_CLOCK|CC_DATA|CC_RESET_N, CC_DATA ); ccdbg_send(dbg, CC_CLOCK|CC_DATA|CC_RESET_N, CC_CLOCK|CC_DATA ); ccdbg_send(dbg, CC_CLOCK|CC_DATA|CC_RESET_N, CC_DATA|CC_RESET_N); + ccdbg_wait_reset(dbg); } void @@ -41,10 +43,12 @@ ccdbg_reset(struct ccdbg *dbg) ccdbg_debug(CC_DEBUG_COMMAND, "#\n"); ccdbg_send(dbg, CC_CLOCK|CC_DATA|CC_RESET_N, CC_CLOCK|CC_DATA|CC_RESET_N); ccdbg_send(dbg, CC_CLOCK|CC_DATA|CC_RESET_N, CC_CLOCK|CC_DATA ); + ccdbg_wait_reset(dbg); ccdbg_send(dbg, CC_CLOCK|CC_DATA|CC_RESET_N, CC_CLOCK|CC_DATA ); ccdbg_send(dbg, CC_CLOCK|CC_DATA|CC_RESET_N, CC_CLOCK|CC_DATA ); ccdbg_send(dbg, CC_CLOCK|CC_DATA|CC_RESET_N, CC_CLOCK|CC_DATA ); ccdbg_send(dbg, CC_CLOCK|CC_DATA|CC_RESET_N, CC_CLOCK|CC_DATA|CC_RESET_N); + ccdbg_wait_reset(dbg); } uint8_t @@ -68,7 +72,14 @@ ccdbg_rd_config(struct ccdbg *dbg) uint16_t ccdbg_get_pc(struct ccdbg *dbg) { - return ccdbg_cmd_write_read16(dbg, CC_GET_PC, NULL, 0); + uint16_t pc1, pc2; + + pc1 = ccdbg_cmd_write_read16(dbg, CC_GET_PC, NULL, 0); + pc2 = ccdbg_cmd_write_read16(dbg, CC_GET_PC, NULL, 0); + if (pc1 != pc2) + fprintf (stderr, "Invalid pc %04x != %04x\n", + pc1, pc2); + return pc2; } uint8_t @@ -174,9 +185,9 @@ ccdbg_execute_hex_image(struct ccdbg *dbg, struct hex_image *image) ccdbg_write_hex_image(dbg, image, 0); ccdbg_set_pc(dbg, image->address); pc = ccdbg_get_pc(dbg); - printf ("pc starts at 0x%04x\n", pc); + ccdbg_debug(CC_DEBUG_EXECUTE, "pc starts at 0x%04x\n", pc); status = ccdbg_resume(dbg); - printf ("resume status: 0x%02x\n", status); + ccdbg_debug(CC_DEBUG_EXECUTE, "resume status: 0x%02x\n", status); return 0; }