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: oharboe at B. <oh...@ma...> - 2009-05-08 22:36:10
|
Author: oharboe Date: 2009-05-08 22:36:09 +0200 (Fri, 08 May 2009) New Revision: 1681 Modified: zy1000/trunk/ecoshal/hal/zylin/phi/current/include/pkgconf/mlt_zylin_phi_dram_fast.ldi Log: tinkered with linker script 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-08 20:27:19 UTC (rev 1680) +++ zy1000/trunk/ecoshal/hal/zylin/phi/current/include/pkgconf/mlt_zylin_phi_dram_fast.ldi 2009-05-08 20:36:09 UTC (rev 1681) @@ -35,14 +35,31 @@ *phi_misc* (*hal_delay_us*) ; * (*tftp_client_get*) ; *phi_misc* (*busy*) ; +* (*Cyg_Mempool_dlmalloc_Implementation*free*) ; + * (*phi_misc*) ; + * (*cyg_sbdrop*) ; + * (*target_call_event_callbacks*) ; + + * (*tftp_client_get*) ; +* (*cyg_callout_stop*) ; +* (*embeddeqdice_set_reg*) ; +* (*arm7_9_set_breakpoint*) ; +* (*arm7_9_init_arch_info*) ; +* (*arm7_9_add_breakpoint*) ; + + +* (*cyg_m_adj*) ; * (*select*) ; +* (*cyg_arpresolve*) ; * (*cyg_sorceive*) ; * (*cmd_queue_cur_state*) ; * (*cmd_queue_end_state*) ; * (*jtag_err*) ; * (*jtag_num_devices*) ; +* (*jtag_execute_queue*) ; +* (*jtag_flush_queue_count*) ; @@ -92,7 +109,10 @@ * (*armv4_5_mode_to_number*); * (*arm7_9_debug_entry*); * (*arm7_9_restore_context*); +* (*armv4_5_run_algorithm_inner*); +* (*cyg_uiomove*); + //;* (*armv4_5_*); //;* (*armv4_5_*); //;* (*arm7_9*); @@ -116,6 +136,9 @@ * (*cyg_sosend*); * (*cyg_splimp*); * (*cyg_ether_output*); +* (*cyg_ether_input*); +* (*cyg_in_pcblookup_hash*); +* (*cyg_netint*); * (*ipintr*); * (*cyg_tcp_output*); * (*eth_drv_send*); @@ -126,6 +149,7 @@ * (*cyg_wakeup*); * (*openeth_can_send*); * (*eth_drv_recv*); +* (*eth_drv_dsr*); * (*cyg_splnet*); * (*cyg_in_cksum_hdr*); * (*cyg_sbcompress*); |
|
From: oharboe at B. <oh...@ma...> - 2009-05-08 22:27:19
|
Author: oharboe
Date: 2009-05-08 22:27:19 +0200 (Fri, 08 May 2009)
New Revision: 1680
Added:
trunk/src/target/target/ti_dm6446.cfg
Log:
David Brownell <da...@pa...> DaVinci dm6446
Added: trunk/src/target/target/ti_dm6446.cfg
===================================================================
--- trunk/src/target/target/ti_dm6446.cfg 2009-05-08 19:24:40 UTC (rev 1679)
+++ trunk/src/target/target/ti_dm6446.cfg 2009-05-08 20:27:19 UTC (rev 1680)
@@ -0,0 +1,66 @@
+#
+# Texas Instruments DaVinci family: TMS320DM6446
+#
+if { [info exists CHIPNAME] } {
+ set _CHIPNAME $CHIPNAME
+} else {
+ set _CHIPNAME dm6446
+}
+if { [info exists ENDIAN] } {
+ set _ENDIAN $ENDIAN
+} else {
+ set _ENDIAN little
+}
+
+#
+# For now, expect EMU0/EMU1 jumpered LOW (not TI's default) so ARM and ETB
+# are enabled without making ICEpick route ARM and ETB into the JTAG chain.
+#
+# Also note: when running without RTCK before the PLLs are set up, you
+# may need to slow the JTAG clock down quite a lot (under 2 MHz).
+#
+
+# Subsidiary TAP: ARM ETB11, with scan chain for 4K of ETM trace buffer
+if { [info exists ETB_TAPID ] } {
+ set _ETB_TAPID $ETB_TAPID
+} else {
+ set _ETB_TAPID 0x2b900f0f
+}
+jtag newtap $_CHIPNAME etb -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_ETB_TAPID
+
+# Subsidiary TAP: ARM926ejs with scan chains for ARM Debug, EmbeddedICE-RT, ETM.
+if { [info exists CPU_TAPID ] } {
+ set _CPU_TAPID $CPU_TAPID
+} else {
+ set _CPU_TAPID 0x07926001
+}
+jtag newtap $_CHIPNAME arm -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPU_TAPID
+
+# Subsidiary TAP: C64x+ DSP ... NOT CURRENTLY INCLUDED, must add via ICEpick.
+# Documentation for DSP JTAG interfaces evidently needs NDAs.
+
+# Primary TAP: ICEpick (JTAG route controller) and boundary scan
+if { [info exists JRC_TAPID ] } {
+ set _JRC_TAPID $JRC_TAPID
+} else {
+ set _JRC_TAPID 0x0b70002f
+}
+jtag newtap $_CHIPNAME jrc -irlen 6 -ircapture 0x1 -irmask 0x3f -expected-id $_JRC_TAPID
+
+# GDB target: the ARM, using SRAM1 for scratch. SRAM0 (also 8K)
+# and the ETB memory (4K) are other options, while trace is unused.
+set _TARGETNAME $_CHIPNAME.arm
+
+target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME
+$_TARGETNAME configure -work-area-virt 0 -work-area-phys 0x0000a000 -work-area-size 0x2000 -work-area-backup 0
+
+arm7_9 dbgrq enable
+arm7_9 fast_memory_access enable
+arm7_9 dcc_downloads enable
+
+# trace setup
+# FIXME we ought to be able to say "... config $_TARGETNAME ..."
+# (not "config 0") facilitating additional targets (e.g. other chips)
+etm config 0 16 normal full etb
+etb config 0 $_CHIPNAME.etb
+
Property changes on: trunk/src/target/target/ti_dm6446.cfg
___________________________________________________________________
Name: svn:eol-style
+ native
|
|
From: oharboe at B. <oh...@ma...> - 2009-05-08 21:24:41
|
Author: oharboe
Date: 2009-05-08 21:24:40 +0200 (Fri, 08 May 2009)
New Revision: 1679
Modified:
trunk/src/jtag/zy1000.c
Log:
sync up zy1000 interface to bitbang driver's handling of exiting the shift state
Modified: trunk/src/jtag/zy1000.c
===================================================================
--- trunk/src/jtag/zy1000.c 2009-05-08 18:54:59 UTC (rev 1678)
+++ trunk/src/jtag/zy1000.c 2009-05-08 19:24:40 UTC (rev 1679)
@@ -448,7 +448,7 @@
setCurrentState(cmd_queue_end_state);
}
-static __inline void scanFields(int num_fields, scan_field_t *fields, tap_state_t shiftState, int pause)
+static __inline void scanFields(int num_fields, scan_field_t *fields, tap_state_t shiftState, tap_state_t end_state)
{
int i;
int j;
@@ -482,10 +482,10 @@
{
k=32;
/* we have more to shift out */
- } else if (pause&&(i == num_fields-1))
+ } else if (i == num_fields-1)
{
/* this was the last to shift out this time */
- pause_state=(shiftState==TAP_DRSHIFT)?TAP_DRPAUSE:TAP_IRPAUSE;
+ pause_state=end_state;
}
// we have (num_bits+7)/8 bytes of bits to toggle out.
@@ -535,7 +535,14 @@
for(tap = jtag_NextEnabledTap(NULL); tap!= NULL; tap=nextTap)
{
nextTap=jtag_NextEnabledTap(tap);
- int pause=(nextTap==NULL);
+ tap_state_t end_state;
+ if (nextTap==NULL)
+ {
+ end_state = cmd_queue_end_state;
+ } else
+ {
+ end_state = TAP_IRSHIFT;
+ }
int found = 0;
@@ -548,7 +555,7 @@
{
found = 1;
- scanFields(1, fields+j, TAP_IRSHIFT, pause);
+ scanFields(1, fields+j, TAP_IRSHIFT, end_state);
/* update device information */
buf_cpy(fields[j].out_value, tap->cur_instr, scan_size);
@@ -566,13 +573,12 @@
memset(&tmp, 0, sizeof(tmp));
tmp.out_value = ones;
tmp.num_bits = scan_size;
- scanFields(1, &tmp, TAP_IRSHIFT, pause);
+ scanFields(1, &tmp, TAP_IRSHIFT, end_state);
/* update device information */
buf_cpy(tmp.out_value, tap->cur_instr, scan_size);
tap->bypass = 1;
}
}
- gotoEndState();
return ERROR_OK;
}
@@ -583,8 +589,7 @@
int interface_jtag_add_plain_ir_scan(int num_fields, scan_field_t *fields, tap_state_t state)
{
- scanFields(num_fields, fields, TAP_IRSHIFT, 1);
- gotoEndState();
+ scanFields(num_fields, fields, TAP_IRSHIFT, cmd_queue_end_state);
return ERROR_OK;
}
@@ -600,7 +605,14 @@
{
nextTap=jtag_NextEnabledTap(tap);
int found=0;
- int pause=(nextTap==NULL);
+ tap_state_t end_state;
+ if (nextTap==NULL)
+ {
+ end_state = cmd_queue_end_state;
+ } else
+ {
+ end_state = TAP_DRSHIFT;
+ }
for (j=0; j < num_fields; j++)
{
@@ -608,7 +620,7 @@
{
found = 1;
- scanFields(1, fields+j, TAP_DRSHIFT, pause);
+ scanFields(1, fields+j, TAP_DRSHIFT, end_state);
}
}
if (!found)
@@ -619,20 +631,18 @@
tmp.out_value = NULL;
tmp.in_value = NULL;
- scanFields(1, &tmp, TAP_DRSHIFT, pause);
+ scanFields(1, &tmp, TAP_DRSHIFT, end_state);
}
else
{
}
}
- gotoEndState();
return ERROR_OK;
}
int interface_jtag_add_plain_dr_scan(int num_fields, scan_field_t *fields, tap_state_t state)
{
- scanFields(num_fields, fields, TAP_DRSHIFT, 1);
- gotoEndState();
+ scanFields(num_fields, fields, TAP_DRSHIFT, cmd_queue_end_state);
return ERROR_OK;
}
|
|
From: oharboe at B. <oh...@ma...> - 2009-05-08 20:55:00
|
Author: oharboe
Date: 2009-05-08 20:54:59 +0200 (Fri, 08 May 2009)
New Revision: 1678
Modified:
trunk/src/flash/cfi.c
Log:
Michael Fischer <fis...@t-...> fix compile problems on Mac
Modified: trunk/src/flash/cfi.c
===================================================================
--- trunk/src/flash/cfi.c 2009-05-08 18:12:43 UTC (rev 1677)
+++ trunk/src/flash/cfi.c 2009-05-08 18:54:59 UTC (rev 1678)
@@ -121,7 +121,7 @@
}
/* inline u32 flash_address(flash_bank_t *bank, int sector, u32 offset) */
-__inline__ u32 flash_address(flash_bank_t *bank, int sector, u32 offset)
+static __inline__ u32 flash_address(flash_bank_t *bank, int sector, u32 offset)
{
/* while the sector list isn't built, only accesses to sector 0 work */
if (sector == 0)
|
|
From: oharboe at B. <oh...@ma...> - 2009-05-08 20:12:45
|
Author: oharboe
Date: 2009-05-08 20:12:43 +0200 (Fri, 08 May 2009)
New Revision: 1677
Modified:
trunk/src/jtag/jtag.c
Log:
fix gaffe in 1672
Modified: trunk/src/jtag/jtag.c
===================================================================
--- trunk/src/jtag/jtag.c 2009-05-08 13:30:45 UTC (rev 1676)
+++ trunk/src/jtag/jtag.c 2009-05-08 18:12:43 UTC (rev 1677)
@@ -45,6 +45,7 @@
int jtag_flush_queue_count; /* count # of flushes for profiling / debugging purposes */
+
/* 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
*/
@@ -541,7 +542,6 @@
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.
*
@@ -621,10 +621,13 @@
break;
}
nth_tap++;
+
+ assert(nth_tap < x );
+
scan_size = tap->ir_length;
(*last_cmd)->cmd.scan->fields[nth_tap].tap = tap;
(*last_cmd)->cmd.scan->fields[nth_tap].num_bits = scan_size;
- (*last_cmd)->cmd.scan->fields[nth_tap].in_value = fields[nth_tap].in_value;
+ (*last_cmd)->cmd.scan->fields[nth_tap].in_value = NULL; /* do not collect input for tap's in bypass */
/* search the list */
for (j = 0; j < num_fields; j++)
@@ -632,6 +635,7 @@
if (tap == fields[j].tap)
{
found = 1;
+ (*last_cmd)->cmd.scan->fields[nth_tap].in_value = fields[j].in_value;
(*last_cmd)->cmd.scan->fields[nth_tap].out_value = buf_cpy(fields[j].out_value, cmd_queue_alloc(CEIL(scan_size, 8)), scan_size);
tap->bypass = 0;
@@ -649,6 +653,7 @@
/* update device information */
buf_cpy((*last_cmd)->cmd.scan->fields[nth_tap].out_value, tap->cur_instr, scan_size);
}
+ assert(nth_tap == (x-1));
return ERROR_OK;
}
@@ -1450,7 +1455,7 @@
/* each flush can take as much as 1-2ms on high bandwidth low latency interfaces.
* E.g. a JTAG over TCP/IP or USB....
*/
- jtag_flush_queue_count++;
+ jtag_flush_queue_count++;
int retval=interface_jtag_execute_queue();
/* we keep the first error */
|
|
From: oharboe at B. <oh...@ma...> - 2009-05-08 15:30:46
|
Author: oharboe Date: 2009-05-08 15:30:45 +0200 (Fri, 08 May 2009) New Revision: 1676 Added: trunk/testing/profile_stm32.txt Removed: trunk/testing/profile.txt Log: stm32 profiling wip Deleted: trunk/testing/profile.txt =================================================================== --- trunk/testing/profile.txt 2009-05-08 12:26:50 UTC (rev 1675) +++ trunk/testing/profile.txt 2009-05-08 13:30:45 UTC (rev 1676) @@ -1,14 +0,0 @@ -old version rev 1606: - -single step: 59 ms -flash 64k : 24kB/s -mdb 0 128 : 44ms - - -trunk rev 1662: - -single step: 99 ms -flash 64k : 21.5kB/s -mdb 0 128 : 72ms - - Copied: trunk/testing/profile_stm32.txt (from rev 1675, trunk/testing/profile.txt) =================================================================== --- trunk/testing/profile.txt 2009-05-08 12:26:50 UTC (rev 1675) +++ trunk/testing/profile_stm32.txt 2009-05-08 13:30:45 UTC (rev 1676) @@ -0,0 +1,52 @@ +These are profile tests for the stm32 target. + +old version rev 1606: + +single step: 59 ms +flash 64k : 24kB/s +mdb 0 128 : 44ms + + +trunk rev 1662: + +single step: 99 ms +flash 64k : 21.5kB/s +mdb 0 128 : 72ms + + +How to run tests: + +poll off +set before [flush_count] +step +set step_count [expr [flush_count]-$before] + +set before [flush_count] +mdb 0 128 +set mem_count [expr [flush_count]-$before] + +set before [flush_count] +flash erase_address 0x8000000 0x10000 +set erase_count [expr [flush_count]-$before] + +set before [flush_count] +flash fillb 0x8000000 0x55 0x10000 +set flash_fill_count [expr [flush_count]-$before] + +puts "counts" ; puts "step $step_count" ; puts "mem $mem_count" ; puts "erase $erase_count" ; puts "flash fill $flash_fill_count" + +parport trunk rev 1675 +====================== + +step 336 +mem 160 +erase 3076 +flash fill 32754 + +verify_ircapture disable + +step 114 +mem 96 +erase 1547 +flash fill 15564 + Property changes on: trunk/testing/profile_stm32.txt ___________________________________________________________________ Name: svn:mergeinfo + |
|
From: oharboe at B. <oh...@ma...> - 2009-05-08 14:26:52
|
Author: oharboe Date: 2009-05-08 14:26:50 +0200 (Fri, 08 May 2009) New Revision: 1675 Added: trunk/testing/profile.txt Log: profiling numbers Added: trunk/testing/profile.txt =================================================================== --- trunk/testing/profile.txt 2009-05-08 11:46:01 UTC (rev 1674) +++ trunk/testing/profile.txt 2009-05-08 12:26:50 UTC (rev 1675) @@ -0,0 +1,14 @@ +old version rev 1606: + +single step: 59 ms +flash 64k : 24kB/s +mdb 0 128 : 44ms + + +trunk rev 1662: + +single step: 99 ms +flash 64k : 21.5kB/s +mdb 0 128 : 72ms + + |
|
From: oharboe at B. <oh...@ma...> - 2009-05-08 13:46:02
|
Author: oharboe
Date: 2009-05-08 13:46:01 +0200 (Fri, 08 May 2009)
New Revision: 1674
Modified:
trunk/src/jtag/jtag.c
Log:
add flush_count jtag queue profiling feature
Modified: trunk/src/jtag/jtag.c
===================================================================
--- trunk/src/jtag/jtag.c 2009-05-08 11:18:41 UTC (rev 1673)
+++ trunk/src/jtag/jtag.c 2009-05-08 11:46:01 UTC (rev 1674)
@@ -43,8 +43,8 @@
#endif
#include <assert.h>
+int jtag_flush_queue_count; /* count # of flushes for profiling / debugging purposes */
-
/* 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
*/
@@ -243,6 +243,7 @@
static int handle_runtest_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
static int handle_irscan_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
static int Jim_Command_drscan(Jim_Interp *interp, int argc, Jim_Obj *const *argv);
+static int Jim_Command_flush_count(Jim_Interp *interp, int argc, Jim_Obj *const *args);
static int handle_verify_ircapture_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
@@ -1446,6 +1447,11 @@
void jtag_execute_queue_noclear(void)
{
+ /* each flush can take as much as 1-2ms on high bandwidth low latency interfaces.
+ * E.g. a JTAG over TCP/IP or USB....
+ */
+ jtag_flush_queue_count++;
+
int retval=interface_jtag_execute_queue();
/* we keep the first error */
if ((jtag_error==ERROR_OK)&&(retval!=ERROR_OK))
@@ -2180,6 +2186,7 @@
register_command(cmd_ctx, NULL, "irscan", handle_irscan_command,
COMMAND_EXEC, "execute IR scan <device> <instr> [dev2] [instr2] ...");
register_jim(cmd_ctx, "drscan", Jim_Command_drscan, "execute DR scan <device> <num_bits> <value> <num_bits1> <value2> ...");
+ register_jim(cmd_ctx, "flush_count", Jim_Command_flush_count, "returns number of times the JTAG queue has been flushed");
register_command(cmd_ctx, NULL, "verify_ircapture", handle_verify_ircapture_command,
COMMAND_ANY, "verify value captured during Capture-IR <enable|disable>");
@@ -2945,6 +2952,15 @@
return JIM_OK;
}
+
+static int Jim_Command_flush_count(Jim_Interp *interp, int argc, Jim_Obj *const *args)
+{
+ Jim_SetResult(interp, Jim_NewIntObj(interp, jtag_flush_queue_count));
+
+ return JIM_OK;
+}
+
+
static int handle_verify_ircapture_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
{
if (argc == 1)
|
|
From: oharboe at B. <oh...@ma...> - 2009-05-08 13:18:44
|
Author: oharboe Date: 2009-05-08 13:18:41 +0200 (Fri, 08 May 2009) New Revision: 1673 Modified: trunk/src/jtag/jtag.c Log: fix (old?) bug in jtag_add_ir_scan() Modified: trunk/src/jtag/jtag.c =================================================================== --- trunk/src/jtag/jtag.c 2009-05-08 09:48:00 UTC (rev 1672) +++ trunk/src/jtag/jtag.c 2009-05-08 11:18:41 UTC (rev 1673) @@ -540,6 +540,7 @@ 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. * @@ -622,7 +623,7 @@ scan_size = tap->ir_length; (*last_cmd)->cmd.scan->fields[nth_tap].tap = tap; (*last_cmd)->cmd.scan->fields[nth_tap].num_bits = scan_size; - (*last_cmd)->cmd.scan->fields[nth_tap].in_value = NULL; + (*last_cmd)->cmd.scan->fields[nth_tap].in_value = fields[nth_tap].in_value; /* search the list */ for (j = 0; j < num_fields; j++) |
|
From: oharboe at B. <oh...@ma...> - 2009-05-08 11:48:02
|
Author: oharboe
Date: 2009-05-08 11:48:00 +0200 (Fri, 08 May 2009)
New Revision: 1672
Modified:
trunk/src/flash/str9xpec.c
trunk/src/jtag/bitq.c
trunk/src/jtag/jtag.c
trunk/src/jtag/jtag.h
trunk/src/jtag/zy1000.c
trunk/src/pld/virtex2.c
trunk/src/svf/svf.c
trunk/src/target/arm11_dbgtap.c
trunk/src/target/arm720t.c
trunk/src/target/arm7tdmi.c
trunk/src/target/arm920t.c
trunk/src/target/arm926ejs.c
trunk/src/target/arm966e.c
trunk/src/target/arm9tdmi.c
trunk/src/target/arm_adi_v5.c
trunk/src/target/arm_jtag.c
trunk/src/target/avrt.c
trunk/src/target/embeddedice.c
trunk/src/target/etb.c
trunk/src/target/etm.c
trunk/src/target/feroceon.c
trunk/src/target/mips_ejtag.c
trunk/src/target/xscale.c
trunk/src/xsvf/xsvf.c
Log:
in_handler in_check_mask and in_check_value now removed from field. Last big patch in the series of JTAG API cleanup.
Modified: trunk/src/flash/str9xpec.c
===================================================================
--- trunk/src/flash/str9xpec.c 2009-05-08 09:37:25 UTC (rev 1671)
+++ trunk/src/flash/str9xpec.c 2009-05-08 09:48:00 UTC (rev 1672)
@@ -129,8 +129,8 @@
field.in_value = NULL;
- field.in_handler = NULL;
+
jtag_add_ir_scan(1, &field, end_state);
@@ -155,8 +155,8 @@
field.in_value = &status;
- field.in_handler = NULL;
+
jtag_add_dr_scan(1, &field, TAP_IDLE);
jtag_execute_queue();
@@ -247,8 +247,8 @@
field.in_value = str9xpec_info->options;
- field.in_handler = NULL;
+
jtag_add_dr_scan(1, &field, TAP_IDLE);
jtag_execute_queue();
@@ -399,8 +399,8 @@
field.in_value = NULL;
- field.in_handler = NULL;
+
jtag_add_dr_scan(1, &field, TAP_IDLE);
jtag_add_sleep(40000);
@@ -413,8 +413,8 @@
field.in_value = buffer;
- field.in_handler = NULL;
+
jtag_add_dr_scan(1, &field, TAP_IRPAUSE);
jtag_execute_queue();
@@ -515,8 +515,8 @@
field.in_value = NULL;
- field.in_handler = NULL;
+
jtag_add_dr_scan(1, &field, TAP_IDLE);
jtag_execute_queue();
@@ -581,8 +581,8 @@
field.in_value = &status;
- field.in_handler = NULL;
+
jtag_add_dr_scan(1, &field, -1);
jtag_execute_queue();
@@ -667,8 +667,8 @@
field.in_value = NULL;
- field.in_handler = NULL;
+
jtag_add_dr_scan(1, &field, -1);
@@ -756,8 +756,8 @@
field.in_value = NULL;
- field.in_handler = NULL;
+
jtag_add_dr_scan(1, &field, TAP_IDLE);
@@ -774,8 +774,8 @@
field.in_value = scanbuf;
- field.in_handler = NULL;
+
jtag_add_dr_scan(1, &field, -1);
jtag_execute_queue();
@@ -816,8 +816,8 @@
field.in_value = NULL;
- field.in_handler = NULL;
+
jtag_add_dr_scan(1, &field, TAP_IDLE);
@@ -834,8 +834,8 @@
field.in_value = scanbuf;
- field.in_handler = NULL;
+
jtag_add_dr_scan(1, &field, -1);
jtag_execute_queue();
@@ -898,8 +898,8 @@
field.in_value = buffer;
- field.in_handler = NULL;
+
jtag_add_dr_scan(1, &field, TAP_IDLE);
jtag_execute_queue();
@@ -1023,8 +1023,8 @@
field.in_value = NULL;
- field.in_handler = NULL;
+
jtag_add_dr_scan(1, &field, TAP_IDLE);
@@ -1041,8 +1041,8 @@
field.in_value = &status;
- field.in_handler = NULL;
+
jtag_add_dr_scan(1, &field, -1);
jtag_execute_queue();
Modified: trunk/src/jtag/bitq.c
===================================================================
--- trunk/src/jtag/bitq.c 2009-05-08 09:37:25 UTC (rev 1671)
+++ trunk/src/jtag/bitq.c 2009-05-08 09:48:00 UTC (rev 1672)
@@ -66,7 +66,7 @@
while (bitq_in_state.field_idx<bitq_in_state.cmd->cmd.scan->num_fields)
{
field = &bitq_in_state.cmd->cmd.scan->fields[bitq_in_state.field_idx];
- if (field->in_value || field->in_handler)
+ if (field->in_value)
{
if (bitq_in_state.bit_pos==0)
{
@@ -124,12 +124,6 @@
in_mask <<= 1;
bitq_in_state.bit_pos++;
}
-
-
- if (field->in_handler && bitq_in_state.status==ERROR_OK)
- {
- bitq_in_state.status = (*field->in_handler)(in_buff, field->in_handler_priv, field);
- }
}
bitq_in_state.field_idx++; /* advance to next field */
@@ -238,7 +232,7 @@
u8* out_ptr;
u8 out_mask;
- if (field->in_value || field->in_handler)
+ if (field->in_value)
tdo_req = 1;
else
tdo_req = 0;
Modified: trunk/src/jtag/jtag.c
===================================================================
--- trunk/src/jtag/jtag.c 2009-05-08 09:37:25 UTC (rev 1671)
+++ trunk/src/jtag/jtag.c 2009-05-08 09:48:00 UTC (rev 1672)
@@ -623,7 +623,6 @@
(*last_cmd)->cmd.scan->fields[nth_tap].tap = tap;
(*last_cmd)->cmd.scan->fields[nth_tap].num_bits = scan_size;
(*last_cmd)->cmd.scan->fields[nth_tap].in_value = NULL;
- (*last_cmd)->cmd.scan->fields[nth_tap].in_handler = NULL; /* disable verification by default */
/* search the list */
for (j = 0; j < num_fields; j++)
@@ -690,10 +689,6 @@
(*last_cmd)->cmd.scan->fields[i].num_bits = num_bits;
(*last_cmd)->cmd.scan->fields[i].out_value = buf_cpy(fields[i].out_value, cmd_queue_alloc(num_bytes), num_bits);
(*last_cmd)->cmd.scan->fields[i].in_value = fields[i].in_value;
- (*last_cmd)->cmd.scan->fields[i].in_check_value = fields[i].in_check_value;
- (*last_cmd)->cmd.scan->fields[i].in_check_mask = fields[i].in_check_mask;
- (*last_cmd)->cmd.scan->fields[i].in_handler = NULL;
- (*last_cmd)->cmd.scan->fields[i].in_handler_priv = NULL;
}
return ERROR_OK;
}
@@ -772,10 +767,7 @@
(*last_cmd)->cmd.scan->fields[field_count].num_bits = scan_size;
(*last_cmd)->cmd.scan->fields[field_count].out_value = buf_cpy(fields[j].out_value, cmd_queue_alloc(CEIL(scan_size, 8)), scan_size);
(*last_cmd)->cmd.scan->fields[field_count].in_value = fields[j].in_value;
- (*last_cmd)->cmd.scan->fields[field_count].in_check_value = fields[j].in_check_value;
- (*last_cmd)->cmd.scan->fields[field_count].in_check_mask = fields[j].in_check_mask;
- (*last_cmd)->cmd.scan->fields[field_count].in_handler = fields[j].in_handler;
- (*last_cmd)->cmd.scan->fields[field_count++].in_handler_priv = fields[j].in_handler_priv;
+ field_count++;
}
}
if (!found)
@@ -792,10 +784,7 @@
(*last_cmd)->cmd.scan->fields[field_count].num_bits = 1;
(*last_cmd)->cmd.scan->fields[field_count].out_value = NULL;
(*last_cmd)->cmd.scan->fields[field_count].in_value = NULL;
- (*last_cmd)->cmd.scan->fields[field_count].in_check_value = NULL;
- (*last_cmd)->cmd.scan->fields[field_count].in_check_mask = NULL;
- (*last_cmd)->cmd.scan->fields[field_count].in_handler = NULL;
- (*last_cmd)->cmd.scan->fields[field_count++].in_handler_priv = NULL;
+ field_count++;
}
else
{
@@ -881,10 +870,7 @@
(*last_cmd)->cmd.scan->fields[field_count].num_bits = scan_size;
(*last_cmd)->cmd.scan->fields[field_count].out_value = buf_cpy(out_value, cmd_queue_alloc(CEIL(scan_size, 8)), scan_size);
(*last_cmd)->cmd.scan->fields[field_count].in_value = NULL;
- (*last_cmd)->cmd.scan->fields[field_count].in_check_value = NULL;
- (*last_cmd)->cmd.scan->fields[field_count].in_check_mask = NULL;
- (*last_cmd)->cmd.scan->fields[field_count].in_handler = NULL;
- (*last_cmd)->cmd.scan->fields[field_count++].in_handler_priv = NULL;
+ field_count++;
}
} else
{
@@ -900,10 +886,7 @@
(*last_cmd)->cmd.scan->fields[field_count].num_bits = 1;
(*last_cmd)->cmd.scan->fields[field_count].out_value = NULL;
(*last_cmd)->cmd.scan->fields[field_count].in_value = NULL;
- (*last_cmd)->cmd.scan->fields[field_count].in_check_value = NULL;
- (*last_cmd)->cmd.scan->fields[field_count].in_check_mask = NULL;
- (*last_cmd)->cmd.scan->fields[field_count].in_handler = NULL;
- (*last_cmd)->cmd.scan->fields[field_count++].in_handler_priv = NULL;
+ field_count++;
}
}
}
@@ -945,10 +928,6 @@
(*last_cmd)->cmd.scan->fields[i].num_bits = num_bits;
(*last_cmd)->cmd.scan->fields[i].out_value = buf_cpy(fields[i].out_value, cmd_queue_alloc(num_bytes), num_bits);
(*last_cmd)->cmd.scan->fields[i].in_value = fields[i].in_value;
- (*last_cmd)->cmd.scan->fields[i].in_check_value = fields[i].in_check_value;
- (*last_cmd)->cmd.scan->fields[i].in_check_mask = fields[i].in_check_mask;
- (*last_cmd)->cmd.scan->fields[i].in_handler = fields[i].in_handler;
- (*last_cmd)->cmd.scan->fields[i].in_handler_priv = fields[i].in_handler_priv;
}
return ERROR_OK;
@@ -1333,7 +1312,7 @@
/* if neither in_value nor in_handler
* are specified we don't have to examine this field
*/
- if (cmd->fields[i].in_value || cmd->fields[i].in_handler)
+ if (cmd->fields[i].in_value)
{
int num_bits = cmd->fields[i].num_bits;
u8 *captured = buf_set_buf(buffer, bit_count, malloc(CEIL(num_bits, 8)), 0, num_bits);
@@ -1347,30 +1326,8 @@
if (cmd->fields[i].in_value)
{
buf_cpy(captured, cmd->fields[i].in_value, num_bits);
-
- if (cmd->fields[i].in_handler)
- {
- if (cmd->fields[i].in_handler(cmd->fields[i].in_value, cmd->fields[i].in_handler_priv, cmd->fields+i) != ERROR_OK)
- {
- LOG_WARNING("in_handler: with \"in_value\", mismatch in %s", cmd->ir_scan ? "SIR" : "SDR" );
- retval = ERROR_JTAG_QUEUE_FAILED;
- }
- }
}
- /* no in_value specified, but a handler takes care of the scanned data */
- if (cmd->fields[i].in_handler && (!cmd->fields[i].in_value))
- {
- if (cmd->fields[i].in_handler(captured, cmd->fields[i].in_handler_priv, cmd->fields+i) != ERROR_OK)
- {
- /* We're going to call the error:handler later, but if the in_handler
- * reported an error we report this failure upstream
- */
- LOG_WARNING("in_handler: w/o \"in_value\", mismatch in %s", cmd->ir_scan ? "SIR" : "SDR" );
- retval = ERROR_JTAG_QUEUE_FAILED;
- }
- }
-
free(captured);
}
bit_count += cmd->fields[i].num_bits;
@@ -1432,26 +1389,6 @@
return retval;
}
-int jtag_check_value(u8 *captured, void *priv, scan_field_t *field)
-{
- return jtag_check_value_inner(captured, field, field->in_check_value, field->in_check_mask);
-}
-
-/*
- set up checking of this field using the in_handler. The values passed in must be valid until
- after jtag_execute() has completed.
- */
-void jtag_set_check_value(scan_field_t *field, u8 *value, u8 *mask, struct invalidstruct *obsolete)
-{
- if (value)
- field->in_handler = jtag_check_value;
- else
- field->in_handler = NULL; /* No check, e.g. embeddedice uses value==NULL to indicate no check */
- field->in_handler_priv = NULL;
- field->in_check_value = value;
- field->in_check_mask = mask;
-}
-
void jtag_check_value_mask(scan_field_t *field, u8 *value, u8 *mask)
{
assert(field->in_value != NULL);
@@ -1466,7 +1403,6 @@
int retval=jtag_check_value_inner(field->in_value, field, value, mask);
jtag_set_error(retval);
-
}
@@ -1478,7 +1414,7 @@
for (i = 0; i < cmd->num_fields; i++)
{
- if (cmd->fields[i].in_value || cmd->fields[i].in_handler)
+ if (cmd->fields[i].in_value)
type |= SCAN_IN;
if (cmd->fields[i].out_value)
type |= SCAN_OUT;
@@ -1566,8 +1502,8 @@
field.in_value = idcode_buffer;
- field.in_handler = NULL;
+
for (i = 0; i < JTAG_MAX_CHAIN_SIZE; i++)
{
buf_set_u32(idcode_buffer, i * 32, 32, 0x000000FF);
@@ -1740,8 +1676,8 @@
field.num_bits = total_ir_length;
field.out_value = ir_test;
field.in_value = ir_test;
- field.in_handler = NULL;
+
jtag_add_plain_ir_scan(1, &field, TAP_RESET);
jtag_execute_queue();
@@ -2858,9 +2794,6 @@
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;
- fields[i].in_check_mask = NULL;
- fields[i].in_handler = NULL;
- fields[i].in_handler_priv = NULL;
}
jtag_add_ir_scan(argc / 2, fields, TAP_INVALID);
@@ -2973,10 +2906,7 @@
fields[field_count].out_value = malloc(CEIL(bits, 8));
str_to_buf(str, len, fields[field_count].out_value, bits, 0);
fields[field_count].in_value = fields[field_count].out_value;
- fields[field_count].in_check_mask = NULL;
- fields[field_count].in_check_value = NULL;
- fields[field_count].in_handler = NULL;
- fields[field_count++].in_handler_priv = NULL;
+ field_count++;
}
jtag_add_dr_scan(num_fields, fields, TAP_INVALID);
Modified: trunk/src/jtag/jtag.h
===================================================================
--- trunk/src/jtag/jtag.h 2009-05-08 09:37:25 UTC (rev 1671)
+++ trunk/src/jtag/jtag.h 2009-05-08 09:48:00 UTC (rev 1672)
@@ -272,11 +272,6 @@
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 */
- /* in_check_value/mask, in_handler_error_handler, in_handler_priv can be used by the in handler, otherwise they contain garbage */
- u8* in_check_value; /* deprecated! only used from jtag_set_check_value. used to validate scan results */
- u8* in_check_mask; /* deprecated! only used from jtag_set_check_value. check specified bits against check_value */
- in_handler_t in_handler; /* deprecated! SET TO NULL. DO NOT USE! process received buffer using this handler */
- void* in_handler_priv; /* deprecated! only used by obsolete in_handler implementations */
} scan_field_t;
enum scan_type {
@@ -736,7 +731,6 @@
};
-extern void jtag_set_check_value(scan_field_t* field, u8* value, u8* mask, struct invalidstruct *obsolete);
/* execute jtag queue and check value and use mask if mask is != NULL. invokes
* jtag_set_error() with any error. */
extern void jtag_check_value_mask(scan_field_t *field, u8 *value, u8 *mask);
Modified: trunk/src/jtag/zy1000.c
===================================================================
--- trunk/src/jtag/zy1000.c 2009-05-08 09:37:25 UTC (rev 1671)
+++ trunk/src/jtag/zy1000.c 2009-05-08 09:48:00 UTC (rev 1672)
@@ -468,24 +468,6 @@
if (fields[i].in_value!=NULL)
{
inBuffer=fields[i].in_value;
- } else if (fields[i].in_handler!=NULL)
- {
- if (in_buff_size*8<num_bits)
- {
- // we need more space
- if (in_buff!=NULL)
- free(in_buff);
- in_buff=NULL;
- in_buff_size=(num_bits+7)/8;
- in_buff=malloc(in_buff_size);
- if (in_buff==NULL)
- {
- LOG_ERROR("Out of memory");
- jtag_error=ERROR_JTAG_QUEUE_FAILED;
- return;
- }
- }
- inBuffer=in_buff;
}
// here we shuffle N bits out/in
@@ -535,17 +517,6 @@
}
j+=k;
}
-
- if (fields[i].in_handler!=NULL)
- {
- // invoke callback
- int r=fields[i].in_handler(inBuffer, fields[i].in_handler_priv, fields+i);
- if (r!=ERROR_OK)
- {
- /* this will cause jtag_execute_queue() to return an error */
- jtag_error=r;
- }
- }
}
}
@@ -577,15 +548,6 @@
{
found = 1;
- if ((jtag_verify_capture_ir)&&(fields[j].in_handler==NULL))
- {
- jtag_set_check_value(fields+j, tap->expected, tap->expected_mask, NULL);
- } else if (jtag_verify_capture_ir)
- {
- fields[j].in_check_value = tap->expected;
- fields[j].in_check_mask = tap->expected_mask;
- }
-
scanFields(1, fields+j, TAP_IRSHIFT, pause);
/* update device information */
buf_cpy(fields[j].out_value, tap->cur_instr, scan_size);
@@ -656,10 +618,6 @@
tmp.num_bits = 1;
tmp.out_value = NULL;
tmp.in_value = NULL;
- tmp.in_check_value = NULL;
- tmp.in_check_mask = NULL;
- tmp.in_handler = NULL;
- tmp.in_handler_priv = NULL;
scanFields(1, &tmp, TAP_DRSHIFT, pause);
}
Modified: trunk/src/pld/virtex2.c
===================================================================
--- trunk/src/pld/virtex2.c 2009-05-08 09:37:25 UTC (rev 1671)
+++ trunk/src/pld/virtex2.c 2009-05-08 09:48:00 UTC (rev 1672)
@@ -60,9 +60,9 @@
field.in_value = NULL;
- field.in_handler = NULL;
+
jtag_add_ir_scan(1, &field, TAP_IDLE);
free(field.out_value);
@@ -84,7 +84,6 @@
scan_field.num_bits = num_words * 32;
scan_field.out_value = values;
scan_field.in_value = NULL;
- scan_field.in_handler = NULL;
for (i = 0; i < num_words; i++)
buf_set_u32(values + 4 * i, 0, 32, flip_u32(*words++, 32));
@@ -109,7 +108,6 @@
scan_field.out_value = NULL;
u8 tmp[4];
scan_field.in_value = tmp;
- scan_field.in_handler = NULL;
virtex2_set_instr(virtex2_info->tap, 0x4); /* CFG_OUT */
@@ -159,9 +157,9 @@
field.in_value = NULL;
- field.in_handler = NULL;
+
if ((retval = xilinx_read_bit_file(&bit_file, filename)) != ERROR_OK)
return retval;
Modified: trunk/src/svf/svf.c
===================================================================
--- trunk/src/svf/svf.c 2009-05-08 09:37:25 UTC (rev 1671)
+++ trunk/src/svf/svf.c 2009-05-08 09:48:00 UTC (rev 1672)
@@ -985,8 +985,8 @@
field.in_value = &svf_tdi_buffer[svf_buffer_index];
- field.in_handler = NULL;
+
jtag_add_plain_dr_scan(1, &field, svf_para.dr_end_state);
svf_buffer_index += (i + 7) >> 3;
@@ -1086,8 +1086,8 @@
field.in_value = &svf_tdi_buffer[svf_buffer_index];
- field.in_handler = NULL;
+
jtag_add_plain_ir_scan(1, &field, svf_para.ir_end_state);
svf_buffer_index += (i + 7) >> 3;
Modified: trunk/src/target/arm11_dbgtap.c
===================================================================
--- trunk/src/target/arm11_dbgtap.c 2009-05-08 09:37:25 UTC (rev 1671)
+++ trunk/src/target/arm11_dbgtap.c 2009-05-08 09:48:00 UTC (rev 1672)
@@ -87,11 +87,6 @@
{
field->tap = arm11->jtag_info.tap;
field->num_bits = num_bits;
- field->in_check_mask = NULL;
- field->in_check_value = NULL;
- field->in_handler = NULL;
- field->in_handler_priv = NULL;
-
field->out_value = out_data;
field->in_value = in_data;
}
Modified: trunk/src/target/arm720t.c
===================================================================
--- trunk/src/target/arm720t.c 2009-05-08 09:37:25 UTC (rev 1671)
+++ trunk/src/target/arm720t.c 2009-05-08 09:48:00 UTC (rev 1672)
@@ -113,13 +113,13 @@
fields[0].num_bits = 1;
fields[0].out_value = &instruction_buf;
fields[0].in_value = NULL;
- fields[0].in_handler = NULL;
+
fields[1].tap = jtag_info->tap;
fields[1].num_bits = 32;
fields[1].out_value = out_buf;
fields[1].in_value = NULL;
- fields[1].in_handler = NULL;
+
if (in)
{
u8 tmp[4];
Modified: trunk/src/target/arm7tdmi.c
===================================================================
--- trunk/src/target/arm7tdmi.c 2009-05-08 09:37:25 UTC (rev 1671)
+++ trunk/src/target/arm7tdmi.c 2009-05-08 09:48:00 UTC (rev 1672)
@@ -115,13 +115,13 @@
fields[0].num_bits = 1;
fields[0].out_value = NULL;
fields[0].in_value = &breakpoint;
- fields[0].in_handler = NULL;
+
fields[1].tap = arm7_9->jtag_info.tap;
fields[1].num_bits = 32;
fields[1].out_value = NULL;
fields[1].in_value = databus;
- fields[1].in_handler = NULL;
+
if((retval = arm_jtag_scann(&arm7_9->jtag_info, 0x1)) != ERROR_OK)
{
@@ -194,7 +194,7 @@
fields[0].num_bits = 1;
fields[0].out_value = NULL;
fields[0].in_value = NULL;
- fields[0].in_handler = NULL;
+
fields[1].tap = jtag_info->tap;
@@ -202,7 +202,7 @@
fields[1].out_value = NULL;
u8 tmp[4];
fields[1].in_value = tmp;
- fields[1].in_handler = NULL;
+
jtag_add_dr_scan_now(2, fields, TAP_INVALID);
@@ -286,14 +286,14 @@
fields[0].num_bits = 1;
fields[0].out_value = NULL;
fields[0].in_value = NULL;
- fields[0].in_handler = NULL;
+
fields[1].tap = jtag_info->tap;
fields[1].num_bits = 32;
fields[1].out_value = NULL;
u8 tmp[4];
fields[1].in_value = tmp;
- fields[1].in_handler = NULL;
+
jtag_add_dr_scan_now(2, fields, TAP_INVALID);
Modified: trunk/src/target/arm920t.c
===================================================================
--- trunk/src/target/arm920t.c 2009-05-08 09:37:25 UTC (rev 1671)
+++ trunk/src/target/arm920t.c 2009-05-08 09:48:00 UTC (rev 1672)
@@ -114,25 +114,25 @@
fields[0].num_bits = 1;
fields[0].out_value = &access_type_buf;
fields[0].in_value = NULL;
- fields[0].in_handler = NULL;
+
fields[1].tap = jtag_info->tap;
fields[1].num_bits = 32;
fields[1].out_value = NULL;
fields[1].in_value = NULL;
- fields[1].in_handler = NULL;
+
fields[2].tap = jtag_info->tap;
fields[2].num_bits = 6;
fields[2].out_value = ®_addr_buf;
fields[2].in_value = NULL;
- fields[2].in_handler = NULL;
+
fields[3].tap = jtag_info->tap;
fields[3].num_bits = 1;
fields[3].out_value = &nr_w_buf;
fields[3].in_value = NULL;
- fields[3].in_handler = NULL;
+
jtag_add_dr_scan(4, fields, TAP_INVALID);
@@ -175,7 +175,7 @@
fields[0].in_value = NULL;
- fields[0].in_handler = NULL;
+
fields[1].tap = jtag_info->tap;
@@ -185,7 +185,7 @@
fields[1].in_value = NULL;
- fields[1].in_handler = NULL;
+
fields[2].tap = jtag_info->tap;
@@ -195,7 +195,7 @@
fields[2].in_value = NULL;
- fields[2].in_handler = NULL;
+
fields[3].tap = jtag_info->tap;
@@ -205,7 +205,7 @@
fields[3].in_value = NULL;
- fields[3].in_handler = NULL;
+
jtag_add_dr_scan(4, fields, TAP_INVALID);
@@ -242,7 +242,7 @@
fields[0].in_value = NULL;
- fields[0].in_handler = NULL;
+
fields[1].tap = jtag_info->tap;
@@ -252,7 +252,7 @@
fields[1].in_value = NULL;
- fields[1].in_handler = NULL;
+
fields[2].tap = jtag_info->tap;
@@ -262,7 +262,7 @@
fields[2].in_value = NULL;
- fields[2].in_handler = NULL;
+
fields[3].tap = jtag_info->tap;
@@ -272,7 +272,7 @@
fields[3].in_value = NULL;
- fields[3].in_handler = NULL;
+
jtag_add_dr_scan(4, fields, TAP_INVALID);
Modified: trunk/src/target/arm926ejs.c
===================================================================
--- trunk/src/target/arm926ejs.c 2009-05-08 09:37:25 UTC (rev 1671)
+++ trunk/src/target/arm926ejs.c 2009-05-08 09:48:00 UTC (rev 1672)
@@ -96,6 +96,10 @@
int arm926ejs_catch_broken_irscan(u8 *captured, void *priv, scan_field_t *field)
{
+ /* FIX!!!! this code should be reenabled. For now it does not check
+ * the queue...*/
+ return 0;
+#if 0
/* The ARM926EJ-S' instruction register is 4 bits wide */
u8 t = *captured & 0xf;
u8 t2 = *field->in_check_value & 0xf;
@@ -109,6 +113,7 @@
return ERROR_OK;
}
return ERROR_JTAG_QUEUE_FAILED;;
+#endif
}
#define ARM926EJS_CP15_ADDR(opcode_1, opcode_2, CRn, CRm) ((opcode_1 << 11) | (opcode_2 << 8) | (CRn << 4) | (CRm << 0))
@@ -139,27 +144,27 @@
fields[0].out_value = NULL;
u8 tmp[4];
fields[0].in_value = tmp;
- fields[0].in_handler = NULL;
+
fields[1].tap = jtag_info->tap;
fields[1].num_bits = 1;
fields[1].out_value = &access;
fields[1].in_value = &access;
- fields[1].in_handler = NULL;
+
fields[2].tap = jtag_info->tap;
fields[2].num_bits = 14;
fields[2].out_value = address_buf;
fields[2].in_value = NULL;
- fields[2].in_handler = NULL;
+
fields[3].tap = jtag_info->tap;
fields[3].num_bits = 1;
fields[3].out_value = &nr_w_buf;
fields[3].in_value = NULL;
- fields[3].in_handler = NULL;
+
jtag_add_dr_scan(4, fields, TAP_INVALID);
/*TODO: add timeout*/
@@ -217,9 +222,9 @@
fields[0].in_value = NULL;
- fields[0].in_handler = NULL;
+
fields[1].tap = jtag_info->tap;
fields[1].num_bits = 1;
fields[1].out_value = &access;
@@ -227,9 +232,9 @@
fields[1].in_value = &access;
- fields[1].in_handler = NULL;
+
fields[2].tap = jtag_info->tap;
fields[2].num_bits = 14;
fields[2].out_value = address_buf;
@@ -237,9 +242,9 @@
fields[2].in_value = NULL;
- fields[2].in_handler = NULL;
+
fields[3].tap = jtag_info->tap;
fields[3].num_bits = 1;
fields[3].out_value = &nr_w_buf;
@@ -247,9 +252,9 @@
fields[3].in_value = NULL;
- fields[3].in_handler = NULL;
+
jtag_add_dr_scan(4, fields, TAP_INVALID);
/*TODO: add timeout*/
do
Modified: trunk/src/target/arm966e.c
===================================================================
--- trunk/src/target/arm966e.c 2009-05-08 09:37:25 UTC (rev 1671)
+++ trunk/src/target/arm966e.c 2009-05-08 09:48:00 UTC (rev 1672)
@@ -188,19 +188,19 @@
fields[0].num_bits = 32;
fields[0].out_value = NULL;
fields[0].in_value = NULL;
- fields[0].in_handler = NULL;
+
fields[1].tap = jtag_info->tap;
fields[1].num_bits = 6;
fields[1].out_value = ®_addr_buf;
fields[1].in_value = NULL;
- fields[1].in_handler = NULL;
+
fields[2].tap = jtag_info->tap;
fields[2].num_bits = 1;
fields[2].out_value = &nr_w_buf;
fields[2].in_value = NULL;
- fields[2].in_handler = NULL;
+
jtag_add_dr_scan(3, fields, TAP_INVALID);
@@ -250,7 +250,7 @@
fields[0].in_value = NULL;
- fields[0].in_handler = NULL;
+
fields[1].tap = jtag_info->tap;
@@ -260,7 +260,7 @@
fields[1].in_value = NULL;
- fields[1].in_handler = NULL;
+
fields[2].tap = jtag_info->tap;
@@ -270,7 +270,7 @@
fields[2].in_value = NULL;
- fields[2].in_handler = NULL;
+
jtag_add_dr_scan(3, fields, TAP_INVALID);
Modified: trunk/src/target/arm9tdmi.c
===================================================================
--- trunk/src/target/arm9tdmi.c 2009-05-08 09:37:25 UTC (rev 1671)
+++ trunk/src/target/arm9tdmi.c 2009-05-08 09:48:00 UTC (rev 1672)
@@ -132,7 +132,7 @@
fields[0].in_value = databus;
- fields[0].in_handler = NULL;
+
fields[1].tap = arm7_9->jtag_info.tap;
@@ -142,7 +142,7 @@
fields[1].in_value = &debug_reason;
- fields[1].in_handler = NULL;
+
fields[2].tap = arm7_9->jtag_info.tap;
@@ -152,7 +152,7 @@
fields[2].in_value = instructionbus;
- fields[2].in_handler = NULL;
+
if((retval = arm_jtag_scann(&arm7_9->jtag_info, 0x1)) != ERROR_OK)
@@ -217,20 +217,20 @@
fields[0].num_bits = 32;
fields[0].out_value = out_buf;
fields[0].in_value = NULL;
- fields[0].in_handler = NULL;
+
fields[1].tap = jtag_info->tap;
fields[1].num_bits = 3;
fields[1].out_value = &sysspeed_buf;
fields[1].in_value = NULL;
- fields[1].in_handler = NULL;
+
fields[2].tap = jtag_info->tap;
fields[2].num_bits = 32;
fields[2].out_value = instr_buf;
fields[2].in_value = NULL;
- fields[2].in_handler = NULL;
+
if (in)
{
@@ -285,19 +285,19 @@
fields[0].out_value = NULL;
u8 tmp[4];
fields[0].in_value = tmp;
- fields[0].in_handler = NULL;
+
fields[1].tap = jtag_info->tap;
fields[1].num_bits = 3;
fields[1].out_value = NULL;
fields[1].in_value = NULL;
- fields[1].in_handler = NULL;
+
fields[2].tap = jtag_info->tap;
fields[2].num_bits = 32;
fields[2].out_value = NULL;
fields[2].in_value = NULL;
- fields[2].in_handler = NULL;
+
jtag_add_dr_scan_now(3, fields, TAP_INVALID);
@@ -350,19 +350,19 @@
fields[0].out_value = NULL;
u8 tmp[4];
fields[0].in_value = tmp;
- fields[0].in_handler = NULL;
+
fields[1].tap = jtag_info->tap;
fields[1].num_bits = 3;
fields[1].out_value = NULL;
fields[1].in_value = NULL;
- fields[1].in_handler = NULL;
+
fields[2].tap = jtag_info->tap;
fields[2].num_bits = 32;
fields[2].out_value = NULL;
fields[2].in_value = NULL;
- fields[2].in_handler = NULL;
+
jtag_add_dr_scan_now(3, fields, TAP_INVALID);
Modified: trunk/src/target/arm_adi_v5.c
===================================================================
--- trunk/src/target/arm_adi_v5.c 2009-05-08 09:37:25 UTC (rev 1671)
+++ trunk/src/target/arm_adi_v5.c 2009-05-08 09:48:00 UTC (rev 1672)
@@ -81,7 +81,7 @@
fields[0].in_value = ack;
- fields[0].in_handler = NULL;
+
fields[1].tap = jtag_info->tap;
@@ -89,7 +89,7 @@
fields[1].out_value = outvalue;
fields[1].in_value = invalue;
- fields[1].in_handler = NULL;
+
@@ -114,7 +114,7 @@
buf_set_u32(&out_addr_buf, 0, 3, ((reg_addr >> 1) & 0x6) | (RnW & 0x1));
fields[0].out_value = &out_addr_buf;
fields[0].in_value = ack;
- fields[0].in_handler = NULL;
+
fields[1].tap = jtag_info->tap;
@@ -122,7 +122,7 @@
buf_set_u32(out_value_buf, 0, 32, outvalue);
fields[1].out_value = out_value_buf;
fields[1].in_value = NULL;
- fields[1].in_handler = NULL;
+
if (invalue)
{
Modified: trunk/src/target/arm_jtag.c
===================================================================
--- trunk/src/target/arm_jtag.c 2009-05-08 09:37:25 UTC (rev 1671)
+++ trunk/src/target/arm_jtag.c 2009-05-08 09:48:00 UTC (rev 1672)
@@ -53,7 +53,7 @@
field.out_value = t;
buf_set_u32(field.out_value, 0, field.num_bits, new_instr);
field.in_value = NULL;
- field.in_handler = NULL;
+
if (no_verify_capture==NULL)
Modified: trunk/src/target/avrt.c
===================================================================
--- trunk/src/target/avrt.c 2009-05-08 09:37:25 UTC (rev 1671)
+++ trunk/src/target/avrt.c 2009-05-08 09:48:00 UTC (rev 1672)
@@ -126,10 +126,10 @@
int avr_target_create(struct target_s *target, Jim_Interp *interp)
{
avr_common_t *avr = calloc(1, sizeof(avr_common_t));
-
+
avr->jtag_info.tap = target->tap;
target->arch_info = avr;
-
+
return ERROR_OK;
}
@@ -157,7 +157,7 @@
{
target->state = TARGET_HALTED;
}
-
+
LOG_DEBUG("%s", __FUNCTION__);
return ERROR_OK;
}
@@ -183,7 +183,7 @@
int avr_assert_reset(target_t *target)
{
target->state = TARGET_RESET;
-
+
LOG_DEBUG("%s", __FUNCTION__);
return ERROR_OK;
}
@@ -191,7 +191,7 @@
int avr_deassert_reset(target_t *target)
{
target->state = TARGET_RUNNING;
-
+
LOG_DEBUG("%s", __FUNCTION__);
return ERROR_OK;
}
@@ -225,21 +225,17 @@
LOG_ERROR("invalid ir_len");
return ERROR_FAIL;
}
-
+
{
scan_field_t field[1];
-
+
field[0].tap = tap;
field[0].num_bits = tap->ir_length;
field[0].out_value = ir_out;
field[0].in_value = ir_in;
- field[0].in_check_value = NULL;
- field[0].in_check_mask = NULL;
- field[0].in_handler = NULL;
- field[0].in_handler_priv = NULL;
jtag_add_plain_ir_scan(sizeof(field) / sizeof(field[0]), field, TAP_IDLE);
}
-
+
return ERROR_OK;
}
@@ -250,21 +246,17 @@
LOG_ERROR("invalid tap");
return ERROR_FAIL;
}
-
+
{
scan_field_t field[1];
-
+
field[0].tap = tap;
field[0].num_bits = dr_len;
field[0].out_value = dr_out;
field[0].in_value = dr_in;
- field[0].in_check_value = NULL;
- field[0].in_check_mask = NULL;
- field[0].in_handler = NULL;
- field[0].in_handler_priv = NULL;
jtag_add_plain_dr_scan(sizeof(field) / sizeof(field[0]), field, TAP_IDLE);
}
-
+
return ERROR_OK;
}
@@ -275,9 +267,9 @@
LOG_ERROR("ir_len overflow, maxium is 8");
return ERROR_FAIL;
}
-
+
mcu_write_ir(tap, ir_in, &ir_out, ir_len, rti);
-
+
return ERROR_OK;
}
@@ -288,9 +280,9 @@
LOG_ERROR("dr_len overflow, maxium is 8");
return ERROR_FAIL;
}
-
+
mcu_write_dr(tap, dr_in, &dr_out, dr_len, rti);
-
+
return ERROR_OK;
}
@@ -301,9 +293,9 @@
LOG_ERROR("ir_len overflow, maxium is 16");
return ERROR_FAIL;
}
-
+
mcu_write_ir(tap, (u8*)ir_in, (u8*)&ir_out, ir_len, rti);
-
+
return ERROR_OK;
}
@@ -314,9 +306,9 @@
LOG_ERROR("dr_len overflow, maxium is 16");
return ERROR_FAIL;
}
-
+
mcu_write_dr(tap, (u8*)dr_in, (u8*)&dr_out, dr_len, rti);
-
+
return ERROR_OK;
}
@@ -327,9 +319,9 @@
LOG_ERROR("ir_len overflow, maxium is 32");
return ERROR_FAIL;
}
-
+
mcu_write_ir(tap, (u8*)ir_in, (u8*)&ir_out, ir_len, rti);
-
+
return ERROR_OK;
}
@@ -340,9 +332,9 @@
LOG_ERROR("dr_len overflow, maxium is 32");
return ERROR_FAIL;
}
-
+
mcu_write_dr(tap, (u8*)dr_in, (u8*)&dr_out, dr_len, rti);
-
+
return ERROR_OK;
}
Modified: trunk/src/target/embeddedice.c
===================================================================
--- trunk/src/target/embeddedice.c 2009-05-08 09:37:25 UTC (rev 1671)
+++ trunk/src/target/embeddedice.c 2009-05-08 09:48:00 UTC (rev 1672)
@@ -252,21 +252,21 @@
fields[0].num_bits = 32;
fields[0].out_value = reg->value;
fields[0].in_value = NULL;
- fields[0].in_handler = 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].in_handler = 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].in_handler = NULL;
+
jtag_add_dr_scan(3, fields, TAP_INVALID);
@@ -304,21 +304,21 @@
fields[0].out_value = NULL;
u8 tmp[4];
fields[0].in_value = tmp;
- fields[0].in_handler = NULL;
+
fields[1].tap = jtag_info->tap;
fields[1].num_bits = 5;
fields[1].out_value = field1_out;
buf_set_u32(fields[1].out_value, 0, 5, embeddedice_reg_arch_info[EICE_COMMS_DATA]);
fields[1].in_value = NULL;
- fields[1].in_handler = NULL;
+
fields[2].tap = 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].in_handler = NULL;
+
jtag_add_dr_scan(3, fields, TAP_INVALID);
@@ -412,7 +412,7 @@
fields[0].in_value = NULL;
- fields[0].in_handler = NULL;
+
fields[1].tap = jtag_info->tap;
@@ -423,7 +423,7 @@
fields[1].in_value = NULL;
- fields[1].in_handler = NULL;
+
fields[2].tap = jtag_info->tap;
@@ -434,7 +434,7 @@
fields[2].in_value = NULL;
- fields[2].in_handler = NULL;
+
while (size > 0)
@@ -481,7 +481,7 @@
fields[0].in_value = field0_in;
- fields[0].in_handler = NULL;
+
fields[1].tap = jtag_info->tap;
@@ -492,7 +492,7 @@
fields[1].in_value = NULL;
- fields[1].in_handler = NULL;
+
fields[2].tap = jtag_info->tap;
@@ -503,7 +503,7 @@
fields[2].in_value = NULL;
- fields[2].in_handler = NULL;
+
jtag_add_dr_scan(3, fields, TAP_INVALID);
Modified: trunk/src/target/etb.c
===================================================================
--- trunk/src/target/etb.c 2009-05-08 09:37:25 UTC (rev 1671)
+++ trunk/src/target/etb.c 2009-05-08 09:48:00 UTC (rev 1672)
@@ -74,7 +74,7 @@
field.in_value = NULL;
- field.in_handler = NULL;
+
jtag_add_ir_scan(1, &field, TAP_INVALID);
@@ -99,7 +99,7 @@
field.in_value = NULL;
- field.in_handler = NULL;
+
/* select INTEST instruction */
@@ -188,21 +188,21 @@
fields[0].out_value = NULL;
u8 tmp[4];
fields[0].in_value = tmp;
- fields[0].in_handler = NULL;
+
fields[1].tap = etb->tap;
fields[1].num_bits = 7;
fields[1].out_value = malloc(1);
buf_set_u32(fields[1].out_value, 0, 7, 4);
fields[1].in_value = NULL;
- fields[1].in_handler = NULL;
+
fields[2].tap = 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].in_handler = NULL;
+
jtag_add_dr_scan(3, fields, TAP_INVALID);
@@ -250,7 +250,7 @@
fields[0].in_value = NULL;
- fields[0].in_handler = NULL;
+
fields[1].tap = etb_reg->etb->tap;
@@ -261,7 +261,7 @@
fields[1].in_value = NULL;
- fields[1].in_handler = NULL;
+
fields[2].tap = etb_reg->etb->tap;
@@ -272,7 +272,7 @@
fields[2].in_value = NULL;
- fields[2].in_handler = NULL;
+
jtag_add_dr_scan(3, fields, TAP_INVALID);
@@ -347,7 +347,7 @@
fields[0].in_value = NULL;
- fields[0].in_handler = NULL;
+
fields[1].tap = etb_reg->etb->tap;
@@ -358,7 +358,7 @@
fields[1].in_value = NULL;
- fields[1].in_handler = NULL;
+
fields[2].tap = etb_reg->etb->tap;
@@ -369,7 +369,7 @@
fields[2].in_value = NULL;
- fields[2].in_handler = NULL;
+
jtag_add_dr_scan(3, fields, TAP_INVALID);
Modified: trunk/src/target/etm.c
===================================================================
--- trunk/src/target/etm.c 2009-05-08 09:37:25 UTC (rev 1671)
+++ trunk/src/target/etm.c 2009-05-08 09:48:00 UTC (rev 1672)
@@ -340,21 +340,21 @@
fields[0].num_bits = 32;
fields[0].out_value = reg->value;
fields[0].in_value = NULL;
- fields[0].in_handler = 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].in_handler = 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].in_handler = NULL;
+
jtag_add_dr_scan(3, fields, TAP_INVALID);
@@ -424,7 +424,7 @@
fields[0].in_value = NULL;
- fields[0].in_handler = NULL;
+
fields[1].tap = etm_reg->jtag_info->tap;
@@ -435,7 +435,7 @@
fields[1].in_value = NULL;
- fields[1].in_handler = NULL;
+
fields[2].tap = etm_reg->jtag_info->tap;
@@ -446,7 +446,7 @@
fields[2].in_value = NULL;
- fields[2].in_handler = NULL;
+
jtag_add_dr_scan(3, fields, TAP_INVALID);
Modified: trunk/src/target/feroceon.c
===================================================================
--- trunk/src/target/feroceon.c 2009-05-08 09:37:25 UTC (rev 1671)
+++ trunk/src/target/feroceon.c 2009-05-08 09:48:00 UTC (rev 1672)
@@ -137,10 +137,10 @@
fields[0].out_value = out_buf;
fields[0].in_value = NULL;
- fields[0].in_handler = NULL;
+
fields[1].tap = jtag_info->tap;
fields[1].num_bits = 3;
@@ -149,8 +149,8 @@
fields[1].in_value = NULL;
- fields[1].in_handler = NULL;
+
fields[2].tap = jtag_info->tap;
fields[2].num_bits = 32;
@@ -159,8 +159,8 @@
fields[2].in_value = NULL;
- fields[2].in_handler = NULL;
+
jtag_add_dr_scan(3, fields, TAP_INVALID);
Modified: trunk/src/target/mips_ejtag.c
===================================================================
--- trunk/src/target/mips_ejtag.c 2009-05-08 09:37:25 UTC (rev 1671)
+++ trunk/src/target/mips_ejtag.c 2009-05-08 09:48:00 UTC (rev 1672)
@@ -53,8 +53,8 @@
field.in_value = NULL;
- field.in_handler = NULL;
+
jtag_add_ir_scan(1, &field, TAP_INVALID);
}
@@ -76,8 +76,8 @@
field.in_value = (void*)idcode;
- field.in_handler = NULL;
+
jtag_add_dr_scan(1, &field, TAP_INVALID);
if (jtag_execute_queue() != ERROR_OK)
@@ -103,8 +103,8 @@
field.in_value = (void*)impcode;
- field.in_handler = NULL;
+
jtag_add_dr_scan(1, &field, TAP_INVALID);
if (jtag_execute_queue() != ERROR_OK)
@@ -134,8 +134,8 @@
field.in_value = (u8*)data;
- field.in_handler = NULL;
+
jtag_add_dr_scan(1, &field, TAP_INVALID);
if ((retval = jtag_execute_queue()) != ERROR_OK)
Modified: trunk/src/target/xscale.c
===================================================================
--- trunk/src/target/xscale.c 2009-05-08 09:37:25 UTC (rev 1671)
+++ trunk/src/target/xscale.c 2009-05-08 09:48:00 UTC (rev 1672)
@@ -270,7 +270,7 @@
fields[1].num_bits = 32;
fields[1].out_value = NULL;
fields[1].in_value = xscale->reg_cache->reg_list[XSCALE_DCSR].value;
- fields[1].in_handler = NULL;
+
fields[2].tap = xscale->jtag_info.tap;
fields[2].num_bits = 1;
@@ -346,7 +346,7 @@
fields[1].out_value = NULL;
u8 tmp[4];
fields[1].in_value = tmp;
- fields[1].in_handler = NULL;
+
fields[2].tap = xscale->jtag_info.tap;
fields[2].num_bits = 1;
@@ -462,7 +462,7 @@
fields[1].num_bits = 32;
fields[1].out_value = NULL;
fields[1].in_value = xscale->reg_cache->reg_list[XSCALE_TX].value;
- fields[1].in_handler = NULL;
+
fields[2].tap = xscale->jtag_info.tap;
fields[2].num_bits = 1;
@@ -554,7 +554,7 @@
fields[1].num_bits = 32;
fields[1].out_value = xscale->reg_cache->reg_list[XSCALE_RX].value;
fields[1].in_value = NULL;
- fields[1].in_handler = NULL;
+
fields[2].tap = xscale->jtag_info.tap;
fields[2].num_bits = 1;
@@ -726,7 +726,7 @@
fields[1].num_bits = 32;
fields[1].out_value = xscale->reg_cache->reg_list[XSCALE_DCSR].value;
fields[1].in_value = NULL;
- fields[1].in_handler = NULL;
+
fields[2].tap = xscale->jtag_info.tap;
fields[2].num_bits = 1;
@@ -796,7 +796,7 @@
fields[0].in_value = NULL;
- fields[0].in_handler = NULL;
+
fields[1].tap = xscale->jtag_info.tap;
@@ -806,7 +806,7 @@
fields[1].in_value = NULL;
- fields[1].in_handler = NULL;
+
jtag_add_dr_scan(2, fields, TAP_INVALID);
@@ -858,7 +858,7 @@
fields[0].in_value = NULL;
- fields[0].in_handler = NULL;
+
fields[1].tap = xscale->jtag_info.tap;
@@ -868,7 +868,7 @@
fields[1].in_value = NULL;
- fields[1].in_handler = NULL;
+
jtag_add_dr_scan(2, fields, TAP_INVALID);
Modified: trunk/src/xsvf/xsvf.c
===================================================================
--- trunk/src/xsvf/xsvf.c 2009-05-08 09:37:25 UTC (rev 1671)
+++ trunk/src/xsvf/xsvf.c 2009-05-08 09:48:00 UTC (rev 1672)
@@ -719,7 +719,7 @@
field.in_value = NULL;
- field.in_handler = NULL;
+
if (tap == NULL)
jtag_add_plain_ir_scan(1, &field, my_end_state);
|
|
From: oharboe at B. <oh...@ma...> - 2009-05-08 11:37:26
|
Author: oharboe Date: 2009-05-08 11:37:25 +0200 (Fri, 08 May 2009) New Revision: 1671 Modified: trunk/src/jtag/jtag.c Log: fix one gaffe in previous commit. Modified: trunk/src/jtag/jtag.c =================================================================== --- trunk/src/jtag/jtag.c 2009-05-08 08:49:24 UTC (rev 1670) +++ trunk/src/jtag/jtag.c 2009-05-08 09:37:25 UTC (rev 1671) @@ -1391,7 +1391,7 @@ int compare_failed = 0; - if (field->in_check_mask) + if (in_check_mask) compare_failed = buf_cmp_mask(captured, in_check_value, in_check_mask, num_bits); else compare_failed = buf_cmp(captured, in_check_value, num_bits); |
|
From: oharboe at B. <oh...@ma...> - 2009-05-08 10:49:24
|
Author: oharboe
Date: 2009-05-08 10:49:24 +0200 (Fri, 08 May 2009)
New Revision: 1670
Modified:
trunk/src/jtag/jtag.c
Log:
use assert instead of adding code that always runs
Modified: trunk/src/jtag/jtag.c
===================================================================
--- trunk/src/jtag/jtag.c 2009-05-08 08:46:28 UTC (rev 1669)
+++ trunk/src/jtag/jtag.c 2009-05-08 08:49:24 UTC (rev 1670)
@@ -41,6 +41,7 @@
#ifdef HAVE_STRINGS_H
#include <strings.h>
#endif
+#include <assert.h>
@@ -1453,11 +1454,7 @@
void jtag_check_value_mask(scan_field_t *field, u8 *value, u8 *mask)
{
- if (field->in_value==NULL)
- {
- LOG_ERROR("remember to fill in in_value for jtag_check_value_mask() to work!");
- return;
- }
+ assert(field->in_value != NULL);
if (value==NULL)
{
|
|
From: oharboe at B. <oh...@ma...> - 2009-05-08 10:46:29
|
Author: oharboe
Date: 2009-05-08 10:46:28 +0200 (Fri, 08 May 2009)
New Revision: 1669
Modified:
trunk/src/jtag/jtag.c
trunk/src/jtag/jtag.h
trunk/src/target/arm_jtag.c
trunk/src/target/arm_jtag.h
Log:
pull up verify_capture_ir one level in api stack
Modified: trunk/src/jtag/jtag.c
===================================================================
--- trunk/src/jtag/jtag.c 2009-05-08 07:28:00 UTC (rev 1668)
+++ trunk/src/jtag/jtag.c 2009-05-08 08:46:28 UTC (rev 1669)
@@ -521,17 +521,67 @@
cmd_queue_cur_state = cmd_queue_end_state;
}
-void jtag_add_ir_scan(int num_fields, scan_field_t *fields, tap_state_t state)
+void jtag_add_ir_scan_noverify(int num_fields, scan_field_t *fields, tap_state_t state)
{
int retval;
-
jtag_prelude(state);
retval=interface_jtag_add_ir_scan(num_fields, fields, cmd_queue_end_state);
if (retval!=ERROR_OK)
jtag_error=retval;
+
}
+
+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++)
+ {
+ 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");
+ }
+ }
+ }
+ }
+
+ 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;
+ jtag_check_value_mask(fields+j, tap->expected, tap->expected_mask);
+
+ if (modified[j])
+ {
+ fields[j].in_value=NULL;
+ }
+ }
+ }
+
+}
+
int MINIDRIVER(interface_jtag_add_ir_scan)(int num_fields, scan_field_t *fields, tap_state_t state)
{
jtag_command_t **last_cmd;
@@ -582,20 +632,6 @@
found = 1;
(*last_cmd)->cmd.scan->fields[nth_tap].out_value = buf_cpy(fields[j].out_value, cmd_queue_alloc(CEIL(scan_size, 8)), scan_size);
- if (jtag_verify_capture_ir)
- {
- if (fields[j].in_handler==NULL)
- {
- jtag_set_check_value((*last_cmd)->cmd.scan->fields+nth_tap, tap->expected, tap->expected_mask, NULL);
- } else
- {
- (*last_cmd)->cmd.scan->fields[nth_tap].in_handler = fields[j].in_handler;
- (*last_cmd)->cmd.scan->fields[nth_tap].in_handler_priv = fields[j].in_handler_priv;
- (*last_cmd)->cmd.scan->fields[nth_tap].in_check_value = tap->expected;
- (*last_cmd)->cmd.scan->fields[nth_tap].in_check_mask = tap->expected_mask;
- }
- }
-
tap->bypass = 0;
break;
}
Modified: trunk/src/jtag/jtag.h
===================================================================
--- trunk/src/jtag/jtag.h 2009-05-08 07:28:00 UTC (rev 1668)
+++ trunk/src/jtag/jtag.h 2009-05-08 08:46:28 UTC (rev 1669)
@@ -559,6 +559,8 @@
*
*/
extern void jtag_add_ir_scan(int num_fields, scan_field_t* fields, tap_state_t endstate);
+/* same as jtag_add_ir_scan except no verify is performed */
+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);
/* same as jtag_add_dr_scan but the scan is executed immediately. sets jtag_error if there
@@ -731,7 +733,7 @@
/* JTAG support functions */
struct invalidstruct
{
-
+
};
extern void jtag_set_check_value(scan_field_t* field, u8* value, u8* mask, struct invalidstruct *obsolete);
Modified: trunk/src/target/arm_jtag.c
===================================================================
--- trunk/src/target/arm_jtag.c 2009-05-08 07:28:00 UTC (rev 1668)
+++ trunk/src/target/arm_jtag.c 2009-05-08 08:46:28 UTC (rev 1669)
@@ -36,7 +36,7 @@
#define _ARM_JTAG_SCAN_N_CHECK_
#endif
-int arm_jtag_set_instr(arm_jtag_t *jtag_info, u32 new_instr, in_handler_t handler)
+int arm_jtag_set_instr(arm_jtag_t *jtag_info, u32 new_instr, void *no_verify_capture)
{
jtag_tap_t *tap;
tap = jtag_info->tap;
@@ -52,13 +52,20 @@
field.num_bits = tap->ir_length;
field.out_value = t;
buf_set_u32(field.out_value, 0, field.num_bits, new_instr);
-
field.in_value = NULL;
+ field.in_handler = NULL;
- field.in_handler = handler; /* deprecated! move into calling code */
-
- jtag_add_ir_scan(1, &field, TAP_INVALID);
+ if (no_verify_capture==NULL)
+ {
+ jtag_add_ir_scan(1, &field, TAP_INVALID);
+ } else
+ {
+ /* FIX!!!! this is a kludge!!! arm926ejs.c should reimplement this arm_jtag_set_instr to
+ * have special verification code.
+ */
+ jtag_add_ir_scan_noverify(1, &field, TAP_INVALID);
+ }
}
return ERROR_OK;
Modified: trunk/src/target/arm_jtag.h
===================================================================
--- trunk/src/target/arm_jtag.h 2009-05-08 07:28:00 UTC (rev 1668)
+++ trunk/src/target/arm_jtag.h 2009-05-08 08:46:28 UTC (rev 1669)
@@ -29,15 +29,15 @@
typedef struct arm_jtag_s
{
jtag_tap_t *tap;
-
+
u32 scann_size;
u32 scann_instr;
u32 cur_scan_chain;
-
+
u32 intest_instr;
} arm_jtag_t;
-extern int arm_jtag_set_instr(arm_jtag_t *jtag_info, u32 new_instr, in_handler_t handler);
+extern int arm_jtag_set_instr(arm_jtag_t *jtag_info, u32 new_instr, void *verify_capture);
extern int arm_jtag_scann(arm_jtag_t *jtag_info, u32 new_scan_chain);
extern int arm_jtag_setup_connection(arm_jtag_t *jtag_info);
|
|
From: oharboe at B. <oh...@ma...> - 2009-05-08 09:28:03
|
Author: oharboe
Date: 2009-05-08 09:28:00 +0200 (Fri, 08 May 2009)
New Revision: 1668
Modified:
trunk/src/xsvf/xsvf.c
Log:
retire jtag_set_check_value
Modified: trunk/src/xsvf/xsvf.c
===================================================================
--- trunk/src/xsvf/xsvf.c 2009-05-08 07:22:31 UTC (rev 1667)
+++ trunk/src/xsvf/xsvf.c 2009-05-08 07:28:00 UTC (rev 1668)
@@ -501,16 +501,18 @@
field.tap = tap;
field.num_bits = xsdrsize;
field.out_value = dr_out_buf;
-
- field.in_value = NULL;
+ field.in_value = calloc(CEIL(field.num_bits, 8), 1);
- jtag_set_check_value(&field, dr_in_buf, dr_in_mask, NULL);
-
if (tap == NULL)
jtag_add_plain_dr_scan(1, &field, TAP_DRPAUSE);
else
jtag_add_dr_scan(1, &field, TAP_DRPAUSE);
+ jtag_check_value_mask(&field, dr_in_buf, dr_in_mask);
+
+ free(field.in_value);
+
+
/* LOG_DEBUG("FLUSHING QUEUE"); */
result = jtag_execute_queue();
if (result == ERROR_OK)
@@ -713,10 +715,10 @@
field.tap = tap;
field.num_bits = bitcount;
field.out_value = ir_buf;
-
+
field.in_value = NULL;
-
-
+
+
field.in_handler = NULL;
if (tap == NULL)
@@ -944,18 +946,21 @@
field.tap = tap;
field.num_bits = xsdrsize;
field.out_value = dr_out_buf;
-
- field.in_value = NULL;
+ field.in_value = calloc(CEIL(field.num_bits, 8), 1);
if (attempt > 0 && verbose)
LOG_USER("LSDR retry %d", attempt);
- jtag_set_check_value(&field, dr_in_buf, dr_in_mask, NULL);
if (tap == NULL)
jtag_add_plain_dr_scan(1, &field, TAP_DRPAUSE);
else
jtag_add_dr_scan(1, &field, TAP_DRPAUSE);
+ jtag_check_value_mask(&field, dr_in_buf, dr_in_mask);
+
+ free(field.in_value);
+
+
/* LOG_DEBUG("FLUSHING QUEUE"); */
result = jtag_execute_queue();
if(result == ERROR_OK)
|
|
From: oharboe at B. <oh...@ma...> - 2009-05-08 09:22:33
|
Author: oharboe
Date: 2009-05-08 09:22:31 +0200 (Fri, 08 May 2009)
New Revision: 1667
Modified:
trunk/src/target/xscale.c
Log:
retire jtag_set_check_value
Modified: trunk/src/target/xscale.c
===================================================================
--- trunk/src/target/xscale.c 2009-05-08 07:14:23 UTC (rev 1666)
+++ trunk/src/target/xscale.c 2009-05-08 07:22:31 UTC (rev 1667)
@@ -226,11 +226,13 @@
field.out_value = calloc(CEIL(field.num_bits, 8), 1);
buf_set_u32(field.out_value, 0, field.num_bits, new_instr);
- field.in_value = NULL;
- jtag_set_check_value(&field, tap->expected, tap->expected_mask, NULL);
+ u8 tmp[4];
+ field.in_value = tmp;
jtag_add_ir_scan(1, &field, TAP_INVALID);
+ jtag_check_value_mask(&field, tap->expected, tap->expected_mask);
+
free(field.out_value);
}
@@ -261,29 +263,26 @@
fields[0].tap = xscale->jtag_info.tap;
fields[0].num_bits = 3;
fields[0].out_value = &field0;
+ u8 tmp;
+ fields[0].in_value = &tmp;
- fields[0].in_value = NULL;
- jtag_set_check_value(fields+0, &field0_check_value, &field0_check_mask, NULL);
-
fields[1].tap = xscale->jtag_info.tap;
fields[1].num_bits = 32;
fields[1].out_value = NULL;
-
fields[1].in_value = xscale->reg_cache->reg_list[XSCALE_DCSR].value;
fields[1].in_handler = NULL;
-
-
-
fields[2].tap = xscale->jtag_info.tap;
fields[2].num_bits = 1;
fields[2].out_value = &field2;
+ u8 tmp2;
+ fields[2].in_value = &tmp2;
- fields[2].in_value = NULL;
- jtag_set_check_value(fields+2, &field2_check_value, &field2_check_mask, NULL);
-
jtag_add_dr_scan(3, fields, TAP_INVALID);
+ jtag_check_value_mask(fields+0, &field0_check_value, &field0_check_mask);
+ jtag_check_value_mask(fields+2, &field2_check_value, &field2_check_mask);
+
if ((retval = jtag_execute_queue()) != ERROR_OK)
{
LOG_ERROR("JTAG error while reading DCSR");
@@ -339,8 +338,8 @@
fields[0].tap = xscale->jtag_info.tap;
fields[0].num_bits = 3;
fields[0].out_value = NULL;
- fields[0].in_value = NULL;
- jtag_set_check_value(fields+0, &field0_check_value, &field0_check_mask, NULL);
+ u8 tmp2;
+ fields[0].in_value = &tmp2;
fields[1].tap = xscale->jtag_info.tap;
fields[1].num_bits = 32;
@@ -352,8 +351,8 @@
fields[2].tap = xscale->jtag_info.tap;
fields[2].num_bits = 1;
fields[2].out_value = NULL;
- fields[2].in_value = NULL;
- jtag_set_check_value(fields+2, &field2_check_value, &field2_check_mask, NULL);
+ u8 tmp3;
+ fields[2].in_value = &tmp3;
jtag_add_end_state(TAP_IDLE);
xscale_jtag_set_instr(xscale->jtag_info.tap, xscale->jtag_info.dbgtx);
@@ -372,6 +371,9 @@
jtag_add_pathmove(3, path);
jtag_add_dr_scan_now(3, fields, TAP_IDLE);
+ 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++;
@@ -454,27 +456,20 @@
fields[0].tap = xscale->jtag_info.tap;
fields[0].num_bits = 3;
fields[0].out_value = NULL;
-
fields[0].in_value = &field0_in;
- jtag_set_check_value(fields+0, &field0_check_value, &field0_check_mask, NULL);
fields[1].tap = xscale->jtag_info.tap;
fields[1].num_bits = 32;
fields[1].out_value = NULL;
-
fields[1].in_value = xscale->reg_cache->reg_list[XSCALE_TX].value;
fields[1].in_handler = NULL;
-
-
-
fields[2].tap = xscale->jtag_info.tap;
fields[2].num_bits = 1;
fields[2].out_value = NULL;
+ u8 tmp;
+ fields[2].in_value = &tmp;
- fields[2].in_value = NULL;
- jtag_set_check_value(fields+2, &field2_check_value, &field2_check_mask, NULL);
-
gettimeofday(&timeout, NULL);
timeval_add_time(&timeout, 1, 0);
@@ -493,6 +488,9 @@
jtag_add_dr_scan(3, fields, TAP_IDLE);
+ jtag_check_value_mask(fields+0, &field0_check_value, &field0_check_mask);
+ jtag_check_value_mask(fields+2, &field2_check_value, &field2_check_mask);
+
if ((retval = jtag_execute_queue()) != ERROR_OK)
{
LOG_ERROR("JTAG error while reading TX");
@@ -550,27 +548,20 @@
fields[0].tap = xscale->jtag_info.tap;
fields[0].num_bits = 3;
fields[0].out_value = &field0_out;
-
fields[0].in_value = &field0_in;
- jtag_set_check_value(fields+0, &field0_check_value, &field0_check_mask, NULL);
fields[1].tap = xscale->jtag_info.tap;
fields[1].num_bits = 32;
fields[1].out_value = xscale->reg_cache->reg_list[XSCALE_RX].value;
-
fields[1].in_value = NULL;
fields[1].in_handler = NULL;
-
-
-
fields[2].tap = xscale->jtag_info.tap;
fields[2].num_bits = 1;
fields[2].out_value = &field2;
+ u8 tmp;
+ fields[2].in_value = &tmp;
- fields[2].in_value = NULL;
- jtag_set_check_value(fields+2, &field2_check_value, &field2_check_mask, NULL);
-
gettimeofday(&timeout, NULL);
timeval_add_time(&timeout, 1, 0);
@@ -580,6 +571,9 @@
{
jtag_add_dr_scan(3, fields, TAP_IDLE);
+ jtag_check_value_mask(fields+0, &field0_check_value, &field0_check_mask);
+ jtag_check_value_mask(fields+2, &field2_check_value, &field2_check_mask);
+
if ((retval = jtag_execute_queue()) != ERROR_OK)
{
LOG_ERROR("JTAG error while writing RX");
@@ -725,29 +719,26 @@
fields[0].tap = xscale->jtag_info.tap;
fields[0].num_bits = 3;
fields[0].out_value = &field0;
+ u8 tmp;
+ fields[0].in_value = &tmp;
- fields[0].in_value = NULL;
- jtag_set_check_value(fields+0, &field0_check_value, &field0_check_mask, NULL);
-
fields[1].tap = xscale->jtag_info.tap;
fields[1].num_bits = 32;
fields[1].out_value = xscale->reg_cache->reg_list[XSCALE_DCSR].value;
-
fields[1].in_value = NULL;
fields[1].in_handler = NULL;
-
-
-
fields[2].tap = xscale->jtag_info.tap;
fields[2].num_bits = 1;
fields[2].out_value = &field2;
+ u8 tmp2;
+ fields[2].in_value = &tmp2;
- fields[2].in_value = NULL;
- jtag_set_check_value(fields+2, &field2_check_value, &field2_check_mask, NULL);
-
jtag_add_dr_scan(3, fields, TAP_INVALID);
+ jtag_check_value_mask(fields+0, &field0_check_value, &field0_check_mask);
+ jtag_check_value_mask(fields+2, &field2_check_value, &field2_check_mask);
+
if ((retval = jtag_execute_queue()) != ERROR_OK)
{
LOG_ERROR("JTAG error while writing DCSR");
|
|
From: oharboe at B. <oh...@ma...> - 2009-05-08 09:14:23
|
Author: oharboe
Date: 2009-05-08 09:14:23 +0200 (Fri, 08 May 2009)
New Revision: 1666
Modified:
trunk/src/target/etm.c
Log:
retire jtag_set_check_value
Modified: trunk/src/target/etm.c
===================================================================
--- trunk/src/target/etm.c 2009-05-08 07:09:32 UTC (rev 1665)
+++ trunk/src/target/etm.c 2009-05-08 07:14:23 UTC (rev 1666)
@@ -339,42 +339,31 @@
fields[0].tap = etm_reg->jtag_info->tap;
fields[0].num_bits = 32;
fields[0].out_value = reg->value;
-
fields[0].in_value = NULL;
-
-
fields[0].in_handler = 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].in_handler = 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].in_handler = NULL;
-
jtag_add_dr_scan(3, fields, TAP_INVALID);
fields[0].in_value = reg->value;
- jtag_set_check_value(fields+0, check_value, check_mask, NULL);
jtag_add_dr_scan(3, fields, TAP_INVALID);
+ jtag_check_value_mask(fields+0, check_value, check_mask);
+
free(fields[1].out_value);
free(fields[2].out_value);
@@ -431,35 +420,35 @@
fields[0].num_bits = 32;
fields[0].out_value = malloc(4);
buf_set_u32(fields[0].out_value, 0, 32, value);
-
+
fields[0].in_value = NULL;
-
-
+
+
fields[0].in_handler = 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].in_handler = 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, 1);
-
+
fields[2].in_value = NULL;
-
-
+
+
fields[2].in_handler = NULL;
-
+
jtag_add_dr_scan(3, fields, TAP_INVALID);
free(fields[0].out_value);
@@ -993,7 +982,7 @@
{
if (((instruction.type == ARM_B) ||
(instruction.type == ARM_BL) ||
- (instruction.type == ARM_BLX)) &&
+ (instruction.type == ARM_BLX)) &&
(instruction.info.b_bl_bx_blx.target_address != 0xffffffff))
{
next_pc = instruction.info.b_bl_bx_blx.target_address;
|
|
From: oharboe at B. <oh...@ma...> - 2009-05-08 09:09:34
|
Author: oharboe Date: 2009-05-08 09:09:32 +0200 (Fri, 08 May 2009) New Revision: 1665 Modified: trunk/src/target/etb.c Log: retire jtag_set_check_value Modified: trunk/src/target/etb.c =================================================================== --- trunk/src/target/etb.c 2009-05-08 06:45:27 UTC (rev 1664) +++ trunk/src/target/etb.c 2009-05-08 07:09:32 UTC (rev 1665) @@ -283,10 +283,10 @@ buf_set_u32(fields[1].out_value, 0, 7, 0x0); fields[0].in_value = reg->value; - jtag_set_check_value(fields+0, check_value, check_mask, NULL); - jtag_add_dr_scan(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-08 08:45:30
|
Author: oharboe
Date: 2009-05-08 08:45:27 +0200 (Fri, 08 May 2009)
New Revision: 1664
Modified:
trunk/src/jtag/jtag.c
trunk/src/target/embeddedice.c
Log:
first jtag_check_value_mask usage. tested by using "arm7_9 fast_memory_access enable" & "mdw 0 0x10"
Modified: trunk/src/jtag/jtag.c
===================================================================
--- trunk/src/jtag/jtag.c 2009-05-08 06:14:08 UTC (rev 1663)
+++ trunk/src/jtag/jtag.c 2009-05-08 06:45:27 UTC (rev 1664)
@@ -1417,11 +1417,23 @@
void jtag_check_value_mask(scan_field_t *field, u8 *value, u8 *mask)
{
+ if (field->in_value==NULL)
+ {
+ LOG_ERROR("remember to fill in in_value for jtag_check_value_mask() to work!");
+ return;
+ }
+
+ if (value==NULL)
+ {
+ /* no checking to do */
+ return;
+ }
+
jtag_execute_queue_noclear();
-
+
int retval=jtag_check_value_inner(field->in_value, field, value, mask);
jtag_set_error(retval);
-
+
}
Modified: trunk/src/target/embeddedice.c
===================================================================
--- trunk/src/target/embeddedice.c 2009-05-08 06:14:08 UTC (rev 1663)
+++ trunk/src/target/embeddedice.c 2009-05-08 06:45:27 UTC (rev 1664)
@@ -251,39 +251,26 @@
fields[0].tap = ice_reg->jtag_info->tap;
fields[0].num_bits = 32;
fields[0].out_value = reg->value;
-
fields[0].in_value = NULL;
-
-
fields[0].in_handler = 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].in_handler = 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].in_handler = NULL;
-
jtag_add_dr_scan(3, fields, TAP_INVALID);
fields[0].in_value = reg->value;
- jtag_set_check_value(fields+0, check_value, check_mask, NULL);
/* when reading the DCC data register, leaving the address field set to
* EICE_COMMS_DATA would read the register twice
@@ -293,6 +280,8 @@
jtag_add_dr_scan(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-08 08:14:10
|
Author: oharboe
Date: 2009-05-08 08:14:08 +0200 (Fri, 08 May 2009)
New Revision: 1663
Modified:
trunk/src/target/arm7tdmi.c
trunk/src/target/arm_adi_v5.c
Log:
added comments w.r.t. potential performance problems
Modified: trunk/src/target/arm7tdmi.c
===================================================================
--- trunk/src/target/arm7tdmi.c 2009-05-08 05:33:08 UTC (rev 1662)
+++ trunk/src/target/arm7tdmi.c 2009-05-08 06:14:08 UTC (rev 1663)
@@ -372,6 +372,13 @@
*pc -= 0xa;
}
+
+/* FIX!!! is this a potential performance bottleneck w.r.t. requiring too many
+ * roundtrips when jtag_execute_queue() has a large overhead(e.g. for USB)s?
+ *
+ * The solution is to arrange for a large out/in scan in this loop and
+ * and convert data afterwards.
+ */
void arm7tdmi_read_core_regs(target_t *target, u32 mask, u32* core_regs[16])
{
int i;
Modified: trunk/src/target/arm_adi_v5.c
===================================================================
--- trunk/src/target/arm_adi_v5.c 2009-05-08 05:33:08 UTC (rev 1662)
+++ trunk/src/target/arm_adi_v5.c 2009-05-08 06:14:08 UTC (rev 1663)
@@ -867,6 +867,12 @@
return retval;
}
+/* FIX!!! is this a potential performance bottleneck w.r.t. requiring too many
+ * roundtrips when jtag_execute_queue() has a large overhead(e.g. for USB)s?
+ *
+ * The solution is to arrange for a large out/in scan in this loop and
+ * and convert data afterwards.
+ */
int mem_ap_read_buf_packed_u8(swjdp_common_t *swjdp, u8 *buffer, int count, u32 address)
{
u32 invalue;
|
|
From: <zw...@ma...> - 2009-05-08 07:33:19
|
Author: zwelch Date: 2009-05-08 07:33:08 +0200 (Fri, 08 May 2009) New Revision: 1662 Modified: trunk/src/helper/ioutil.c Log: Fix typo from hurrying the last commit. Nothing to see here. Modified: trunk/src/helper/ioutil.c =================================================================== --- trunk/src/helper/ioutil.c 2009-05-08 05:30:37 UTC (rev 1661) +++ trunk/src/helper/ioutil.c 2009-05-08 05:33:08 UTC (rev 1662) @@ -141,7 +141,7 @@ // 0-byte after buffer (not included in *len) serves as a sentinel char *buf = (char *)*data; - buf[*len = 0; + buf[*len] = 0; return ERROR_OK; } |
|
From: <zw...@ma...> - 2009-05-08 07:30:52
|
Author: zwelch
Date: 2009-05-08 07:30:37 +0200 (Fri, 08 May 2009)
New Revision: 1661
Modified:
trunk/src/helper/ioutil.c
Log:
Fix loadFile to return file length once again.
Modified: trunk/src/helper/ioutil.c
===================================================================
--- trunk/src/helper/ioutil.c 2009-05-08 04:59:05 UTC (rev 1660)
+++ trunk/src/helper/ioutil.c 2009-05-08 05:30:37 UTC (rev 1661)
@@ -91,6 +91,9 @@
* a 0 byte(sentinel) after len bytes - the length of the file. */
int loadFile(const char *fileName, void **data, size_t *len)
{
+ // ensure returned length is always sane
+ *len = 0;
+
FILE * pFile;
pFile = fopen(fileName,"rb");
if (pFile==NULL)
@@ -111,6 +114,7 @@
fclose(pFile);
return ERROR_FAIL;
}
+ *len = fsize;
if (fseek(pFile, 0, SEEK_SET)!=0)
{
@@ -118,7 +122,7 @@
fclose(pFile);
return ERROR_FAIL;
}
- *data = malloc(fsize + 1);
+ *data = malloc(*len + 1);
if (*data==NULL)
{
LOG_ERROR("Can't open %s\n", fileName);
@@ -134,12 +138,12 @@
return ERROR_FAIL;
}
fclose(pFile);
- *(((char *)(*data))+*len)=0; /* sentinel */
+ // 0-byte after buffer (not included in *len) serves as a sentinel
+ char *buf = (char *)*data;
+ buf[*len = 0;
+
return ERROR_OK;
-
-
-
}
|
|
From: <zw...@ma...> - 2009-05-08 06:59:12
|
Author: zwelch Date: 2009-05-08 06:59:05 +0200 (Fri, 08 May 2009) New Revision: 1660 Modified: trunk/configure.in Log: Re-order and extend header file tests in configure script. Modified: trunk/configure.in =================================================================== --- trunk/configure.in 2009-05-08 04:49:27 UTC (rev 1659) +++ trunk/configure.in 2009-05-08 04:59:05 UTC (rev 1660) @@ -8,13 +8,16 @@ AC_SEARCH_LIBS([ioperm], [ioperm]) AC_SEARCH_LIBS([dlopen], [dl]) +AC_CHECK_HEADERS(elf.h) +AC_CHECK_HEADERS(ifaddrs.h) AC_CHECK_HEADERS(jtag_minidriver.h) +AC_CHECK_HEADERS(malloc.h) +AC_CHECK_HEADERS(pthread.h) +AC_CHECK_HEADERS(stdbool.h) +AC_CHECK_HEADERS(strings.h) AC_CHECK_HEADERS(sys/param.h) AC_CHECK_HEADERS(sys/time.h) AC_CHECK_HEADERS(sys/select.h) -AC_CHECK_HEADERS(elf.h) -AC_CHECK_HEADERS(strings.h) -AC_CHECK_HEADERS(stdbool.h) AC_HEADER_TIME |
|
From: <zw...@ma...> - 2009-05-08 06:49:34
|
Author: zwelch
Date: 2009-05-08 06:49:27 +0200 (Fri, 08 May 2009)
New Revision: 1659
Modified:
trunk/src/server/httpd.c
Log:
Fix warnings in httpd.c; builds with libmicrohttpd-0.4.1.
Modified: trunk/src/server/httpd.c
===================================================================
--- trunk/src/server/httpd.c 2009-05-08 04:46:00 UTC (rev 1658)
+++ trunk/src/server/httpd.c 2009-05-08 04:49:27 UTC (rev 1659)
@@ -42,6 +42,7 @@
#include <unistd.h>
#include <sys/types.h>
#include <fcntl.h>
+#include <pthread.h>
#include <signal.h>
#include <sys/types.h>
@@ -54,6 +55,8 @@
#define PAGE_NOT_FOUND "<html><head><title>File not found</title></head><body>File not found</body></html>"
+int loadFile(const char *name, void **data, size_t *len);
+
static const char *appendf(const char *prev, const char *format, ...)
{
va_list ap;
@@ -134,23 +137,19 @@
data = Jim_GetString(Jim_GetResult(interp), &actual);
- FILE *f;
- f = fopen(file, "wb");
- if (f != NULL)
+ FILE *f = fopen(file, "wb");
+ if (NULL == f)
{
- int ok;
- ok = fwrite(data, 1, actual, f) == actual;
- fclose(f);
-
- if (!ok)
- {
- Jim_SetResultString(interp, "Could not write to file", -1);
- return JIM_ERR;
- }
+ Jim_SetResultString(interp, "Could not create file", -1);
+ return JIM_ERR;
}
- else
+
+ int result = fwrite(data, 1, actual, f);
+ fclose(f);
+
+ if (result != actual)
{
- Jim_SetResultString(interp, "Could not create file", -1);
+ Jim_SetResultString(interp, "Could not write to file", -1);
return JIM_ERR;
}
return JIM_OK;
@@ -243,7 +242,7 @@
/* append data to each key */
static int iterate_post(void *con_cls, enum MHD_ValueKind kind,
const char *key, const char *filename, const char *content_type,
- const char *transfer_encoding, const char *data, size_t off,
+ const char *transfer_encoding, const char *data, uint64_t off,
size_t size)
{
struct httpd_request *r = (struct httpd_request*) con_cls;
@@ -313,7 +312,7 @@
else
{
void *data;
- int len;
+ size_t len;
int retval = loadFile(url, &data, &len);
if (retval != ERROR_OK)
@@ -327,7 +326,7 @@
return ret;
}
- LOG_DEBUG("Serving %s length=%d", url, len);
+ LOG_DEBUG("Serving %s length=%u", url, len);
/* serve file directly */
response = MHD_create_response_from_data(len, data, MHD_YES, MHD_NO);
MHD_add_response_header(response, "Content-Type", "image/png");
@@ -381,7 +380,7 @@
if (r->post)
{
r->postprocessor = MHD_create_post_processor(connection, 2048
- * 1024, iterate_post, r);
+ * 1024, &iterate_post, r);
}
return MHD_YES;
|
|
From: <zw...@ma...> - 2009-05-08 06:46:10
|
Author: zwelch
Date: 2009-05-08 06:46:00 +0200 (Fri, 08 May 2009)
New Revision: 1658
Modified:
trunk/src/helper/ioutil.c
Log:
Fix warnings in ioutil.c; improves loadFile inteface.
Modified: trunk/src/helper/ioutil.c
===================================================================
--- trunk/src/helper/ioutil.c 2009-05-07 23:00:28 UTC (rev 1657)
+++ trunk/src/helper/ioutil.c 2009-05-08 04:46:00 UTC (rev 1658)
@@ -89,7 +89,7 @@
/* loads a file and returns a pointer to it in memory. The file contains
* a 0 byte(sentinel) after len bytes - the length of the file. */
-int loadFile(const char *fileName, void **data, int *len)
+int loadFile(const char *fileName, void **data, size_t *len)
{
FILE * pFile;
pFile = fopen(fileName,"rb");
@@ -104,8 +104,8 @@
fclose(pFile);
return ERROR_FAIL;
}
- *len=ftell(pFile);
- if (*len==-1)
+ long fsize = ftell(pFile);
+ if (fsize == -1)
{
LOG_ERROR("Can't open %s\n", fileName);
fclose(pFile);
@@ -118,7 +118,7 @@
fclose(pFile);
return ERROR_FAIL;
}
- *data=malloc(*len+1);
+ *data = malloc(fsize + 1);
if (*data==NULL)
{
LOG_ERROR("Can't open %s\n", fileName);
@@ -155,7 +155,7 @@
// NOTE!!! we only have line printing capability so we print the entire file as a single line.
void *data;
- int len;
+ size_t len;
int retval = loadFile(args[0], &data, &len);
if (retval == ERROR_OK)
@@ -256,7 +256,7 @@
// NOTE!!! we only have line printing capability so we print the entire file as a single line.
void *data;
- int len;
+ size_t len;
int retval = loadFile(args[0], &data, &len);
if (retval != ERROR_OK)
@@ -266,11 +266,11 @@
if (f == NULL)
retval = ERROR_INVALID_ARGUMENTS;
- int pos = 0;
+ size_t pos = 0;
for (;;)
{
- int chunk = len - pos;
- static const int maxChunk = 512 * 1024; // ~1/sec
+ size_t chunk = len - pos;
+ static const size_t maxChunk = 512 * 1024; // ~1/sec
if (chunk > maxChunk)
{
chunk = maxChunk;
@@ -497,8 +497,9 @@
{
return ERROR_COMMAND_SYNTAX_ERROR;
}
- volatile int *address=(volatile int *)strtoul(args[0], NULL, 0);
- int value=*address;
+ unsigned long addr = strtoul(args[0], NULL, 0);
+ volatile unsigned *address = (volatile unsigned *)addr;
+ unsigned value = *address;
command_print(cmd_ctx, "0x%x : 0x%x", address, value);
return ERROR_OK;
}
@@ -509,7 +510,8 @@
{
return ERROR_INVALID_ARGUMENTS;
}
- volatile int *address=(volatile int *)strtoul(args[0], NULL, 0);
+ unsigned long addr = strtoul(args[0], NULL, 0);
+ volatile int *address = (volatile int *)addr;
int value=strtoul(args[1], NULL, 0);
*address=value;
return ERROR_OK;
|
|
From: <oh...@ma...> - 2009-05-08 01:00:48
|
Author: oharboe
Date: 2009-05-08 01:00:28 +0200 (Fri, 08 May 2009)
New Revision: 1657
Modified:
trunk/src/target/arm7tdmi.c
trunk/src/target/arm9tdmi.c
Log:
more in_handler typo fixes
Modified: trunk/src/target/arm7tdmi.c
===================================================================
--- trunk/src/target/arm7tdmi.c 2009-05-07 22:59:51 UTC (rev 1656)
+++ trunk/src/target/arm7tdmi.c 2009-05-07 23:00:28 UTC (rev 1657)
@@ -234,9 +234,11 @@
return ERROR_OK;
}
-void arm_endianness(u8 *tmp, void *in, int size, int be)
+void arm_endianness(u8 *tmp, void *in, int size, int be, int flip)
{
- u32 readback=flip_u32(le_to_h_u32(tmp), 32);
+ u32 readback=le_to_h_u32(tmp);
+ if (flip)
+ readback=flip_u32(readback, 32);
switch (size)
{
case 4:
@@ -295,7 +297,7 @@
jtag_add_dr_scan_now(2, fields, TAP_INVALID);
- arm_endianness(tmp, in, size, be);
+ arm_endianness(tmp, in, size, be, 1);
jtag_add_runtest(0, TAP_INVALID);
Modified: trunk/src/target/arm9tdmi.c
===================================================================
--- trunk/src/target/arm9tdmi.c 2009-05-07 22:59:51 UTC (rev 1656)
+++ trunk/src/target/arm9tdmi.c 2009-05-07 23:00:28 UTC (rev 1657)
@@ -238,7 +238,7 @@
fields[0].in_value=tmp;
jtag_add_dr_scan_now(3, fields, TAP_INVALID);
- *in=flip_u32(le_to_h_u32(tmp), 32);
+ *in=le_to_h_u32(tmp);
}
else
{
@@ -301,7 +301,7 @@
jtag_add_dr_scan_now(3, fields, TAP_INVALID);
- *in=flip_u32(le_to_h_u32(tmp), 32);
+ *in=le_to_h_u32(tmp);
jtag_add_runtest(0, TAP_INVALID);
@@ -326,7 +326,7 @@
return ERROR_OK;
}
-extern void arm_endianness(u8 *tmp, void *in, int size, int be);
+extern void arm_endianness(u8 *tmp, void *in, int size, int be, int flip);
/* clock the target, and read the databus
* the *in pointer points to a buffer where elements of 'size' bytes
@@ -366,7 +366,7 @@
jtag_add_dr_scan_now(3, fields, TAP_INVALID);
- arm_endianness(tmp, in, size, be);
+ arm_endianness(tmp, in, size, be, 0);
jtag_add_runtest(0, TAP_INVALID);
|