arm11 wip
git-svn-id: svn://svn.berlios.de/openocd/trunk@1317 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
parent
882a271205
commit
c01e095d03
|
@ -40,6 +40,7 @@
|
||||||
*/
|
*/
|
||||||
int jtag_error=ERROR_OK;
|
int jtag_error=ERROR_OK;
|
||||||
|
|
||||||
|
|
||||||
typedef struct cmd_queue_page_s
|
typedef struct cmd_queue_page_s
|
||||||
{
|
{
|
||||||
void *address;
|
void *address;
|
||||||
|
@ -1364,6 +1365,11 @@ int jtag_read_buffer(u8 *buffer, scan_command_t *cmd)
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char *jtag_tap_name(jtag_tap_t *tap)
|
||||||
|
{
|
||||||
|
return (tap == NULL) ? "(unknown)" : tap->dotted_name;
|
||||||
|
}
|
||||||
|
|
||||||
int jtag_check_value(u8 *captured, void *priv, scan_field_t *field)
|
int jtag_check_value(u8 *captured, void *priv, scan_field_t *field)
|
||||||
{
|
{
|
||||||
int retval = ERROR_OK;
|
int retval = ERROR_OK;
|
||||||
|
@ -1382,7 +1388,7 @@ int jtag_check_value(u8 *captured, void *priv, scan_field_t *field)
|
||||||
* acknowledged the error
|
* acknowledged the error
|
||||||
*/
|
*/
|
||||||
LOG_WARNING("TAP %s:",
|
LOG_WARNING("TAP %s:",
|
||||||
(field->tap == NULL) ? "(unknown)" : field->tap->dotted_name );
|
jtag_tap_name(field->tap));
|
||||||
if (compare_failed)
|
if (compare_failed)
|
||||||
{
|
{
|
||||||
char *captured_char = buf_to_str(captured, (num_bits > 64) ? 64 : num_bits, 16);
|
char *captured_char = buf_to_str(captured, (num_bits > 64) ? 64 : num_bits, 16);
|
||||||
|
@ -1698,17 +1704,18 @@ int jtag_validate_chain(void)
|
||||||
|
|
||||||
tap = NULL;
|
tap = NULL;
|
||||||
chain_pos = 0;
|
chain_pos = 0;
|
||||||
|
int val;
|
||||||
for(;;){
|
for(;;){
|
||||||
tap = jtag_NextEnabledTap(tap);
|
tap = jtag_NextEnabledTap(tap);
|
||||||
if( tap == NULL ){
|
if( tap == NULL ){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val = buf_get_u32(ir_test, chain_pos, 2);
|
||||||
if (buf_get_u32(ir_test, chain_pos, 2) != 0x1)
|
if (val != 0x1)
|
||||||
{
|
{
|
||||||
char *cbuf = buf_to_str(ir_test, total_ir_length, 16);
|
char *cbuf = buf_to_str(ir_test, total_ir_length, 16);
|
||||||
LOG_ERROR("Error validating JTAG scan chain, IR mismatch, scan returned 0x%s", cbuf);
|
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);
|
||||||
free(cbuf);
|
free(cbuf);
|
||||||
free(ir_test);
|
free(ir_test);
|
||||||
return ERROR_JTAG_INIT_FAILED;
|
return ERROR_JTAG_INIT_FAILED;
|
||||||
|
@ -1716,10 +1723,11 @@ int jtag_validate_chain(void)
|
||||||
chain_pos += tap->ir_length;
|
chain_pos += tap->ir_length;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (buf_get_u32(ir_test, chain_pos, 2) != 0x3)
|
val = buf_get_u32(ir_test, chain_pos, 2);
|
||||||
|
if (val != 0x3)
|
||||||
{
|
{
|
||||||
char *cbuf = buf_to_str(ir_test, total_ir_length, 16);
|
char *cbuf = buf_to_str(ir_test, total_ir_length, 16);
|
||||||
LOG_ERROR("Error validating JTAG scan chain, IR mismatch, scan returned 0x%s", cbuf);
|
LOG_ERROR("Could not validate end of JTAG scan chain, IR mismatch, scan returned 0x%s. pos=%d expected 0x3 got %0x", cbuf, chain_pos, val);
|
||||||
free(cbuf);
|
free(cbuf);
|
||||||
free(ir_test);
|
free(ir_test);
|
||||||
return ERROR_JTAG_INIT_FAILED;
|
return ERROR_JTAG_INIT_FAILED;
|
||||||
|
@ -2249,7 +2257,7 @@ static int jtag_init_inner(struct command_context_s *cmd_ctx)
|
||||||
|
|
||||||
if (jtag_validate_chain() != ERROR_OK)
|
if (jtag_validate_chain() != ERROR_OK)
|
||||||
{
|
{
|
||||||
LOG_ERROR("Could not validate JTAG chain, continuing anyway...");
|
LOG_WARNING("Could not validate JTAG chain, continuing anyway...");
|
||||||
}
|
}
|
||||||
|
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
|
@ -2953,6 +2961,7 @@ void jtag_tap_handle_event( jtag_tap_t * tap, enum jtag_tap_event e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* map state number to SVF state string */
|
/* map state number to SVF state string */
|
||||||
const char* jtag_state_name(enum tap_state state)
|
const char* jtag_state_name(enum tap_state state)
|
||||||
{
|
{
|
||||||
|
@ -2981,3 +2990,4 @@ const char* jtag_state_name(enum tap_state state)
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,14 +45,14 @@ jtag newtap $_CHIPNAME sjc -irlen 4 -ircapture 0x0 -irmask 0x0 -expected-id $_SJ
|
||||||
# SDMA_BYPASS - disables SDMA -
|
# SDMA_BYPASS - disables SDMA -
|
||||||
#
|
#
|
||||||
# Per ARM: DDI0211J_arm1136_r1p5_trm.pdf - the ARM 1136 as a 5 bit IR register
|
# Per ARM: DDI0211J_arm1136_r1p5_trm.pdf - the ARM 1136 as a 5 bit IR register
|
||||||
jtag newtap $_CHIPNAME cpu -irlen 5 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
|
jtag newtap $_CHIPNAME cpu -irlen 5 -ircapture 0x1 -irmask 0x1f -expected-id $_CPUTAPID
|
||||||
|
|
||||||
# No IDCODE for this TAP
|
# No IDCODE for this TAP
|
||||||
jtag newtap $_CHIPNAME whatchacallit -irlen 4 -ircapture 0 -irmask 0xf -expected-id 0x0
|
jtag newtap $_CHIPNAME whatchacallit -irlen 4 -ircapture 0 -irmask 0xf -expected-id 0x0
|
||||||
|
|
||||||
# Per section 40.17.1, table 40-85 the IR register is 4 bits
|
# Per section 40.17.1, table 40-85 the IR register is 4 bits
|
||||||
# But this conflicts with Diagram 6-13, "3bits ir and drs"
|
# But this conflicts with Diagram 6-13, "3bits ir and drs"
|
||||||
jtag newtap $_CHIPNAME smda -irlen 5 -ircapture 0x1 -irmask 0xf -expected-id $_SDMATAPID
|
jtag newtap $_CHIPNAME smda -irlen 5 -ircapture 0x1 -irmask 0x1f -expected-id $_SDMATAPID
|
||||||
|
|
||||||
set _TARGETNAME [format "%s.cpu" $_CHIPNAME]
|
set _TARGETNAME [format "%s.cpu" $_CHIPNAME]
|
||||||
target create $_TARGETNAME arm11 -endian $_ENDIAN -chain-position $_TARGETNAME
|
target create $_TARGETNAME arm11 -endian $_ENDIAN -chain-position $_TARGETNAME
|
||||||
|
|
Loading…
Reference in New Issue