X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=ccdbg.h;h=05abc97fb3b4993eae9caf6bfff3f0461b773a5b;hp=fc0cdd3c52899fd2cec8a03c79809b342a91ffbc;hb=dc03adc179669d41e3551d74b3c5a60db41ff217;hpb=fa168f963f8b00144d12aa2770e9c0917cfae123 diff --git a/ccdbg.h b/ccdbg.h index fc0cdd3c..05abc97f 100644 --- a/ccdbg.h +++ b/ccdbg.h @@ -45,7 +45,7 @@ /* painfully slow for now */ -#define CC_CLOCK_US (1000) +#define CC_CLOCK_US (50) struct ccdbg { usb_dev_handle *usb_dev; @@ -93,6 +93,7 @@ struct ccdbg { #define CC_DEBUG_BITBANG 0x00000001 #define CC_DEBUG_COMMAND 0x00000002 +#define CC_DEBUG_INSTRUCTIONS 0x00000004 /* ccdbg-command.c */ void @@ -137,7 +138,8 @@ ccdbg_step_replace(struct ccdbg *dbg, uint8_t *instr, int nbytes); uint16_t ccdbg_get_chip_id(struct ccdbg *dbg); - +uint8_t +ccdbg_execute(struct ccdbg *dbg, uint8_t *inst); /* ccdbg-debug.c */ void @@ -149,10 +151,31 @@ ccdbg_add_debug(int level); void ccdbg_clear_debug(int level); -/* ccdbg-io.c */ +/* ccdbg-hex.c */ +struct hex_record { + uint8_t length; + uint16_t address; + uint8_t type; + uint8_t checksum; + uint8_t data[0]; +}; + +struct hex_file { + int nrecord; + struct hex_record *records[0]; +}; + +#define HEX_RECORD_NORMAL 0x00 +#define HEX_RECORD_EOF 0x01 +#define HEX_RECORD_EXTENDED_ADDRESS 0x02 + +struct hex_file * +ccdbg_hex_file_read(FILE *file, char *name); + void -ccdbg_quarter_clock(struct ccdbg *dbg); +ccdbg_hex_file_free(struct hex_file *hex); +/* ccdbg-io.c */ void ccdbg_half_clock(struct ccdbg *dbg); @@ -224,6 +247,16 @@ ccdbg_print(char *format, uint8_t mask, uint8_t set); 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); + +uint8_t +ccdbg_write_hex(struct ccdbg *dbg, struct hex_file *hex); + /* cp-usb.c */ void cp_usb_init(struct ccdbg *dbg);