]> git.sur5r.net Git - openocd/blobdiff - src/target/target.c
cortex a8: add error propagation for poll/resume
[openocd] / src / target / target.c
index 37e515a647a467881d61b9f44650417d52b810f8..9599feca4693bf1191488344660858bff32f5c58 100644 (file)
@@ -2378,7 +2378,7 @@ static int target_fill_mem(struct target *target,
                {
                        current = chunk_size;
                }
-               int retval = fn(target, address + x * data_size, data_size, current, target_buf);
+               retval = fn(target, address + x * data_size, data_size, current, target_buf);
                if (retval != ERROR_OK)
                {
                        break;
@@ -2560,7 +2560,7 @@ COMMAND_HANDLER(handle_load_image_command)
        if ((ERROR_OK == retval) && (duration_measure(&bench) == ERROR_OK))
        {
                command_print(CMD_CTX, "downloaded %" PRIu32 " bytes "
-                               "in %fs (%0.3f kb/s)", image_size,
+                               "in %fs (%0.3f KiB/s)", image_size,
                                duration_elapsed(&bench), duration_kbps(&bench, image_size));
        }
 
@@ -2626,7 +2626,7 @@ COMMAND_HANDLER(handle_dump_image_command)
        if ((ERROR_OK == retval) && (duration_measure(&bench) == ERROR_OK))
        {
                command_print(CMD_CTX,
-                               "dumped %ld bytes in %fs (%0.3f kb/s)", (long)fileio.size,
+                               "dumped %ld bytes in %fs (%0.3f KiB/s)", (long)fileio.size,
                                duration_elapsed(&bench), duration_kbps(&bench, fileio.size));
        }
 
@@ -2682,6 +2682,7 @@ static COMMAND_HELPER(handle_verify_image_command_internal, int verify)
        }
 
        image_size = 0x0;
+       int diffs = 0;
        retval = ERROR_OK;
        for (i = 0; i < image.num_sections; i++)
        {
@@ -2716,7 +2717,10 @@ static COMMAND_HELPER(handle_verify_image_command_internal, int verify)
                                /* failed crc checksum, fall back to a binary compare */
                                uint8_t *data;
 
-                               command_print(CMD_CTX, "checksum mismatch - attempting binary compare");
+                               if (diffs == 0)
+                               {
+                                       LOG_ERROR("checksum mismatch - attempting binary compare");
+                               }
 
                                data = (uint8_t*)malloc(buf_cnt);
 
@@ -2737,22 +2741,22 @@ static COMMAND_HELPER(handle_verify_image_command_internal, int verify)
                                                if (data[t] != buffer[t])
                                                {
                                                        command_print(CMD_CTX,
-                                                                                 "Verify operation failed address 0x%08x. Was 0x%02x instead of 0x%02x\n",
+                                                                                 "diff %d address 0x%08x. Was 0x%02x instead of 0x%02x",
+                                                                                 diffs,
                                                                                  (unsigned)(t + image.sections[i].base_address),
                                                                                  data[t],
                                                                                  buffer[t]);
-                                                       free(data);
-                                                       free(buffer);
-                                                       retval = ERROR_FAIL;
-                                                       goto done;
-                                               }
-                                               if ((t%16384) == 0)
-                                               {
-                                                       keep_alive();
+                                                       if (diffs++ >= 127)
+                                                       {
+                                                               command_print(CMD_CTX, "More than 128 errors, the rest are not printed.");
+                                                               free(data);
+                                                               free(buffer);
+                                                               goto done;
+                                                       }
                                                }
+                                               keep_alive();
                                        }
                                }
-
                                free(data);
                        }
                } else
@@ -2766,10 +2770,14 @@ static COMMAND_HELPER(handle_verify_image_command_internal, int verify)
                image_size += buf_cnt;
        }
 done:
+       if (diffs > 0)
+       {
+               retval = ERROR_FAIL;
+       }
        if ((ERROR_OK == retval) && (duration_measure(&bench) == ERROR_OK))
        {
                command_print(CMD_CTX, "verified %" PRIu32 " bytes "
-                               "in %fs (%0.3f kb/s)", image_size,
+                               "in %fs (%0.3f KiB/s)", image_size,
                                duration_elapsed(&bench), duration_kbps(&bench, image_size));
        }
 
@@ -3057,8 +3065,8 @@ static void writeGmon(uint32_t *samples, uint32_t sampleNum, const char *filenam
                long long a = address-min;
                long long b = length-1;
                long long c = addressSpace-1;
-               int index = (a*b)/c; /* danger!!!! int32 overflows */
-               buckets[index]++;
+               int index_t = (a*b)/c; /* danger!!!! int32 overflows */
+               buckets[index_t]++;
        }
 
        /* append binary memory gmon.out &profile_hist_hdr ((char*)&profile_hist_hdr + sizeof(struct gmon_hist_hdr)) */
@@ -3886,14 +3894,14 @@ static int target_configure(Jim_GetOptInfo *goi, struct target *target)
                        break;
                case TCFG_CHAIN_POSITION:
                        if (goi->isconfigure) {
-                               Jim_Obj *o;
+                               Jim_Obj *o_t;
                                struct jtag_tap *tap;
                                target_free_all_working_areas(target);
-                               e = Jim_GetOpt_Obj(goi, &o);
+                               e = Jim_GetOpt_Obj(goi, &o_t);
                                if (e != JIM_OK) {
                                        return e;
                                }
-                               tap = jtag_tap_by_jim_obj(goi->interp, o);
+                               tap = jtag_tap_by_jim_obj(goi->interp, o_t);
                                if (tap == NULL) {
                                        return JIM_ERR;
                                }
@@ -4949,7 +4957,7 @@ COMMAND_HANDLER(handle_fast_load_image_command)
        if ((ERROR_OK == retval) && (duration_measure(&bench) == ERROR_OK))
        {
                command_print(CMD_CTX, "Loaded %" PRIu32 " bytes "
-                               "in %fs (%0.3f kb/s)", image_size, 
+                               "in %fs (%0.3f KiB/s)", image_size,
                                duration_elapsed(&bench), duration_kbps(&bench, image_size));
 
                command_print(CMD_CTX,