You can subscribe to this list here.
| 2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(75) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2009 |
Jan
(70) |
Feb
(20) |
Mar
(52) |
Apr
(149) |
May
(387) |
Jun
(466) |
Jul
(133) |
Aug
(87) |
Sep
(122) |
Oct
(140) |
Nov
(185) |
Dec
(105) |
| 2010 |
Jan
(85) |
Feb
(45) |
Mar
(75) |
Apr
(17) |
May
(41) |
Jun
(52) |
Jul
(33) |
Aug
(29) |
Sep
(36) |
Oct
(15) |
Nov
(26) |
Dec
(34) |
| 2011 |
Jan
(26) |
Feb
(25) |
Mar
(26) |
Apr
(29) |
May
(20) |
Jun
(27) |
Jul
(15) |
Aug
(32) |
Sep
(13) |
Oct
(64) |
Nov
(60) |
Dec
(10) |
| 2012 |
Jan
(64) |
Feb
(63) |
Mar
(39) |
Apr
(43) |
May
(54) |
Jun
(11) |
Jul
(30) |
Aug
(45) |
Sep
(11) |
Oct
(70) |
Nov
(24) |
Dec
(23) |
| 2013 |
Jan
(17) |
Feb
(8) |
Mar
(35) |
Apr
(40) |
May
(20) |
Jun
(24) |
Jul
(36) |
Aug
(25) |
Sep
(42) |
Oct
(40) |
Nov
(9) |
Dec
(21) |
| 2014 |
Jan
(29) |
Feb
(24) |
Mar
(60) |
Apr
(22) |
May
(22) |
Jun
(46) |
Jul
(11) |
Aug
(23) |
Sep
(26) |
Oct
(10) |
Nov
(14) |
Dec
(2) |
| 2015 |
Jan
(28) |
Feb
(47) |
Mar
(33) |
Apr
(58) |
May
(5) |
Jun
(1) |
Jul
|
Aug
(8) |
Sep
(12) |
Oct
(25) |
Nov
(58) |
Dec
(21) |
| 2016 |
Jan
(12) |
Feb
(40) |
Mar
(2) |
Apr
(1) |
May
(67) |
Jun
(2) |
Jul
(5) |
Aug
(36) |
Sep
|
Oct
(24) |
Nov
(17) |
Dec
(50) |
| 2017 |
Jan
(14) |
Feb
(16) |
Mar
(2) |
Apr
(35) |
May
(14) |
Jun
(16) |
Jul
(3) |
Aug
(3) |
Sep
|
Oct
(19) |
Nov
|
Dec
(16) |
| 2018 |
Jan
(55) |
Feb
(11) |
Mar
(34) |
Apr
(14) |
May
(4) |
Jun
(20) |
Jul
(39) |
Aug
(16) |
Sep
(17) |
Oct
(16) |
Nov
(20) |
Dec
(30) |
| 2019 |
Jan
(29) |
Feb
(24) |
Mar
(37) |
Apr
(26) |
May
(19) |
Jun
(21) |
Jul
(2) |
Aug
(3) |
Sep
(9) |
Oct
(12) |
Nov
(12) |
Dec
(12) |
| 2020 |
Jan
(47) |
Feb
(36) |
Mar
(54) |
Apr
(44) |
May
(37) |
Jun
(19) |
Jul
(32) |
Aug
(13) |
Sep
(16) |
Oct
(24) |
Nov
(32) |
Dec
(11) |
| 2021 |
Jan
(14) |
Feb
(5) |
Mar
(40) |
Apr
(32) |
May
(42) |
Jun
(31) |
Jul
(29) |
Aug
(47) |
Sep
(38) |
Oct
(17) |
Nov
(74) |
Dec
(33) |
| 2022 |
Jan
(11) |
Feb
(15) |
Mar
(40) |
Apr
(21) |
May
(39) |
Jun
(44) |
Jul
(19) |
Aug
(46) |
Sep
(79) |
Oct
(35) |
Nov
(21) |
Dec
(15) |
| 2023 |
Jan
(56) |
Feb
(13) |
Mar
(43) |
Apr
(28) |
May
(60) |
Jun
(15) |
Jul
(29) |
Aug
(28) |
Sep
(32) |
Oct
(21) |
Nov
(42) |
Dec
(39) |
| 2024 |
Jan
(35) |
Feb
(17) |
Mar
(28) |
Apr
(7) |
May
(14) |
Jun
(35) |
Jul
(30) |
Aug
(35) |
Sep
(30) |
Oct
(28) |
Nov
(38) |
Dec
(18) |
| 2025 |
Jan
(21) |
Feb
(28) |
Mar
(36) |
Apr
(35) |
May
(34) |
Jun
(58) |
Jul
(9) |
Aug
(54) |
Sep
(47) |
Oct
(15) |
Nov
(47) |
Dec
|
|
From: <zw...@ma...> - 2009-05-12 09:22:10
|
Author: zwelch Date: 2009-05-12 09:22:07 +0200 (Tue, 12 May 2009) New Revision: 1756 Modified: trunk/src/helper/types.h Log: Remove config.h from types.h; all .c files are required to include it. Modified: trunk/src/helper/types.h =================================================================== --- trunk/src/helper/types.h 2009-05-12 07:13:12 UTC (rev 1755) +++ trunk/src/helper/types.h 2009-05-12 07:22:07 UTC (rev 1756) @@ -23,10 +23,6 @@ #ifndef TYPES_H #define TYPES_H -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> #endif |
|
From: <zw...@ma...> - 2009-05-12 09:13:16
|
Author: zwelch Date: 2009-05-12 09:13:12 +0200 (Tue, 12 May 2009) New Revision: 1755 Modified: trunk/src/jtag/rlink/rlink_speed_table.c Log: Include config.h in pregenerated rlink_speed_table.c source. Modified: trunk/src/jtag/rlink/rlink_speed_table.c =================================================================== --- trunk/src/jtag/rlink/rlink_speed_table.c 2009-05-12 07:12:10 UTC (rev 1754) +++ trunk/src/jtag/rlink/rlink_speed_table.c 2009-05-12 07:13:12 UTC (rev 1755) @@ -1,4 +1,7 @@ /* This file was created automatically by ../../../tools/rlink_make_speed_table/rlink_make_speed_table.pl. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #include "rlink.h" #include "st7.h" |
|
From: <zw...@ma...> - 2009-05-12 09:12:15
|
Author: zwelch
Date: 2009-05-12 09:12:10 +0200 (Tue, 12 May 2009)
New Revision: 1754
Modified:
trunk/tools/rlink_make_speed_table/rlink_make_speed_table.pl
Log:
Update rlink_make_speed_table.pl script to add config.h to its output.
Modified: trunk/tools/rlink_make_speed_table/rlink_make_speed_table.pl
===================================================================
--- trunk/tools/rlink_make_speed_table/rlink_make_speed_table.pl 2009-05-12 07:03:50 UTC (rev 1753)
+++ trunk/tools/rlink_make_speed_table/rlink_make_speed_table.pl 2009-05-12 07:12:10 UTC (rev 1754)
@@ -21,14 +21,21 @@
# A simple utility to read a list of files (names composed by numeric prescaler arguments) and compose a C source file defining data structures which hold the binary data read from those files.
-@speed_table = ();
+my @speed_table = ();
-printf("/* This file was created automatically by %s. */\n\n", $0);
-for $i ('rlink', 'st7') {
- printf("#include \"$i.h\"\n");
-}
-printf("\n");
+print <<HEADER;
+/* This file was created automatically by the following script:
+ * $0
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#include "rlink.h"
+#include "st7.h"
+
+HEADER
+
for $prescaler (sort {$b <=> $a} @ARGV) {
my(@ary) = (
byte_array_from_file(${prescaler} . "_init.dtc"),
|
|
From: oharboe at B. <oh...@ma...> - 2009-05-12 09:03:50
|
Author: oharboe
Date: 2009-05-12 09:03:50 +0200 (Tue, 12 May 2009)
New Revision: 1753
Modified:
trunk/src/target/arm7tdmi.c
trunk/src/target/arm9tdmi.c
Log:
fix memory corruption introduce in 1730
Modified: trunk/src/target/arm7tdmi.c
===================================================================
--- trunk/src/target/arm7tdmi.c 2009-05-12 06:59:21 UTC (rev 1752)
+++ trunk/src/target/arm7tdmi.c 2009-05-12 07:03:50 UTC (rev 1753)
@@ -244,9 +244,9 @@
}
}
-static int arm7endianness(u8 *in, jtag_callback_data_t size, jtag_callback_data_t be, jtag_callback_data_t dummy)
+static int arm7endianness(u8 *in, jtag_callback_data_t size, jtag_callback_data_t be, jtag_callback_data_t captured)
{
- arm_endianness(in, in, (int)size, (int)be, 1);
+ arm_endianness((u8 *)captured, in, (int)size, (int)be, 1);
return ERROR_OK;
}
@@ -274,11 +274,11 @@
fields[1].tap = jtag_info->tap;
fields[1].num_bits = 32;
fields[1].out_value = NULL;
- fields[1].in_value = (u8 *)in;
+ jtag_alloc_in_value32(&fields[1]);
jtag_add_dr_scan(2, fields, TAP_INVALID);
- jtag_add_callback4(arm7endianness, in, (jtag_callback_data_t)size, (jtag_callback_data_t)be, (jtag_callback_data_t)NULL);
+ jtag_add_callback4(arm7endianness, in, (jtag_callback_data_t)size, (jtag_callback_data_t)be, (jtag_callback_data_t)fields[1].in_value);
jtag_add_runtest(0, TAP_INVALID);
Modified: trunk/src/target/arm9tdmi.c
===================================================================
--- trunk/src/target/arm9tdmi.c 2009-05-12 06:59:21 UTC (rev 1752)
+++ trunk/src/target/arm9tdmi.c 2009-05-12 07:03:50 UTC (rev 1753)
@@ -291,9 +291,9 @@
extern void arm_endianness(u8 *tmp, void *in, int size, int be, int flip);
-static int arm9endianness(u8 *in, jtag_callback_data_t size, jtag_callback_data_t be, jtag_callback_data_t dummy)
+static int arm9endianness(u8 *in, jtag_callback_data_t size, jtag_callback_data_t be, jtag_callback_data_t captured)
{
- arm_endianness(in, in, (int)size, (int)be, 0);
+ arm_endianness((u8 *)captured, in, (int)size, (int)be, 0);
return ERROR_OK;
}
@@ -317,7 +317,7 @@
fields[0].tap = jtag_info->tap;
fields[0].num_bits = 32;
fields[0].out_value = NULL;
- fields[0].in_value = (u8 *)in;
+ jtag_alloc_in_value32(&fields[0]);
fields[1].tap = jtag_info->tap;
fields[1].num_bits = 3;
@@ -331,7 +331,7 @@
jtag_add_dr_scan(3, fields, TAP_INVALID);
- jtag_add_callback4(arm9endianness, in, (jtag_callback_data_t)size, (jtag_callback_data_t)be, 0);
+ jtag_add_callback4(arm9endianness, in, (jtag_callback_data_t)size, (jtag_callback_data_t)be, (jtag_callback_data_t)fields[0].in_value);
jtag_add_runtest(0, TAP_INVALID);
|
|
From: oharboe at B. <oh...@ma...> - 2009-05-12 08:59:23
|
Author: oharboe
Date: 2009-05-12 08:59:21 +0200 (Tue, 12 May 2009)
New Revision: 1752
Modified:
trunk/src/jtag/jtag.c
trunk/src/jtag/jtag.h
Log:
added jtag_alloc_in_value32 - not used in this commit.
Modified: trunk/src/jtag/jtag.c
===================================================================
--- trunk/src/jtag/jtag.c 2009-05-12 06:17:22 UTC (rev 1751)
+++ trunk/src/jtag/jtag.c 2009-05-12 06:59:21 UTC (rev 1752)
@@ -718,7 +718,7 @@
if (fields[i].num_bits<=32)
{
/* This is enough space and we're executing this synchronously */
- fields[i].in_value=(u8 *)&fields[i].intmp;
+ fields[i].in_value=fields[i].intmp;
} else
{
fields[i].in_value=(u8 *)malloc(CEIL(fields[i].num_bits, 8));
@@ -3562,4 +3562,12 @@
}
#endif // _DEBUG_JTAG_IO_
+#ifndef HAVE_JTAG_MINIDRIVER_H
+void jtag_alloc_in_value32(scan_field_t *field)
+{
+ field->in_value=(u8 *)cmd_queue_alloc(4);
+}
+#endif
+
+
/*-----</Cable Helper API>--------------------------------------*/
Modified: trunk/src/jtag/jtag.h
===================================================================
--- trunk/src/jtag/jtag.h 2009-05-12 06:17:22 UTC (rev 1751)
+++ trunk/src/jtag/jtag.h 2009-05-12 06:59:21 UTC (rev 1752)
@@ -277,7 +277,7 @@
/* internal work space */
int allocated; /* in_value has been allocated for the queue */
int modified; /* did we modify the in_value? */
- u32 intmp; /* temporary storage for checking synchronously */
+ u8 intmp[4]; /* temporary storage for checking synchronously */
} scan_field_t;
enum scan_type {
@@ -565,6 +565,26 @@
extern int interface_jtag_add_ir_scan(int num_fields, scan_field_t* fields, tap_state_t endstate);
extern void jtag_add_dr_scan(int num_fields, scan_field_t* fields, tap_state_t endstate);
+/* set in_value to point to 32 bits of memory to scan into. This function
+ * is a way to handle the case of synchronous and asynchronous
+ * JTAG queues.
+ *
+ * In the event of an asynchronous queue execution the queue buffer
+ * allocation method is used, for the synchronous case the temporary 32 bits come
+ * from the input field itself.
+ */
+
+#ifndef HAVE_JTAG_MINIDRIVER_H
+extern void jtag_alloc_in_value32(scan_field_t *field);
+#else
+static __inline__ void jtag_alloc_in_value32(scan_field_t *field)
+{
+ field->in_value=field->intmp;
+}
+#endif
+
+
+
/* This version of jtag_add_dr_scan() uses the check_value/mask fields */
extern void jtag_add_dr_scan_check(int num_fields, scan_field_t* fields, tap_state_t endstate);
extern int interface_jtag_add_dr_scan(int num_fields, scan_field_t* fields, tap_state_t endstate);
|
|
From: oharboe at B. <oh...@ma...> - 2009-05-12 08:17:26
|
Author: oharboe
Date: 2009-05-12 08:17:22 +0200 (Tue, 12 May 2009)
New Revision: 1751
Modified:
trunk/src/jtag/jtag.c
Log:
fix ancient bug & SEGFAULT in irscan
Modified: trunk/src/jtag/jtag.c
===================================================================
--- trunk/src/jtag/jtag.c 2009-05-12 04:52:15 UTC (rev 1750)
+++ trunk/src/jtag/jtag.c 2009-05-12 06:17:22 UTC (rev 1751)
@@ -2889,9 +2889,11 @@
}
}
- fields = malloc(sizeof(scan_field_t) * argc / 2);
+ int num_fields= num_fields;
- for (i = 0; i < argc / 2; i++)
+ fields = malloc(sizeof(scan_field_t) * num_fields);
+
+ for (i = 0; i < num_fields; i++)
{
tap = jtag_TapByString( args[i*2] );
if (tap==NULL)
@@ -2901,19 +2903,20 @@
}
int field_size = tap->ir_length;
fields[i].tap = tap;
+ fields[i].num_bits = field_size;
fields[i].out_value = malloc(CEIL(field_size, 8));
buf_set_u32(fields[i].out_value, 0, field_size, strtoul(args[i*2+1], NULL, 0));
fields[i].in_value = NULL;
}
- jtag_add_ir_scan(argc / 2, fields, TAP_INVALID);
+ jtag_add_ir_scan(num_fields, fields, TAP_INVALID);
/* did we have an endstate? */
if (endstate != TAP_INVALID)
jtag_add_end_state(endstate);
jtag_execute_queue();
- for (i = 0; i < argc / 2; i++)
+ for (i = 0; i < num_fields; i++)
free(fields[i].out_value);
free (fields);
|
|
From: <zw...@ma...> - 2009-05-12 06:52:28
|
Author: zwelch Date: 2009-05-12 06:52:15 +0200 (Tue, 12 May 2009) New Revision: 1750 Modified: trunk/src/helper/system.h trunk/src/jtag/jtag.c trunk/src/xsvf/xsvf.c Log: Include assert.h in system.h to promote tree-wide use of assertions. Modified: trunk/src/helper/system.h =================================================================== --- trunk/src/helper/system.h 2009-05-11 22:37:52 UTC (rev 1749) +++ trunk/src/helper/system.h 2009-05-12 04:52:15 UTC (rev 1750) @@ -26,6 +26,7 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <assert.h> #include <ctype.h> #include <errno.h> Modified: trunk/src/jtag/jtag.c =================================================================== --- trunk/src/jtag/jtag.c 2009-05-11 22:37:52 UTC (rev 1749) +++ trunk/src/jtag/jtag.c 2009-05-12 04:52:15 UTC (rev 1750) @@ -33,8 +33,8 @@ #ifdef HAVE_STRINGS_H #include <strings.h> #endif -#include <assert.h> + int jtag_flush_queue_count; /* count # of flushes for profiling / debugging purposes */ static void jtag_add_scan_check(void (*jtag_add_scan)(int num_fields, scan_field_t *fields, tap_state_t state), Modified: trunk/src/xsvf/xsvf.c =================================================================== --- trunk/src/xsvf/xsvf.c 2009-05-11 22:37:52 UTC (rev 1749) +++ trunk/src/xsvf/xsvf.c 2009-05-12 04:52:15 UTC (rev 1750) @@ -44,9 +44,7 @@ #include "xsvf.h" #include "jtag.h" -#include <assert.h> - /* XSVF commands, from appendix B of xapp503.pdf */ #define XCOMPLETE 0x00 #define XTDOMASK 0x01 |
|
From: <zw...@ma...> - 2009-05-12 00:38:05
|
Author: zwelch
Date: 2009-05-12 00:37:52 +0200 (Tue, 12 May 2009)
New Revision: 1749
Modified:
trunk/src/server/httpd/httpd.tcl
Log:
Remove duplicate definition of encode in httpd.tcl.
Modified: trunk/src/server/httpd/httpd.tcl
===================================================================
--- trunk/src/server/httpd/httpd.tcl 2009-05-11 21:05:51 UTC (rev 1748)
+++ trunk/src/server/httpd/httpd.tcl 2009-05-11 22:37:52 UTC (rev 1749)
@@ -94,11 +94,6 @@
}
-# encode text
-proc encode {a} {
- return [string map {\n <br/> { } { } \t { } > > < < / /} $a]
-}
-
proc first_flash_base {} {
set t [lindex 0 [ocd_flash_banks]]
return $t(base)
|
|
From: <oh...@ma...> - 2009-05-11 23:05:54
|
Author: oharboe
Date: 2009-05-11 23:05:51 +0200 (Mon, 11 May 2009)
New Revision: 1748
Modified:
trunk/src/jtag/jtag.c
trunk/src/jtag/jtag.h
trunk/src/target/arm7tdmi.c
Log:
now builds on 64 and 32 bit systems
Modified: trunk/src/jtag/jtag.c
===================================================================
--- trunk/src/jtag/jtag.c 2009-05-11 13:40:48 UTC (rev 1747)
+++ trunk/src/jtag/jtag.c 2009-05-11 21:05:51 UTC (rev 1748)
@@ -737,7 +737,7 @@
if ((fields[i].check_value!=NULL)&&(fields[i].in_value!=NULL))
{
/* this is synchronous for a minidriver */
- jtag_add_callback4(jtag_check_value_mask_callback, fields[i].in_value, fields[i].check_value, fields[i].check_mask, (jtag_callback_data_t)fields[i].num_bits);
+ jtag_add_callback4(jtag_check_value_mask_callback, fields[i].in_value, (jtag_callback_data_t)fields[i].check_value, (jtag_callback_data_t)fields[i].check_mask, (jtag_callback_data_t)fields[i].num_bits);
}
if (fields[i].allocated)
{
Modified: trunk/src/jtag/jtag.h
===================================================================
--- trunk/src/jtag/jtag.h 2009-05-11 13:40:48 UTC (rev 1747)
+++ trunk/src/jtag/jtag.h 2009-05-11 21:05:51 UTC (rev 1748)
@@ -589,7 +589,7 @@
/* This type can store an integer safely by a normal cast on 64 and
* 32 bit systems. */
-typedef void *jtag_callback_data_t;
+typedef intptr_t jtag_callback_data_t;
/* The generic callback mechanism.
*
Modified: trunk/src/target/arm7tdmi.c
===================================================================
--- trunk/src/target/arm7tdmi.c 2009-05-11 13:40:48 UTC (rev 1747)
+++ trunk/src/target/arm7tdmi.c 2009-05-11 21:05:51 UTC (rev 1748)
@@ -278,7 +278,7 @@
jtag_add_dr_scan(2, fields, TAP_INVALID);
- jtag_add_callback4(arm7endianness, in, (jtag_callback_data_t)size, (jtag_callback_data_t)be, NULL);
+ jtag_add_callback4(arm7endianness, in, (jtag_callback_data_t)size, (jtag_callback_data_t)be, (jtag_callback_data_t)NULL);
jtag_add_runtest(0, TAP_INVALID);
|
|
From: oharboe at B. <oh...@ma...> - 2009-05-11 15:40:51
|
Author: oharboe
Date: 2009-05-11 15:40:48 +0200 (Mon, 11 May 2009)
New Revision: 1747
Modified:
zy1000/trunk/build/include/jtag_minidriver.h
Log:
sync up to bitbang driver when exiting scans
Modified: zy1000/trunk/build/include/jtag_minidriver.h
===================================================================
--- zy1000/trunk/build/include/jtag_minidriver.h 2009-05-11 12:03:40 UTC (rev 1746)
+++ zy1000/trunk/build/include/jtag_minidriver.h 2009-05-11 13:40:48 UTC (rev 1747)
@@ -162,7 +162,7 @@
nextTap=jtag_NextEnabledTap(tap);
if (nextTap==NULL)
{
- pause_state = TAP_DRPAUSE;
+ pause_state = end_state;
}
if (tap == target_tap)
{
@@ -178,7 +178,6 @@
shiftValueInner(TAP_DRSHIFT, pause_state, 1, 0);
}
}
- setCurrentState(end_state);
}
static __inline__ void interface_jtag_add_dr_out(jtag_tap_t *target_tap,
@@ -194,14 +193,12 @@
/* used by embeddedice_write_reg_inner() */
shiftValueInner(TAP_DRSHIFT, TAP_DRSHIFT, num_bits[0], value[0]);
shiftValueInner(TAP_DRSHIFT, TAP_DRSHIFT, num_bits[1], value[1]);
- shiftValueInner(TAP_DRSHIFT, TAP_DRPAUSE, num_bits[2], value[2]);
- setCurrentState(end_state);
+ shiftValueInner(TAP_DRSHIFT, end_state, num_bits[2], value[2]);
} else if ((singletap)&&(num_fields==2))
{
/* used by arm7 code */
shiftValueInner(TAP_DRSHIFT, TAP_DRSHIFT, num_bits[0], value[0]);
- shiftValueInner(TAP_DRSHIFT, TAP_DRPAUSE, num_bits[1], value[1]);
- setCurrentState(end_state);
+ shiftValueInner(TAP_DRSHIFT, end_state, num_bits[1], value[1]);
} else
{
interface_jtag_add_dr_out_core(target_tap, num_fields, num_bits, value, end_state);
|
|
From: oharboe at B. <oh...@ma...> - 2009-05-11 14:03:41
|
Author: oharboe Date: 2009-05-11 14:03:40 +0200 (Mon, 11 May 2009) New Revision: 1746 Modified: trunk/src/target/etm.c Log: fix jtag_add_dr_scan() usage a bit... avoid lots of malloc()'s. Modified: trunk/src/target/etm.c =================================================================== --- trunk/src/target/etm.c 2009-05-11 11:27:35 UTC (rev 1745) +++ trunk/src/target/etm.c 2009-05-11 12:03:40 UTC (rev 1746) @@ -411,31 +411,27 @@ fields[0].tap = etm_reg->jtag_info->tap; fields[0].num_bits = 32; - fields[0].out_value = malloc(4); + u8 tmp1[4]; + fields[0].out_value = tmp1; buf_set_u32(fields[0].out_value, 0, 32, value); - fields[0].in_value = NULL; fields[1].tap = etm_reg->jtag_info->tap; fields[1].num_bits = 7; - fields[1].out_value = malloc(1); + u8 tmp2; + fields[1].out_value = &tmp2; buf_set_u32(fields[1].out_value, 0, 7, reg_addr); - fields[1].in_value = NULL; fields[2].tap = etm_reg->jtag_info->tap; fields[2].num_bits = 1; - fields[2].out_value = malloc(1); + u8 tmp3; + fields[2].out_value = &tmp3; buf_set_u32(fields[2].out_value, 0, 1, 1); - fields[2].in_value = NULL; jtag_add_dr_scan(3, fields, TAP_INVALID); - free(fields[0].out_value); - free(fields[1].out_value); - free(fields[2].out_value); - return ERROR_OK; } |
|
From: oharboe at B. <oh...@ma...> - 2009-05-11 13:27:36
|
Author: oharboe Date: 2009-05-11 13:27:35 +0200 (Mon, 11 May 2009) New Revision: 1745 Modified: zy1000/trunk/ecoshal/hal/zylin/phi/current/include/pkgconf/mlt_zylin_phi_dram_fast.ldi Log: wip Modified: zy1000/trunk/ecoshal/hal/zylin/phi/current/include/pkgconf/mlt_zylin_phi_dram_fast.ldi =================================================================== --- zy1000/trunk/ecoshal/hal/zylin/phi/current/include/pkgconf/mlt_zylin_phi_dram_fast.ldi 2009-05-11 11:20:45 UTC (rev 1744) +++ zy1000/trunk/ecoshal/hal/zylin/phi/current/include/pkgconf/mlt_zylin_phi_dram_fast.ldi 2009-05-11 11:27:35 UTC (rev 1745) @@ -39,6 +39,13 @@ * (*phi_misc*) ; * (*cyg_sbdrop*) ; * (*target_call_event_callbacks*) ; + * (*alarm_thread*) ; + * (*embedded_set_reg*) ; + * (*bcmp*) ; + * (text.write) ; + * (text.malloc) ; + * (text.cyg_ticks) ; + * (text.free) ; |
|
From: <zw...@ma...> - 2009-05-11 13:20:54
|
Author: zwelch
Date: 2009-05-11 13:20:45 +0200 (Mon, 11 May 2009)
New Revision: 1744
Modified:
trunk/configure.in
trunk/src/helper/jim-eventloop.c
trunk/src/helper/jim.c
trunk/src/helper/jim.h
Log:
Update jim helper files to use proper configure script support:
- configure.in: Add AC_TYPE_LONG_LONG_INT to detect 'long long int' support.
- configure.in: Add AC_C_CONST to provide equivalent support as jim.h.
- jim*.c: include config.h when HAVE_CONFIG_H is defined.
- jim*.{h,c}: use HAVE_LONG_LONG_INT definition from config.h.
- jim.h: Remove hard-coded const and HAVE_LONG_LONG definitions.
- jim.h: -DJIM_NO_CONST has been obsoleted; -Dconst is equivalent.
Modified: trunk/configure.in
===================================================================
--- trunk/configure.in 2009-05-11 10:10:11 UTC (rev 1743)
+++ trunk/configure.in 2009-05-11 11:20:45 UTC (rev 1744)
@@ -816,6 +816,10 @@
AC_PROG_RANLIB
AC_PROG_LIBTOOL
+dnl configure checks required for Jim files (these are obsolete w/ C99)
+AC_C_CONST
+AC_TYPE_LONG_LONG_INT
+
# Look for environ alternatives. Possibility #1: is environ in unistd.h or stdlib.h?
AC_MSG_CHECKING([for environ in unistd.h and stdlib.h])
AC_COMPILE_IFELSE([
Modified: trunk/src/helper/jim-eventloop.c
===================================================================
--- trunk/src/helper/jim-eventloop.c 2009-05-11 10:10:11 UTC (rev 1743)
+++ trunk/src/helper/jim-eventloop.c 2009-05-11 11:20:45 UTC (rev 1744)
@@ -44,6 +44,9 @@
* - more complete [after] command with [after info] and other subcommands.
* - Win32 port
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
#define JIM_EXTENSION
#define __JIM_EVENTLOOP_CORE__
Modified: trunk/src/helper/jim.c
===================================================================
--- trunk/src/helper/jim.c 2009-05-11 10:10:11 UTC (rev 1743)
+++ trunk/src/helper/jim.c 2009-05-11 11:20:45 UTC (rev 1744)
@@ -39,6 +39,10 @@
* are those of the authors and should not be interpreted as representing
* official policies, either expressed or implied, of the Jim Tcl Project.
**/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#define __JIM_CORE__
#define JIM_OPTIMIZATION /* comment to avoid optimizations and reduce size */
@@ -160,7 +164,7 @@
* Ignores `locale' stuff. Assumes that the upper and lower case
* alphabets and digits are each contiguous.
*/
-#ifdef HAVE_LONG_LONG
+#ifdef HAVE_LONG_LONG_INT
#define JimIsAscii(c) (((c) & ~0x7f) == 0)
static jim_wide JimStrtoll(const char *nptr, char **endptr, register int base)
{
@@ -424,7 +428,7 @@
{
char *endptr;
-#ifdef HAVE_LONG_LONG
+#ifdef HAVE_LONG_LONG_INT
*widePtr = JimStrtoll(str, &endptr, base);
#else
*widePtr = strtol(str, &endptr, base);
@@ -7662,7 +7666,7 @@
/* Try to scan a number with the given base */
if (descr->modifier == 'l')
{
-#ifdef HAVE_LONG_LONG
+#ifdef HAVE_LONG_LONG_INT
jwvalue = JimStrtoll(tok, &endp, base),
#else
jwvalue = strtol(tok, &endp, base),
Modified: trunk/src/helper/jim.h
===================================================================
--- trunk/src/helper/jim.h 2009-05-11 10:10:11 UTC (rev 1743)
+++ trunk/src/helper/jim.h 2009-05-11 11:20:45 UTC (rev 1744)
@@ -78,25 +78,6 @@
#include <stdarg.h> /* In order to get type va_list */
/* -----------------------------------------------------------------------------
-* Some /very/ old compiler maybe do not know how to
-* handle 'const'. They even do not know, how to ignore
-* it. For those compiler it may be better to compile with
-* define JIM_NO_CONST activated
-* ---------------------------------------------------------------------------*/
-
-#ifdef JIM_NO_CONST
-# define const
-#endif
-
-/* -----------------------------------------------------------------------------
- * System configuration
- * For most modern systems, you can leave the default.
- * For embedded systems some change may be required.
- * ---------------------------------------------------------------------------*/
-
-#define HAVE_LONG_LONG
-
-/* -----------------------------------------------------------------------------
* Compiler specific fixes.
* ---------------------------------------------------------------------------*/
@@ -106,7 +87,7 @@
#endif /* _MSC_VER */
/* Long Long type and related issues */
-#ifdef HAVE_LONG_LONG
+#ifdef HAVE_LONG_LONG_INT
# ifdef _MSC_VER /* MSC compiler */
# define jim_wide _int64
# ifndef LLONG_MAX
@@ -138,7 +119,7 @@
* LIBC specific fixes
* ---------------------------------------------------------------------------*/
-#ifdef HAVE_LONG_LONG
+#ifdef HAVE_LONG_LONG_INT
# if defined(_MSC_VER) || defined(__MSVCRT__)
# define JIM_WIDE_MODIFIER "I64d"
# else
|
|
From: oharboe at B. <oh...@ma...> - 2009-05-11 12:10:12
|
Author: oharboe
Date: 2009-05-11 12:10:11 +0200 (Mon, 11 May 2009)
New Revision: 1743
Modified:
trunk/src/jtag/jtag.c
Log:
fix USB performance regression for verify_ircapture
Modified: trunk/src/jtag/jtag.c
===================================================================
--- trunk/src/jtag/jtag.c 2009-05-11 09:43:50 UTC (rev 1742)
+++ trunk/src/jtag/jtag.c 2009-05-11 10:10:11 UTC (rev 1743)
@@ -37,6 +37,8 @@
int jtag_flush_queue_count; /* count # of flushes for profiling / debugging purposes */
+static void jtag_add_scan_check(void (*jtag_add_scan)(int num_fields, scan_field_t *fields, tap_state_t state),
+ int num_fields, scan_field_t *fields, tap_state_t state);
/* note that this is not marked as static as it must be available from outside jtag.c for those
that implement the jtag_xxx() minidriver layer
@@ -549,54 +551,22 @@
void jtag_add_ir_scan(int num_fields, scan_field_t *fields, tap_state_t state)
{
/* 8 x 32 bit id's is enough for all invoations */
- u32 id[8];
- int modified[8];
-
- /* if we are to run a verification of the ir scan, we need to get the input back.
- * We may have to allocate space if the caller didn't ask for the input back.
- *
- */
- if (jtag_verify_capture_ir)
+ int j;
+ for (j = 0; j < num_fields; j++)
{
- int j;
- for (j = 0; j < num_fields; j++)
+ fields[j].check_value=NULL;
+ fields[j].check_mask=NULL;
+ /* if we are to run a verification of the ir scan, we need to get the input back.
+ * We may have to allocate space if the caller didn't ask for the input back.
+ */
+ if (jtag_verify_capture_ir)
{
- modified[j]=0;
- if ((fields[j].in_value==NULL)&&(fields[j].num_bits<=32))
- {
- if (j<8)
- {
- modified[j]=1;
- fields[j].in_value=(u8 *)(id+j);
- } else
- {
- LOG_DEBUG("caller must provide in_value space for verify_capture_ir to work");
- }
- }
+ fields[j].check_value=fields[j].tap->expected;
+ fields[j].check_mask=fields[j].tap->expected_mask;
}
}
- jtag_add_ir_scan_noverify(num_fields, fields, state);
-
- if (jtag_verify_capture_ir)
- {
- int j;
- for (j = 0; j < num_fields; j++)
- {
- jtag_tap_t *tap=fields[j].tap;
- if (fields[j].in_value!=NULL)
- {
- /* we verify max 32 bit long irlens. */
- jtag_check_value_mask(fields+j, tap->expected, tap->expected_mask);
- }
-
- if (modified[j])
- {
- fields[j].in_value=NULL;
- }
- }
- }
-
+ jtag_add_scan_check(jtag_add_ir_scan_noverify, num_fields, fields, state);
}
int MINIDRIVER(interface_jtag_add_ir_scan)(int num_fields, scan_field_t *fields, tap_state_t state)
@@ -733,7 +703,8 @@
return jtag_check_value_inner(in, (u8 *)data1, (u8 *)data2, (int)data3);
}
-void jtag_add_dr_scan_check(int num_fields, scan_field_t *fields, tap_state_t state)
+static void jtag_add_scan_check(void (*jtag_add_scan)(int num_fields, scan_field_t *fields, tap_state_t state),
+ int num_fields, scan_field_t *fields, tap_state_t state)
{
for (int i=0; i<num_fields; i++)
{
@@ -759,7 +730,7 @@
}
}
- jtag_add_dr_scan(num_fields, fields, state);
+ jtag_add_scan(num_fields, fields, state);
for (int i=0; i<num_fields; i++)
{
@@ -777,10 +748,16 @@
fields[i].in_value=NULL;
}
}
+}
-
+void jtag_add_dr_scan_check(int num_fields, scan_field_t *fields, tap_state_t state)
+{
+ jtag_add_scan_check(jtag_add_dr_scan, num_fields, fields, state);
}
+
+
+
int MINIDRIVER(interface_jtag_add_dr_scan)(int num_fields, scan_field_t *fields, tap_state_t state)
{
int j;
|
|
From: oharboe at B. <oh...@ma...> - 2009-05-11 11:43:52
|
Author: oharboe Date: 2009-05-11 11:43:50 +0200 (Mon, 11 May 2009) New Revision: 1742 Modified: trunk/src/target/xscale.c Log: USB performance regression fix Modified: trunk/src/target/xscale.c =================================================================== --- trunk/src/target/xscale.c 2009-05-11 09:36:55 UTC (rev 1741) +++ trunk/src/target/xscale.c 2009-05-11 09:43:50 UTC (rev 1742) @@ -213,6 +213,7 @@ jtag_add_ir_scan(1, &field, TAP_INVALID); + /* FIX!!!! isn't this check superfluous? verify_ircapture handles this? */ jtag_check_value_mask(&field, tap->expected, tap->expected_mask); free(field.out_value); @@ -326,19 +327,22 @@ fields[0].tap = xscale->jtag_info.tap; fields[0].num_bits = 3; fields[0].out_value = NULL; - u8 tmp2; - fields[0].in_value = &tmp2; + fields[0].in_value = NULL; + fields[0].check_value = &field0_check_value; + fields[0].check_mask = &field0_check_mask; fields[1].tap = xscale->jtag_info.tap; fields[1].num_bits = 32; fields[1].out_value = NULL; + fields[1].check_value = NULL; + fields[1].check_mask = NULL; - fields[2].tap = xscale->jtag_info.tap; fields[2].num_bits = 1; fields[2].out_value = NULL; - u8 tmp3; - fields[2].in_value = &tmp3; + fields[2].in_value = NULL; + fields[2].check_value = &field2_check_value; + fields[2].check_mask = &field2_check_mask; jtag_add_end_state(TAP_IDLE); xscale_jtag_set_instr(xscale->jtag_info.tap, xscale->jtag_info.dbgtx); @@ -357,13 +361,11 @@ jtag_add_pathmove(3, path); fields[1].in_value = (u8 *)(field1+i); - jtag_add_dr_scan(3, fields, TAP_IDLE); + jtag_add_dr_scan_check(3, fields, TAP_IDLE); + jtag_add_callback(xscale_getbuf, (u8 *)(field1+i)); - jtag_check_value_mask(fields+0, &field0_check_value, &field0_check_mask); - jtag_check_value_mask(fields+2, &field2_check_value, &field2_check_mask); - words_scheduled++; } |
|
From: oharboe at B. <oh...@ma...> - 2009-05-11 11:36:57
|
Author: oharboe
Date: 2009-05-11 11:36:55 +0200 (Mon, 11 May 2009)
New Revision: 1741
Modified:
trunk/src/jtag/jtag.c
trunk/src/jtag/jtag.h
Log:
retire jtag_add_dr_scan_now
Modified: trunk/src/jtag/jtag.c
===================================================================
--- trunk/src/jtag/jtag.c 2009-05-11 09:18:02 UTC (rev 1740)
+++ trunk/src/jtag/jtag.c 2009-05-11 09:36:55 UTC (rev 1741)
@@ -781,12 +781,6 @@
}
-void jtag_add_dr_scan_now(int num_fields, scan_field_t *fields, tap_state_t state)
-{
- jtag_add_dr_scan(num_fields, fields, state);
- jtag_execute_queue_noclear();
-}
-
int MINIDRIVER(interface_jtag_add_dr_scan)(int num_fields, scan_field_t *fields, tap_state_t state)
{
int j;
Modified: trunk/src/jtag/jtag.h
===================================================================
--- trunk/src/jtag/jtag.h 2009-05-11 09:18:02 UTC (rev 1740)
+++ trunk/src/jtag/jtag.h 2009-05-11 09:36:55 UTC (rev 1741)
@@ -567,10 +567,6 @@
/* This version of jtag_add_dr_scan() uses the check_value/mask fields */
extern void jtag_add_dr_scan_check(int num_fields, scan_field_t* fields, tap_state_t endstate);
-/* same as jtag_add_dr_scan but the scan is executed immediately. sets jtag_error if there
- * was a failure.
- */
-extern void jtag_add_dr_scan_now(int num_fields, scan_field_t* fields, tap_state_t endstate);
extern int interface_jtag_add_dr_scan(int num_fields, scan_field_t* fields, tap_state_t endstate);
extern void jtag_add_plain_ir_scan(int num_fields, scan_field_t* fields, tap_state_t endstate);
extern int interface_jtag_add_plain_ir_scan(int num_fields, scan_field_t* fields, tap_state_t endstate);
|
|
From: oharboe at B. <oh...@ma...> - 2009-05-11 11:18:03
|
Author: oharboe
Date: 2009-05-11 11:18:02 +0200 (Mon, 11 May 2009)
New Revision: 1740
Modified:
trunk/src/pld/virtex2.c
Log:
switch to jtag_add_dr_scan() from the synchronous version - USB performance fix
Modified: trunk/src/pld/virtex2.c
===================================================================
--- trunk/src/pld/virtex2.c 2009-05-11 09:14:47 UTC (rev 1739)
+++ trunk/src/pld/virtex2.c 2009-05-11 09:18:02 UTC (rev 1740)
@@ -92,6 +92,10 @@
return ERROR_OK;
}
+static __inline__ void virtexflip32(u8 *in)
+{
+ *((u32 *)in)=flip_u32(le_to_h_u32(in), 32);
+}
int virtex2_receive_32(struct pld_device_s *pld_device, int num_words, u32 *words)
{
@@ -101,16 +105,19 @@
scan_field.tap = virtex2_info->tap;
scan_field.num_bits = 32;
scan_field.out_value = NULL;
- u8 tmp[4];
- scan_field.in_value = tmp;
+ scan_field.in_value = NULL;
virtex2_set_instr(virtex2_info->tap, 0x4); /* CFG_OUT */
while (num_words--)
{
- jtag_add_dr_scan_now(1, &scan_field, TAP_DRPAUSE);
+ scan_field.in_value = (u8 *)words;
+
+ jtag_add_dr_scan(1, &scan_field, TAP_DRPAUSE);
- *words++=flip_u32(le_to_h_u32(tmp), 32);
+ jtag_add_callback(virtexflip32, (u8 *)words);
+
+ words++;;
}
return ERROR_OK;
|
|
From: oharboe at B. <oh...@ma...> - 2009-05-11 11:14:48
|
Author: oharboe Date: 2009-05-11 11:14:47 +0200 (Mon, 11 May 2009) New Revision: 1739 Modified: trunk/src/target/etm.c Log: switch to jtag_add_dr_scan_check() - USB performance fix Modified: trunk/src/target/etm.c =================================================================== --- trunk/src/target/etm.c 2009-05-11 09:12:32 UTC (rev 1738) +++ trunk/src/target/etm.c 2009-05-11 09:14:47 UTC (rev 1739) @@ -328,27 +328,33 @@ fields[0].num_bits = 32; fields[0].out_value = reg->value; fields[0].in_value = NULL; + fields[0].check_value = NULL; + fields[0].check_mask = NULL; fields[1].tap = etm_reg->jtag_info->tap; fields[1].num_bits = 7; fields[1].out_value = malloc(1); buf_set_u32(fields[1].out_value, 0, 7, reg_addr); fields[1].in_value = NULL; + fields[1].check_value = NULL; + fields[1].check_mask = NULL; fields[2].tap = etm_reg->jtag_info->tap; fields[2].num_bits = 1; fields[2].out_value = malloc(1); buf_set_u32(fields[2].out_value, 0, 1, 0); fields[2].in_value = NULL; + fields[2].check_value = NULL; + fields[2].check_mask = NULL; jtag_add_dr_scan(3, fields, TAP_INVALID); fields[0].in_value = reg->value; + fields[0].check_value = check_value; + fields[0].check_mask = check_mask; - jtag_add_dr_scan(3, fields, TAP_INVALID); + jtag_add_dr_scan_check(3, fields, TAP_INVALID); - jtag_check_value_mask(fields+0, check_value, check_mask); - free(fields[1].out_value); free(fields[2].out_value); |
|
From: oharboe at B. <oh...@ma...> - 2009-05-11 11:12:32
|
Author: oharboe Date: 2009-05-11 11:12:32 +0200 (Mon, 11 May 2009) New Revision: 1738 Modified: trunk/src/target/etb.c Log: switch to jtag_add_dr_scan_check() - USB performance fix Modified: trunk/src/target/etb.c =================================================================== --- trunk/src/target/etb.c 2009-05-11 09:10:03 UTC (rev 1737) +++ trunk/src/target/etb.c 2009-05-11 09:12:32 UTC (rev 1738) @@ -177,7 +177,7 @@ fields[0].num_bits = 32; fields[0].out_value = NULL; fields[0].in_value = NULL; - + fields[1].tap = etb->tap; fields[1].num_bits = 7; fields[1].out_value = malloc(1); @@ -233,18 +233,24 @@ fields[0].num_bits = 32; fields[0].out_value = reg->value; fields[0].in_value = NULL; + fields[0].check_value = NULL; + fields[0].check_mask = NULL; fields[1].tap = etb_reg->etb->tap; fields[1].num_bits = 7; fields[1].out_value = malloc(1); buf_set_u32(fields[1].out_value, 0, 7, reg_addr); fields[1].in_value = NULL; + fields[1].check_value = NULL; + fields[1].check_mask = NULL; fields[2].tap = etb_reg->etb->tap; fields[2].num_bits = 1; fields[2].out_value = malloc(1); buf_set_u32(fields[2].out_value, 0, 1, 0); fields[2].in_value = NULL; + fields[2].check_value = NULL; + fields[2].check_mask = NULL; jtag_add_dr_scan(3, fields, TAP_INVALID); @@ -253,11 +259,11 @@ */ buf_set_u32(fields[1].out_value, 0, 7, 0x0); fields[0].in_value = reg->value; + fields[0].check_value = check_value; + fields[0].check_mask = check_mask; - jtag_add_dr_scan(3, fields, TAP_INVALID); + jtag_add_dr_scan_check(3, fields, TAP_INVALID); - jtag_check_value_mask(fields+0, check_value, check_mask); - free(fields[1].out_value); free(fields[2].out_value); |
|
From: oharboe at B. <oh...@ma...> - 2009-05-11 11:10:05
|
Author: oharboe Date: 2009-05-11 11:10:03 +0200 (Mon, 11 May 2009) New Revision: 1737 Modified: trunk/src/target/embeddedice.c Log: switch to jtag_add_dr_scan_check() - USB performance fix Modified: trunk/src/target/embeddedice.c =================================================================== --- trunk/src/target/embeddedice.c 2009-05-11 08:43:18 UTC (rev 1736) +++ trunk/src/target/embeddedice.c 2009-05-11 09:10:03 UTC (rev 1737) @@ -240,22 +240,30 @@ fields[0].num_bits = 32; fields[0].out_value = reg->value; fields[0].in_value = NULL; + fields[0].check_value = NULL; + fields[0].check_mask = NULL; fields[1].tap = ice_reg->jtag_info->tap; fields[1].num_bits = 5; fields[1].out_value = field1_out; buf_set_u32(fields[1].out_value, 0, 5, reg_addr); fields[1].in_value = NULL; + fields[1].check_value = NULL; + fields[1].check_mask = NULL; fields[2].tap = ice_reg->jtag_info->tap; fields[2].num_bits = 1; fields[2].out_value = field2_out; buf_set_u32(fields[2].out_value, 0, 1, 0); fields[2].in_value = NULL; + fields[2].check_value = NULL; + fields[2].check_mask = NULL; jtag_add_dr_scan(3, fields, TAP_INVALID); fields[0].in_value = reg->value; + fields[0].check_value = check_value; + fields[0].check_mask = check_mask; /* when reading the DCC data register, leaving the address field set to * EICE_COMMS_DATA would read the register twice @@ -263,10 +271,8 @@ */ buf_set_u32(fields[1].out_value, 0, 5, embeddedice_reg_arch_info[EICE_COMMS_CTRL]); - jtag_add_dr_scan(3, fields, TAP_INVALID); + jtag_add_dr_scan_check(3, fields, TAP_INVALID); - jtag_check_value_mask(fields+0, check_value, check_mask); - return ERROR_OK; } |
|
From: oharboe at B. <oh...@ma...> - 2009-05-11 10:43:19
|
Author: oharboe Date: 2009-05-11 10:43:18 +0200 (Mon, 11 May 2009) New Revision: 1736 Modified: zy1000/trunk/build/include/jtag_minidriver.h Log: change jtag_add_callback API to be able to support check_value/mask Modified: zy1000/trunk/build/include/jtag_minidriver.h =================================================================== --- zy1000/trunk/build/include/jtag_minidriver.h 2009-05-11 08:39:49 UTC (rev 1735) +++ zy1000/trunk/build/include/jtag_minidriver.h 2009-05-11 08:43:18 UTC (rev 1736) @@ -210,4 +210,4 @@ #define jtag_add_callback(callback, in) callback(in) -#define jtag_add_callback3(callback, in, data1, data2) jtag_set_error(callback(in, data1, data2)) +#define jtag_add_callback4(callback, in, data1, data2, data3) jtag_set_error(callback(in, data1, data2, data3)) |
|
From: oharboe at B. <oh...@ma...> - 2009-05-11 10:39:50
|
Author: oharboe
Date: 2009-05-11 10:39:49 +0200 (Mon, 11 May 2009)
New Revision: 1735
Modified:
trunk/src/jtag/jtag.c
trunk/src/jtag/jtag.h
trunk/src/target/arm7tdmi.c
trunk/src/target/arm9tdmi.c
Log:
change jtag_add_callback API to be able to support check_value/mask
Modified: trunk/src/jtag/jtag.c
===================================================================
--- trunk/src/jtag/jtag.c 2009-05-11 08:26:42 UTC (rev 1734)
+++ trunk/src/jtag/jtag.c 2009-05-11 08:39:49 UTC (rev 1735)
@@ -77,7 +77,7 @@
u8 *in;
jtag_callback_data_t data1;
jtag_callback_data_t data2;
-
+ jtag_callback_data_t data3;
};
@@ -725,6 +725,62 @@
jtag_error=retval;
}
+
+int jtag_check_value_inner(u8 *captured, u8 *in_check_value, u8 *in_check_mask, int num_bits);
+
+static int jtag_check_value_mask_callback(u8 *in, jtag_callback_data_t data1, jtag_callback_data_t data2, jtag_callback_data_t data3)
+{
+ return jtag_check_value_inner(in, (u8 *)data1, (u8 *)data2, (int)data3);
+}
+
+void jtag_add_dr_scan_check(int num_fields, scan_field_t *fields, tap_state_t state)
+{
+ for (int i=0; i<num_fields; i++)
+ {
+ fields[i].allocated=0;
+ fields[i].modified=0;
+ if ((fields[i].check_value!=NULL)&&(fields[i].in_value==NULL))
+ {
+ fields[i].modified=1;
+ /* we need storage space... */
+#ifdef HAVE_JTAG_MINIDRIVER_H
+ if (fields[i].num_bits<=32)
+ {
+ /* This is enough space and we're executing this synchronously */
+ fields[i].in_value=(u8 *)&fields[i].intmp;
+ } else
+ {
+ fields[i].in_value=(u8 *)malloc(CEIL(fields[i].num_bits, 8));
+ fields[i].allocated=1;
+ }
+#else
+ fields[i].in_value=(u8 *)cmd_queue_alloc(CEIL(fields[i].num_bits, 8));
+#endif
+ }
+ }
+
+ jtag_add_dr_scan(num_fields, fields, state);
+
+ for (int i=0; i<num_fields; i++)
+ {
+ if ((fields[i].check_value!=NULL)&&(fields[i].in_value!=NULL))
+ {
+ /* this is synchronous for a minidriver */
+ jtag_add_callback4(jtag_check_value_mask_callback, fields[i].in_value, fields[i].check_value, fields[i].check_mask, (jtag_callback_data_t)fields[i].num_bits);
+ }
+ if (fields[i].allocated)
+ {
+ free(fields[i].in_value);
+ }
+ if (fields[i].modified)
+ {
+ fields[i].in_value=NULL;
+ }
+ }
+
+
+}
+
void jtag_add_dr_scan_now(int num_fields, scan_field_t *fields, tap_state_t state)
{
jtag_add_dr_scan(num_fields, fields, state);
@@ -1362,10 +1418,9 @@
return (tap == NULL) ? "(unknown)" : tap->dotted_name;
}
-int jtag_check_value_inner(u8 *captured, scan_field_t *field, u8 *in_check_value, u8 *in_check_mask)
+int jtag_check_value_inner(u8 *captured, u8 *in_check_value, u8 *in_check_mask, int num_bits)
{
int retval = ERROR_OK;
- int num_bits = field->num_bits;
int compare_failed = 0;
@@ -1379,8 +1434,10 @@
* only report a problem when there wasn't a handler, or if the handler
* acknowledged the error
*/
+ /*
LOG_WARNING("TAP %s:",
jtag_tap_name(field->tap));
+ */
if (compare_failed)
{
char *captured_char = buf_to_str(captured, (num_bits > DEBUG_JTAG_IOZ) ? DEBUG_JTAG_IOZ : num_bits, 16);
@@ -1422,7 +1479,7 @@
jtag_execute_queue_noclear();
- int retval=jtag_check_value_inner(field->in_value, field, value, mask);
+ int retval=jtag_check_value_inner(field->in_value, value, mask, field->num_bits);
jtag_set_error(retval);
}
@@ -1447,7 +1504,7 @@
#ifndef HAVE_JTAG_MINIDRIVER_H
/* add callback to end of queue */
-void jtag_add_callback3(jtag_callback_t callback, u8 *in, jtag_callback_data_t data1, jtag_callback_data_t data2)
+void jtag_add_callback4(jtag_callback_t callback, u8 *in, jtag_callback_data_t data1, jtag_callback_data_t data2, jtag_callback_data_t data3)
{
struct jtag_callback_entry *entry=cmd_queue_alloc(sizeof(struct jtag_callback_entry));
@@ -1456,6 +1513,7 @@
entry->in=in;
entry->data1=data1;
entry->data2=data2;
+ entry->data3=data3;
if (jtag_callback_queue_head==NULL)
{
@@ -1469,7 +1527,7 @@
}
-static int jtag_convert_to_callback3(u8 *in, jtag_callback_data_t data1, jtag_callback_data_t data2)
+static int jtag_convert_to_callback4(u8 *in, jtag_callback_data_t data1, jtag_callback_data_t data2, jtag_callback_data_t data3)
{
((jtag_callback1_t)data1)(in);
return ERROR_OK;
@@ -1477,7 +1535,7 @@
void jtag_add_callback(jtag_callback1_t callback, u8 *in)
{
- jtag_add_callback3(jtag_convert_to_callback3, in, (jtag_callback_data_t)callback, 0);
+ jtag_add_callback4(jtag_convert_to_callback4, in, (jtag_callback_data_t)callback, 0, 0);
}
#endif
@@ -1500,7 +1558,7 @@
struct jtag_callback_entry *entry;
for (entry=jtag_callback_queue_head; entry!=NULL; entry=entry->next)
{
- retval=entry->callback(entry->in, entry->data1, entry->data2);
+ retval=entry->callback(entry->in, entry->data1, entry->data2, entry->data3);
if (retval!=ERROR_OK)
break;
}
Modified: trunk/src/jtag/jtag.h
===================================================================
--- trunk/src/jtag/jtag.h 2009-05-11 08:26:42 UTC (rev 1734)
+++ trunk/src/jtag/jtag.h 2009-05-11 08:39:49 UTC (rev 1735)
@@ -269,6 +269,15 @@
int num_bits; /* number of bits this field specifies (up to 32) */
u8* out_value; /* value to be scanned into the device */
u8* in_value; /* pointer to a 32-bit memory location to take data scanned out */
+
+ u8* check_value; /* Used together with jtag_add_dr_scan_check() to check data clocked
+ in */
+ u8* check_mask; /* mask to go with check_value */
+
+ /* internal work space */
+ int allocated; /* in_value has been allocated for the queue */
+ int modified; /* did we modify the in_value? */
+ u32 intmp; /* temporary storage for checking synchronously */
} scan_field_t;
enum scan_type {
@@ -555,6 +564,9 @@
extern void jtag_add_ir_scan_noverify(int num_fields, scan_field_t *fields, tap_state_t state);
extern int interface_jtag_add_ir_scan(int num_fields, scan_field_t* fields, tap_state_t endstate);
extern void jtag_add_dr_scan(int num_fields, scan_field_t* fields, tap_state_t endstate);
+
+/* This version of jtag_add_dr_scan() uses the check_value/mask fields */
+extern void jtag_add_dr_scan_check(int num_fields, scan_field_t* fields, tap_state_t endstate);
/* same as jtag_add_dr_scan but the scan is executed immediately. sets jtag_error if there
* was a failure.
*/
@@ -573,7 +585,7 @@
typedef void (*jtag_callback1_t)(u8 *in);
#ifndef HAVE_JTAG_MINIDRIVER_H
-/* A simpler version of jtag_add_callback3 */
+/* A simpler version of jtag_add_callback4 */
extern void jtag_add_callback(jtag_callback1_t, u8 *in);
#else
/* implemented by minidriver */
@@ -588,7 +600,7 @@
* The callback is invoked with three arguments. The first argument is
* the pointer to the data clocked in.
*/
-typedef int (*jtag_callback_t)(u8 *in, jtag_callback_data_t data1, jtag_callback_data_t data2);
+typedef int (*jtag_callback_t)(u8 *in, jtag_callback_data_t data1, jtag_callback_data_t data2, jtag_callback_data_t data3);
/* This callback can be executed immediately the queue has been flushed. Note that
@@ -623,7 +635,7 @@
* callbacks may or may not be invoked depending on driver implementation.
*/
#ifndef HAVE_JTAG_MINIDRIVER_H
-extern void jtag_add_callback3(jtag_callback_t, u8 *in, jtag_callback_data_t data1, jtag_callback_data_t data2);
+extern void jtag_add_callback4(jtag_callback_t, u8 *in, jtag_callback_data_t data1, jtag_callback_data_t data2, jtag_callback_data_t data3);
#else
/* implemented by minidriver */
#endif
Modified: trunk/src/target/arm7tdmi.c
===================================================================
--- trunk/src/target/arm7tdmi.c 2009-05-11 08:26:42 UTC (rev 1734)
+++ trunk/src/target/arm7tdmi.c 2009-05-11 08:39:49 UTC (rev 1735)
@@ -244,7 +244,7 @@
}
}
-static int arm7endianness(u8 *in, jtag_callback_data_t size, jtag_callback_data_t be)
+static int arm7endianness(u8 *in, jtag_callback_data_t size, jtag_callback_data_t be, jtag_callback_data_t dummy)
{
arm_endianness(in, in, (int)size, (int)be, 1);
return ERROR_OK;
@@ -278,7 +278,7 @@
jtag_add_dr_scan(2, fields, TAP_INVALID);
- jtag_add_callback3(arm7endianness, in, (jtag_callback_data_t)size, (jtag_callback_data_t)be);
+ jtag_add_callback4(arm7endianness, in, (jtag_callback_data_t)size, (jtag_callback_data_t)be, NULL);
jtag_add_runtest(0, TAP_INVALID);
Modified: trunk/src/target/arm9tdmi.c
===================================================================
--- trunk/src/target/arm9tdmi.c 2009-05-11 08:26:42 UTC (rev 1734)
+++ trunk/src/target/arm9tdmi.c 2009-05-11 08:39:49 UTC (rev 1735)
@@ -291,7 +291,7 @@
extern void arm_endianness(u8 *tmp, void *in, int size, int be, int flip);
-static int arm9endianness(u8 *in, jtag_callback_data_t size, jtag_callback_data_t be)
+static int arm9endianness(u8 *in, jtag_callback_data_t size, jtag_callback_data_t be, jtag_callback_data_t dummy)
{
arm_endianness(in, in, (int)size, (int)be, 0);
return ERROR_OK;
@@ -331,7 +331,7 @@
jtag_add_dr_scan(3, fields, TAP_INVALID);
- jtag_add_callback3(arm9endianness, in, (jtag_callback_data_t)size, (jtag_callback_data_t)be);
+ jtag_add_callback4(arm9endianness, in, (jtag_callback_data_t)size, (jtag_callback_data_t)be, 0);
jtag_add_runtest(0, TAP_INVALID);
|
|
From: <zw...@ma...> - 2009-05-11 10:26:46
|
Author: zwelch Date: 2009-05-11 10:26:42 +0200 (Mon, 11 May 2009) New Revision: 1734 Modified: trunk/src/jtag/ft2232.c Log: Fix ft2232 for CygWin, provided by Michael Bruck <mb...@di...>. Modified: trunk/src/jtag/ft2232.c =================================================================== --- trunk/src/jtag/ft2232.c 2009-05-11 07:48:26 UTC (rev 1733) +++ trunk/src/jtag/ft2232.c 2009-05-11 08:26:42 UTC (rev 1734) @@ -33,15 +33,15 @@ #include "config.h" #endif -#if IS_CYGWIN == 1 -#include "windows.h" -#endif - /* project specific includes */ #include "jtag.h" #include "time_support.h" +#if IS_CYGWIN == 1 +#include <windows.h> +#endif + /* FT2232 access library includes */ #if BUILD_FT2232_FTD2XX == 1 #include <ftd2xx.h> |
|
From: oharboe at B. <oh...@ma...> - 2009-05-11 09:48:27
|
Author: oharboe
Date: 2009-05-11 09:48:26 +0200 (Mon, 11 May 2009)
New Revision: 1733
Modified:
trunk/src/target/xscale.c
Log:
switch to jtag_add_callback() - USB performance fix
Modified: trunk/src/target/xscale.c
===================================================================
--- trunk/src/target/xscale.c 2009-05-11 07:47:53 UTC (rev 1732)
+++ trunk/src/target/xscale.c 2009-05-11 07:48:26 UTC (rev 1733)
@@ -252,8 +252,8 @@
fields[1].num_bits = 32;
fields[1].out_value = NULL;
fields[1].in_value = xscale->reg_cache->reg_list[XSCALE_DCSR].value;
-
+
fields[2].tap = xscale->jtag_info.tap;
fields[2].num_bits = 1;
fields[2].out_value = &field2;
@@ -290,6 +290,12 @@
return jtag_execute_queue();
}
+
+static void xscale_getbuf(u8 *in)
+{
+ *((u32 *)in)=buf_get_u32(in, 0, 32);
+}
+
int xscale_receive(target_t *target, u32 *buffer, int num_words)
{
if (num_words==0)
@@ -326,10 +332,8 @@
fields[1].tap = xscale->jtag_info.tap;
fields[1].num_bits = 32;
fields[1].out_value = NULL;
- u8 tmp[4];
- fields[1].in_value = tmp;
-
+
fields[2].tap = xscale->jtag_info.tap;
fields[2].num_bits = 1;
fields[2].out_value = NULL;
@@ -351,13 +355,15 @@
fields[0].in_value = &field0[i];
jtag_add_pathmove(3, path);
- jtag_add_dr_scan_now(3, fields, TAP_IDLE);
+ fields[1].in_value = (u8 *)(field1+i);
+ jtag_add_dr_scan(3, fields, TAP_IDLE);
+
+ jtag_add_callback(xscale_getbuf, (u8 *)(field1+i));
+
jtag_check_value_mask(fields+0, &field0_check_value, &field0_check_mask);
jtag_check_value_mask(fields+2, &field2_check_value, &field2_check_mask);
- field1[i]=buf_get_u32(tmp, 0, 32);
-
words_scheduled++;
}
@@ -444,8 +450,8 @@
fields[1].num_bits = 32;
fields[1].out_value = NULL;
fields[1].in_value = xscale->reg_cache->reg_list[XSCALE_TX].value;
-
+
fields[2].tap = xscale->jtag_info.tap;
fields[2].num_bits = 1;
fields[2].out_value = NULL;
@@ -536,8 +542,8 @@
fields[1].num_bits = 32;
fields[1].out_value = xscale->reg_cache->reg_list[XSCALE_RX].value;
fields[1].in_value = NULL;
-
+
fields[2].tap = xscale->jtag_info.tap;
fields[2].num_bits = 1;
fields[2].out_value = &field2;
@@ -708,8 +714,8 @@
fields[1].num_bits = 32;
fields[1].out_value = xscale->reg_cache->reg_list[XSCALE_DCSR].value;
fields[1].in_value = NULL;
-
+
fields[2].tap = xscale->jtag_info.tap;
fields[2].num_bits = 1;
fields[2].out_value = &field2;
@@ -778,9 +784,9 @@
fields[0].in_value = NULL;
-
+
fields[1].tap = xscale->jtag_info.tap;
fields[1].num_bits = 27;
fields[1].out_value = packet;
@@ -788,9 +794,9 @@
fields[1].in_value = NULL;
-
+
jtag_add_dr_scan(2, fields, TAP_INVALID);
fields[0].num_bits = 32;
@@ -840,9 +846,9 @@
fields[0].in_value = NULL;
-
+
fields[1].tap = xscale->jtag_info.tap;
fields[1].num_bits = 27;
fields[1].out_value = packet;
@@ -850,9 +856,9 @@
fields[1].in_value = NULL;
-
+
jtag_add_dr_scan(2, fields, TAP_INVALID);
return ERROR_OK;
|
|
From: oharboe at B. <oh...@ma...> - 2009-05-11 09:47:54
|
Author: oharboe
Date: 2009-05-11 09:47:53 +0200 (Mon, 11 May 2009)
New Revision: 1732
Modified:
trunk/src/target/etb.c
Log:
switch to jtag_add_callback() - USB performance fix
Modified: trunk/src/target/etb.c
===================================================================
--- trunk/src/target/etb.c 2009-05-11 07:47:21 UTC (rev 1731)
+++ trunk/src/target/etb.c 2009-05-11 07:47:53 UTC (rev 1732)
@@ -157,6 +157,13 @@
return ERROR_OK;
}
+
+static void etb_getbuf(u8 *in)
+{
+ *((u32 *)in)=buf_get_u32(in, 0, 32);
+}
+
+
static int etb_read_ram(etb_t *etb, u32 *data, int num_frames)
{
scan_field_t fields[3];
@@ -169,9 +176,8 @@
fields[0].tap = etb->tap;
fields[0].num_bits = 32;
fields[0].out_value = NULL;
- u8 tmp[4];
- fields[0].in_value = tmp;
-
+ fields[0].in_value = NULL;
+
fields[1].tap = etb->tap;
fields[1].num_bits = 7;
fields[1].out_value = malloc(1);
@@ -197,9 +203,10 @@
else
buf_set_u32(fields[1].out_value, 0, 7, 0);
- jtag_add_dr_scan_now(3, fields, TAP_INVALID);
+ fields[0].in_value = (u8 *)(data+i);
+ jtag_add_dr_scan(3, fields, TAP_INVALID);
- data[i]=buf_get_u32(tmp, 0, 32);
+ jtag_add_callback(etb_getbuf, (u8 *)(data+i));
}
jtag_execute_queue();
|