X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Ftarget%2Favrt.c;h=d7c7623d848d90c1e7dc42355fb4c87debbab536;hp=95f818eb784a824339a909b9ca17875303c04baf;hb=e7f65c5a116802c4e510fe212b26e9a020de0b3e;hpb=b2a13907a86eb23b96452c27729d16f658cbad53 diff --git a/src/target/avrt.c b/src/target/avrt.c index 95f818eb78..d7c7623d84 100644 --- a/src/target/avrt.c +++ b/src/target/avrt.c @@ -21,27 +21,12 @@ #include "config.h" #endif -#include "replacements.h" - #include "avrt.h" - -#include "register.h" #include "target.h" -#include "log.h" -#include "jtag.h" -#include "binarybuffer.h" -#include "time_support.h" -#include "breakpoints.h" -#include "fileio.h" +#include "target_type.h" -#include -#include -#include -#include -#include - -#define AVR_JTAG_INS_LEN 4 +#define AVR_JTAG_INS_LEN 4 /* cli handling */ int avr_register_commands(struct command_context_s *cmd_ctx); @@ -49,30 +34,29 @@ int avr_register_commands(struct command_context_s *cmd_ctx); /* forward declarations */ int avr_target_create(struct target_s *target, Jim_Interp *interp); int avr_init_target(struct command_context_s *cmd_ctx, struct target_s *target); -int avr_quit(void); int avr_arch_state(struct target_s *target); int avr_poll(target_t *target); int avr_halt(target_t *target); -int avr_resume(struct target_s *target, int current, u32 address, int handle_breakpoints, int debug_execution); -int avr_step(struct target_s *target, int current, u32 address, int handle_breakpoints); +int avr_resume(struct target_s *target, int current, uint32_t address, int handle_breakpoints, int debug_execution); +int avr_step(struct target_s *target, int current, uint32_t address, int handle_breakpoints); int avr_assert_reset(target_t *target); int avr_deassert_reset(target_t *target); int avr_soft_reset_halt(struct target_s *target); /* IR and DR functions */ -int avr_jtag_sendinstr(jtag_tap_t *tap, u8 *ir_in, u8 ir_out); -int avr_jtag_senddat(jtag_tap_t *tap, u32 *dr_in, u32 dr_out, int len); - -int mcu_write_ir(jtag_tap_t *tap, u8 *ir_in, u8 *ir_out, int ir_len, int rti); -int mcu_write_dr(jtag_tap_t *tap, u8 *dr_in, u8 *dr_out, int dr_len, int rti); -int mcu_write_ir_u8(jtag_tap_t *tap, u8 *ir_in, u8 ir_out, int ir_len, int rti); -int mcu_write_dr_u8(jtag_tap_t *tap, u8 *ir_in, u8 ir_out, int dr_len, int rti); -int mcu_write_ir_u16(jtag_tap_t *tap, u16 *ir_in, u16 ir_out, int ir_len, int rti); -int mcu_write_dr_u16(jtag_tap_t *tap, u16 *ir_in, u16 ir_out, int dr_len, int rti); -int mcu_write_ir_u32(jtag_tap_t *tap, u32 *ir_in, u32 ir_out, int ir_len, int rti); -int mcu_write_dr_u32(jtag_tap_t *tap, u32 *ir_in, u32 ir_out, int dr_len, int rti); +int avr_jtag_sendinstr(struct jtag_tap *tap, uint8_t *ir_in, uint8_t ir_out); +int avr_jtag_senddat(struct jtag_tap *tap, uint32_t *dr_in, uint32_t dr_out, int len); + +int mcu_write_ir(struct jtag_tap *tap, uint8_t *ir_in, uint8_t *ir_out, int ir_len, int rti); +int mcu_write_dr(struct jtag_tap *tap, uint8_t *dr_in, uint8_t *dr_out, int dr_len, int rti); +int mcu_write_ir_u8(struct jtag_tap *tap, uint8_t *ir_in, uint8_t ir_out, int ir_len, int rti); +int mcu_write_dr_u8(struct jtag_tap *tap, uint8_t *ir_in, uint8_t ir_out, int dr_len, int rti); +int mcu_write_ir_u16(struct jtag_tap *tap, uint16_t *ir_in, uint16_t ir_out, int ir_len, int rti); +int mcu_write_dr_u16(struct jtag_tap *tap, uint16_t *ir_in, uint16_t ir_out, int dr_len, int rti); +int mcu_write_ir_u32(struct jtag_tap *tap, uint32_t *ir_in, uint32_t ir_out, int ir_len, int rti); +int mcu_write_dr_u32(struct jtag_tap *tap, uint32_t *ir_in, uint32_t ir_out, int dr_len, int rti); int mcu_execute_queue(void); target_type_t avr_target = @@ -110,44 +94,33 @@ target_type_t avr_target = .register_commands = avr_register_commands, .target_create = avr_target_create, .init_target = avr_init_target, - .quit = avr_quit, -/* - .virt2phys = avr_virt2phys, - .mmu = avr_mmu -*/ }; int avr_register_commands(struct command_context_s *cmd_ctx) { - LOG_DEBUG(__FUNCTION__); + LOG_DEBUG("%s", __FUNCTION__); return ERROR_OK; } int avr_target_create(struct target_s *target, Jim_Interp *interp) { - avr_common_t *avr = calloc(1, sizeof(avr_common_t)); - + struct avr_common *avr = calloc(1, sizeof(struct avr_common)); + avr->jtag_info.tap = target->tap; target->arch_info = avr; - - return ERROR_OK; -} -int avr_init_target(struct command_context_s *cmd_ctx, struct target_s *target) -{ - LOG_DEBUG(__FUNCTION__); return ERROR_OK; } -int avr_quit(void) +int avr_init_target(struct command_context_s *cmd_ctx, struct target_s *target) { - LOG_DEBUG(__FUNCTION__); + LOG_DEBUG("%s", __FUNCTION__); return ERROR_OK; } int avr_arch_state(struct target_s *target) { - LOG_DEBUG(__FUNCTION__); + LOG_DEBUG("%s", __FUNCTION__); return ERROR_OK; } @@ -157,63 +130,63 @@ int avr_poll(target_t *target) { target->state = TARGET_HALTED; } - - LOG_DEBUG(__FUNCTION__); + + LOG_DEBUG("%s", __FUNCTION__); return ERROR_OK; } int avr_halt(target_t *target) { - LOG_DEBUG(__FUNCTION__); + LOG_DEBUG("%s", __FUNCTION__); return ERROR_OK; } -int avr_resume(struct target_s *target, int current, u32 address, int handle_breakpoints, int debug_execution) +int avr_resume(struct target_s *target, int current, uint32_t address, int handle_breakpoints, int debug_execution) { - LOG_DEBUG(__FUNCTION__); + LOG_DEBUG("%s", __FUNCTION__); return ERROR_OK; } -int avr_step(struct target_s *target, int current, u32 address, int handle_breakpoints) +int avr_step(struct target_s *target, int current, uint32_t address, int handle_breakpoints) { - LOG_DEBUG(__FUNCTION__); + LOG_DEBUG("%s", __FUNCTION__); return ERROR_OK; } int avr_assert_reset(target_t *target) { target->state = TARGET_RESET; - - LOG_DEBUG(__FUNCTION__); + + LOG_DEBUG("%s", __FUNCTION__); return ERROR_OK; } int avr_deassert_reset(target_t *target) { target->state = TARGET_RUNNING; - - LOG_DEBUG(__FUNCTION__); + + LOG_DEBUG("%s", __FUNCTION__); return ERROR_OK; } int avr_soft_reset_halt(struct target_s *target) { - LOG_DEBUG(__FUNCTION__); + LOG_DEBUG("%s", __FUNCTION__); return ERROR_OK; } -int avr_jtag_senddat(jtag_tap_t *tap, u32* dr_in, u32 dr_out, int len) +int avr_jtag_senddat(struct jtag_tap *tap, uint32_t* dr_in, uint32_t dr_out, int len) { return mcu_write_dr_u32(tap, dr_in, dr_out, len, 1); } -int avr_jtag_sendinstr(jtag_tap_t *tap, u8 *ir_in, u8 ir_out) +int avr_jtag_sendinstr(struct jtag_tap *tap, uint8_t *ir_in, uint8_t ir_out) { return mcu_write_ir_u8(tap, ir_in, ir_out, AVR_JTAG_INS_LEN, 1); } /* IR and DR functions */ -int mcu_write_ir(jtag_tap_t *tap, u8 *ir_in, u8 *ir_out, int ir_len, int rti) +int mcu_write_ir(struct jtag_tap *tap, uint8_t *ir_in, uint8_t *ir_out, int ir_len, int rti) { if (NULL == tap) { @@ -225,126 +198,116 @@ int mcu_write_ir(jtag_tap_t *tap, u8 *ir_in, u8 *ir_out, int ir_len, int rti) LOG_ERROR("invalid ir_len"); return ERROR_FAIL; } - + { - scan_field_t field[1]; - + struct scan_field field[1]; + field[0].tap = tap; field[0].num_bits = tap->ir_length; field[0].out_value = ir_out; - field[0].out_mask = NULL; field[0].in_value = ir_in; - field[0].in_check_value = NULL; - field[0].in_check_mask = NULL; - field[0].in_handler = NULL; - field[0].in_handler_priv = NULL; - jtag_add_plain_ir_scan(sizeof(field) / sizeof(field[0]), field, TAP_IDLE); + jtag_add_plain_ir_scan(sizeof(field) / sizeof(field[0]), field, jtag_set_end_state(TAP_IDLE)); } - + return ERROR_OK; } -int mcu_write_dr(jtag_tap_t *tap, u8 *dr_in, u8 *dr_out, int dr_len, int rti) +int mcu_write_dr(struct jtag_tap *tap, uint8_t *dr_in, uint8_t *dr_out, int dr_len, int rti) { if (NULL == tap) { LOG_ERROR("invalid tap"); return ERROR_FAIL; } - + { - scan_field_t field[1]; - + struct scan_field field[1]; + field[0].tap = tap; field[0].num_bits = dr_len; field[0].out_value = dr_out; - field[0].out_mask = NULL; field[0].in_value = dr_in; - field[0].in_check_value = NULL; - field[0].in_check_mask = NULL; - field[0].in_handler = NULL; - field[0].in_handler_priv = NULL; - jtag_add_plain_dr_scan(sizeof(field) / sizeof(field[0]), field, TAP_IDLE); + jtag_add_plain_dr_scan(sizeof(field) / sizeof(field[0]), field, jtag_set_end_state(TAP_IDLE)); } - + return ERROR_OK; } -int mcu_write_ir_u8(jtag_tap_t *tap, u8 *ir_in, u8 ir_out, int ir_len, int rti) +int mcu_write_ir_u8(struct jtag_tap *tap, uint8_t *ir_in, uint8_t ir_out, int ir_len, int rti) { if (ir_len > 8) { LOG_ERROR("ir_len overflow, maxium is 8"); return ERROR_FAIL; } - + mcu_write_ir(tap, ir_in, &ir_out, ir_len, rti); - + return ERROR_OK; } -int mcu_write_dr_u8(jtag_tap_t *tap, u8 *dr_in, u8 dr_out, int dr_len, int rti) +int mcu_write_dr_u8(struct jtag_tap *tap, uint8_t *dr_in, uint8_t dr_out, int dr_len, int rti) { if (dr_len > 8) { LOG_ERROR("dr_len overflow, maxium is 8"); return ERROR_FAIL; } - + mcu_write_dr(tap, dr_in, &dr_out, dr_len, rti); - + return ERROR_OK; } -int mcu_write_ir_u16(jtag_tap_t *tap, u16 *ir_in, u16 ir_out, int ir_len, int rti) +int mcu_write_ir_u16(struct jtag_tap *tap, uint16_t *ir_in, uint16_t ir_out, int ir_len, int rti) { if (ir_len > 16) { LOG_ERROR("ir_len overflow, maxium is 16"); return ERROR_FAIL; } - - mcu_write_ir(tap, (u8*)ir_in, (u8*)&ir_out, ir_len, rti); - + + mcu_write_ir(tap, (uint8_t*)ir_in, (uint8_t*)&ir_out, ir_len, rti); + return ERROR_OK; } -int mcu_write_dr_u16(jtag_tap_t *tap, u16 *dr_in, u16 dr_out, int dr_len, int rti) +int mcu_write_dr_u16(struct jtag_tap *tap, uint16_t *dr_in, uint16_t dr_out, int dr_len, int rti) { if (dr_len > 16) { LOG_ERROR("dr_len overflow, maxium is 16"); return ERROR_FAIL; } - - mcu_write_dr(tap, (u8*)dr_in, (u8*)&dr_out, dr_len, rti); - + + mcu_write_dr(tap, (uint8_t*)dr_in, (uint8_t*)&dr_out, dr_len, rti); + return ERROR_OK; } -int mcu_write_ir_u32(jtag_tap_t *tap, u32 *ir_in, u32 ir_out, int ir_len, int rti) +int mcu_write_ir_u32(struct jtag_tap *tap, uint32_t *ir_in, uint32_t ir_out, int ir_len, int rti) { if (ir_len > 32) { LOG_ERROR("ir_len overflow, maxium is 32"); return ERROR_FAIL; } - - mcu_write_ir(tap, (u8*)ir_in, (u8*)&ir_out, ir_len, rti); - + + mcu_write_ir(tap, (uint8_t*)ir_in, (uint8_t*)&ir_out, ir_len, rti); + return ERROR_OK; } -int mcu_write_dr_u32(jtag_tap_t *tap, u32 *dr_in, u32 dr_out, int dr_len, int rti) +int mcu_write_dr_u32(struct jtag_tap *tap, uint32_t *dr_in, uint32_t dr_out, int dr_len, int rti) { if (dr_len > 32) { LOG_ERROR("dr_len overflow, maxium is 32"); return ERROR_FAIL; } - - mcu_write_dr(tap, (u8*)dr_in, (u8*)&dr_out, dr_len, rti); - + + mcu_write_dr(tap, (uint8_t*)dr_in, (uint8_t*)&dr_out, dr_len, rti); + return ERROR_OK; }