minidriver build test driver "minidriver"

git-svn-id: svn://svn.berlios.de/openocd/trunk@2092 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
oharboe 2009-06-07 13:55:29 +00:00
parent 7dd8754575
commit 14d6605cc9
5 changed files with 275 additions and 19 deletions

View File

@ -323,6 +323,10 @@ AC_ARG_ENABLE(ecosboard,
AS_HELP_STRING([--enable-ecosboard], [Enable building support for eCosBoard based JTAG debugger]),
[build_ecosboard=$enableval], [build_ecosboard=no])
AC_ARG_ENABLE(minidummy,
AS_HELP_STRING([--enable-minidummy], [Enable building support for minidummy driver]),
[build_minidummy=$enableval], [build_minidummy=no])
AC_ARG_ENABLE(ioutil,
AS_HELP_STRING([--enable-ioutil], [Enable ioutil functions - useful for standalone OpenOCD implementations]),
[build_ioutil=$enableval], [build_ioutil=no])
@ -459,6 +463,12 @@ else
AC_DEFINE(BUILD_ECOSBOARD, 0, [0 if you don't want eCosBoard.])
fi
if test $build_minidummy = yes; then
AC_DEFINE(BUILD_MINIDUMMY, 1, [1 if you want minidummy.])
else
AC_DEFINE(BUILD_MINIDUMMY, 0, [0 if you don't want minidummy.])
fi
if test $build_ioutil = yes; then
AC_DEFINE(BUILD_IOUTIL, 1, [1 if you want ioutils.])
else
@ -835,6 +845,7 @@ AM_CONDITIONAL(DUMMY, test $build_dummy = yes)
AM_CONDITIONAL(GIVEIO, test $parport_use_giveio = yes)
AM_CONDITIONAL(EP93XX, test $build_ep93xx = yes)
AM_CONDITIONAL(ECOSBOARD, test $build_ecosboard = yes)
AM_CONDITIONAL(MINIDUMMY, test $build_minidummy = yes)
AM_CONDITIONAL(IOUTIL, test $build_ioutil = yes)
AM_CONDITIONAL(HTTPD, test $build_httpd = yes)
AM_CONDITIONAL(AT91RM9200, test $build_at91rm9200 = yes)

View File

@ -51,6 +51,12 @@ else
ECOSBOARDFILES =
endif
if MINIDUMMY
MINIDUMMYFILES = minidummy.c
else
MINIDUMMYFILES =
endif
if MINIDRIVER
DRIVERFILES =
else
@ -131,6 +137,7 @@ libjtag_la_SOURCES = \
$(PRESTOFILES) \
$(USBPROGFILES) \
$(ECOSBOARDFILES) \
$(MINIDUMMYFILES) \
$(JLINKFILES) \
$(RLINKFILES) \
$(VSLLINKFILES) \

View File

@ -99,6 +99,9 @@ static bool hasKHz = false;
extern jtag_interface_t zy1000_interface;
#endif
#if BUILD_MINIDUMMY == 1
extern jtag_interface_t minidummy_interface;
#endif
#if BUILD_PARPORT == 1
extern jtag_interface_t parport_interface;
#endif
@ -159,6 +162,9 @@ jtag_interface_t *jtag_interfaces[] = {
#if BUILD_ECOSBOARD == 1
&zy1000_interface,
#endif
#if BUILD_MINIDUMMY == 1
&minidummy_interface,
#endif
#if BUILD_PARPORT == 1
&parport_interface,
#endif
@ -2133,7 +2139,6 @@ static int handle_jtag_ntrst_delay_command(struct command_context_s *cmd_ctx, ch
return ERROR_OK;
}
static int handle_jtag_speed_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
{
int retval=ERROR_OK;

190
src/jtag/minidummy.c Normal file
View File

@ -0,0 +1,190 @@
/***************************************************************************
* Copyright (C) 2007-2008 by Øyvind Harboe *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "embeddedice.h"
#include "minidriver.h"
#include "interface.h"
jtag_interface_t minidummy_interface =
{
.name = "minidummy",
.execute_queue = NULL,
.speed = NULL,
.register_commands = NULL,
.init = NULL,
.quit = NULL,
.khz = NULL,
.speed_div = NULL,
.power_dropout = NULL,
.srst_asserted = NULL,
};
int interface_jtag_execute_queue(void)
{
/* synchronously do the operation here */
return ERROR_OK;
}
extern int jtag_check_value(u8 *captured, void *priv);
int interface_jtag_set_end_state(tap_state_t state)
{
return ERROR_OK;
}
int interface_jtag_add_ir_scan(int num_fields, const scan_field_t *fields, tap_state_t state)
{
/* synchronously do the operation here */
return ERROR_OK;
}
int interface_jtag_add_plain_ir_scan(int num_fields, const scan_field_t *fields, tap_state_t state)
{
/* synchronously do the operation here */
return ERROR_OK;
}
/*extern jtag_command_t **jtag_get_last_command_p(void);*/
int interface_jtag_add_dr_scan(int num_fields, const scan_field_t *fields, tap_state_t state)
{
/* synchronously do the operation here */
return ERROR_OK;
}
int interface_jtag_add_plain_dr_scan(int num_fields, const scan_field_t *fields, tap_state_t state)
{
/* synchronously do the operation here */
return ERROR_OK;
}
int interface_jtag_add_tlr()
{
/* synchronously do the operation here */
return ERROR_OK;
}
int interface_jtag_add_reset(int req_trst, int req_srst)
{
/* synchronously do the operation here */
return ERROR_OK;
}
int interface_jtag_add_runtest(int num_cycles, tap_state_t state)
{
/* synchronously do the operation here */
return ERROR_OK;
}
int interface_jtag_add_clocks(int num_cycles)
{
/* synchronously do the operation here */
return ERROR_OK;
}
int interface_jtag_add_sleep(u32 us)
{
jtag_sleep(us);
return ERROR_OK;
}
int interface_jtag_add_pathmove(int num_states, const tap_state_t *path)
{
int state_count;
int tms = 0;
state_count = 0;
tap_state_t cur_state=cmd_queue_cur_state;
while (num_states)
{
if (tap_state_transition(cur_state, false) == path[state_count])
{
tms = 0;
}
else if (tap_state_transition(cur_state, true) == path[state_count])
{
tms = 1;
}
else
{
LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", tap_state_name(cur_state), tap_state_name(path[state_count]));
exit(-1);
}
/* synchronously do the operation here */
cur_state = path[state_count];
state_count++;
num_states--;
}
/* synchronously do the operation here */
return ERROR_OK;
}
void embeddedice_write_dcc(jtag_tap_t *tap, int reg_addr, u8 *buffer, int little, int count)
{
int i;
for (i = 0; i < count; i++)
{
embeddedice_write_reg_inner(tap, reg_addr, fast_target_buffer_get_u32(buffer, little));
buffer += 4;
}
}

View File

@ -0,0 +1,43 @@
/***************************************************************************
* Copyright (C) 2007-2008 by Øyvind Harboe *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
static __inline__ void interface_jtag_add_dr_out_core(jtag_tap_t *target_tap,
int num_fields,
const int *num_bits,
const u32 *value,
enum tap_state end_state)
{
/* synchronously do the operation here */
}
static __inline__ void interface_jtag_add_dr_out(jtag_tap_t *target_tap,
int num_fields,
const int *num_bits,
const u32 *value,
enum tap_state end_state)
{
/* synchronously do the operation here */
}
#define interface_jtag_add_callback(callback, in) callback(in)
#define interface_jtag_add_callback4(callback, in, data1, data2, data3) jtag_set_error(callback(in, data1, data2, data3))