I couldn't believe my eyes when I saw what the bug was. irscan has *always* been broken. I checked as far back as svn 345.
A couple of possible explanations: - irscan has never really been used - events have somehow conspired to hide the bugs - I'm missing something Known problems in irscan: - does not support >32 bit fields(?). This maybe a problem for omap devices(?) - why not reuse the new drscan code? -- Øyvind Harboe Embedded software and hardware consulting services http://consulting.zylin.com
### Eclipse Workspace Patch 1.0 #P openocd Index: src/jtag/jtag.c =================================================================== --- src/jtag/jtag.c (revision 1750) +++ src/jtag/jtag.c (working copy) @@ -2889,9 +2889,11 @@ } } - fields = malloc(sizeof(scan_field_t) * argc / 2); + int num_fields= num_fields; + + fields = malloc(sizeof(scan_field_t) * num_fields); - for (i = 0; i < argc / 2; i++) + for (i = 0; i < num_fields; i++) { tap = jtag_TapByString( args[i*2] ); if (tap==NULL) @@ -2901,19 +2903,20 @@ } int field_size = tap->ir_length; fields[i].tap = tap; + fields[i].num_bits = field_size; fields[i].out_value = malloc(CEIL(field_size, 8)); buf_set_u32(fields[i].out_value, 0, field_size, strtoul(args[i*2+1], NULL, 0)); fields[i].in_value = NULL; } - jtag_add_ir_scan(argc / 2, fields, TAP_INVALID); + jtag_add_ir_scan(num_fields, fields, TAP_INVALID); /* did we have an endstate? */ if (endstate != TAP_INVALID) jtag_add_end_state(endstate); jtag_execute_queue(); - for (i = 0; i < argc / 2; i++) + for (i = 0; i < num_fields; i++) free(fields[i].out_value); free (fields);
_______________________________________________ Openocd-development mailing list Openocd-development@lists.berlios.de https://lists.berlios.de/mailman/listinfo/openocd-development