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
|
Sep
|
Oct
|
Nov
|
Dec
|
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(); |
From: oharboe at B. <oh...@ma...> - 2009-05-11 09:47:22
|
Author: oharboe Date: 2009-05-11 09:47:21 +0200 (Mon, 11 May 2009) New Revision: 1731 Modified: trunk/src/target/embeddedice.c Log: switch to jtag_add_callback() - USB performance fix Modified: trunk/src/target/embeddedice.c =================================================================== --- trunk/src/target/embeddedice.c 2009-05-11 07:40:42 UTC (rev 1730) +++ trunk/src/target/embeddedice.c 2009-05-11 07:47:21 UTC (rev 1731) @@ -240,21 +240,18 @@ fields[0].num_bits = 32; fields[0].out_value = reg->value; fields[0].in_value = 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[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; - jtag_add_dr_scan(3, fields, TAP_INVALID); @@ -290,23 +287,19 @@ fields[0].tap = jtag_info->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 = 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[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; - jtag_add_dr_scan(3, fields, TAP_INVALID); @@ -318,10 +311,10 @@ if (size == 1) buf_set_u32(fields[1].out_value, 0, 5, embeddedice_reg_arch_info[EICE_COMMS_CTRL]); - jtag_add_dr_scan_now(3, fields, TAP_INVALID); + fields[0].in_value = (u8 *)data; + jtag_add_dr_scan(3, fields, TAP_INVALID); + jtag_add_callback(arm_le_to_h_u32, (u8 *)data); - *data = le_to_h_u32(tmp); - data++; size--; } @@ -396,24 +389,14 @@ fields[0].tap = jtag_info->tap; fields[0].num_bits = 32; fields[0].out_value = field0_out; - fields[0].in_value = 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[2].tap = jtag_info->tap; fields[2].num_bits = 1; fields[2].out_value = field2_out; @@ -421,10 +404,6 @@ fields[2].in_value = NULL; - - - - while (size > 0) { buf_set_u32(fields[0].out_value, 0, 32, *data); @@ -465,35 +444,20 @@ fields[0].tap = jtag_info->tap; fields[0].num_bits = 32; fields[0].out_value = NULL; - fields[0].in_value = field0_in; - - - - 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_CTRL]); - fields[1].in_value = 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; - - - - jtag_add_dr_scan(3, fields, TAP_INVALID); gettimeofday(&lap, NULL); do |
From: oharboe at B. <oh...@ma...> - 2009-05-11 09:40:44
|
Author: oharboe Date: 2009-05-11 09:40:42 +0200 (Mon, 11 May 2009) New Revision: 1730 Modified: trunk/src/target/arm9tdmi.c Log: switch to jtag_add_callback() - USB performance fix Modified: trunk/src/target/arm9tdmi.c =================================================================== --- trunk/src/target/arm9tdmi.c 2009-05-11 07:39:36 UTC (rev 1729) +++ trunk/src/target/arm9tdmi.c 2009-05-11 07:40:42 UTC (rev 1730) @@ -202,11 +202,10 @@ if (in) { - u8 tmp[4]; - fields[0].in_value=tmp; - jtag_add_dr_scan_now(3, fields, TAP_INVALID); + fields[0].in_value=(u8 *)in; + jtag_add_dr_scan(3, fields, TAP_INVALID); - *in=le_to_h_u32(tmp); + jtag_add_callback(arm_le_to_h_u32, (u8 *)in); } else { @@ -251,8 +250,7 @@ fields[0].tap = jtag_info->tap; fields[0].num_bits = 32; fields[0].out_value = NULL; - u8 tmp[4]; - fields[0].in_value = tmp; + fields[0].in_value = (u8 *)in; fields[1].tap = jtag_info->tap; fields[1].num_bits = 3; @@ -264,9 +262,9 @@ fields[2].out_value = NULL; fields[2].in_value = NULL; - jtag_add_dr_scan_now(3, fields, TAP_INVALID); + jtag_add_dr_scan(3, fields, TAP_INVALID); - *in=le_to_h_u32(tmp); + jtag_add_callback(arm_le_to_h_u32, (u8 *)in); jtag_add_runtest(0, TAP_INVALID); @@ -293,6 +291,12 @@ 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) +{ + arm_endianness(in, in, (int)size, (int)be, 0); + return ERROR_OK; +} + /* clock the target, and read the databus * the *in pointer points to a buffer where elements of 'size' bytes * are stored in big (be==1) or little (be==0) endianness @@ -313,8 +317,7 @@ fields[0].tap = jtag_info->tap; fields[0].num_bits = 32; fields[0].out_value = NULL; - u8 tmp[4]; - fields[0].in_value = tmp; + fields[0].in_value = (u8 *)in; fields[1].tap = jtag_info->tap; fields[1].num_bits = 3; @@ -326,11 +329,10 @@ fields[2].out_value = NULL; fields[2].in_value = NULL; - jtag_add_dr_scan_now(3, fields, TAP_INVALID); + jtag_add_dr_scan(3, fields, TAP_INVALID); - arm_endianness(tmp, in, size, be, 0); + jtag_add_callback3(arm9endianness, in, (jtag_callback_data_t)size, (jtag_callback_data_t)be); - jtag_add_runtest(0, TAP_INVALID); #ifdef _DEBUG_INSTRUCTION_EXECUTION_ |
From: oharboe at B. <oh...@ma...> - 2009-05-11 09:39:36
|
Author: oharboe Date: 2009-05-11 09:39:36 +0200 (Mon, 11 May 2009) New Revision: 1729 Modified: trunk/src/target/arm966e.c Log: switch to jtag_add_callback() - USB performance fix Modified: trunk/src/target/arm966e.c =================================================================== --- trunk/src/target/arm966e.c 2009-05-11 07:38:10 UTC (rev 1728) +++ trunk/src/target/arm966e.c 2009-05-11 07:39:36 UTC (rev 1729) @@ -190,12 +190,11 @@ jtag_add_dr_scan(3, fields, TAP_INVALID); - u8 tmp[4]; - fields[1].in_value = tmp; + fields[1].in_value = (u8 *)value; - jtag_add_dr_scan_now(3, fields, TAP_INVALID); + jtag_add_dr_scan(3, fields, TAP_INVALID); - *value=le_to_h_u32(tmp); + jtag_add_callback(arm_le_to_h_u32, (u8 *)value); #ifdef _DEBUG_INSTRUCTION_EXECUTION_ |
From: oharboe at B. <oh...@ma...> - 2009-05-11 09:38:11
|
Author: oharboe Date: 2009-05-11 09:38:10 +0200 (Mon, 11 May 2009) New Revision: 1728 Modified: trunk/src/target/arm926ejs.c Log: switch to jtag_add_callback() - USB performance fix Modified: trunk/src/target/arm926ejs.c =================================================================== --- trunk/src/target/arm926ejs.c 2009-05-11 07:36:16 UTC (rev 1727) +++ trunk/src/target/arm926ejs.c 2009-05-11 07:38:10 UTC (rev 1728) @@ -138,8 +138,7 @@ fields[0].tap = jtag_info->tap; fields[0].num_bits = 32; fields[0].out_value = NULL; - u8 tmp[4]; - fields[0].in_value = tmp; + fields[0].in_value = (u8 *)value; fields[1].tap = jtag_info->tap; @@ -165,9 +164,9 @@ /* rescan with NOP, to wait for the access to complete */ access = 0; nr_w_buf = 0; - jtag_add_dr_scan_now(4, fields, TAP_INVALID); + jtag_add_dr_scan(4, fields, TAP_INVALID); - *value=le_to_h_u32(tmp); + jtag_add_callback(arm_le_to_h_u32, (u8 *)value); if ((retval = jtag_execute_queue()) != ERROR_OK) { |
From: oharboe at B. <oh...@ma...> - 2009-05-11 09:36:19
|
Author: oharboe Date: 2009-05-11 09:36:16 +0200 (Mon, 11 May 2009) New Revision: 1727 Modified: trunk/src/target/arm920t.c Log: switch to jtag_add_callback() - USB performance fix Modified: trunk/src/target/arm920t.c =================================================================== --- trunk/src/target/arm920t.c 2009-05-11 07:35:05 UTC (rev 1726) +++ trunk/src/target/arm920t.c 2009-05-11 07:36:16 UTC (rev 1727) @@ -128,12 +128,11 @@ jtag_add_dr_scan(4, fields, TAP_INVALID); - u8 tmp[4]; - fields[1].in_value = tmp; + fields[1].in_value = (u8 *)value; - jtag_add_dr_scan_now(4, fields, TAP_INVALID); + jtag_add_dr_scan(4, fields, TAP_INVALID); - *value=le_to_h_u32(tmp); + jtag_add_callback(arm_le_to_h_u32, (u8 *)value); #ifdef _DEBUG_INSTRUCTION_EXECUTION_ jtag_execute_queue(); |
From: oharboe at B. <oh...@ma...> - 2009-05-11 09:35:11
|
Author: oharboe Date: 2009-05-11 09:35:05 +0200 (Mon, 11 May 2009) New Revision: 1726 Modified: trunk/src/target/arm7tdmi.c Log: switch to jtag_add_callback() - USB performance fix Modified: trunk/src/target/arm7tdmi.c =================================================================== --- trunk/src/target/arm7tdmi.c 2009-05-11 07:33:43 UTC (rev 1725) +++ trunk/src/target/arm7tdmi.c 2009-05-11 07:35:05 UTC (rev 1726) @@ -184,15 +184,11 @@ 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_value = (u8 *)in; - jtag_add_dr_scan_now(2, fields, TAP_INVALID); + jtag_add_dr_scan(2, fields, TAP_INVALID); - if (jtag_error==ERROR_OK) - { - *in=flip_u32(le_to_h_u32(tmp), 32); - } + jtag_add_callback(arm7flip32, (u8 *)in); jtag_add_runtest(0, TAP_INVALID); @@ -246,7 +242,12 @@ *((u8 *)in)= readback & 0xff; break; } +} +static int arm7endianness(u8 *in, jtag_callback_data_t size, jtag_callback_data_t be) +{ + arm_endianness(in, in, (int)size, (int)be, 1); + return ERROR_OK; } /* clock the target, and read the databus @@ -273,12 +274,11 @@ 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_value = (u8 *)in; - jtag_add_dr_scan_now(2, fields, TAP_INVALID); + jtag_add_dr_scan(2, fields, TAP_INVALID); - arm_endianness(tmp, in, size, be, 1); + jtag_add_callback3(arm7endianness, in, (jtag_callback_data_t)size, (jtag_callback_data_t)be); jtag_add_runtest(0, TAP_INVALID); |
From: oharboe at B. <oh...@ma...> - 2009-05-11 09:33:50
|
Author: oharboe Date: 2009-05-11 09:33:43 +0200 (Mon, 11 May 2009) New Revision: 1725 Modified: trunk/src/target/arm720t.c Log: switch to jtag_add_callback() - USB performance fix Modified: trunk/src/target/arm720t.c =================================================================== --- trunk/src/target/arm720t.c 2009-05-11 07:26:59 UTC (rev 1724) +++ trunk/src/target/arm720t.c 2009-05-11 07:33:43 UTC (rev 1725) @@ -117,10 +117,9 @@ if (in) { - u8 tmp[4]; - fields[1].in_value = tmp; - jtag_add_dr_scan_now(2, fields, TAP_INVALID); - *in=flip_u32(le_to_h_u32(tmp), 32); + fields[1].in_value = (u8 *)in; + jtag_add_dr_scan(2, fields, TAP_INVALID); + jtag_add_callback(arm7flip32, (u8 *)in); } else { jtag_add_dr_scan(2, fields, TAP_INVALID); |
From: oharboe at B. <oh...@ma...> - 2009-05-11 09:27:01
|
Author: oharboe Date: 2009-05-11 09:26:59 +0200 (Mon, 11 May 2009) New Revision: 1724 Modified: trunk/src/target/arm_adi_v5.c Log: switch to jtag_add_callback() - USB performance fix Modified: trunk/src/target/arm_adi_v5.c =================================================================== --- trunk/src/target/arm_adi_v5.c 2009-05-11 07:26:11 UTC (rev 1723) +++ trunk/src/target/arm_adi_v5.c 2009-05-11 07:26:59 UTC (rev 1724) @@ -120,11 +120,10 @@ if (invalue) { - u8 tmp[4]; - fields[1].in_value = tmp; - jtag_add_dr_scan_now(2, fields, TAP_INVALID); + fields[1].in_value = (u8 *)invalue; + jtag_add_dr_scan(2, fields, TAP_INVALID); - *invalue=le_to_h_u32(tmp); + jtag_add_callback(arm_le_to_h_u32, (u8 *)invalue); } else { |
From: oharboe at B. <oh...@ma...> - 2009-05-11 09:26:14
|
Author: oharboe Date: 2009-05-11 09:26:11 +0200 (Mon, 11 May 2009) New Revision: 1723 Modified: trunk/src/ecosboard.c trunk/src/helper/ioutil.c Log: leave eCos include file issues alone for now. Modified: trunk/src/ecosboard.c =================================================================== --- trunk/src/ecosboard.c 2009-05-11 07:04:25 UTC (rev 1722) +++ trunk/src/ecosboard.c 2009-05-11 07:26:11 UTC (rev 1723) @@ -21,54 +21,70 @@ #include "config.h" #endif +#include "log.h" +#include "types.h" +#include "jtag.h" #include "configuration.h" -#include "time_support.h" - -#include "jtag.h" #include "xsvf.h" #include "svf.h" #include "target.h" #include "flash.h" #include "nand.h" #include "pld.h" -#include "rom.h" +#include "command.h" #include "server.h" #include "telnet_server.h" #include "gdb_server.h" +#include <time_support.h> +#include <sys/time.h> +#include <strings.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <errno.h> + +#include <cyg/io/flash.h> #include <pkgconf/fs_jffs2.h> // Address of JFFS2 #include <network.h> -#include <arpa/inet.h> +#include <fcntl.h> +#include <sys/stat.h> +#include <cyg/fileio/fileio.h> #include <dirent.h> -#include <net/if.h> -#include <netdb.h> -#include <netinet/tcp.h> -#include <stdarg.h> -#include <sys/ioctl.h> -#include <sys/stat.h> - #include <cyg/athttpd/http.h> #include <cyg/athttpd/socket.h> #include <cyg/athttpd/handler.h> #include <cyg/athttpd/cgi.h> #include <cyg/athttpd/forms.h> #include <cyg/discover/discover.h> -#include <cyg/fileio/fileio.h> #include <cyg/hal/hal_diag.h> -#include <cyg/io/flash.h> +#include <cyg/kernel/kapi.h> #include <cyg/io/serialio.h> #include <cyg/io/io.h> -#include <cyg/kernel/kapi.h> - -#ifdef HAVE_IFADDRS_H +#include <netinet/tcp.h> +#include "rom.h" +#include <sys/ioctl.h> +#include <sys/socket.h> +#include <netinet/in.h> +#include <net/if.h> +#include <arpa/inet.h> +#include <sys/types.h> +#include <sys/socket.h> +#include <netdb.h> +#include <netinet/in.h> +#include <unistd.h> +#include <arpa/inet.h> +#include <stdio.h> #include <ifaddrs.h> -#endif -#ifdef HAVE_STRINGS_H -#include <strings.h> -#endif +#include <string.h> +#include <unistd.h> +#include <stdio.h> + + #define MAX_IFS 64 #if defined(CYGPKG_NET_FREEBSD_STACK) #include <tftp_support.h> Modified: trunk/src/helper/ioutil.c =================================================================== --- trunk/src/helper/ioutil.c 2009-05-11 07:04:25 UTC (rev 1722) +++ trunk/src/helper/ioutil.c 2009-05-11 07:26:11 UTC (rev 1723) @@ -51,8 +51,10 @@ #include <ifaddrs.h> #endif #ifdef HAVE_MALLOC_H +#if !BUILD_ECOSBOARD #include <malloc.h> #endif +#endif //#ifdef HAVE_STRINGS_H //#include <strings.h> //#endif |
From: <zw...@ma...> - 2009-05-11 09:04:33
|
Author: zwelch Date: 2009-05-11 09:04:25 +0200 (Mon, 11 May 2009) New Revision: 1722 Modified: trunk/src/helper/system.h Log: Add svn:eol-style property to recently added system.h. Property changes on: trunk/src/helper/system.h ___________________________________________________________________ Name: svn:eol-style + native |
From: oharboe at B. <oh...@ma...> - 2009-05-11 08:55:03
|
Author: oharboe Date: 2009-05-11 08:55:00 +0200 (Mon, 11 May 2009) New Revision: 1721 Modified: trunk/src/target/arm_jtag.h Log: used by upcoming commits Modified: trunk/src/target/arm_jtag.h =================================================================== --- trunk/src/target/arm_jtag.h 2009-05-11 06:54:00 UTC (rev 1720) +++ trunk/src/target/arm_jtag.h 2009-05-11 06:55:00 UTC (rev 1721) @@ -56,5 +56,18 @@ int arm_jtag_buf_to_be16(u8 *in_buf, void *priv, struct scan_field_s *field); int arm_jtag_buf_to_8(u8 *in_buf, void *priv, struct scan_field_s *field); + +/* use this as a static so we can inline it in -O3 and refer to it via a pointer */ +static __inline__ void arm7flip32(u8 *in) +{ + *((u32 *)in)=flip_u32(le_to_h_u32(in), 32); +} + +static __inline__ void arm_le_to_h_u32(u8 *in) +{ + *((u32 *)in)=le_to_h_u32(in); +} + + #endif /* ARM_JTAG */ |
From: oharboe at B. <oh...@ma...> - 2009-05-11 08:54:04
|
Author: oharboe Date: 2009-05-11 08:54:00 +0200 (Mon, 11 May 2009) New Revision: 1720 Modified: trunk/ Log: add to svn ignore Property changes on: trunk ___________________________________________________________________ Name: svn:ignore - autom4te.cache .project aclocal.m4 config.guess config.h.in config.sub configure depcomp install-sh Makefile.in missing compile + autom4te.cache .project aclocal.m4 config.guess config.h.in config.sub configure depcomp install-sh Makefile.in missing compile ltmain.sh.lnk |
From: <zw...@ma...> - 2009-05-11 08:33:09
|
Author: zwelch Date: 2009-05-11 08:32:59 +0200 (Mon, 11 May 2009) New Revision: 1719 Modified: trunk/Doxyfile Log: Update Doxyfile configuration for doxygen 1.5.8: - Enable doxygen's C language optimizations. - Use dot command (from graphviz package) to generate visual graphs. Modified: trunk/Doxyfile =================================================================== --- trunk/Doxyfile 2009-05-11 05:50:21 UTC (rev 1718) +++ trunk/Doxyfile 2009-05-11 06:32:59 UTC (rev 1719) @@ -1,4 +1,4 @@ -# Doxyfile 1.5.5 +# Doxyfile 1.5.8 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project @@ -57,8 +57,8 @@ # Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, # Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), # Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, -# Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, -# and Ukrainian. +# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene, +# Spanish, Swedish, and Ukrainian. OUTPUT_LANGUAGE = English @@ -155,13 +155,6 @@ MULTILINE_CPP_IS_BRIEF = NO -# If the DETAILS_AT_TOP tag is set to YES then Doxygen -# will output the detailed description near the top, like JavaDoc. -# If set to NO, the detailed description appears after the member -# documentation. - -DETAILS_AT_TOP = YES - # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. @@ -193,7 +186,7 @@ # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. -OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_FOR_C = YES # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java # sources only. Doxygen will then generate output that is more tailored for @@ -214,6 +207,17 @@ OPTIMIZE_OUTPUT_VHDL = NO +# Doxygen selects the parser to use depending on the extension of the files it parses. +# With this tag you can assign which parser to use for a given extension. +# Doxygen has a built-in mapping, but you can override or extend it using this tag. +# The format is ext=language, where ext is a file extension, and language is one of +# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, +# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat +# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C + +EXTENSION_MAPPING = + # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should # set this tag to YES in order to let doxygen match functions declarations and @@ -234,6 +238,15 @@ SIP_SUPPORT = NO +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen to replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = NO + # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default @@ -259,6 +272,22 @@ TYPEDEF_HIDES_STRUCT = NO +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to +# determine which symbols to keep in memory and which to flush to disk. +# When the cache is full, less often used symbols will be written to disk. +# For small to medium size projects (<1000 input files) the default value is +# probably good enough. For larger projects a too small cache size can cause +# doxygen to be busy swapping symbols to and from disk most of the time +# causing a significant performance penality. +# If the system has enough physical memory increasing the cache will improve the +# performance by keeping more symbols in memory. Note that the value works on +# a logarithmic scale so increasing the size by one will rougly double the +# memory usage. The cache size is given by this formula: +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, +# corresponding to a cache size of 2^16 = 65536 symbols + +SYMBOL_CACHE_SIZE = 0 + #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- @@ -443,6 +472,19 @@ SHOW_DIRECTORIES = YES +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. +# This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via @@ -453,6 +495,15 @@ FILE_VERSION_FILTER = +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by +# doxygen. The layout file controls the global structure of the generated output files +# in an output format independent way. The create the layout file that represents +# doxygen's defaults, run doxygen with the -l option. You can optionally specify a +# file name after the option, if omitted DoxygenLayout.xml will be used as the name +# of the layout file. + +LAYOUT_FILE = + #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- @@ -513,7 +564,7 @@ # directories like "/usr/src/myproject". Separate the files or directories # with spaces. -INPUT = src +INPUT = config.h src # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is @@ -598,14 +649,17 @@ # by executing (via popen()) the command <filter> <input-file>, where <filter> # is the value of the INPUT_FILTER tag, and <input-file> is the name of an # input file. Doxygen will then use the output that the filter program writes -# to standard output. If FILTER_PATTERNS is specified, this tag will be +# to standard output. +# If FILTER_PATTERNS is specified, this tag will be # ignored. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: +# basis. +# Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. +# The filters are a list of the form: # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER # is applied to all files. @@ -640,13 +694,13 @@ STRIP_CODE_COMMENTS = YES -# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# If the REFERENCED_BY_RELATION tag is set to YES # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = YES -# If the REFERENCES_RELATION tag is set to YES (the default) +# If the REFERENCES_RELATION tag is set to YES # then for each documented function all documented entities # called/used by that function will be listed. @@ -655,7 +709,8 @@ # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. Otherwise they will link to the documentstion. +# link to the source code. +# Otherwise they will link to the documentation. REFERENCES_LINK_SOURCE = YES @@ -744,12 +799,13 @@ HTML_ALIGN_MEMBERS = YES -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) -# of the generated HTML documentation. +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. For this to work a browser that supports +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). -GENERATE_HTMLHELP = NO +HTML_DYNAMIC_SECTIONS = NO # If the GENERATE_DOCSET tag is set to YES, additional index files # will be generated that can be used as input for Apple's Xcode 3 @@ -759,6 +815,7 @@ # directory and running "make install" will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find # it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information. GENERATE_DOCSET = NO @@ -776,13 +833,12 @@ DOCSET_BUNDLE_ID = org.doxygen.Project -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. For this to work a browser that supports -# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox -# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. -HTML_DYNAMIC_SECTIONS = NO +GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You @@ -804,6 +860,12 @@ GENERATE_CHI = NO +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. @@ -815,6 +877,55 @@ TOC_EXPAND = NO +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER +# are set, an additional index file will be generated that can be used as input for +# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated +# HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#namespace + +QHP_NAMESPACE = + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#virtual-folders + +QHP_VIRTUAL_FOLDER = doc + +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. +# For more information please see +# http://doc.trolltech.com/qthelpproject.html#custom-filters + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see +# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's +# filter section matches. +# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>. + +QHP_SECT_FILTER_ATTRS = + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file. + +QHG_LOCATION = + # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. @@ -826,12 +937,20 @@ ENUM_VALUES_PER_LINE = 4 -# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be -# generated containing a tree-like index structure (just like the one that +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to FRAME, a side panel will be generated +# containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are -# probably better off using the HTML help feature. +# probably better off using the HTML help feature. Other possible values +# for this tag are: HIERARCHIES, which will generate the Groups, Directories, +# and Class Hierarchy pages using a tree view instead of an ordered list; +# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which +# disables this behavior completely. For backwards compatibility with previous +# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE +# respectively. GENERATE_TREEVIEW = YES @@ -841,6 +960,14 @@ TREEVIEW_WIDTH = 250 +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- @@ -1053,8 +1180,10 @@ PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. This is useful -# if you want to understand what is going on. On the other hand, if this +# nicely formatted so it can be parsed by a human reader. +# This is useful +# if you want to understand what is going on. +# On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. @@ -1099,14 +1228,7 @@ # contain include files that are not input files but should be processed by # the preprocessor. -INCLUDE_PATH = src/target \ - src/pld \ - src/xsvf \ - src/jtag \ - src/flash \ - src/flash/at91sam7x \ - src/helper \ - src/server +INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the @@ -1123,7 +1245,7 @@ # undefined via #undef or recursively expanded use the := operator # instead of the = operator. -PREDEFINED = +PREDEFINED = HAVE_CONFIG_H # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. @@ -1148,8 +1270,10 @@ # Optionally an initial location of the external documentation # can be added for each tagfile. The format of a tag file without # this location is as follows: +# # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: +# # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths or # URLs. If a location is present for each tag, the installdox tool @@ -1216,8 +1340,31 @@ # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) -HAVE_DOT = NO +HAVE_DOT = YES +# By default doxygen will write a font called FreeSans.ttf to the output +# directory and reference it in all dot files that doxygen generates. This +# font does not include all possible unicode characters however, so when you need +# these (or just want a differently looking font) you can specify the font name +# using DOT_FONTNAME. You need need to make sure dot is able to find the font, +# which can be done by putting it in a standard location or by setting the +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory +# containing the font. + +DOT_FONTNAME = FreeSans + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the output directory to look for the +# FreeSans.ttf font (which doxygen will put there itself). If you specify a +# different font using DOT_FONTNAME you can set the path where dot +# can find it using this tag. + +DOT_FONTPATH = + # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the @@ -1307,7 +1454,7 @@ DOTFILE_DIRS = -# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of # nodes that will be shown in the graph. If the number of nodes in a graph # becomes larger than this value, doxygen will truncate the graph, which is # visualized by representing a node as a red box. Note that doxygen if the @@ -1328,10 +1475,10 @@ MAX_DOT_GRAPH_DEPTH = 0 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is enabled by default, which results in a transparent -# background. Warning: Depending on the platform used, enabling this option -# may lead to badly anti-aliased labels on the edges of a graph (i.e. they -# become hard to read). +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). DOT_TRANSPARENT = NO @@ -1355,7 +1502,7 @@ DOT_CLEANUP = YES #--------------------------------------------------------------------------- -# Configuration::additions related to the search engine +# Options related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should be |