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-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); |
From: <oh...@ma...> - 2009-05-08 00:59:53
|
Author: oharboe Date: 2009-05-08 00:59:51 +0200 (Fri, 08 May 2009) New Revision: 1656 Modified: trunk/src/target/arm_adi_v5.c Log: ouch - typo in last commit Modified: trunk/src/target/arm_adi_v5.c =================================================================== --- trunk/src/target/arm_adi_v5.c 2009-05-07 22:59:20 UTC (rev 1655) +++ trunk/src/target/arm_adi_v5.c 2009-05-07 22:59:51 UTC (rev 1656) @@ -130,7 +130,7 @@ fields[1].in_value = tmp; jtag_add_dr_scan_now(2, fields, TAP_INVALID); - *invalue=le_to_h_u32(in_buf); + *invalue=le_to_h_u32(tmp); } else { |
From: <zw...@ma...> - 2009-05-08 00:59:24
|
Author: zwelch Date: 2009-05-08 00:59:20 +0200 (Fri, 08 May 2009) New Revision: 1655 Removed: trunk/src/helper/tclapi.c Log: Remove unreferenced tcpapi.c source file. Deleted: trunk/src/helper/tclapi.c =================================================================== --- trunk/src/helper/tclapi.c 2009-05-07 22:55:28 UTC (rev 1654) +++ trunk/src/helper/tclapi.c 2009-05-07 22:59:20 UTC (rev 1655) @@ -1,534 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2007,2008 vind Harboe * - * Copyright (C) 2008 Duane Ellis * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "replacements.h" -#include "target.h" -#include "target_request.h" - -#include "log.h" -#include "configuration.h" -#include "binarybuffer.h" -#include "jtag.h" -#include "flash.h" - -#include <string.h> -#include <stdlib.h> -#include <inttypes.h> - -#include <sys/types.h> -#include <sys/stat.h> -#include <unistd.h> -#include <errno.h> - -#include <sys/time.h> -#include <time.h> - -#include <time_support.h> - -#include <fileio.h> -#include <image.h> - -static int new_int_array_element(Jim_Interp * interp, const char *varname, int idx, u32 val) -{ - char *namebuf; - Jim_Obj *nameObjPtr, *valObjPtr; - int result; - - namebuf = alloc_printf("%s(%d)", varname, idx); - if (!namebuf) - return JIM_ERR; - - nameObjPtr = Jim_NewStringObj(interp, namebuf, -1); - valObjPtr = Jim_NewIntObj(interp, val); - if (!nameObjPtr || !valObjPtr) - { - free(namebuf); - return JIM_ERR; - } - - Jim_IncrRefCount(nameObjPtr); - Jim_IncrRefCount(valObjPtr); - result = Jim_SetVariable(interp, nameObjPtr, valObjPtr); - Jim_DecrRefCount(interp, nameObjPtr); - Jim_DecrRefCount(interp, valObjPtr); - free(namebuf); - /* printf("%s(%d) <= 0%08x\n", varname, idx, val); */ - return result; -} - -static int jim_mem2array(Jim_Interp *interp, int argc, Jim_Obj *const *argv) -{ - target_t *target; - command_context_t *context; - long l; - u32 width; - u32 len; - u32 addr; - u32 count; - u32 v; - const char *varname; - u8 buffer[4096]; - int i, n, e, retval; - - /* argv[1] = name of array to receive the data - * argv[2] = desired width - * argv[3] = memory address - * argv[4] = count of times to read - */ - if (argc != 5) { - Jim_WrongNumArgs(interp, 1, argv, "varname width addr nelems"); - return JIM_ERR; - } - varname = Jim_GetString(argv[1], &len); - /* given "foo" get space for worse case "foo(%d)" .. add 20 */ - - e = Jim_GetLong(interp, argv[2], &l); - width = l; - if (e != JIM_OK) { - return e; - } - - e = Jim_GetLong(interp, argv[3], &l); - addr = l; - if (e != JIM_OK) { - return e; - } - e = Jim_GetLong(interp, argv[4], &l); - len = l; - if (e != JIM_OK) { - return e; - } - switch (width) { - case 8: - width = 1; - break; - case 16: - width = 2; - break; - case 32: - width = 4; - break; - default: - Jim_SetResult(interp, Jim_NewEmptyStringObj(interp)); - Jim_AppendStrings( interp, Jim_GetResult(interp), "Invalid width param, must be 8/16/32", NULL ); - return JIM_ERR; - } - if (len == 0) { - Jim_SetResult(interp, Jim_NewEmptyStringObj(interp)); - Jim_AppendStrings(interp, Jim_GetResult(interp), "mem2array: zero width read?", NULL); - return JIM_ERR; - } - if ((addr + (len * width)) < addr) { - Jim_SetResult(interp, Jim_NewEmptyStringObj(interp)); - Jim_AppendStrings(interp, Jim_GetResult(interp), "mem2array: addr + len - wraps to zero?", NULL); - return JIM_ERR; - } - /* absurd transfer size? */ - if (len > 65536) { - Jim_SetResult(interp, Jim_NewEmptyStringObj(interp)); - Jim_AppendStrings(interp, Jim_GetResult(interp), "mem2array: absurd > 64K item request", NULL); - return JIM_ERR; - } - - if ((width == 1) || - ((width == 2) && ((addr & 1) == 0)) || - ((width == 4) && ((addr & 3) == 0))) { - /* all is well */ - } else { - char buf[100]; - Jim_SetResult(interp, Jim_NewEmptyStringObj(interp)); - sprintf(buf, "mem2array address: 0x%08x is not aligned for %d byte reads", addr, width); - Jim_AppendStrings(interp, Jim_GetResult(interp), buf , NULL); - return JIM_ERR; - } - - context = Jim_GetAssocData(interp, "context"); - if (context == NULL) - { - LOG_ERROR("mem2array: no command context"); - return JIM_ERR; - } - target = get_current_target(context); - if (target == NULL) - { - LOG_ERROR("mem2array: no current target"); - return JIM_ERR; - } - - /* Transfer loop */ - - /* index counter */ - n = 0; - /* assume ok */ - e = JIM_OK; - while (len) { - /* Slurp... in buffer size chunks */ - - count = len; /* in objects.. */ - if (count > (sizeof(buffer)/width)) { - count = (sizeof(buffer)/width); - } - - retval = target->type->read_memory( target, addr, width, count, buffer ); - if (retval != ERROR_OK) { - /* BOO !*/ - LOG_ERROR("mem2array: Read @ 0x%08x, w=%d, cnt=%d, failed", addr, width, count); - Jim_SetResult(interp, Jim_NewEmptyStringObj(interp)); - Jim_AppendStrings(interp, Jim_GetResult(interp), "mem2array: cannot read memory", NULL); - e = JIM_ERR; - len = 0; - } else { - v = 0; /* shut up gcc */ - for (i = 0 ;i < count ;i++, n++) { - switch (width) { - case 4: - v = target_buffer_get_u32(target, &buffer[i*width]); - break; - case 2: - v = target_buffer_get_u16(target, &buffer[i*width]); - break; - case 1: - v = buffer[i] & 0x0ff; - break; - } - new_int_array_element(interp, varname, n, v); - } - len -= count; - } - } - - Jim_SetResult(interp, Jim_NewEmptyStringObj(interp)); - - return JIM_OK; -} - -static int get_int_array_element(Jim_Interp * interp, const char *varname, int idx, u32 *val) -{ - char *namebuf; - Jim_Obj *nameObjPtr, *valObjPtr; - int result; - long l; - - namebuf = alloc_printf("%s(%d)", varname, idx); - if (!namebuf) - return JIM_ERR; - - nameObjPtr = Jim_NewStringObj(interp, namebuf, -1); - if (!nameObjPtr) - { - free(namebuf); - return JIM_ERR; - } - - Jim_IncrRefCount(nameObjPtr); - valObjPtr = Jim_GetVariable(interp, nameObjPtr, JIM_ERRMSG); - Jim_DecrRefCount(interp, nameObjPtr); - free(namebuf); - if (valObjPtr == NULL) - return JIM_ERR; - - result = Jim_GetLong(interp, valObjPtr, &l); - /* printf("%s(%d) => 0%08x\n", varname, idx, val); */ - *val = l; - return result; -} - -static int jim_array2mem(Jim_Interp *interp, int argc, Jim_Obj *const *argv) -{ - target_t *target; - command_context_t *context; - long l; - u32 width; - u32 len; - u32 addr; - u32 count; - u32 v; - const char *varname; - u8 buffer[4096]; - int i, n, e, retval; - - /* argv[1] = name of array to get the data - * argv[2] = desired width - * argv[3] = memory address - * argv[4] = count to write - */ - if (argc != 5) { - Jim_WrongNumArgs(interp, 1, argv, "varname width addr nelems"); - return JIM_ERR; - } - varname = Jim_GetString(argv[1], &len); - /* given "foo" get space for worse case "foo(%d)" .. add 20 */ - - e = Jim_GetLong(interp, argv[2], &l); - width = l; - if (e != JIM_OK) { - return e; - } - - e = Jim_GetLong(interp, argv[3], &l); - addr = l; - if (e != JIM_OK) { - return e; - } - e = Jim_GetLong(interp, argv[4], &l); - len = l; - if (e != JIM_OK) { - return e; - } - switch (width) { - case 8: - width = 1; - break; - case 16: - width = 2; - break; - case 32: - width = 4; - break; - default: - Jim_SetResult(interp, Jim_NewEmptyStringObj(interp)); - Jim_AppendStrings( interp, Jim_GetResult(interp), "Invalid width param, must be 8/16/32", NULL ); - return JIM_ERR; - } - if (len == 0) { - Jim_SetResult(interp, Jim_NewEmptyStringObj(interp)); - Jim_AppendStrings(interp, Jim_GetResult(interp), "array2mem: zero width read?", NULL); - return JIM_ERR; - } - if ((addr + (len * width)) < addr) { - Jim_SetResult(interp, Jim_NewEmptyStringObj(interp)); - Jim_AppendStrings(interp, Jim_GetResult(interp), "array2mem: addr + len - wraps to zero?", NULL); - return JIM_ERR; - } - /* absurd transfer size? */ - if (len > 65536) { - Jim_SetResult(interp, Jim_NewEmptyStringObj(interp)); - Jim_AppendStrings(interp, Jim_GetResult(interp), "array2mem: absurd > 64K item request", NULL); - return JIM_ERR; - } - - if ((width == 1) || - ((width == 2) && ((addr & 1) == 0)) || - ((width == 4) && ((addr & 3) == 0))) { - /* all is well */ - } else { - char buf[100]; - Jim_SetResult(interp, Jim_NewEmptyStringObj(interp)); - sprintf(buf, "array2mem address: 0x%08x is not aligned for %d byte reads", addr, width); - Jim_AppendStrings(interp, Jim_GetResult(interp), buf , NULL); - return JIM_ERR; - } - - context = Jim_GetAssocData(interp, "context"); - if (context == NULL) - { - LOG_ERROR("array2mem: no command context"); - return JIM_ERR; - } - target = get_current_target(context); - if (target == NULL) - { - LOG_ERROR("array2mem: no current target"); - return JIM_ERR; - } - - /* Transfer loop */ - - /* index counter */ - n = 0; - /* assume ok */ - e = JIM_OK; - while (len) { - /* Slurp... in buffer size chunks */ - - count = len; /* in objects.. */ - if (count > (sizeof(buffer)/width)) { - count = (sizeof(buffer)/width); - } - - v = 0; /* shut up gcc */ - for (i = 0 ;i < count ;i++, n++) { - get_int_array_element(interp, varname, n, &v); - switch (width) { - case 4: - target_buffer_set_u32(target, &buffer[i*width], v); - break; - case 2: - target_buffer_set_u16(target, &buffer[i*width], v); - break; - case 1: - buffer[i] = v & 0x0ff; - break; - } - } - len -= count; - - retval = target->type->write_memory(target, addr, width, count, buffer); - if (retval != ERROR_OK) { - /* BOO !*/ - LOG_ERROR("array2mem: Write @ 0x%08x, w=%d, cnt=%d, failed", addr, width, count); - Jim_SetResult(interp, Jim_NewEmptyStringObj(interp)); - Jim_AppendStrings(interp, Jim_GetResult(interp), "mem2array: cannot read memory", NULL); - e = JIM_ERR; - len = 0; - } - } - - Jim_SetResult(interp, Jim_NewEmptyStringObj(interp)); - - return JIM_OK; -} - -int Jim_Command_drscan(Jim_Interp *interp, int argc, Jim_Obj *const *args) -{ - int retval; - scan_field_t *fields; - int num_fields; - int field_count = 0; - int i, e; - long device; - - /* args[1] = device - * args[2] = num_bits - * args[3] = hex string - * ... repeat num bits and hex string ... - */ - if ((argc < 4) || ((argc % 2)!=0)) - { - Jim_WrongNumArgs(interp, 1, args, "<device> <num_bits1> <value1> <num_bits2> <value2> ..."); - return JIM_ERR; - } - - for (i = 2; i < argc; i+=2) - { - long bits; - - e = Jim_GetLong(interp, args[i], &bits); - if (e != JIM_OK) - return e; - } - - e = Jim_GetLong(interp, args[1], &device); - if (e != JIM_OK) - return e; - - num_fields=(argc-2)/2; - fields = malloc(sizeof(scan_field_t) * num_fields); - for (i = 2; i < argc; i+=2) - { - long bits; - int len; - const char *str; - - Jim_GetLong(interp, args[i], &bits); - str = Jim_GetString(args[i+1], &len); - - fields[field_count].device = device; - fields[field_count].num_bits = bits; - 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; - } - - jtag_add_dr_scan(num_fields, fields, TAP_INVALID); - retval = jtag_execute_queue(); - if (retval != ERROR_OK) - { - Jim_SetResult(interp, Jim_NewEmptyStringObj(interp)); - Jim_AppendStrings(interp, Jim_GetResult(interp), "drscan: jtag execute failed", NULL); - return JIM_ERR; - } - - field_count=0; - Jim_Obj *list = Jim_NewListObj(interp, NULL, 0); - for (i = 2; i < argc; i+=2) - { - long bits; - char *str; - - Jim_GetLong(interp, args[i], &bits); - str = buf_to_str(fields[field_count].in_value, bits, 16); - free(fields[field_count].out_value); - - Jim_ListAppendElement(interp, list, Jim_NewStringObj(interp, str, strlen(str))); - free(str); - field_count++; - } - - Jim_SetResult(interp, list); - - free(fields); - - return JIM_OK; -} - -static int jim_flash_banks(Jim_Interp *interp, int argc, Jim_Obj *const *argv) -{ - flash_bank_t *p; - - if (argc != 1) { - Jim_WrongNumArgs(interp, 1, argv, "no arguments to flash_banks command"); - return JIM_ERR; - } - - if (!flash_banks) - { - return JIM_ERR; - } - - Jim_Obj *list=Jim_NewListObj(interp, NULL, 0); - for (p = flash_banks; p; p = p->next) - { - Jim_Obj *elem=Jim_NewListObj(interp, NULL, 0); - - Jim_ListAppendElement(interp, elem, Jim_NewStringObj(interp, "name", -1)); - Jim_ListAppendElement(interp, elem, Jim_NewStringObj(interp, p->driver->name, -1)); - Jim_ListAppendElement(interp, elem, Jim_NewStringObj(interp, "base", -1)); - Jim_ListAppendElement(interp, elem, Jim_NewIntObj(interp, p->base)); - Jim_ListAppendElement(interp, elem, Jim_NewStringObj(interp, "size", -1)); - Jim_ListAppendElement(interp, elem, Jim_NewIntObj(interp, p->size)); - Jim_ListAppendElement(interp, elem, Jim_NewStringObj(interp, "bus_width", -1)); - Jim_ListAppendElement(interp, elem, Jim_NewIntObj(interp, p->bus_width)); - Jim_ListAppendElement(interp, elem, Jim_NewStringObj(interp, "chip_width", -1)); - Jim_ListAppendElement(interp, elem, Jim_NewIntObj(interp, p->chip_width)); - - Jim_ListAppendElement(interp, list, elem); - } - - Jim_SetResult(interp, list); - - return JIM_OK; -} - -int tclapi_register_commands() -{ - register_jim("ocd_mem2array", jim_mem2array, "read memory and return as a TCL array for script processing"); - register_jim("ocd_array2mem", jim_array2mem, "convert a TCL array to memory locations and write the values"); - register_jim("drscan", Jim_Command_drscan, "execute DR scan <device> <num_bits> <value> <num_bits1> <value2> ..."); - register_jim("ocd_flash_banks", jim_flash_banks, "return information about the flash banks"); - -} |
From: <oh...@ma...> - 2009-05-08 00:55:31
|
Author: oharboe Date: 2009-05-08 00:55:28 +0200 (Fri, 08 May 2009) New Revision: 1654 Modified: trunk/src/target/arm966e.c Log: in_handler removal typo fixed Modified: trunk/src/target/arm966e.c =================================================================== --- trunk/src/target/arm966e.c 2009-05-07 22:45:17 UTC (rev 1653) +++ trunk/src/target/arm966e.c 2009-05-07 22:55:28 UTC (rev 1654) @@ -209,7 +209,7 @@ jtag_add_dr_scan_now(3, fields, TAP_INVALID); - *value=flip_u32(le_to_h_u32(tmp), 32); + *value=le_to_h_u32(tmp); #ifdef _DEBUG_INSTRUCTION_EXECUTION_ |
From: <oh...@ma...> - 2009-05-08 00:45:22
|
Author: oharboe Date: 2009-05-08 00:45:17 +0200 (Fri, 08 May 2009) New Revision: 1653 Modified: trunk/src/target/arm_adi_v5.c Log: fix copy & paste error when retiring in_handler Modified: trunk/src/target/arm_adi_v5.c =================================================================== --- trunk/src/target/arm_adi_v5.c 2009-05-07 20:53:32 UTC (rev 1652) +++ trunk/src/target/arm_adi_v5.c 2009-05-07 22:45:17 UTC (rev 1653) @@ -130,7 +130,7 @@ fields[1].in_value = tmp; jtag_add_dr_scan_now(2, fields, TAP_INVALID); - *invalue=flip_u32(le_to_h_u32(tmp), 32); + *invalue=le_to_h_u32(in_buf); } else { |
From: <oh...@ma...> - 2009-05-07 22:53:36
|
Author: oharboe Date: 2009-05-07 22:53:32 +0200 (Thu, 07 May 2009) New Revision: 1652 Modified: trunk/src/jtag/jtag.c trunk/src/jtag/jtag.h Log: refactor to be able to remove more in_handler stuff Modified: trunk/src/jtag/jtag.c =================================================================== --- trunk/src/jtag/jtag.c 2009-05-07 20:24:23 UTC (rev 1651) +++ trunk/src/jtag/jtag.c 2009-05-07 20:53:32 UTC (rev 1652) @@ -1347,7 +1347,7 @@ return (tap == NULL) ? "(unknown)" : tap->dotted_name; } -int jtag_check_value(u8 *captured, void *priv, scan_field_t *field) +int jtag_check_value_inner(u8 *captured, scan_field_t *field, u8 *in_check_value, u8 *in_check_mask) { int retval = ERROR_OK; int num_bits = field->num_bits; @@ -1355,9 +1355,9 @@ int compare_failed = 0; if (field->in_check_mask) - compare_failed = buf_cmp_mask(captured, field->in_check_value, field->in_check_mask, num_bits); + compare_failed = buf_cmp_mask(captured, in_check_value, in_check_mask, num_bits); else - compare_failed = buf_cmp(captured, field->in_check_value, num_bits); + compare_failed = buf_cmp(captured, in_check_value, num_bits); if (compare_failed){ /* An error handler could have caught the failing check @@ -1369,12 +1369,12 @@ if (compare_failed) { char *captured_char = buf_to_str(captured, (num_bits > DEBUG_JTAG_IOZ) ? DEBUG_JTAG_IOZ : num_bits, 16); - char *in_check_value_char = buf_to_str(field->in_check_value, (num_bits > DEBUG_JTAG_IOZ) ? DEBUG_JTAG_IOZ : num_bits, 16); + char *in_check_value_char = buf_to_str(in_check_value, (num_bits > DEBUG_JTAG_IOZ) ? DEBUG_JTAG_IOZ : num_bits, 16); - if (field->in_check_mask) + if (in_check_mask) { char *in_check_mask_char; - in_check_mask_char = buf_to_str(field->in_check_mask, (num_bits > DEBUG_JTAG_IOZ) ? DEBUG_JTAG_IOZ : num_bits, 16); + in_check_mask_char = buf_to_str(in_check_mask, (num_bits > DEBUG_JTAG_IOZ) ? DEBUG_JTAG_IOZ : num_bits, 16); LOG_WARNING("value captured during scan didn't pass the requested check:"); LOG_WARNING("captured: 0x%s check_value: 0x%s check_mask: 0x%s", captured_char, in_check_value_char, in_check_mask_char); @@ -1395,6 +1395,11 @@ 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. @@ -1410,6 +1415,17 @@ field->in_check_mask = mask; } +void jtag_check_value_mask(scan_field_t *field, u8 *value, u8 *mask) +{ + jtag_execute_queue_noclear(); + + int retval=jtag_check_value_inner(field->in_value, field, value, mask); + jtag_set_error(retval); + +} + + + enum scan_type jtag_scan_type(scan_command_t *cmd) { int i; Modified: trunk/src/jtag/jtag.h =================================================================== --- trunk/src/jtag/jtag.h 2009-05-07 20:24:23 UTC (rev 1651) +++ trunk/src/jtag/jtag.h 2009-05-07 20:53:32 UTC (rev 1652) @@ -735,6 +735,9 @@ }; 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); extern enum scan_type jtag_scan_type(scan_command_t* cmd); extern int jtag_scan_size(scan_command_t* cmd); extern int jtag_read_buffer(u8* buffer, scan_command_t* cmd); |
From: <oh...@ma...> - 2009-05-07 22:24:25
|
Author: oharboe Date: 2009-05-07 22:24:23 +0200 (Thu, 07 May 2009) New Revision: 1651 Modified: trunk/src/jtag/jtag.c trunk/src/jtag/jtag.h Log: verified that an argument is unused Modified: trunk/src/jtag/jtag.c =================================================================== --- trunk/src/jtag/jtag.c 2009-05-07 20:19:04 UTC (rev 1650) +++ trunk/src/jtag/jtag.c 2009-05-07 20:24:23 UTC (rev 1651) @@ -1399,7 +1399,7 @@ 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, error_handler_t *in_error_handler) +void jtag_set_check_value(scan_field_t *field, u8 *value, u8 *mask, struct invalidstruct *obsolete) { if (value) field->in_handler = jtag_check_value; Modified: trunk/src/jtag/jtag.h =================================================================== --- trunk/src/jtag/jtag.h 2009-05-07 20:19:04 UTC (rev 1650) +++ trunk/src/jtag/jtag.h 2009-05-07 20:24:23 UTC (rev 1651) @@ -729,7 +729,12 @@ extern int jtag_srst_asserted(int* srst_asserted); /* JTAG support functions */ -extern void jtag_set_check_value(scan_field_t* field, u8* value, u8* mask, error_handler_t* in_error_handler); +struct invalidstruct +{ + +}; + +extern void jtag_set_check_value(scan_field_t* field, u8* value, u8* mask, struct invalidstruct *obsolete); extern enum scan_type jtag_scan_type(scan_command_t* cmd); extern int jtag_scan_size(scan_command_t* cmd); extern int jtag_read_buffer(u8* buffer, scan_command_t* cmd); |
From: <oh...@ma...> - 2009-05-07 22:19:06
|
Author: oharboe Date: 2009-05-07 22:19:04 +0200 (Thu, 07 May 2009) New Revision: 1650 Modified: trunk/src/target/arm11.c Log: fix c99 compile errors Modified: trunk/src/target/arm11.c =================================================================== --- trunk/src/target/arm11.c 2009-05-07 14:22:15 UTC (rev 1649) +++ trunk/src/target/arm11.c 2009-05-07 20:19:04 UTC (rev 1650) @@ -1144,7 +1144,8 @@ { arm11->reg_list[ARM11_RC_R1].dirty = 1; - for (size_t i = 0; i < count; i++) + size_t i; + for (i = 0; i < count; i++) { /* ldrh r1, [r0], #2 */ arm11_run_instr_no_data1(arm11, @@ -1224,7 +1225,8 @@ { arm11->reg_list[ARM11_RC_R1].dirty = 1; - for (size_t i = 0; i < count; i++) + size_t i; + for (i = 0; i < count; i++) { u16 value; memcpy(&value, buffer + count * sizeof(u16), sizeof(u16)); |
From: oharboe at B. <oh...@ma...> - 2009-05-07 16:22:15
|
Author: oharboe Date: 2009-05-07 16:22:15 +0200 (Thu, 07 May 2009) New Revision: 1649 Modified: trunk/src/target/arm_jtag.c Log: marker for in_handler to remove Modified: trunk/src/target/arm_jtag.c =================================================================== --- trunk/src/target/arm_jtag.c 2009-05-07 14:20:25 UTC (rev 1648) +++ trunk/src/target/arm_jtag.c 2009-05-07 14:22:15 UTC (rev 1649) @@ -52,12 +52,12 @@ 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 = handler; - + + + field.in_handler = handler; /* deprecated! move into calling code */ + jtag_add_ir_scan(1, &field, TAP_INVALID); } |
From: oharboe at B. <oh...@ma...> - 2009-05-07 16:20:26
|
Author: oharboe Date: 2009-05-07 16:20:25 +0200 (Thu, 07 May 2009) New Revision: 1648 Modified: trunk/src/target/arm926ejs.c Log: remove usage of in_handler Modified: trunk/src/target/arm926ejs.c =================================================================== --- trunk/src/target/arm926ejs.c 2009-05-07 14:02:21 UTC (rev 1647) +++ trunk/src/target/arm926ejs.c 2009-05-07 14:20:25 UTC (rev 1648) @@ -137,55 +137,41 @@ fields[0].tap = jtag_info->tap; fields[0].num_bits = 32; fields[0].out_value = NULL; - - fields[0].in_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); - fields[0].in_handler_priv = value; - fields[0].in_handler = arm_jtag_buf_to_u32; /* deprecated! invoke this from user code! */ - /*TODO: add timeout*/ do { /* rescan with NOP, to wait for the access to complete */ access = 0; nr_w_buf = 0; - jtag_add_dr_scan(4, fields, TAP_INVALID); + jtag_add_dr_scan_now(4, fields, TAP_INVALID); + + *value=le_to_h_u32(tmp); + if((retval = jtag_execute_queue()) != ERROR_OK) { return retval; @@ -227,43 +213,43 @@ fields[0].tap = jtag_info->tap; fields[0].num_bits = 32; fields[0].out_value = value_buf; - + 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; - + 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*/ do |
From: oharboe at B. <oh...@ma...> - 2009-05-07 16:02:22
|
Author: oharboe Date: 2009-05-07 16:02:21 +0200 (Thu, 07 May 2009) New Revision: 1647 Modified: trunk/src/target/xscale.c Log: remove in_handler usage Modified: trunk/src/target/xscale.c =================================================================== --- trunk/src/target/xscale.c 2009-05-07 13:57:43 UTC (rev 1646) +++ trunk/src/target/xscale.c 2009-05-07 14:02:21 UTC (rev 1647) @@ -225,7 +225,7 @@ field.num_bits = tap->ir_length; 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); @@ -261,24 +261,24 @@ fields[0].tap = xscale->jtag_info.tap; fields[0].num_bits = 3; fields[0].out_value = &field0; - + 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; - + fields[2].in_value = NULL; jtag_set_check_value(fields+2, &field2_check_value, &field2_check_mask, NULL); @@ -339,24 +339,19 @@ 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); fields[1].tap = xscale->jtag_info.tap; fields[1].num_bits = 32; fields[1].out_value = NULL; - - fields[1].in_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; fields[2].out_value = NULL; - fields[2].in_value = NULL; jtag_set_check_value(fields+2, &field2_check_value, &field2_check_mask, NULL); @@ -373,11 +368,12 @@ for (i = words_done; i < num_words; i++) { fields[0].in_value = &field0[i]; - fields[1].in_handler = buf_to_u32_handler; /* deprecated! invoke this from user code! */ - fields[1].in_handler_priv = (u8*)&field1[i]; jtag_add_pathmove(3, path); - jtag_add_dr_scan(3, fields, TAP_IDLE); + jtag_add_dr_scan_now(3, fields, TAP_IDLE); + + field1[i]=buf_get_u32(tmp, 0, 32); + words_scheduled++; } @@ -458,24 +454,24 @@ 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; - + fields[2].in_value = NULL; jtag_set_check_value(fields+2, &field2_check_value, &field2_check_mask, NULL); @@ -554,24 +550,24 @@ 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; - + fields[2].in_value = NULL; jtag_set_check_value(fields+2, &field2_check_value, &field2_check_mask, NULL); @@ -729,24 +725,24 @@ fields[0].tap = xscale->jtag_info.tap; fields[0].num_bits = 3; fields[0].out_value = &field0; - + 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; - + fields[2].in_value = NULL; jtag_set_check_value(fields+2, &field2_check_value, &field2_check_mask, NULL); @@ -805,23 +801,23 @@ fields[0].tap = xscale->jtag_info.tap; fields[0].num_bits = 6; fields[0].out_value = &cmd; - + fields[0].in_value = NULL; - - + + fields[0].in_handler = NULL; - + fields[1].tap = xscale->jtag_info.tap; fields[1].num_bits = 27; fields[1].out_value = packet; - + fields[1].in_value = NULL; - - + + fields[1].in_handler = NULL; - + jtag_add_dr_scan(2, fields, TAP_INVALID); fields[0].num_bits = 32; @@ -867,23 +863,23 @@ fields[0].tap = xscale->jtag_info.tap; fields[0].num_bits = 6; fields[0].out_value = &cmd; - + fields[0].in_value = NULL; - - + + fields[0].in_handler = NULL; - + fields[1].tap = xscale->jtag_info.tap; fields[1].num_bits = 27; fields[1].out_value = packet; - + fields[1].in_value = NULL; - - + + fields[1].in_handler = NULL; - + jtag_add_dr_scan(2, fields, TAP_INVALID); return ERROR_OK; |
From: oharboe at B. <oh...@ma...> - 2009-05-07 15:57:43
|
Author: oharboe Date: 2009-05-07 15:57:43 +0200 (Thu, 07 May 2009) New Revision: 1646 Modified: trunk/src/target/etb.c Log: remove in_handler usage Modified: trunk/src/target/etb.c =================================================================== --- trunk/src/target/etb.c 2009-05-07 13:54:41 UTC (rev 1645) +++ trunk/src/target/etb.c 2009-05-07 13:57:43 UTC (rev 1646) @@ -70,13 +70,13 @@ field.num_bits = tap->ir_length; 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; - - + + field.in_handler = NULL; - + jtag_add_ir_scan(1, &field, TAP_INVALID); free(field.out_value); @@ -95,13 +95,13 @@ field.num_bits = 5; field.out_value = calloc(CEIL(field.num_bits, 8), 1); buf_set_u32(field.out_value, 0, field.num_bits, new_scan_chain); - + field.in_value = NULL; - - + + field.in_handler = NULL; - + /* select INTEST instruction */ etb_set_instr(etb, 0x2); jtag_add_dr_scan(1, &field, TAP_INVALID); @@ -186,38 +186,26 @@ fields[0].tap = etb->tap; fields[0].num_bits = 32; fields[0].out_value = NULL; - - fields[0].in_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); - fields[0].in_handler = buf_to_u32_handler; /* deprecated! invoke this from user code! */ for (i = 0; i < num_frames; i++) { @@ -230,8 +218,9 @@ else buf_set_u32(fields[1].out_value, 0, 7, 0); - fields[0].in_handler_priv = &data[i]; - jtag_add_dr_scan(3, fields, TAP_INVALID); + jtag_add_dr_scan_now(3, fields, TAP_INVALID); + + data[i]=buf_get_u32(tmp, 0, 32); } jtag_execute_queue(); @@ -257,35 +246,35 @@ fields[0].tap = etb_reg->etb->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 = 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].in_handler = 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].in_handler = NULL; - + jtag_add_dr_scan(3, fields, TAP_INVALID); /* read the identification register in the second run, to make sure we @@ -354,35 +343,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 = 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].in_handler = 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, 1); - + fields[2].in_value = NULL; - - + + fields[2].in_handler = NULL; - + jtag_add_dr_scan(3, fields, TAP_INVALID); free(fields[0].out_value); |
From: oharboe at B. <oh...@ma...> - 2009-05-07 15:54:42
|
Author: oharboe Date: 2009-05-07 15:54:41 +0200 (Thu, 07 May 2009) New Revision: 1645 Modified: trunk/src/target/embeddedice.c Log: remove in_handler usage Modified: trunk/src/target/embeddedice.c =================================================================== --- trunk/src/target/embeddedice.c 2009-05-07 13:50:37 UTC (rev 1644) +++ trunk/src/target/embeddedice.c 2009-05-07 13:54:41 UTC (rev 1645) @@ -251,35 +251,35 @@ 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; @@ -313,34 +313,23 @@ fields[0].tap = jtag_info->tap; fields[0].num_bits = 32; fields[0].out_value = NULL; - - fields[0].in_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); @@ -352,10 +341,10 @@ if (size == 1) buf_set_u32(fields[1].out_value, 0, 5, embeddedice_reg_arch_info[EICE_COMMS_CTRL]); - fields[0].in_handler = arm_jtag_buf_to_u32; /* deprecated! invoke this from user code! */ - fields[0].in_handler_priv = data; - jtag_add_dr_scan(3, fields, TAP_INVALID); + jtag_add_dr_scan_now(3, fields, TAP_INVALID); + *data = le_to_h_u32(tmp); + data++; size--; } @@ -430,35 +419,35 @@ fields[0].tap = jtag_info->tap; fields[0].num_bits = 32; fields[0].out_value = field0_out; - + fields[0].in_value = NULL; - - + + 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, 1); - + fields[2].in_value = NULL; - - + + fields[2].in_handler = NULL; - + while (size > 0) { buf_set_u32(fields[0].out_value, 0, 32, *data); @@ -499,35 +488,35 @@ fields[0].tap = jtag_info->tap; fields[0].num_bits = 32; fields[0].out_value = NULL; - + fields[0].in_value = field0_in; - - + + 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_CTRL]); - + 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); gettimeofday(&lap, NULL); do |
From: oharboe at B. <oh...@ma...> - 2009-05-07 15:50:38
|
Author: oharboe Date: 2009-05-07 15:50:37 +0200 (Thu, 07 May 2009) New Revision: 1644 Modified: trunk/src/target/arm7tdmi.c trunk/src/target/arm9tdmi.c Log: remove in_handler usage Modified: trunk/src/target/arm7tdmi.c =================================================================== --- trunk/src/target/arm7tdmi.c 2009-05-07 13:40:11 UTC (rev 1643) +++ trunk/src/target/arm7tdmi.c 2009-05-07 13:50:37 UTC (rev 1644) @@ -234,6 +234,36 @@ return ERROR_OK; } +void arm_endianness(u8 *tmp, void *in, int size, int be) +{ + u32 readback=flip_u32(le_to_h_u32(tmp), 32); + switch (size) + { + case 4: + if (be) + { + h_u32_to_be(((u8*)in), readback); + } else + { + h_u32_to_le(((u8*)in), readback); + } + break; + case 2: + if (be) + { + h_u16_to_be(((u8*)in), readback & 0xffff); + } else + { + h_u16_to_le(((u8*)in), readback & 0xffff); + } + break; + case 1: + *((u8 *)in)= readback & 0xff; + break; + } + +} + /* 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 @@ -265,31 +295,7 @@ jtag_add_dr_scan_now(2, fields, TAP_INVALID); - u32 readback=flip_u32(le_to_h_u32(tmp), 32); - switch (size) - { - case 4: - if (be) - { - h_u32_to_be(((u8*)in), readback); - } else - { - h_u32_to_le(((u8*)in), readback); - } - break; - case 2: - if (be) - { - h_u16_to_be(((u8*)in), readback & 0xffff); - } else - { - h_u16_to_le(((u8*)in), readback & 0xffff); - } - break; - case 1: - *((u8 *)in)= readback & 0xff; - break; - } + arm_endianness(tmp, in, size, be); jtag_add_runtest(0, TAP_INVALID); Modified: trunk/src/target/arm9tdmi.c =================================================================== --- trunk/src/target/arm9tdmi.c 2009-05-07 13:40:11 UTC (rev 1643) +++ trunk/src/target/arm9tdmi.c 2009-05-07 13:50:37 UTC (rev 1644) @@ -283,34 +283,25 @@ 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_handler = NULL; - fields[0].in_value = NULL; - fields[0].in_handler = arm_jtag_buf_to_u32; /* deprecated! invoke this from user code! */ - fields[0].in_handler_priv = in; - - - 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); - jtag_add_dr_scan(3, fields, TAP_INVALID); + *in=flip_u32(le_to_h_u32(tmp), 32); jtag_add_runtest(0, TAP_INVALID); @@ -335,6 +326,8 @@ return ERROR_OK; } +extern void arm_endianness(u8 *tmp, void *in, int size, int be); + /* 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 @@ -355,46 +348,27 @@ 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_handler = NULL; - fields[0].in_value = NULL; - switch (size) - { - case 4: - fields[0].in_handler = (be) ? arm_jtag_buf_to_be32 : arm_jtag_buf_to_le32; /* deprecated! invoke this from user code! */ - break; - case 2: - fields[0].in_handler = (be) ? arm_jtag_buf_to_be16 : arm_jtag_buf_to_le16; /* deprecated! invoke this from user code! */ - break; - case 1: - fields[0].in_handler = arm_jtag_buf_to_8; /* deprecated! invoke this from user code! */ - break; - } - fields[0].in_handler_priv = in; - - - 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); - jtag_add_dr_scan(3, fields, TAP_INVALID); + arm_endianness(tmp, in, size, be); + jtag_add_runtest(0, TAP_INVALID); #ifdef _DEBUG_INSTRUCTION_EXECUTION_ |