projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Save/restore regs when reading/writing memory. Add SFR access.
[fw/altos]
/
lib
/
ccdbg.h
diff --git
a/lib/ccdbg.h
b/lib/ccdbg.h
index e0e58104049ba1826e45c0b2043310020adf6063..203b5aebb8c723b043f0654c95838afcfa7dcfac 100644
(file)
--- a/
lib/ccdbg.h
+++ b/
lib/ccdbg.h
@@
-30,11
+30,12
@@
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
-#include "cp-usb.h"
+#include "ccdbg-debug.h"
+
#define CC_CLOCK 0x1
#define CC_DATA 0x2
#define CC_RESET_N 0x4
#define CC_CLOCK 0x1
#define CC_DATA 0x2
#define CC_RESET_N 0x4
-#define CC_CLOCK_US (
4
0)
+#define CC_CLOCK_US (0)
/* 8051 instructions
*/
/* 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_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
#define MOV_direct_A 0xf5
#define MOV_DPTR_data16 0x90
#define MOV_A_data 0x74
@@
-56,6
+58,13
@@
/* 8051 special function registers
*/
/* 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
/* flash controller */
#define FWT 0xAB
#define FADDRL 0xAC
@@
-90,8
+99,14
@@
/* Bit-addressable accumulator */
#define ACC(bit) (0xE0 | (bit))
/* Bit-addressable accumulator */
#define ACC(bit) (0xE0 | (bit))
+#define CP_USB_ASYNC
+
struct ccdbg {
struct ccdbg {
+#ifdef CP_USB_ASYNC
+ struct cp_usb_async *cp_async;
+#else
struct cp_usb *cp;
struct cp_usb *cp;
+#endif
};
/* Intel hex file format data
};
/* Intel hex file format data
@@
-153,15
+168,6
@@
struct hex_image {
#define CC_STEP_REPLACE(n) (0x64|(n))
#define CC_GET_CHIP_ID 0x68
#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
-#define CC_DEBUG_MEMORY 0x00000020
-
/* ccdbg-command.c */
void
ccdbg_debug_mode(struct ccdbg *dbg);
/* ccdbg-command.c */
void
ccdbg_debug_mode(struct ccdbg *dbg);
@@
-214,19
+220,6
@@
ccdbg_set_pc(struct ccdbg *dbg, uint16_t pc);
uint8_t
ccdbg_execute_hex_image(struct ccdbg *dbg, struct hex_image *image);
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);
-
-void
-ccdbg_flush(void);
-
/* ccdbg-flash.c */
uint8_t
ccdbg_flash_hex_image(struct ccdbg *dbg, struct hex_image *image);
/* ccdbg-flash.c */
uint8_t
ccdbg_flash_hex_image(struct ccdbg *dbg, struct hex_image *image);
@@
-254,8
+247,8
@@
ccdbg_half_clock(struct ccdbg *dbg);
int
ccdbg_write(struct ccdbg *dbg, uint8_t mask, uint8_t value);
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);
struct ccdbg *
ccdbg_open(void);
@@
-302,15
+295,18
@@
ccdbg_send_byte(struct ccdbg *dbg, uint8_t byte);
void
ccdbg_send_bytes(struct ccdbg *dbg, uint8_t *bytes, int nbytes);
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_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);
void
ccdbg_print(char *format, uint8_t mask, uint8_t set);
@@
-335,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);
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_ */
#endif /* _CCDBG_H_ */