- several small fixes (thanks to Magnus Lundin and Spencer Oliver)
- added support for using Luminary Micro development board 'evb_lm3s811' as a JTAG interface (thanks to Magnus Lundin) git-svn-id: svn://svn.berlios.de/openocd/trunk@106 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
parent
e8ead33804
commit
456737b08b
|
@ -107,7 +107,7 @@ int str9x_build_block_list(struct flash_bank_s *bank)
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
num_sectors = b0_sectors + 2;
|
num_sectors = b0_sectors + 4;
|
||||||
|
|
||||||
bank->num_sectors = num_sectors;
|
bank->num_sectors = num_sectors;
|
||||||
bank->sectors = malloc(sizeof(flash_sector_t) * num_sectors);
|
bank->sectors = malloc(sizeof(flash_sector_t) * num_sectors);
|
||||||
|
@ -510,7 +510,7 @@ int str9x_write(struct flash_bank_s *bank, u8 *buffer, u32 offset, u32 count)
|
||||||
|
|
||||||
while (words_remaining > 0)
|
while (words_remaining > 0)
|
||||||
{
|
{
|
||||||
bank_adr = address & 0x03;
|
bank_adr = address & ~0x03;
|
||||||
|
|
||||||
/* write data command */
|
/* write data command */
|
||||||
target_write_u16(target, bank_adr, 0x40);
|
target_write_u16(target, bank_adr, 0x40);
|
||||||
|
@ -552,7 +552,7 @@ int str9x_write(struct flash_bank_s *bank, u8 *buffer, u32 offset, u32 count)
|
||||||
bytes_written++;
|
bytes_written++;
|
||||||
}
|
}
|
||||||
|
|
||||||
bank_adr = address & 0x03;
|
bank_adr = address & ~0x03;
|
||||||
|
|
||||||
/* write data comamnd */
|
/* write data comamnd */
|
||||||
target_write_u16(target, bank_adr, 0x40);
|
target_write_u16(target, bank_adr, 0x40);
|
||||||
|
|
|
@ -109,6 +109,7 @@ ft2232_layout_t ft2232_layouts[] =
|
||||||
{"jtagkey", jtagkey_init, jtagkey_reset, NULL},
|
{"jtagkey", jtagkey_init, jtagkey_reset, NULL},
|
||||||
{"jtagkey_prototype_v1", jtagkey_init, jtagkey_reset, NULL},
|
{"jtagkey_prototype_v1", jtagkey_init, jtagkey_reset, NULL},
|
||||||
{"signalyzer", usbjtag_init, usbjtag_reset, NULL},
|
{"signalyzer", usbjtag_init, usbjtag_reset, NULL},
|
||||||
|
{"evb_lm3s811", usbjtag_init, usbjtag_reset, NULL},
|
||||||
{"olimex-jtag", olimex_jtag_init, olimex_jtag_reset, olimex_jtag_blink},
|
{"olimex-jtag", olimex_jtag_init, olimex_jtag_reset, olimex_jtag_blink},
|
||||||
{"m5960", m5960_init, m5960_reset, NULL},
|
{"m5960", m5960_init, m5960_reset, NULL},
|
||||||
{NULL, NULL, NULL},
|
{NULL, NULL, NULL},
|
||||||
|
@ -1169,6 +1170,15 @@ int usbjtag_init(void)
|
||||||
nSRST = 0x20;
|
nSRST = 0x20;
|
||||||
nSRSTnOE = 0x20;
|
nSRSTnOE = 0x20;
|
||||||
}
|
}
|
||||||
|
else if (strcmp(ft2232_layout, "evb_lm3s811") == 0)
|
||||||
|
{
|
||||||
|
nTRST = 0x0;
|
||||||
|
nTRSTnOE = 0x00;
|
||||||
|
nSRST = 0x20;
|
||||||
|
nSRSTnOE = 0x20;
|
||||||
|
low_output = 0x88;
|
||||||
|
low_direction = 0x8b;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ERROR("BUG: usbjtag_init called for unknown layout '%s'", ft2232_layout);
|
ERROR("BUG: usbjtag_init called for unknown layout '%s'", ft2232_layout);
|
||||||
|
|
|
@ -1028,7 +1028,6 @@ int jtag_read_buffer(u8 *buffer, scan_command_t *cmd)
|
||||||
|
|
||||||
if (cmd->fields[i].in_check_value)
|
if (cmd->fields[i].in_check_value)
|
||||||
{
|
{
|
||||||
u8 *captured = buf_set_buf(buffer, bit_count, malloc(CEIL(num_bits, 8)), 0, num_bits);
|
|
||||||
if ((cmd->fields[i].in_check_mask && buf_cmp_mask(captured, cmd->fields[i].in_check_value, cmd->fields[i].in_check_mask, num_bits))
|
if ((cmd->fields[i].in_check_mask && buf_cmp_mask(captured, cmd->fields[i].in_check_value, cmd->fields[i].in_check_mask, num_bits))
|
||||||
|| (!cmd->fields[i].in_check_mask && buf_cmp(captured, cmd->fields[i].in_check_mask, num_bits)))
|
|| (!cmd->fields[i].in_check_mask && buf_cmp(captured, cmd->fields[i].in_check_mask, num_bits)))
|
||||||
{
|
{
|
||||||
|
|
|
@ -281,15 +281,15 @@ int arm7_9_add_breakpoint(struct target_s *target, u32 address, u32 length, enum
|
||||||
return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
|
return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type == BKPT_HARD)
|
|
||||||
arm7_9->wp_available--;
|
|
||||||
|
|
||||||
if ((length != 2) && (length != 4))
|
if ((length != 2) && (length != 4))
|
||||||
{
|
{
|
||||||
INFO("only breakpoints of two (Thumb) or four (ARM) bytes length supported");
|
INFO("only breakpoints of two (Thumb) or four (ARM) bytes length supported");
|
||||||
return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
|
return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (type == BKPT_HARD)
|
||||||
|
arm7_9->wp_available--;
|
||||||
|
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1448,7 +1448,7 @@ int arm7_9_step(struct target_s *target, int current, u32 address, int handle_br
|
||||||
{
|
{
|
||||||
armv4_5_common_t *armv4_5 = target->arch_info;
|
armv4_5_common_t *armv4_5 = target->arch_info;
|
||||||
arm7_9_common_t *arm7_9 = armv4_5->arch_info;
|
arm7_9_common_t *arm7_9 = armv4_5->arch_info;
|
||||||
breakpoint_t *breakpoint = target->breakpoints;
|
breakpoint_t *breakpoint = NULL;
|
||||||
|
|
||||||
if (target->state != TARGET_HALTED)
|
if (target->state != TARGET_HALTED)
|
||||||
{
|
{
|
||||||
|
|
|
@ -869,7 +869,7 @@ int arm7tdmi_target_command(struct command_context_s *cmd_ctx, char *cmd, char *
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
chain_pos = strtoul(args[2], NULL, 0);
|
chain_pos = strtoul(args[3], NULL, 0);
|
||||||
|
|
||||||
if (argc >= 5)
|
if (argc >= 5)
|
||||||
variant = args[4];
|
variant = args[4];
|
||||||
|
|
Loading…
Reference in New Issue