Browse Source

reduce arm11 output noise

git-svn-id: svn://svn.berlios.de/openocd/trunk@2628 b42882b7-edfa-0310-969c-e2dbd0fdcd60
tags/v0.3.0-rc0
oharboe 14 years ago
parent
commit
9a9ebfb924
3 changed files with 11 additions and 4 deletions
  1. +4
    -1
      TODO
  2. +5
    -2
      src/jtag/core.c
  3. +2
    -1
      src/jtag/jtag.h

+ 4
- 1
TODO View File

@@ -117,7 +117,10 @@ https://lists.berlios.de/pipermail/openocd-development/2009-July/009206.html
- ARM923EJS: - ARM923EJS:
- reset run/halt/step is not robust; needs testing to map out problems. - reset run/halt/step is not robust; needs testing to map out problems.
- ARM11 improvements (MB?) - ARM11 improvements (MB?)
- fix single stepping (reported by ØH)
- fix single stepping (reported by ØH). Michael Bruck explained
that what's required is to emulate the current instruction(just like the
arm7 code) to know what address to set the breakpoint at for single
stepping an instruction.
- implement missing functionality (grep FNC_INFO_NOTIMPLEMENTED ...) - implement missing functionality (grep FNC_INFO_NOTIMPLEMENTED ...)
- Cortex A8 support (ML) - Cortex A8 support (ML)
- add target implementation (ML) - add target implementation (ML)


+ 5
- 2
src/jtag/core.c View File

@@ -939,7 +939,7 @@ static bool jtag_examine_chain_match_tap(const struct jtag_tap_s *tap)
/* If none of the expected ids matched, log an error */ /* If none of the expected ids matched, log an error */
if (ii != tap->expected_ids_cnt) if (ii != tap->expected_ids_cnt)
{ {
LOG_INFO("JTAG Tap/device matched");
LOG_DEBUG("JTAG Tap/device matched");
return true; return true;
} }
jtag_examine_chain_display(LOG_LVL_ERROR, "got", jtag_examine_chain_display(LOG_LVL_ERROR, "got",
@@ -978,11 +978,13 @@ int jtag_examine_chain(void)
for (unsigned bit_count = 0; bit_count < (JTAG_MAX_CHAIN_SIZE * 32) - 31;) for (unsigned bit_count = 0; bit_count < (JTAG_MAX_CHAIN_SIZE * 32) - 31;)
{ {
uint32_t idcode = buf_get_u32(idcode_buffer, bit_count, 32); uint32_t idcode = buf_get_u32(idcode_buffer, bit_count, 32);
tap->hasidcode = true;
if ((idcode & 1) == 0) if ((idcode & 1) == 0)
{ {
/* LSB must not be 0, this indicates a device in bypass */ /* LSB must not be 0, this indicates a device in bypass */
LOG_WARNING("Tap/Device does not have IDCODE"); LOG_WARNING("Tap/Device does not have IDCODE");
idcode = 0; idcode = 0;
tap->hasidcode = false;


bit_count += 1; bit_count += 1;
} }
@@ -1074,7 +1076,8 @@ int jtag_validate_chain(void)
} }


val = buf_get_u32(ir_test, chain_pos, 2); val = buf_get_u32(ir_test, chain_pos, 2);
if (val != 0x1)
/* Only fail this check if we have IDCODE for this device */
if ((val != 0x1)&&(tap->hasidcode))
{ {
char *cbuf = buf_to_str(ir_test, total_ir_length, 16); char *cbuf = buf_to_str(ir_test, total_ir_length, 16);
LOG_ERROR("Could not validate JTAG scan chain, IR mismatch, scan returned 0x%s. tap=%s pos=%d expected 0x1 got %0x", cbuf, jtag_tap_name(tap), chain_pos, val); LOG_ERROR("Could not validate JTAG scan chain, IR mismatch, scan returned 0x%s. tap=%s pos=%d expected 0x1 got %0x", cbuf, jtag_tap_name(tap), chain_pos, val);


+ 2
- 1
src/jtag/jtag.h View File

@@ -144,7 +144,7 @@ typedef struct jtag_tap_event_action_s jtag_tap_event_action_t;


/* this is really: typedef jtag_tap_t */ /* this is really: typedef jtag_tap_t */
/* But - the typedef is done in "types.h" */ /* But - the typedef is done in "types.h" */
/* due to "forward decloration reasons" */
/* due to "forward declaration reasons" */
struct jtag_tap_s struct jtag_tap_s
{ {
const char* chip; const char* chip;
@@ -161,6 +161,7 @@ struct jtag_tap_s
uint32_t ir_capture_mask; uint32_t ir_capture_mask;
uint8_t* expected_mask; /**< Capture-IR expected mask */ uint8_t* expected_mask; /**< Capture-IR expected mask */
uint32_t idcode; uint32_t idcode;
bool hasidcode; /* not all devices have idcode, we'll discover this during chain examination */
/**< device identification code */ /**< device identification code */


/// Array of expected identification codes */ /// Array of expected identification codes */


Loading…
Cancel
Save