/***************************************************************************
- * Copyright (C) 2007-2008 by Øyvind Harboe *
+ * 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 *
#include <cyg/hal/hal_diag.h>
-#define ZYLIN_VERSION "1.52"
+#define ZYLIN_VERSION "1.53"
#define ZYLIN_DATE __DATE__
#define ZYLIN_TIME __TIME__
#define ZYLIN_OPENOCD "$Revision$"
if (!srst)
{
int i;
- for (i = 0; i<1000; i++)
+ for (i = 0; i < 1000; i++)
{
// We don't want to sense our own reset, so we clear here.
// There is of course a timing hole where we could loose
if (i == 1000)
{
LOG_USER("SRST didn't deassert after %dms", i);
- } else if (i>1)
+ } else if (i > 1)
{
LOG_USER("SRST took %dms to deassert", i);
}
{
version_str = ZYLIN_DATE;
}
+ else if (strcmp("pcb", str) == 0)
+ {
+#ifdef CYGPKG_HAL_NIOS2
+ version_str="c";
+#else
+ version_str="b";
+#endif
+ }
else
{
return JIM_ERR;
}
+#ifdef CYGPKG_HAL_NIOS2
+static int jim_zy1000_writefirmware(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
+{
+ if (argc != 2)
+ return JIM_ERR;
+
+ int length;
+ int stat;
+ const char *str = Jim_GetString(argv[1], &length);
+
+ /* BUG!!!! skip header! */
+ void *firmware_address=0x4000000;
+ int firmware_length=0x100000;
+
+ if (length>firmware_length)
+ return JIM_ERR;
+
+ void *err_addr;
+
+ if ((stat = flash_erase((void *)firmware_address, firmware_length, (void **)&err_addr)) != 0)
+ {
+ return JIM_ERR;
+ }
+
+ if ((stat = flash_program(firmware_address, str, length, (void **)&err_addr)) != 0)
+ return JIM_ERR;
+
+ return JIM_OK;
+}
+#endif
+
static int
zylinjtag_Jim_Command_powerstatus(Jim_Interp *interp,
int argc,
Jim_CreateCommand(interp, "powerstatus", zylinjtag_Jim_Command_powerstatus, NULL, NULL);
+#ifdef CYGPKG_HAL_NIOS2
+ Jim_CreateCommand(interp, "updatezy1000firmware", jim_zy1000_writefirmware, NULL, NULL);
+#endif
+
+
return ERROR_OK;
}
// here we shuffle N bits out/in
j = 0;
- while (j<num_bits)
+ while (j < num_bits)
{
tap_state_t pause_state;
int l;
k = num_bits-j;
pause_state = (shiftState == TAP_DRSHIFT)?TAP_DRSHIFT:TAP_IRSHIFT;
- if (k>32)
+ if (k > 32)
{
k = 32;
/* we have more to shift out */
value = 0;
if (fields[i].out_value != NULL)
{
- for (l = 0; l<k; l += 8)
+ for (l = 0; l < k; l += 8)
{
value|=fields[i].out_value[(j + l)/8]<<l;
}
// we're shifting in data to MSB, shift data to be aligned for returning the value
value >>= 32-k;
- for (l = 0; l<k; l += 8)
+ for (l = 0; l < k; l += 8)
{
inBuffer[(j + l)/8]=(value >> l)&0xff;
}
/* execute num_cycles, 32 at the time. */
int i;
- for (i = 0; i<num_cycles; i += 32)
+ for (i = 0; i < num_cycles; i += 32)
{
int num;
num = 32;
- if (num_cycles-i<num)
+ if (num_cycles-i < num)
{
num = num_cycles-i;
}