X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=lib%2Fccdbg.h;h=203b5aebb8c723b043f0654c95838afcfa7dcfac;hp=4d4a648d41ccf61c8d6c0729bf43bb1d21ddf678;hb=23aca1fcbc169184e32d4ec19f28dd4fd4cfda36;hpb=f7d49868aeae80d515b12a7e339628f1296754a6 diff --git a/lib/ccdbg.h b/lib/ccdbg.h index 4d4a648d..203b5aeb 100644 --- a/lib/ccdbg.h +++ b/lib/ccdbg.h @@ -30,11 +30,12 @@ #include #include #include -#include "cp-usb.h" +#include "ccdbg-debug.h" + #define CC_CLOCK 0x1 #define CC_DATA 0x2 #define CC_RESET_N 0x4 -#define CC_CLOCK_US (40) +#define CC_CLOCK_US (0) /* 8051 instructions */ @@ -43,6 +44,7 @@ #define MOV_Rn_data(n) (0x78 | (n)) #define DJNZ_Rn_rel(n) (0xd8 | (n)) #define MOV_A_direct 0xe5 +#define MOV_direct1_direct2 0x85 #define MOV_direct_A 0xf5 #define MOV_DPTR_data16 0x90 #define MOV_A_data 0x74 @@ -56,6 +58,13 @@ /* 8051 special function registers */ +#define SFR_P0 0x80 +#define SFR_SP 0x81 +#define SFR_DPL0 0x82 +#define SFR_DPH0 0x83 +#define SFR_DPL1 0x84 +#define SFR_DPH1 0x85 + /* flash controller */ #define FWT 0xAB #define FADDRL 0xAC @@ -90,8 +99,14 @@ /* Bit-addressable accumulator */ #define ACC(bit) (0xE0 | (bit)) +#define CP_USB_ASYNC + struct ccdbg { +#ifdef CP_USB_ASYNC + struct cp_usb_async *cp_async; +#else struct cp_usb *cp; +#endif }; /* Intel hex file format data @@ -153,14 +168,6 @@ struct hex_image { #define CC_STEP_REPLACE(n) (0x64|(n)) #define CC_GET_CHIP_ID 0x68 -/* Debug levels - */ -#define CC_DEBUG_BITBANG 0x00000001 -#define CC_DEBUG_COMMAND 0x00000002 -#define CC_DEBUG_INSTRUCTIONS 0x00000004 -#define CC_DEBUG_EXECUTE 0x00000008 -#define CC_DEBUG_FLASH 0x00000010 - /* ccdbg-command.c */ void ccdbg_debug_mode(struct ccdbg *dbg); @@ -213,16 +220,6 @@ ccdbg_set_pc(struct ccdbg *dbg, uint16_t pc); uint8_t ccdbg_execute_hex_image(struct ccdbg *dbg, struct hex_image *image); -/* ccdbg-debug.c */ -void -ccdbg_debug(int level, char *format, ...); - -void -ccdbg_add_debug(int level); - -void -ccdbg_clear_debug(int level); - /* ccdbg-flash.c */ uint8_t ccdbg_flash_hex_image(struct ccdbg *dbg, struct hex_image *image); @@ -250,8 +247,8 @@ ccdbg_half_clock(struct ccdbg *dbg); int ccdbg_write(struct ccdbg *dbg, uint8_t mask, uint8_t value); -uint8_t -ccdbg_read(struct ccdbg *dbg); +void +ccdbg_read(struct ccdbg *dbg, uint8_t *valuep); struct ccdbg * ccdbg_open(void); @@ -298,15 +295,18 @@ 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); +void +ccdbg_recv_bit(struct ccdbg *dbg, int first, uint8_t *bit); -uint8_t -ccdbg_recv_byte(struct ccdbg *dbg, int first); +void +ccdbg_recv_byte(struct ccdbg *dbg, int first, uint8_t *byte); void ccdbg_recv_bytes(struct ccdbg *dbg, uint8_t *bytes, int nbytes); +void +ccdbg_sync_io(struct ccdbg *dbg); + void ccdbg_print(char *format, uint8_t mask, uint8_t set); @@ -331,4 +331,10 @@ ccdbg_write_hex_image(struct ccdbg *dbg, struct hex_image *image, uint16_t offse struct hex_image * ccdbg_read_hex_image(struct ccdbg *dbg, uint16_t address, uint16_t length); +uint8_t +ccdbg_read_sfr(struct ccdbg *dbg, uint8_t addr, uint8_t *bytes, int nbytes); + +uint8_t +ccdbg_write_sfr(struct ccdbg *dbg, uint8_t addr, uint8_t *bytes, int nbytes); + #endif /* _CCDBG_H_ */