X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=ccdbg.h;h=0f07e2e90a35a5b162409064e3fecac13940a436;hp=19cf8fa3fe7a29ca503e7ddde5ceb678f0bef575;hb=807e2adacb025af77bb53c03209e9c8e0d7a5f95;hpb=3709ec3205cfb152b6568f3ea505c67fe7504c2a diff --git a/ccdbg.h b/ccdbg.h index 19cf8fa3..0f07e2e9 100644 --- a/ccdbg.h +++ b/ccdbg.h @@ -33,8 +33,8 @@ #undef USE_KERNEL #ifdef USE_KERNEL #include -#define CC_DATA CP2101_GPIO_MASK(0) -#define CC_CLOCK CP2101_GPIO_MASK(1) +#define CC_CLOCK CP2101_GPIO_MASK(0) +#define CC_DATA CP2101_GPIO_MASK(1) #define CC_RESET_N CP2101_GPIO_MASK(2) #else #define CC_CLOCK 0x1 @@ -45,7 +45,7 @@ /* painfully slow for now */ -#define CC_CLOCK_US (100 * 1000) +#define CC_CLOCK_US (50) struct ccdbg { usb_dev_handle *usb_dev; @@ -88,9 +88,13 @@ struct ccdbg { #define CC_RESUME 0x4c #define CC_DEBUG_INSTR(n) (0x54|(n)) #define CC_STEP_INSTR 0x5c -#define CC_STEP_REPLACE (0x64|(n)) +#define CC_STEP_REPLACE(n) (0x64|(n)) #define CC_GET_CHIP_ID 0x68 +#define CC_DEBUG_BITBANG 0x00000001 +#define CC_DEBUG_COMMAND 0x00000002 +#define CC_DEBUG_INSTRUCTIONS 0x00000004 + /* ccdbg-command.c */ void ccdbg_debug_mode(struct ccdbg *dbg); @@ -99,18 +103,55 @@ void ccdbg_reset(struct ccdbg *dbg); uint8_t -ccdbg_read_status(struct ccdbg *dbg); +ccdbg_chip_erase(struct ccdbg *dbg); + +uint8_t +ccdbg_wr_config(struct ccdbg *dbg, uint8_t config); uint8_t ccdbg_rd_config(struct ccdbg *dbg); +uint8_t +ccdbg_get_pc(struct ccdbg *dbg); + +uint8_t +ccdbg_read_status(struct ccdbg *dbg); + +uint8_t +ccdbg_set_hw_brkpnt(struct ccdbg *dbg, uint8_t number, uint8_t enable, uint16_t addr); + +uint8_t +ccdbg_halt(struct ccdbg *dbg); + +uint8_t +ccdbg_resume(struct ccdbg *dbg); + +uint8_t +ccdbg_debug_instr(struct ccdbg *dbg, uint8_t *instr, int nbytes); + +uint8_t +ccdbg_step_instr(struct ccdbg *dbg); + +uint8_t +ccdbg_step_replace(struct ccdbg *dbg, uint8_t *instr, int nbytes); + uint16_t ccdbg_get_chip_id(struct ccdbg *dbg); -/* ccdbg-io.c */ +uint8_t +ccdbg_execute(struct ccdbg *dbg, uint8_t *inst); + +/* ccdbg-debug.c */ void -ccdbg_quarter_clock(struct ccdbg *dbg); +ccdbg_debug(int level, char *format, ...); +void +ccdbg_add_debug(int level); + +void +ccdbg_clear_debug(int level); + +/* ccdbg-io.c */ void ccdbg_half_clock(struct ccdbg *dbg); @@ -153,6 +194,42 @@ ccdbg_cmd_write_read8(struct ccdbg *dbg, uint8_t cmd, uint8_t *data, int len); uint16_t ccdbg_cmd_write_read16(struct ccdbg *dbg, uint8_t cmd, uint8_t *data, int len); +void +ccdbg_send(struct ccdbg *dbg, uint8_t mask, uint8_t set); + +void +ccdbg_send_bit(struct ccdbg *dbg, uint8_t bit); + +void +ccdbg_send_byte(struct ccdbg *dbg, uint8_t byte); + +void +ccdbg_send_bytes(struct ccdbg *dbg, uint8_t *bytes, int nbytes); + +uint8_t +ccdbg_recv_bit(struct ccdbg *dbg, int first); + +uint8_t +ccdbg_recv_byte(struct ccdbg *dbg, int first); + +void +ccdbg_recv_bytes(struct ccdbg *dbg, uint8_t *bytes, int nbytes); + +void +ccdbg_print(char *format, uint8_t mask, uint8_t set); + +/* ccdbg-manual.c */ + +void +ccdbg_manual(struct ccdbg *dbg, FILE *input); + +/* ccdbg-memory.c */ +uint8_t +ccdbg_write_memory(struct ccdbg *dbg, uint16_t addr, uint8_t *bytes, int nbytes); + +uint8_t +ccdbg_read_memory(struct ccdbg *dbg, uint16_t addr, uint8_t *bytes, int nbytes); + /* cp-usb.c */ void cp_usb_init(struct ccdbg *dbg);