- reworked file i/o. every fileaccess (target, flash, nand, in future configuration, too) should now go through the fileio subsystem
- added support for reading IHEX files (through fileio) - load/dump_binary renamed to the more generic load/dump_image <file> <address> ['bin'|'ihex'] - added NAND framework (preliminary) - added support for the LPC3180 SLC and MLC NAND controllers (preliminary) - fix initialization for parport - gw16012 fixes/cleanups - added EmbeddedICE version 7 (preliminary, reported on two LPC23xx devices so far) - added 'arm7_9 etm <target#>' configuration command to enable access to the ETM registers git-svn-id: svn://svn.berlios.de/openocd/trunk@132 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
@@ -288,13 +288,17 @@ void gw16012_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size)
|
||||
enum tap_state saved_end_state = end_state;
|
||||
u8 scan_out, scan_in;
|
||||
|
||||
if (ir_scan)
|
||||
gw16012_end_state(TAP_SI);
|
||||
else
|
||||
gw16012_end_state(TAP_SD);
|
||||
/* only if we're not already in the correct Shift state */
|
||||
if (!((!ir_scan && (cur_state == TAP_SD)) || (ir_scan && (cur_state == TAP_SI))))
|
||||
{
|
||||
if (ir_scan)
|
||||
gw16012_end_state(TAP_SI);
|
||||
else
|
||||
gw16012_end_state(TAP_SD);
|
||||
|
||||
gw16012_state_move();
|
||||
gw16012_end_state(saved_end_state);
|
||||
gw16012_state_move();
|
||||
gw16012_end_state(saved_end_state);
|
||||
}
|
||||
|
||||
while (type == SCAN_OUT && ((bits_left - 1) > 7))
|
||||
{
|
||||
@@ -309,6 +313,9 @@ void gw16012_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size)
|
||||
while (bits_left-- > 0)
|
||||
{
|
||||
u8 tms = 0;
|
||||
|
||||
scan_out = buf_get_u32(buffer, bit_count, 1);
|
||||
|
||||
if (bits_left == 0) /* last bit */
|
||||
{
|
||||
if ((ir_scan && (end_state == TAP_SI))
|
||||
@@ -321,14 +328,15 @@ void gw16012_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size)
|
||||
tms = 2;
|
||||
}
|
||||
}
|
||||
|
||||
scan_out = buf_get_u32(buffer, bit_count, 1);
|
||||
|
||||
gw16012_data(scan_out | tms);
|
||||
|
||||
if (type != SCAN_OUT)
|
||||
{
|
||||
gw16012_input(&scan_in);
|
||||
buf_set_u32(buffer, bit_count, 1, ((scan_in & 0x08) >> 3));
|
||||
}
|
||||
}
|
||||
|
||||
bit_count++;
|
||||
}
|
||||
|
||||
@@ -530,6 +538,13 @@ int gw16012_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(gw16012_port + 2, 0x0);
|
||||
#else
|
||||
outb(0x0, gw16012_port + 2);
|
||||
#endif
|
||||
#endif /* PARPORT_USE_PPDEV */
|
||||
|
||||
gw16012_input(&status_port);
|
||||
|
||||
@@ -1143,6 +1143,7 @@ void jtag_sleep(u32 us)
|
||||
*/
|
||||
int jtag_examine_chain()
|
||||
{
|
||||
jtag_device_t *device = jtag_devices;
|
||||
scan_field_t field;
|
||||
u8 idcode_buffer[JTAG_MAX_CHAIN_SIZE * 4];
|
||||
int i;
|
||||
@@ -1204,6 +1205,11 @@ int jtag_examine_chain()
|
||||
break;
|
||||
}
|
||||
|
||||
if (device)
|
||||
{
|
||||
device->idcode = idcode;
|
||||
device = device->next;
|
||||
}
|
||||
device_count++;
|
||||
|
||||
manufacturer = (idcode & 0xffe) >> 1;
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
#include "command.h"
|
||||
|
||||
#if 1
|
||||
#if 0
|
||||
#define _DEBUG_JTAG_IO_
|
||||
#endif
|
||||
|
||||
|
||||
@@ -94,6 +94,7 @@ cable_t cables[] =
|
||||
{
|
||||
/* name tdo trst tms tck tdi srst o_inv i_inv init */
|
||||
{ "wiggler", 0x80, 0x10, 0x02, 0x04, 0x08, 0x01, 0x01, 0x80, 0x80 },
|
||||
{ "wiggler_ntrst_inverted", 0x80, 0x10, 0x02, 0x04, 0x08, 0x01, 0x11, 0x80, 0x80 },
|
||||
{ "old_amt_wiggler", 0x80, 0x01, 0x02, 0x04, 0x08, 0x10, 0x11, 0x80, 0x80 },
|
||||
{ "chameleon", 0x80, 0x00, 0x04, 0x01, 0x02, 0x00, 0x00, 0x80, 0x00 },
|
||||
{ "dlc5", 0x10, 0x00, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x10 },
|
||||
@@ -390,7 +391,7 @@ int parport_init(void)
|
||||
#ifdef __FreeBSD__
|
||||
outb(parport_port + 2, 0x0);
|
||||
#else
|
||||
outb(0x0, dataport);
|
||||
outb(0x0, parport_port + 2);
|
||||
#endif
|
||||
|
||||
#endif /* PARPORT_USE_PPDEV */
|
||||
|
||||
Reference in New Issue
Block a user