X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Ftarget%2Ftarget.c;h=c1031a024ad9f962c501c0829944ec742c1190e4;hb=a74d91141269b5567c9a2832877dcbefccfa1e1e;hp=ab82389432acbbe73b0f58d100a3ccba9c3cc635;hpb=5dbf97391012f0f93752541c2861a716e8859a6e;p=openocd diff --git a/src/target/target.c b/src/target/target.c index ab823894..c1031a02 100644 --- a/src/target/target.c +++ b/src/target/target.c @@ -33,58 +33,41 @@ #include "config.h" #endif -#include "replacements.h" #include "target.h" #include "target_request.h" - -#include "log.h" -#include "configuration.h" -#include "binarybuffer.h" +#include "time_support.h" +#include "register.h" +#include "trace.h" +#include "image.h" #include "jtag.h" -#include -#include #include -#include -#include -#include -#include - -#include -#include - -#include - -#include -#include - -int cli_target_callback_event_handler(struct target_s *target, enum target_event event, void *priv); - -int handle_targets_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); - -int handle_reg_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -int handle_poll_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -int handle_halt_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -int handle_wait_halt_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -int handle_reset_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -int handle_soft_reset_halt_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -int handle_resume_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -int handle_step_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -int handle_md_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -int handle_mw_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -int handle_load_image_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -int handle_dump_image_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -int handle_verify_image_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -int handle_test_image_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -int handle_bp_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -int handle_rbp_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -int handle_wp_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -int handle_rwp_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -int handle_virt2phys_command(command_context_t *cmd_ctx, char *cmd, char **args, int argc); -int handle_profile_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -int handle_fast_load_image_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -int handle_fast_load_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); + +static int handle_targets_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); + +static int handle_reg_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); +static int handle_poll_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); +static int handle_halt_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); +static int handle_wait_halt_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); +static int handle_reset_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); +static int handle_soft_reset_halt_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); +static int handle_resume_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); +static int handle_step_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); +static int handle_md_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); +static int handle_mw_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); +static int handle_load_image_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); +static int handle_dump_image_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); +static int handle_verify_image_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); +static int handle_test_image_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); +static int handle_bp_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); +static int handle_rbp_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); +static int handle_wp_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); +static int handle_rwp_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); +static int handle_virt2phys_command(command_context_t *cmd_ctx, char *cmd, char **args, int argc); +static int handle_profile_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); +static int handle_fast_load_image_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); +static int handle_fast_load_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); static int jim_array2mem(Jim_Interp *interp, int argc, Jim_Obj *const *argv); static int jim_mem2array(Jim_Interp *interp, int argc, Jim_Obj *const *argv); @@ -103,8 +86,10 @@ extern target_type_t arm926ejs_target; extern target_type_t feroceon_target; extern target_type_t xscale_target; extern target_type_t cortexm3_target; +extern target_type_t cortexa8_target; extern target_type_t arm11_target; extern target_type_t mips_m4k_target; +extern target_type_t avr_target; target_type_t *target_types[] = { @@ -117,8 +102,10 @@ target_type_t *target_types[] = &feroceon_target, &xscale_target, &cortexm3_target, + &cortexa8_target, &arm11_target, &mips_m4k_target, + &avr_target, NULL, }; @@ -1344,7 +1331,7 @@ int target_register_user_commands(struct command_context_s *cmd_ctx) return retval; } -int handle_targets_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_targets_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { char *cp; target_t *target = all_targets; @@ -1540,7 +1527,7 @@ int handle_target(void *priv) return retval; } -int handle_reg_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_reg_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { target_t *target; reg_t *reg = NULL; @@ -1651,7 +1638,7 @@ int handle_reg_command(struct command_context_s *cmd_ctx, char *cmd, char **args return ERROR_OK; } -int handle_poll_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_poll_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { int retval = ERROR_OK; target_t *target = get_current_target(cmd_ctx); @@ -1686,7 +1673,7 @@ int handle_poll_command(struct command_context_s *cmd_ctx, char *cmd, char **arg return retval; } -int handle_wait_halt_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_wait_halt_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { int ms = 5000; @@ -1751,7 +1738,7 @@ int target_wait_state(target_t *target, enum target_state state, int ms) return ERROR_OK; } -int handle_halt_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_halt_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { int retval; target_t *target = get_current_target(cmd_ctx); @@ -1776,7 +1763,7 @@ int handle_halt_command(struct command_context_s *cmd_ctx, char *cmd, char **arg return handle_wait_halt_command(cmd_ctx, cmd, args, argc); } -int handle_soft_reset_halt_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_soft_reset_halt_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { target_t *target = get_current_target(cmd_ctx); @@ -1787,7 +1774,7 @@ int handle_soft_reset_halt_command(struct command_context_s *cmd_ctx, char *cmd, return ERROR_OK; } -int handle_reset_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_reset_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { const Jim_Nvp *n; enum target_reset_mode reset_mode = RESET_RUN; @@ -1806,7 +1793,7 @@ int handle_reset_command(struct command_context_s *cmd_ctx, char *cmd, char **ar } -int handle_resume_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_resume_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { int retval; target_t *target = get_current_target(cmd_ctx); @@ -1825,7 +1812,7 @@ int handle_resume_command(struct command_context_s *cmd_ctx, char *cmd, char **a return retval; } -int handle_step_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_step_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { target_t *target = get_current_target(cmd_ctx); @@ -1840,7 +1827,7 @@ int handle_step_command(struct command_context_s *cmd_ctx, char *cmd, char **arg return ERROR_OK; } -int handle_md_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_md_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { const int line_bytecnt = 32; int count = 1; @@ -1917,7 +1904,7 @@ int handle_md_command(struct command_context_s *cmd_ctx, char *cmd, char **args, return retval; } -int handle_mw_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_mw_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { u32 address = 0; u32 value = 0; @@ -1981,7 +1968,7 @@ int handle_mw_command(struct command_context_s *cmd_ctx, char *cmd, char **args, } -int handle_load_image_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_load_image_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { u8 *buffer; u32 buf_cnt; @@ -2105,7 +2092,7 @@ int handle_load_image_command(struct command_context_s *cmd_ctx, char *cmd, char } -int handle_dump_image_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_dump_image_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { fileio_t fileio; @@ -2146,7 +2133,7 @@ int handle_dump_image_command(struct command_context_s *cmd_ctx, char *cmd, char u32 size_written; u32 this_run_size = (size > 560) ? 560 : size; - retval = target->type->read_memory(target, address, 4, this_run_size / 4, buffer); + retval = target_read_buffer(target, address, this_run_size, buffer); if (retval != ERROR_OK) { break; @@ -2171,13 +2158,13 @@ int handle_dump_image_command(struct command_context_s *cmd_ctx, char *cmd, char if (retval==ERROR_OK) { command_print(cmd_ctx, "dumped %"PRIi64" byte in %s", fileio.size, duration_text); + free(duration_text); } - free(duration_text); - return ERROR_OK; + return retval; } -int handle_verify_image_command_internal(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc, int verify) +static int handle_verify_image_command_internal(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc, int verify) { u8 *buffer; u32 buf_cnt; @@ -2320,17 +2307,17 @@ done: return retval; } -int handle_verify_image_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_verify_image_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { return handle_verify_image_command_internal(cmd_ctx, cmd, args, argc, 1); } -int handle_test_image_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_test_image_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { return handle_verify_image_command_internal(cmd_ctx, cmd, args, argc, 0); } -int handle_bp_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_bp_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { int retval; target_t *target = get_current_target(cmd_ctx); @@ -2382,7 +2369,7 @@ int handle_bp_command(struct command_context_s *cmd_ctx, char *cmd, char **args, return ERROR_OK; } -int handle_rbp_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_rbp_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { target_t *target = get_current_target(cmd_ctx); @@ -2392,7 +2379,7 @@ int handle_rbp_command(struct command_context_s *cmd_ctx, char *cmd, char **args return ERROR_OK; } -int handle_wp_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_wp_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { target_t *target = get_current_target(cmd_ctx); int retval; @@ -2454,7 +2441,7 @@ int handle_wp_command(struct command_context_s *cmd_ctx, char *cmd, char **args, return ERROR_OK; } -int handle_rwp_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_rwp_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { target_t *target = get_current_target(cmd_ctx); @@ -2464,7 +2451,7 @@ int handle_rwp_command(struct command_context_s *cmd_ctx, char *cmd, char **args return ERROR_OK; } -int handle_virt2phys_command(command_context_t *cmd_ctx, char *cmd, char **args, int argc) +static int handle_virt2phys_command(command_context_t *cmd_ctx, char *cmd, char **args, int argc) { int retval; target_t *target = get_current_target(cmd_ctx); @@ -2495,7 +2482,7 @@ static void writeData(FILE *f, const void *data, size_t len) { size_t written = fwrite(data, len, 1, f); if (written != len) - LOG_ERROR("failed to write %u bytes: %s", len, strerror(errno)); + LOG_ERROR("failed to write %zu bytes: %s", len, strerror(errno)); } static void writeLong(FILE *f, int l) @@ -2608,7 +2595,7 @@ static void writeGmon(u32 *samples, u32 sampleNum, char *filename) } /* profiling samples the CPU PC as quickly as OpenOCD is able, which will be used as a random sampling of PC */ -int handle_profile_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_profile_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { target_t *target = get_current_target(cmd_ctx); struct timeval timeout, now; @@ -4090,7 +4077,7 @@ static void free_fastload(void) -int handle_fast_load_image_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_fast_load_image_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { u8 *buffer; u32 buf_cnt; @@ -4226,7 +4213,7 @@ int handle_fast_load_image_command(struct command_context_s *cmd_ctx, char *cmd, return retval; } -int handle_fast_load_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_fast_load_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { if (argc>0) return ERROR_COMMAND_SYNTAX_ERROR;