- disabled FT2232 debug output (that code should be fairly stable)
- fixed bug in jtag.c where JTAG command type was wrong for PATHMOVE commands - added lattice ISP cable (experimental) - properly initialize parallel port (clear tristate bit) - fixed jtag/Makefile.am that failed with some versions of autotools - print error number if read() in gdbserver.c failed on Windows - fixed handling of opcodes with bits 27-25 b011 (comment was correct, code had a bug) - added support for AT91SAM7SE internal flash git-svn-id: svn://svn.berlios.de/openocd/trunk@122 b42882b7-edfa-0310-969c-e2dbd0fdcd60__archive__
parent
e8947e0d13
commit
a4f2e1eaac
|
@ -405,6 +405,40 @@ int at91sam7_read_part_info(struct flash_bank_s *bank)
|
|||
return ERROR_OK;
|
||||
}
|
||||
|
||||
if (at91sam7_info->cidr_arch == 0x72 )
|
||||
{
|
||||
at91sam7_info->num_nvmbits = 2;
|
||||
at91sam7_info->nvmbits = (status>>8)&0x03;
|
||||
bank->base = 0x100000;
|
||||
bank->bus_width = 4;
|
||||
if (bank->size==0x80000) /* AT91SAM7SE512 */
|
||||
{
|
||||
at91sam7_info->target_name = "AT91SAM7SE512";
|
||||
at91sam7_info->num_lockbits = 32;
|
||||
at91sam7_info->pagesize = 256;
|
||||
at91sam7_info->pages_in_lockregion = 64;
|
||||
at91sam7_info->num_pages = 32*64;
|
||||
}
|
||||
if (bank->size==0x40000)
|
||||
{
|
||||
at91sam7_info->target_name = "AT91SAM7SE256";
|
||||
at91sam7_info->num_lockbits = 16;
|
||||
at91sam7_info->pagesize = 256;
|
||||
at91sam7_info->pages_in_lockregion = 64;
|
||||
at91sam7_info->num_pages = 16*64;
|
||||
}
|
||||
if (bank->size==0x08000)
|
||||
{
|
||||
at91sam7_info->target_name = "AT91SAM7SE32";
|
||||
at91sam7_info->num_lockbits = 8;
|
||||
at91sam7_info->pagesize = 128;
|
||||
at91sam7_info->pages_in_lockregion = 32;
|
||||
at91sam7_info->num_pages = 8*32;
|
||||
}
|
||||
|
||||
return ERROR_OK;
|
||||
}
|
||||
|
||||
if (at91sam7_info->cidr_arch == 0x75 )
|
||||
{
|
||||
at91sam7_info->num_nvmbits = 3;
|
||||
|
|
|
@ -28,14 +28,12 @@ endif
|
|||
if FT2232_LIBFTDI
|
||||
FT2232FILES = ft2232.c
|
||||
else
|
||||
FT2232FILES =
|
||||
endif
|
||||
|
||||
if FT2232_FTD2XX
|
||||
FT2232FILES = ft2232.c
|
||||
else
|
||||
FT2232FILES =
|
||||
endif
|
||||
endif
|
||||
|
||||
if AMTJTAGACCEL
|
||||
AMTJTAGACCELFILES = amt_jtagaccel.c
|
||||
|
|
|
@ -52,13 +52,13 @@
|
|||
|
||||
/* enable this to debug io latency
|
||||
*/
|
||||
#if 1
|
||||
#if 0
|
||||
#define _DEBUG_USB_IO_
|
||||
#endif
|
||||
|
||||
/* enable this to debug communication
|
||||
*/
|
||||
#if 1
|
||||
#if 0
|
||||
#define _DEBUG_USB_COMMS_
|
||||
#endif
|
||||
|
||||
|
|
|
@ -714,7 +714,7 @@ int jtag_add_pathmove(int num_states, enum tap_state *path)
|
|||
*last_cmd = cmd_queue_alloc(sizeof(jtag_command_t));
|
||||
last_comand_pointer = &((*last_cmd)->next);
|
||||
(*last_cmd)->next = NULL;
|
||||
(*last_cmd)->type = JTAG_RUNTEST;
|
||||
(*last_cmd)->type = JTAG_PATHMOVE;
|
||||
|
||||
(*last_cmd)->cmd.pathmove = cmd_queue_alloc(sizeof(pathmove_command_t));
|
||||
(*last_cmd)->cmd.pathmove->num_states = num_states;
|
||||
|
|
|
@ -98,6 +98,7 @@ cable_t cables[] =
|
|||
{ "chameleon", 0x80, 0x00, 0x04, 0x01, 0x02, 0x00, 0x00, 0x80, 0x00 },
|
||||
{ "dlc5", 0x10, 0x00, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x10 },
|
||||
{ "triton", 0x80, 0x08, 0x04, 0x01, 0x02, 0x00, 0x00, 0x80, 0x00 },
|
||||
{ "lattice", 0x40, 0x10, 0x04, 0x02, 0x01, 0x08, 0x00, 0x00, 0x18 },
|
||||
{ NULL, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
};
|
||||
|
||||
|
@ -311,7 +312,7 @@ int parport_init(void)
|
|||
dataport_value = cable->PORT_INIT;
|
||||
|
||||
#if PARPORT_USE_PPDEV == 1
|
||||
if (device_handle>0)
|
||||
if (device_handle > 0)
|
||||
{
|
||||
ERROR("device is already opened");
|
||||
return ERROR_JTAG_INIT_FAILED;
|
||||
|
@ -322,13 +323,14 @@ int parport_init(void)
|
|||
|
||||
snprintf(buffer, 256, "/dev/ppi%d", parport_port);
|
||||
device_handle = open(buffer, O_WRONLY);
|
||||
#else
|
||||
#else /* not __Free_BSD */
|
||||
DEBUG("opening /dev/parport%d...", parport_port);
|
||||
|
||||
snprintf(buffer, 256, "/dev/parport%d", parport_port);
|
||||
device_handle = open(buffer, O_WRONLY);
|
||||
#endif
|
||||
if (device_handle<0)
|
||||
#endif /* __FreeBSD__ */
|
||||
|
||||
if (device_handle < 0)
|
||||
{
|
||||
ERROR("cannot open device. check it exists and that user read and write rights are set");
|
||||
return ERROR_JTAG_INIT_FAILED;
|
||||
|
@ -359,8 +361,9 @@ int parport_init(void)
|
|||
ERROR("cannot set compatible 1284 mode to device");
|
||||
return ERROR_JTAG_INIT_FAILED;
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
#endif /* not __Free_BSD__ */
|
||||
|
||||
#else /* not PARPORT_USE_PPDEV */
|
||||
if (parport_port == 0)
|
||||
{
|
||||
parport_port = 0x378;
|
||||
|
@ -381,6 +384,14 @@ int parport_init(void)
|
|||
return ERROR_JTAG_INIT_FAILED;
|
||||
}
|
||||
DEBUG("...privileges granted");
|
||||
|
||||
/* make sure parallel port is in right mode (clear tristate and interrupt */
|
||||
#ifdef __FreeBSD__
|
||||
outb(parport_port + 2, 0x0);
|
||||
#else
|
||||
outb(0x0, dataport);
|
||||
#endif
|
||||
|
||||
#endif /* PARPORT_USE_PPDEV */
|
||||
|
||||
parport_reset(0, 0);
|
||||
|
|
|
@ -98,7 +98,7 @@ int gdb_get_char(connection_t *connection, int* next_char)
|
|||
case WSAECONNABORTED:
|
||||
return ERROR_SERVER_REMOTE_CLOSED;
|
||||
default:
|
||||
ERROR("read: %d", strerror(errno));
|
||||
ERROR("read: %d", errno);
|
||||
exit(-1);
|
||||
}
|
||||
#else
|
||||
|
|
|
@ -1247,7 +1247,7 @@ int evaluate_opcode(u32 opcode, u32 address, arm_instruction_t *instruction)
|
|||
}
|
||||
|
||||
/* catch opcodes with [27:25] = b011 */
|
||||
if ((opcode & 0x0e000000) == 0x04000000)
|
||||
if ((opcode & 0x0e000000) == 0x06000000)
|
||||
{
|
||||
/* Undefined instruction */
|
||||
if ((opcode & 0x00000010) == 0x00000010)
|
||||
|
|
Loading…
Reference in New Issue