Add ability to read/write arbitrary memory. Write LED blinker program.
[fw/altos] / ccdbg.h
diff --git a/ccdbg.h b/ccdbg.h
index a0ef1c86bccdbb22781c5a65e726fe3474c2fe26..0f07e2e90a35a5b162409064e3fecac13940a436 100644 (file)
--- 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;
@@ -88,11 +88,12 @@ 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
@@ -102,14 +103,44 @@ 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);
 
+uint8_t
+ccdbg_execute(struct ccdbg *dbg, uint8_t *inst);
+       
 /* ccdbg-debug.c */
 void
 ccdbg_debug(int level, char *format, ...);
@@ -121,9 +152,6 @@ void
 ccdbg_clear_debug(int level);
 
 /* ccdbg-io.c */
-void
-ccdbg_quarter_clock(struct ccdbg *dbg);
-
 void
 ccdbg_half_clock(struct ccdbg *dbg);
 
@@ -195,6 +223,13 @@ 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);
+
 /* cp-usb.c */
 void
 cp_usb_init(struct ccdbg *dbg);