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
(20) |
Sep
|
Oct
|
Nov
|
Dec
|
From: oharboe at B. <oh...@ma...> - 2009-07-07 12:47:25
|
Author: oharboe Date: 2009-07-07 12:47:23 +0200 (Tue, 07 Jul 2009) New Revision: 2488 Modified: trunk/src/jtag/tcl.c Log: fix return value for "reset" and "runtest" command. Found by code inspection. Modified: trunk/src/jtag/tcl.c =================================================================== --- trunk/src/jtag/tcl.c 2009-07-07 10:43:44 UTC (rev 2487) +++ trunk/src/jtag/tcl.c 2009-07-07 10:47:23 UTC (rev 2488) @@ -2,7 +2,7 @@ * Copyright (C) 2005 by Dominic Rath * * Dom...@gm... * * * - * Copyright (C) 2007,2008 vind Harboe * + * Copyright (C) 2007,2008 �yvind Harboe * * oyv...@zy... * * * * Copyright (C) 2009 SoftPLC Corporation * @@ -1016,9 +1016,7 @@ return ERROR_JTAG_INIT_FAILED; jtag_add_reset(trst, srst); - jtag_execute_queue(); - - return ERROR_OK; + return jtag_execute_queue(); } static int handle_runtest_command(struct command_context_s *cmd_ctx, @@ -1033,9 +1031,7 @@ return retval; jtag_add_runtest(num_clocks, TAP_IDLE); - jtag_execute_queue(); - - return ERROR_OK; + return jtag_execute_queue(); } /* |
From: oharboe at B. <oh...@ma...> - 2009-07-07 12:43:46
|
Author: oharboe Date: 2009-07-07 12:43:44 +0200 (Tue, 07 Jul 2009) New Revision: 2487 Modified: trunk/src/helper/startup.tcl Log: delete long retired commented out code (daemon_startup) Modified: trunk/src/helper/startup.tcl =================================================================== --- trunk/src/helper/startup.tcl 2009-07-07 10:33:20 UTC (rev 2486) +++ trunk/src/helper/startup.tcl 2009-07-07 10:43:44 UTC (rev 2487) @@ -123,10 +123,6 @@ source [find $filename] } -#proc daemon_reset {} { -# puts "Daemon reset is obsolete. Use -c init -c \"reset halt\" at end of openocd command line instead"); -#} - add_help_text script "<filename> - filename of OpenOCD script (tcl) to run" # Handle GDB 'R' packet. Can be overriden by configuration script, |
From: oharboe at B. <oh...@ma...> - 2009-07-07 12:33:22
|
Author: oharboe Date: 2009-07-07 12:33:20 +0200 (Tue, 07 Jul 2009) New Revision: 2486 Modified: trunk/TODO Log: more arm926ejs bugs Modified: trunk/TODO =================================================================== --- trunk/TODO 2009-07-07 06:54:14 UTC (rev 2485) +++ trunk/TODO 2009-07-07 10:33:20 UTC (rev 2486) @@ -22,6 +22,25 @@ - reset run/halt/step for arm926ejs is not robust. Needs lots of testing to map out problems. +- i.MX27 reset run problems. Notice below that even if the target is running, +a EICE_DBG_STATUS_DBGACK(I think...) is detected and OpenOCD wrongly believes that the +target is halted. Polling the target afterwards reveals that the +target is running. Notice the MOE=0xe value. + +> reset run +JTAG tap: imx27.bs tap/device found: 0x1b900f0f (mfg: 0x787, part: 0xb900, ver: 0x1) +JTAG Tap/device matched +JTAG tap: imx27.cpu tap/device found: 0x07926121 (mfg: 0x090, part: 0x7926, ver: 0x0) +JTAG Tap/device matched +WARNING: unknown debug reason: 0xe +target state: halted +target halted in ARM state due to debug-request, current mode: User +cpsr: 0x00000000 pc: 0xffffffe8 +MMU: disabled, D-Cache: disabled, I-Cache: disabled + + + + @section thelisttcl TCL This section provides possible things to improve with OpenOCD's TCL support. |
From: oharboe at B. <oh...@ma...> - 2009-07-07 08:54:16
|
Author: oharboe Date: 2009-07-07 08:54:14 +0200 (Tue, 07 Jul 2009) New Revision: 2485 Modified: trunk/TODO Log: added known arm926ejs regressions Modified: trunk/TODO =================================================================== --- trunk/TODO 2009-07-06 21:16:11 UTC (rev 2484) +++ trunk/TODO 2009-07-07 06:54:14 UTC (rev 2485) @@ -11,6 +11,17 @@ Feel free to send patches to add or clarify items on this list, too. +@section thelisttcl Regressions + +- Dominic has spotted a "reset halt" regression between 838(fails) and 729(works) + +https://lists.berlios.de/pipermail/openocd-development/2009-July/009206.html + +@section thelisttcl Bugs + +- reset run/halt/step for arm926ejs is not robust. Needs lots of testing to +map out problems. + @section thelisttcl TCL This section provides possible things to improve with OpenOCD's TCL support. |
From: <oh...@ma...> - 2009-07-06 23:16:14
|
Author: oharboe Date: 2009-07-06 23:16:11 +0200 (Mon, 06 Jul 2009) New Revision: 2484 Modified: trunk/doc/openocd.texi trunk/tcl/target/ti_dm355.cfg trunk/tcl/target/ti_dm365.cfg trunk/tcl/target/ti_dm6446.cfg Log: David Brownell <da...@pa...> Update docs to say that "arm7_9 dbgrq enable" is the default on ARM9 cores, and update the DaVinci config files so they no longer explicitly specify it. Modified: trunk/doc/openocd.texi =================================================================== --- trunk/doc/openocd.texi 2009-07-06 15:41:55 UTC (rev 2483) +++ trunk/doc/openocd.texi 2009-07-06 21:16:11 UTC (rev 2484) @@ -4631,6 +4631,8 @@ Control use of the EmbeddedIce DBGRQ signal to force entry into debug mode, instead of breakpoints. This should be safe for all but ARM7TDMI--S cores (like Philips LPC). +This feature is enabled by default on most ARM9 cores, +including ARM9TDMI, ARM920T, and ARM926EJ-S. @end deffn @deffn Command {arm7_9 dcc_downloads} (@option{enable}|@option{disable}) Modified: trunk/tcl/target/ti_dm355.cfg =================================================================== --- trunk/tcl/target/ti_dm355.cfg 2009-07-06 15:41:55 UTC (rev 2483) +++ trunk/tcl/target/ti_dm355.cfg 2009-07-06 21:16:11 UTC (rev 2484) @@ -83,7 +83,6 @@ -work-area-size 0x4000 \ -work-area-backup 0 -arm7_9 dbgrq enable arm7_9 fast_memory_access enable arm7_9 dcc_downloads enable Modified: trunk/tcl/target/ti_dm365.cfg =================================================================== --- trunk/tcl/target/ti_dm365.cfg 2009-07-06 15:41:55 UTC (rev 2483) +++ trunk/tcl/target/ti_dm365.cfg 2009-07-06 21:16:11 UTC (rev 2484) @@ -88,7 +88,6 @@ -work-area-size 0x4000 \ -work-area-backup 0 -arm7_9 dbgrq enable arm7_9 fast_memory_access enable arm7_9 dcc_downloads enable Modified: trunk/tcl/target/ti_dm6446.cfg =================================================================== --- trunk/tcl/target/ti_dm6446.cfg 2009-07-06 15:41:55 UTC (rev 2483) +++ trunk/tcl/target/ti_dm6446.cfg 2009-07-06 21:16:11 UTC (rev 2484) @@ -68,7 +68,6 @@ target create $_TARGETNAME arm926ejs -chain-position $_TARGETNAME $_TARGETNAME configure -work-area-phys 0x0000a000 -work-area-size 0x2000 -arm7_9 dbgrq enable arm7_9 fast_memory_access enable arm7_9 dcc_downloads enable |
From: ntfreak at B. <nt...@ma...> - 2009-07-06 17:41:56
|
Author: ntfreak Date: 2009-07-06 17:41:55 +0200 (Mon, 06 Jul 2009) New Revision: 2483 Modified: trunk/src/jtag/jlink.c Log: - change sleep to usleep - fixes issue under win32 build Modified: trunk/src/jtag/jlink.c =================================================================== --- trunk/src/jtag/jlink.c 2009-07-06 15:19:10 UTC (rev 2482) +++ trunk/src/jtag/jlink.c 2009-07-06 15:41:55 UTC (rev 2483) @@ -328,7 +328,7 @@ LOG_INFO("J-Link initialization started / target CPU reset initiated"); jlink_simple_command(EMU_CMD_HW_TRST0); jlink_simple_command(EMU_CMD_HW_RESET0); - sleep(1); + usleep(1000); jlink_hw_jtag_version = 2; |
From: ntfreak at B. <nt...@ma...> - 2009-07-06 17:19:11
|
Author: ntfreak Date: 2009-07-06 17:19:10 +0200 (Mon, 06 Jul 2009) New Revision: 2482 Modified: trunk/configure.in trunk/src/helper/replacements.h Log: - fix build when using a cross compiler - do not try and run any host tools - add missing types.h when platform does not contain elf.h Modified: trunk/configure.in =================================================================== --- trunk/configure.in 2009-07-06 15:04:20 UTC (rev 2481) +++ trunk/configure.in 2009-07-06 15:19:10 UTC (rev 2482) @@ -824,7 +824,9 @@ AC_MSG_RESULT([Success!]) ], [ AC_MSG_ERROR([Cannot build & run test program using ftd2xx.lib]) - ] ) + ], [ + AC_MSG_RESULT([Skipping as we are cross-compiling]) + ]) AC_MSG_CHECKING([whether to build ftd2xx highspeed device support]) AC_MSG_RESULT([$want_ftd2xx_highspeed]) @@ -891,7 +893,10 @@ AC_MSG_RESULT([Success]) ], [ AC_MSG_ERROR([Cannot build & run test program using libftdi]) + ], [ + AC_MSG_RESULT([Skipping as we are cross-compiling]) ]) + # Restore the 'unexpanded ldflags' LDFLAGS=$LDFLAGS_SAVE CFLAGS=$CFLAGS_SAVE Modified: trunk/src/helper/replacements.h =================================================================== --- trunk/src/helper/replacements.h 2009-07-06 15:04:20 UTC (rev 2481) +++ trunk/src/helper/replacements.h 2009-07-06 15:19:10 UTC (rev 2482) @@ -210,6 +210,8 @@ #ifndef HAVE_ELF_H +#include "types.h" + typedef uint32_t Elf32_Addr; typedef uint16_t Elf32_Half; typedef uint32_t Elf32_Off; |
From: oharboe at B. <oh...@ma...> - 2009-07-06 17:04:21
|
Author: oharboe Date: 2009-07-06 17:04:20 +0200 (Mon, 06 Jul 2009) New Revision: 2481 Modified: trunk/src/target/armv4_5.h Log: more debug output for translation of arm mode number to enum Modified: trunk/src/target/armv4_5.h =================================================================== --- trunk/src/target/armv4_5.h 2009-07-06 14:58:13 UTC (rev 2480) +++ trunk/src/target/armv4_5.h 2009-07-06 15:04:20 UTC (rev 2481) @@ -132,7 +132,7 @@ case 5: return ARMV4_5_MODE_UND; break; case 6: return ARMV4_5_MODE_SYS; break; default: - LOG_ERROR("mode index out of bounds"); + LOG_ERROR("mode index out of bounds %d", number); return ARMV4_5_MODE_ANY; } }; |
From: oharboe at B. <oh...@ma...> - 2009-07-06 16:58:14
|
Author: oharboe Date: 2009-07-06 16:58:13 +0200 (Mon, 06 Jul 2009) New Revision: 2480 Modified: trunk/src/target/armv4_5.h Log: a bit more debug output for translation of invalid mode numbers Modified: trunk/src/target/armv4_5.h =================================================================== --- trunk/src/target/armv4_5.h 2009-07-06 14:25:25 UTC (rev 2479) +++ trunk/src/target/armv4_5.h 2009-07-06 14:58:13 UTC (rev 2480) @@ -114,7 +114,7 @@ case ARMV4_5_MODE_SYS: return 6; break; case ARMV4_5_MODE_ANY: return 0; break; /* map MODE_ANY to user mode */ default: - LOG_ERROR("invalid mode value encountered"); + LOG_ERROR("invalid mode value encountered %d", mode); return -1; } } |
From: oharboe at B. <oh...@ma...> - 2009-07-06 16:25:26
|
Author: oharboe Date: 2009-07-06 16:25:25 +0200 (Mon, 06 Jul 2009) New Revision: 2479 Modified: trunk/src/target/arm926ejs.c Log: Fix certain arm926ejs targets(e.g. i.MX27) which report an unknown MOE(method of entry) - interpret this as dbgrq. "reset run" + "halt" + "step" now works. Modified: trunk/src/target/arm926ejs.c =================================================================== --- trunk/src/target/arm926ejs.c 2009-07-06 13:42:11 UTC (rev 2478) +++ trunk/src/target/arm926ejs.c 2009-07-06 14:25:25 UTC (rev 2479) @@ -360,20 +360,21 @@ * openocd development mailing list if you have hardware * to donate to look into this problem.... */ - LOG_ERROR("mystery debug reason MOE = 0xc. Try issuing a resume + halt."); + LOG_WARNING("WARNING: mystery debug reason MOE = 0xc. Try issuing a resume + halt."); target->debug_reason = DBG_REASON_DBGRQ; - retval = ERROR_TARGET_FAILURE; break; default: - LOG_ERROR("BUG: unknown debug reason: 0x%x", debug_reason); + LOG_WARNING("WARNING: unknown debug reason: 0x%x", debug_reason); + /* Oh agony! should we interpret this as a halt request or + * that the target stopped on it's own accord? + */ target->debug_reason = DBG_REASON_DBGRQ; /* if we fail here, we won't talk to the target and it will * be reported to be in the halted state */ - retval = ERROR_TARGET_FAILURE; break; } - return retval; + return ERROR_OK; } uint32_t arm926ejs_get_ttb(target_t *target) |
From: oharboe at B. <oh...@ma...> - 2009-07-06 15:42:12
|
Author: oharboe Date: 2009-07-06 15:42:11 +0200 (Mon, 06 Jul 2009) New Revision: 2478 Modified: trunk/src/target/target.c Log: Fix regression in "step" command introduced in 2190 Modified: trunk/src/target/target.c =================================================================== --- trunk/src/target/target.c 2009-07-06 12:03:55 UTC (rev 2477) +++ trunk/src/target/target.c 2009-07-06 13:42:11 UTC (rev 2478) @@ -2,7 +2,7 @@ * Copyright (C) 2005 by Dominic Rath * * Dom...@gm... * * * - * Copyright (C) 2007,2008 vind Harboe * + * Copyright (C) 2007,2008 �yvind Harboe * * oyv...@zy... * * * * Copyright (C) 2008, Duane Ellis * @@ -2039,15 +2039,18 @@ * with one argument addr = args[0], * handle breakpoints, debugging */ uint32_t addr = 0; + int current_pc = 1; if (argc == 1) { int retval = parse_u32(args[0], &addr); if (ERROR_OK != retval) return retval; + current_pc = 0; } target_t *target = get_current_target(cmd_ctx); - return target->type->step(target, 0, addr, 1); + + return target->type->step(target, current_pc, addr, 1); } static void handle_md_output(struct command_context_s *cmd_ctx, |
From: oharboe at B. <oh...@ma...> - 2009-07-06 14:03:56
|
Author: oharboe Date: 2009-07-06 14:03:55 +0200 (Mon, 06 Jul 2009) New Revision: 2477 Modified: trunk/src/jtag/zy1000/zy1000.c Log: revert svn 1679 - fixes cp15 read/write timeout. Single stepping still broken. Modified: trunk/src/jtag/zy1000/zy1000.c =================================================================== --- trunk/src/jtag/zy1000/zy1000.c 2009-07-06 11:26:34 UTC (rev 2476) +++ trunk/src/jtag/zy1000/zy1000.c 2009-07-06 12:03:55 UTC (rev 2477) @@ -456,8 +456,13 @@ extern int jtag_check_value(uint8_t *captured, void *priv); -static __inline void scanFields(int num_fields, const scan_field_t *fields, tap_state_t shiftState, tap_state_t end_state) +static void gotoEndState(tap_state_t end_state) { + setCurrentState(end_state); +} + +static __inline void scanFields(int num_fields, const scan_field_t *fields, tap_state_t shiftState, int pause) +{ int i; int j; int k; @@ -488,10 +493,10 @@ { k = 32; /* we have more to shift out */ - } else if (i == num_fields-1) + } else if (pause&&(i == num_fields-1)) { /* this was the last to shift out this time */ - pause_state = end_state; + pause_state = (shiftState==TAP_DRSHIFT)?TAP_DRPAUSE:TAP_IRPAUSE; } // we have (num_bits + 7)/8 bytes of bits to toggle out. @@ -541,14 +546,7 @@ for (tap = jtag_tap_next_enabled(NULL); tap!= NULL; tap = nextTap) { nextTap = jtag_tap_next_enabled(tap); - tap_state_t end_state; - if (nextTap == NULL) - { - end_state = state; - } else - { - end_state = TAP_IRSHIFT; - } + int pause = (nextTap==NULL); int found = 0; @@ -561,7 +559,7 @@ { found = 1; - scanFields(1, fields + j, TAP_IRSHIFT, end_state); + scanFields(1, fields + j, TAP_IRSHIFT, pause); /* update device information */ buf_cpy(fields[j].out_value, tap->cur_instr, scan_size); @@ -579,12 +577,13 @@ memset(&tmp, 0, sizeof(tmp)); tmp.out_value = ones; tmp.num_bits = scan_size; - scanFields(1, &tmp, TAP_IRSHIFT, end_state); + scanFields(1, &tmp, TAP_IRSHIFT, pause); /* update device information */ buf_cpy(tmp.out_value, tap->cur_instr, scan_size); tap->bypass = 1; } } + gotoEndState(state); return ERROR_OK; } @@ -595,7 +594,8 @@ int interface_jtag_add_plain_ir_scan(int num_fields, const scan_field_t *fields, tap_state_t state) { - scanFields(num_fields, fields, TAP_IRSHIFT, state); + scanFields(num_fields, fields, TAP_IRSHIFT, 1); + gotoEndState(state); return ERROR_OK; } @@ -611,14 +611,7 @@ { nextTap = jtag_tap_next_enabled(tap); int found = 0; - tap_state_t end_state; - if (nextTap == NULL) - { - end_state = state; - } else - { - end_state = TAP_DRSHIFT; - } + int pause = (nextTap==NULL); for (j = 0; j < num_fields; j++) { @@ -626,7 +619,7 @@ { found = 1; - scanFields(1, fields + j, TAP_DRSHIFT, end_state); + scanFields(1, fields+j, TAP_DRSHIFT, pause); } } if (!found) @@ -637,18 +630,20 @@ tmp.out_value = NULL; tmp.in_value = NULL; - scanFields(1, &tmp, TAP_DRSHIFT, end_state); + scanFields(1, &tmp, TAP_DRSHIFT, pause); } else { } } + gotoEndState(state); return ERROR_OK; } int interface_jtag_add_plain_dr_scan(int num_fields, const scan_field_t *fields, tap_state_t state) { - scanFields(num_fields, fields, TAP_DRSHIFT, state); + scanFields(num_fields, fields, TAP_DRSHIFT, 1); + gotoEndState(state); return ERROR_OK; } |
From: <zw...@ma...> - 2009-07-06 13:26:42
|
Author: zwelch Date: 2009-07-06 13:26:34 +0200 (Mon, 06 Jul 2009) New Revision: 2476 Modified: trunk/doc/manual/release.txt Log: Update Release Script documentation to reflect current implementation. Modified: trunk/doc/manual/release.txt =================================================================== --- trunk/doc/manual/release.txt 2009-07-06 11:26:28 UTC (rev 2475) +++ trunk/doc/manual/release.txt 2009-07-06 11:26:34 UTC (rev 2476) @@ -267,7 +267,7 @@ The following output was taken from the release script: @verbatim -usage: tools/release.sh <command> +usage: tools/release.sh [options] <command> Main Commands: info Show a summary of the next pending release. @@ -303,6 +303,20 @@ Run <code>tools/release.sh help</code> for current command support. +@subsection releasescriptenv Release Script Options + +The @c release.sh script recognizes some command-line options that +affect its behavior: + +- @c --live : Use this option to perform a live release. + When this option has been given, the release commands will affect + the repository; otherwise, the script reports the actions to take, + and it produces archives that are unsuitable for public release. + +@note Only the Release Manager should use the @c --live option, as +it will make permanent changes to the Subversion repository that +cannot be undone. + @subsection releasescriptenv Release Script Environment The @c release.sh script recognizes some environment variables which @@ -310,18 +324,13 @@ - @c CONFIG_OPTS : Passed as options to the configure script. - @c MAKE_OPTS : Passed as options to the 'make' processes. -- @c RELEASE_DRY_RUN : Set this to null to perform the live release. - Unless this variable has been (un)set, the release commands will not - affect the repository. -Proper option handling should be added to set these variables in script. - @section releasetutorial Release Tutorials This section provides tutorials for using the Release Script to perform common release tasks. -@subsection releasetutorialminor Minor Release Tutorial +@subsection releasetutorialsetup Release Tutorial Setup The tutorials in this section assume the following environment variables have been set properly: |
From: <zw...@ma...> - 2009-07-06 13:26:31
|
Author: zwelch Date: 2009-07-06 13:26:28 +0200 (Mon, 06 Jul 2009) New Revision: 2475 Modified: trunk/doc/manual/release.txt Log: The late birth of the NEWS file also caused me to revisit the release process once again and reconsider it in some detail. In doing so, some further revisions to the process were required: 1) The URL of the repository is embedded in the released code. - The packages need to be created from the tagged branch. - The URL then points to where to get the tagged code. 2) Improve the instructions for NEWS handling. - NEWS file must be updated for each release; describe that process. - The NEWS file should be archived an recreated for each release. 3) Add detail steps for the berliOS release process. 4) Minor cleanups to release process doxygen markup. Modified: trunk/doc/manual/release.txt =================================================================== --- trunk/doc/manual/release.txt 2009-07-06 11:26:21 UTC (rev 2474) +++ trunk/doc/manual/release.txt 2009-07-06 11:26:28 UTC (rev 2475) @@ -190,19 +190,14 @@ The following steps should be followed to produce each release: -# Produce final patches to the trunk (or release branch): - -# add NEWS item to describe the release changes? (not ready for 0.2.0) - - the community should try to help produce this material - - can be used to automatically post "blurbs" about the project. + -# Finalize @c NEWS file to describe the changes in the release + - This file is Used to automatically post "blurbs" about the project. + - This material should be produced during the development cycle. + - Add a new item for each @c NEWS-worthy contribution, when committed. -# bump library version if our API changed (not yet required) -# Remove -in-development tag from package version: - - For major/minor releases, remove version tag from trunk. + - For major/minor releases, remove version tag from trunk, @a or - For bug-fix releases, remove version tag from release branch. --# Produce and verify the binary packages: - -# Start with a clean working copy, used for producing releases only. - -# produce a ChangeLog for the release (using svn2cl). - -# bootstrap, configure, and build the package. - -# run 'make distcheck' to produce the distribution archives. - -# run 'make maintainer-clean'; verify the repository is empty again. -# Branch or tag the required tree in the Subversion repository: - Tags and branches for releases must be named consistently: @par "${PACKAGE_TARNAME}-${PACKAGE_VERSION}" @@ -218,23 +213,37 @@ svn cp .../branches/${RELEASE_BRANCH} .../tags/${RELEASE_TAG} @endverbatim -# Prepare to resume normal development activities: + - Archive @c NEWS file as <code>doc/news/NEWS-${PACKAGE_VERSION}</code>. + - Create a new @c NEWS file for the next release - For major/minor release from the trunk: -# Bump major or minor package version in trunk. -# Restore version tag to trunk and release branch. - For bug-fix releases from a release branch: -# Bump bug-fix version in release branch. -# Restore version tag to release branch. +-# Produce the package source archives: + -# Start with a clean working copy, used for producing releases only. + -# Switch to release tag branch: svn switch .../${RELEASE_TAG} + -# produce a ChangeLog for the release (using svn2cl). + -# @c bootstrap, @c configure, and @c make the package. + -# Run <code>make distcheck</code> to produce the distribution archives. + -# Run <code>make maintainer-clean</code> verify the repository is empty. -# Publish documentation for the release: - Allow users to access the documentation for each of our releases. - Place static copies of the following files on the project website: - - NEWS: to provide a blurb for each release (not yet used) - - ChangeLog: to show exactly what has been changed + - @c NEWS: to provide a blurb for each release + - @c ChangeLog: to show exactly what has been changed - User Guide, Developer Manual: to allow easy on-line viewing -# Upload packages and post announcements of their availability: - -# Release packages into files section of berliOS project site. + -# Release packages into files section of berliOS project site: + -# Create the new release for the new version. + -# Provide @c NEWS and ChangeLog files, as requested. + -# Upload files via FTP to ftp://ftp.berlios.de/incoming/ + -# Edit descriptions for each file. + -# Send E-mail Release Notice -# Post announcement e-mail to the openocd-development list. -# Announce updates on freshmeat.net and other trackers. - -# Submit big NEWS updates to news feeds (e.g. Digg, Reddit, etc.). + -# Submit big updates to news feeds (e.g. Digg, Reddit, etc.). @section releasescript The Release Script @@ -377,7 +386,7 @@ able to manage most steps of the processes. The steps requiring user input could be guided by an "assistant" that walks the Release Manager through the process from beginning to end, performing basic sanity -checks on their various inputs (e.g. the NEWS blurb). +checks on their various inputs (e.g. the @c NEWS blurb). */ /** @file |
From: <zw...@ma...> - 2009-07-06 13:26:26
|
Author: zwelch Date: 2009-07-06 13:26:21 +0200 (Mon, 06 Jul 2009) New Revision: 2474 Modified: trunk/NEWS Log: Add NEWS file for the 0.2.0 release. Modified: trunk/NEWS =================================================================== --- trunk/NEWS 2009-07-06 11:21:28 UTC (rev 2473) +++ trunk/NEWS 2009-07-06 11:26:21 UTC (rev 2474) @@ -1 +1,80 @@ -This document is not in use. See mailing list - https://lists.berlios.de/pipermail/openocd-development +The OpenOCD 0.2.0 source archive release includes numerous improvements +that were made since the initial 0.1.0 source archive release. Many +contributors helped make this release a great success, and the community +of developers and maintainers look forward to any response. + +In addition to the list of changes below, countless bug fixing and +cleaning was performed across the tree. Various TCL command parameters +must past stricter value checks, and many more error conditions have +been handled correctly. These efforts helped to make the 0.2.0 release +more stable and robust, though some changes may expose latent bugs in +your existing configuration scripts. + +This release does not maintain backward compatibility in all respects, +so some target or configuration scripts may need to be updated. In some +cases, you may also see warnings; resolve those, because they indicate +commands that will be removed in the future. + +The following areas of OpenOCD functionality changed in this release: + +JTAG Layer: +- Improves modularity: core, TCL, driver commands, and interface have + been separated, encapsulated, and documented for developers. Mostly. +- Improves JTAG TAP transition tables: + * Makes TAP paths variable length, rather than being fixed at 7 steps. + * Fixes problems with some targets that did not like longer paths. +- Improves JTAG driver/minidriver modularity and encapsulation. +- New drivers: + * Adds stub minidriver for developing new embedded JTAG interfaces. +- Improves drivers: + * ft2232+ftd2xx: + + Adds initial high-speed device support: --enable-ftd2xx-highspeed + + Supports more types of FTDI-based devices. + * jlink: + + Works with more versions of the firmware (v3 and newer) + + Supports dynamically detects device capabilities and limits + * vsllink: + + Supports very long scan chains + * amtjtagaccel: + + Fixes broken ID code detection problems. + +Target Layer: +- New devices: AVR, FA526 +- Improved support: ARM ADI, ARM11, MIPS +- Numerous other bug fixes and improvements + +Flash Layer: +- Improved drivers: mflash +- New drivers: AT91SAM3, AVR, Davinci NAND + +Board, Interface, and Target Configuration Scripts: +- Many new and improved targets and boards are now available. +- Better separation of "board" and "target" configuration +- Moved all TCL files to top-level "tcl" directory in the source tree +- Installation moved from '$pkglibdir/' to '$pkgdatadir/scripts/'. +- Site-specific files should be installed under '$pkgdatadir/site/'; + files that exist this tree will be used in preference to default + distribution configurations in '$pkgdatadir/scripts/'. + +Documentation: +- Updated User Guide: http://openocd.berlios.de/doc/html/index.html + * Partially re-written and re-organized. + * Standardized presentation for all commands. + * Covers many drivers and commands that were previously omitted. + * New index for commands and drivers. +- Added Developer Manual: http://openocd.berlios.de/doc/doxygen/index.html + * Now includes architecture, technical primers, style guides, and more. + * Available in-tree and on-line. + +Build and Release: +- Increased configuration and compilation warning coverage. + * Use --disable-werror to work around build errors caused by warnings. +- Use libtool to produce helper libraries as a step toward "libopenocd". +- New processes and scripting to facilitate future source releases. + +For more details about what has changed since 0.1.0, see the ChangeLog +associated with this release. + +For more information about contributing test reports, bug fixes, or new +features and device support, please read the new Developer Manual (or +the BUGS and PATCHES files in the source archive). |
From: <zw...@ma...> - 2009-07-06 13:21:34
|
Author: zwelch Date: 2009-07-06 13:21:28 +0200 (Mon, 06 Jul 2009) New Revision: 2473 Added: trunk/tools/release.sh Log: Add script to automate most of the release process. Added: trunk/tools/release.sh =================================================================== --- trunk/tools/release.sh 2009-07-06 10:34:49 UTC (rev 2472) +++ trunk/tools/release.sh 2009-07-06 11:21:28 UTC (rev 2473) @@ -0,0 +1,569 @@ +#!/bin/sh -e +# release.sh: openocd release process automation +# Copyright (C) 2009 by Zachary T Welch <zw...@su...> +# Release under the GNU GPL v2 (or later versions). + +## set these to control the build process +#CONFIG_OPTS="" +#MAKE_OPTS="" + +## DO NOT PERFORM LIVE RELEASES UNLESS YOU ARE THE RELEASE MANAGER!!! +RELEASE_DRY_RUN=1 +## set this to perform individual steps on past releases +RELEASE_VERSION= + +die() { + echo "$@" >&2 + exit 1 +} + +svn_info_get() { + svn info | grep "$1" | cut -d':' -f2- | cut -c2- +} + +svn_setup_load() { + SVN_ROOT="$(svn_info_get 'Repository Root')" + SVN_URL="$(svn_info_get 'URL')" + + SVN_TRUNK="${SVN_ROOT}/trunk" + + SVN_BRANCHES="${SVN_ROOT}/branches" + PACKAGE_BRANCH="${SVN_BRANCHES}/${PACKAGE_RELEASE}" + + SVN_TAGS="${SVN_ROOT}/tags" + PACKAGE_TAG="${SVN_TAGS}/${PACKAGE_RELEASE}" + + if [ "${SVN_URL}" = "${SVN_TRUNK}" ]; then + RELEASE_TYPE=minor + elif [ "${SVN_URL/${SVN_BRANCHES}/}" != "${SVN_URL}" ]; then + RELEASE_TYPE=micro + else + echo "error: bad URL: ${SVN_URL}" >&2 + die "unable to branch from the current location" + fi +} +svn_setup_show() { + cat <<INFO +Release Type: ${RELEASE_TYPE} + Branch URL: ${PACKAGE_BRANCH} + Tag URL: ${PACKAGE_TAG} +INFO +} + +do_svn_echo_msg() { echo "svn: $1: $3"; } +do_svn_echo() { + case "$1" in + commit) + do_svn_echo_msg "$@" + shift 3 + [ "$*" ] && echo "Files: $@" + ;; + copy|move) + do_svn_echo_msg "$@" + echo "From: ${4:-$2}" + echo " To: ${5:-$3}" + ;; + *) + local ACTION="$1" + shift + echo "svn: ${ACTION}: $@" + ;; + esac +} +do_svn() { + do_svn_echo "$@" + [ "${RELEASE_DRY_RUN}" ] || svn "$@" +} + + +package_info_load_name() { + grep AC_INIT configure.in | perl -ne 's/^.+\(\[([-\w]*)\],.+$/$1/ and print' +} +package_info_load_version() { + grep AC_INIT configure.in | perl -ne 's/^.+\[([-\w\.]*)\],$/$1/ and print' +} + +package_info_load() { + [ -f "configure.in" ] || \ + die "package_info_load: configure.in is missing" + + PACKAGE_NAME="$(package_info_load_name)" + # todo: fix this + PACKAGE_TARNAME="${PACKAGE_NAME}" + + PACKAGE_VERSION="$(package_info_load_version)" + [ "${RELEASE_VERSION}" ] || \ + RELEASE_VERSION=${PACKAGE_VERSION/-in-development/} + + [ "${PACKAGE_NAME}" -a "${PACKAGE_VERSION}" ] || \ + die "package information is missing from configure script" + + PACKAGE_VERSION_TAGS= + [ "${PACKAGE_VERSION/-/}" = "${PACKAGE_VERSION}" ] || \ + PACKAGE_VERSION_TAGS="-${PACKAGE_VERSION#*-}" + PACKAGE_VERSION_BASE="${PACKAGE_VERSION%%-*}" + PACKAGE_MICRO="${PACKAGE_VERSION_BASE##*.}" + PACKAGE_MAJOR_AND_MINOR="${PACKAGE_VERSION_BASE%.*}" + PACKAGE_MAJOR="${PACKAGE_MAJOR_AND_MINOR%.*}" + PACKAGE_MINOR="${PACKAGE_MAJOR_AND_MINOR#*.}" + + PACKAGE_STRING="${PACKAGE_NAME} ${PACKAGE_VERSION}" + if [ "${RELEASE_DRY_RUN}" ]; then + PACKAGE_RELEASE="${PACKAGE_TARNAME}-${PACKAGE_VERSION}" + else + PACKAGE_RELEASE="${PACKAGE_TARNAME}-${RELEASE_VERSION}" + fi +} + +package_info_show() { + cat <<INFO +Name: ${PACKAGE_TARNAME} +Release: ${RELEASE_VERSION} +Version: ${PACKAGE_VERSION} + Number: ${PACKAGE_VERSION_BASE} + Series: ${PACKAGE_MAJOR_AND_MINOR} + Major: ${PACKAGE_MAJOR} + Minor: ${PACKAGE_MINOR} + Micro: ${PACKAGE_MICRO} + Tags: ${PACKAGE_VERSION_TAGS} + Branch: ${PACKAGE_RELEASE} +Release: ${PACKAGE_TARNAME}-${PACKAGE_VERSION_BASE}${PACKAGE_VERSION_TAGS} +INFO +} + +usage() { + cat << USAGE +usage: $0 <command> + +Main Commands: + info Show a summary of the next pending release. + release Release the current tree as an archive. + upload Upload archives to berliOS project site + +Build Commands: + bootstrap Prepare the working copy for configuration and building. + configure Configures the package; runs bootstrap, if needed. + build Compiles the project; runs configure, if needed. + +Packaging Commands: + changelog Generate a new ChangeLog using svn2cl. + package Produce new distributable source archives. + stage Move archives to staging area for upload. + +Repository Commands: + commit Perform branch and tag, as appropriate for the version. + branch Create a release branch from the project trunk. + tag Create a tag for the current release branch. + +Other Commands: + version ... Perform version number and tag manipulations. + maryslamb Mary had a little lamb, but no one noticed. + clean Forces regeneration of results. + clean_all Removes all traces of the release process. + help Provides this list of commands. + +For more information about this script, see the Release Processes page +in the OpenOCD Developer's Manual (doc/manual/release.txt). + +WARNING: This script should be used by the Release Manager ONLY. +USAGE + exit 0 +} +do_usage() { usage; } +do_help() { usage; } + +do_info_show() { + echo "Current Release Analysis:" + package_info_show + svn_setup_show +} + +do_info() { + package_info_load + svn_setup_load + do_info_show +} + +do_bootstrap() { + echo -n "Bootstrapping..." + ./bootstrap 2>&1 | perl tools/logger.pl > "release-bootstrap.log" +} +maybe_bootstrap() { [ -f "configure" ] || do_bootstrap; } + +do_configure() { + maybe_bootstrap + echo -n "Configuring..." + ./configure ${CONFIG_OPTS} 2>&1 | perl tools/logger.pl > "release-config.log" +} +maybe_configure() { [ -f "Makefile" ] || do_configure; } + +do_build() { + maybe_configure + echo -n "Compiling OpenOCD ${PACKAGE_VERSION}" + make ${MAKE_OPTS} -C doc stamp-vti 2>&1 \ + | perl tools/logger.pl > "release-version.log" + make ${MAKE_OPTS} 2>&1 \ + | perl tools/logger.pl > "release-make.log" +} +maybe_build() { [ -f "src/openocd" ] || do_build; } +do_build_clean() { [ -f Makefile ] && make maintainer-clean >/dev/null; } + +maybe_rebuild() { + if [ -f "configure" ]; then + echo "Re-running autoconf..." + autoconf + echo "Re-running automake..." + automake + fi + if [ -f "Makefile" ]; then + do_configure + do_build + fi +} + +do_changelog() { + echo "Updating working copy to HEAD..." + do_svn update + echo "Creating ChangeLog..." + svn2cl -i --authors AUTHORS.ChangeLog +} +maybe_changelog() { + if [ -z "${RELEASE_DRY_RUN}" ] \ + || [ ! -f ChangeLog ] \ + || [ "$(cat ChangeLog | wc -l)" -lt 2 ] + then + do_changelog + fi +} +do_changelog_clean() { + do_svn revert ChangeLog +} + +do_package() { + package_info_load + maybe_changelog + maybe_build + echo "Building distribution packages..." + make ${MAKE_OPTS} distcheck 2>&1 | perl tools/logger.pl > "release-pkg.log" +} +maybe_package() { [ -f "${PACKAGE_RELEASE}.zip" ] || do_package; } +do_package_clean() { + for EXT in tar.gz tar.bz2 zip; do + rm -v -f *.${EXT} + done +} + +do_stage() { + maybe_package + echo "Staging package archives:" + mkdir -p archives + for EXT in tar.gz tar.bz2 zip; do + mv -v "${PACKAGE_RELEASE}.${EXT}" archives/ + done + cp -a NEWS archives/ + cp -a ChangeLog archives/ +} +do_stage_clean() { rm -v -f -r archives; } + +do_clean() { + do_build_clean + do_package_clean + rm -v -f configure + + svn revert configure.in + rm -v -f release-*.log +} +do_clean_all() { + do_clean + do_changelog_clean + do_stage_clean +} + +do_version_usage() { + cat << USAGE +usage: $0 version <command> +Version Commands: + tag {add|remove} <label> Add or remove the specified tag. + bump {major|minor|micro|rc} Bump the specified version number; + resets less-significant numbers to zero. + All but 'rc' releases drop that tag. +USAGE +} + +do_version_sed() { + local OLD_VERSION="${PACKAGE_VERSION}" + local NEW_VERSION="$1" + local MSG="$2" + + sed -i -e "/AC_INIT/ s|${OLD_VERSION}|${NEW_VERSION}|" configure.in + package_info_load + echo "${MSG}: ${OLD_VERSION} -> ${NEW_VERSION}" +} +do_version_bump_sed() { + local NEW_VERSION="$1" + [ -z "${PACKAGE_VERSION_TAGS}" ] || \ + NEW_VERSION="${NEW_VERSION}${PACKAGE_VERSION_TAGS}" + + do_version_sed "${NEW_VERSION}" \ + "Bump ${CMD} package version number" +} +do_version_bump_major() { + has_version_tag 'rc\d' do_version_ + do_version_bump_sed "$((PACKAGE_MAJOR + 1)).0.0" +} +do_version_bump_minor() { + do_version_bump_sed "${PACKAGE_MAJOR}.$((PACKAGE_MINOR + 1)).0" +} +do_version_bump_micro() { + do_version_bump_sed "${PACKAGE_MAJOR_AND_MINOR}.$((PACKAGE_MICRO + 1))" +} +do_version_bump_rc() { + die "patch missing: -rc support is not implemented" +} +do_version_bump() { + CMD="$1" + shift + case "${CMD}" in + major|minor|micro|rc) + eval "do_version_bump_${CMD}" + ;; + *) + do_version_usage + ;; + esac +} + +has_version_tag() { + test "${PACKAGE_VERSION/-${TAG}/}" != "${PACKAGE_VERSION}" +} + +do_version_tag_add() { + local TAG="$1" + has_version_tag && die "error: tag '-${TAG}' exists in '${PACKAGE_VERSION}'" + do_version_sed "${PACKAGE_VERSION}-${TAG}" \ + "Add '-${TAG}' version tag" +} +do_version_tag_remove() { + local TAG="$1" + has_version_tag || die "error: tag '-${TAG}' missing from '${PACKAGE_VERSION}'" + do_version_sed "${PACKAGE_VERSION/-${TAG}/}" \ + "Remove '-${TAG}' version tag" +} +do_version_tag() { + CMD="$1" + shift + case "${CMD}" in + add|remove) + local i= + for i in "$@"; do + eval "do_version_tag_${CMD}" "${i}" + done + ;; + *) + do_version_usage + ;; + esac +} + +do_version_commit() { + [ "$(svn diff configure.in | wc -l)" -gt 0 ] || \ + die "error: no version changes to commit" + do_svn commit -m "$1" configure.in +} + +do_version() { + package_info_load + CMD="$1" + shift + case "${CMD}" in + tag|bump) + do_version_commit "$(eval "do_version_${CMD}" "$@")" + maybe_rebuild + ;; + commit) + local MSG="$1" + [ "${MSG}" ] || die "usage: $0 version commit <message>" + do_version_commit "${MSG}" + maybe_rebuild + ;; + *) + do_version_usage + ;; + esac +} + + +do_branch() { + package_info_load + svn_setup_load + do_svn copy -m "Branching version ${PACKAGE_VERSION}" \ + "${SVN_TRUNK}" "${PACKAGE_BRANCH}" +} +do_tag() { + package_info_load + svn_setup_load + do_svn copy -m "Tagging version ${PACKAGE_VERSION}" \ + "${PACKAGE_BRANCH}" "${PACKAGE_TAG}" +} +do_commit() { + package_info_load + svn_setup_load + + [ "${PACKAGE_VERSION/in-development/}" = "${PACKAGE_VERSION}" ] || \ + die "'${PACKAGE_NAME}-${PACKAGE_VERSION}' cannot be released" + + [ "${PACKAGE_VERSION%.0}" = "${PACKAGE_VERSION}" ] || \ + do_branch + do_tag +} + + +do_release_step_prep() { + do_version tag remove in-development + # reset RELEASE_VERSION now to allow release version to be detected + export RELEASE_VERSION= +} +do_release_step_commit() { do_commit; } + +do_release_step_branch_bump() { + local TYPE="$1" + echo "Bump ${TYPE} version and add tag:" + do_version_bump ${TYPE} + do_version_tag_add in-development +} +do_release_step_branch() { + do_svn switch "${PACKAGE_BRANCH}" + package_info_load + do_version_commit "$(do_release_step_branch_bump micro)" + do_svn switch "${SVN_URL}" + package_info_load +} +do_release_step_bump() { + # major and minor releases require branch version update too + [ "${RELEASE_TYPE}" = "micro" ] || do_release_step_branch + # bump the current tree version as required. + do_version_commit "$(do_release_step_branch_bump "${RELEASE_TYPE}")" + + # archive NEWS and create new one from template + do_svn move "NEWS" "NEWS-${RELEASE_VERSION}" + + [ "${RELEASE_DRY_RUN}" ] || cat >NEWS <<NEWS +This file should include items worth mentioning in the +OpenOCD ${PACKAGE_RELEASE} source archive release. + +The following areas of OpenOCD functionality changed in this release: + +JTAG Layer: +Target Layer: +Flash Layer: +Board, Target, and Interface Configuration Scripts: +Documentation: +Build and Release: + +For more details about what has changed since the last release, +see the ChangeLog associated with this source archive. For older NEWS, +see the NEWS files associated with each release (i.e. NEWS-<version>). + +For more information about contributing test reports, bug fixes, or new +features and device support, please read the new Developer Manual (or +the BUGS and PATCHES files in the source archive). +NEWS + + MSG=<<MSG +Archive released NEWS file: NEWS -> NEWS-${RELEASE_VERSION} +Create new NEWS file from relesse script template. +MSG + do_svn commit -m "${MSG}" NEWS NEWS-${RELEASE_VERSION} +} +do_release_step_package() { + local A=${PACKAGE_TAG} + local B=${A/https/http} + local PACKAGE_BUILD=${B/${USER}@/} + do_svn switch "${PACKAGE_BUILD}" + do_stage + do_clean +} + +do_release_step_1() { do_release_step_prep; } +do_release_step_2() { do_release_step_commit; } +do_release_step_3() { do_release_step_bump; } +do_release_step_4() { do_release_step_package; } + +do_release_check() { + echo -n "Are you sure you want to release '${PACKAGE_RELEASE}'?" + read ANSWER + if [ "${ANSWER}" != 'y' ]; then + echo "Live release aborted!" + exit 0 + fi +} +do_countdown() { + echo -n "$1 in " + for i in $(seq 5 -1 1); do + echo -n "$i, " + done + echo "go!" +} + +do_release() { + package_info_load + package_info_show + + if [ -z "${RELEASE_DRY_RUN}" ]; then + do_release_check + do_countdown "Starting live release" + fi + + local i= + for i in $(seq 1 4); do + eval "do_release_step_${i}" + done +} +do_all() { do_release "$@"; } + +do_reset() { + maybe_bootstrap + maybe_configure + do_clean_all + svn revert configure.in +} + +OPTIONS=$(getopt -o V --long live -n $0 -- "$@") +if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi +eval set -- "${OPTIONS}" +while true; do + case "$1" in + --live) + export RELEASE_DRY_RUN= + shift + ;; + -V) + exec $0 info + ;; + --) + shift + break + ;; + *) + echo "Internal error" + exit 1 + ;; + esac +done + +CMD=$1 +[ "${CMD}" ] || usage +shift + +ACTION_CMDS="bootstrap|configure|build|changelog|package|stage|clean" +MISC_CMDS="all|info|version|tag|branch|commit|release|reset|help|usage" +CLEAN_CMDS="build_clean|changelog_clean|package_clean|stage_clean|clean_all" +CMDS="|${ACTION_CMDS}|${CLEAN_CMDS}|${MISC_CMDS}|" +is_command() { echo "${CMDS}" | grep "|$1|" >/dev/null; } + +if is_command "${CMD}"; then + eval "do_${CMD}" "$@" +else + echo "error: unknown command: '${CMD}'" + usage +fi Property changes on: trunk/tools/release.sh ___________________________________________________________________ Name: svn:executable + * Name: svn:eol-style + native |
From: <zw...@ma...> - 2009-07-06 12:34:56
|
Author: zwelch Date: 2009-07-06 12:34:49 +0200 (Mon, 06 Jul 2009) New Revision: 2472 Modified: trunk/src/jtag/amt_jtagaccel.c Log: Ferdinand Postema <fer...@po...>: Updates to private TAP state tables in amtjtagaccel interface driver. The first change is the neccesary one to correct a long-standing bug that caused the IDCODE to be shifted by one bit too many. This was caused by an incorrect path from state RESET to state DRSHIFT. The value of those 2 bytes were 0x8a and 0x04. This means that the bitstream to do this transition is 0b 00100 01010 (send LSB first). This will bring you from the reset state to the shift state; however, you enter the shift-state twice, which explains why the ID-CODE that will be read next will be shifted 1 bit. The fix changes these to 0x05 and 0x00. This will send the bitstream 0b 00101 (send LSB first). This will bring the TAP controller from the RESET state to the DRSHIFT state directly, without entering the DRSHIFT state twice. After checking the whole table, two other transitions were found that could be optimized (5 bits in stead of 10 bits). Summary off all changes: From To Old values Old Bitstream New values New Bitstream Remarks ---- ------- ---------- ------------- ---------- ------------- ------- RESET DRSHIFT 0x8a 0x04 0b00100 01010 0x05 0x00 0b00101 1,2 IDLE DRSHIFT 0x85 0x08 0b01000 00101 0x04 0x00 0b00100 2 IDLE IRSHIFT 0x8b 0x08 0b01000 01011 0x06 0x00 0b00110 2 [1] Fixes the IDCODE bug [2] Optimization Modified: trunk/src/jtag/amt_jtagaccel.c =================================================================== --- trunk/src/jtag/amt_jtagaccel.c 2009-07-06 10:34:33 UTC (rev 2471) +++ trunk/src/jtag/amt_jtagaccel.c 2009-07-06 10:34:49 UTC (rev 2472) @@ -92,8 +92,8 @@ static uint8_t amt_jtagaccel_tap_move[6][6][2] = { /* RESET IDLE DRSHIFT DRPAUSE IRSHIFT IRPAUSE */ - {{0x1f, 0x00}, {0x0f, 0x00}, {0x8a, 0x04}, {0x0a, 0x00}, {0x06, 0x00}, {0x96, 0x00}}, /* RESET */ - {{0x1f, 0x00}, {0x00, 0x00}, {0x85, 0x08}, {0x05, 0x00}, {0x8b, 0x08}, {0x0b, 0x00}}, /* IDLE */ + {{0x1f, 0x00}, {0x0f, 0x00}, {0x05, 0x00}, {0x0a, 0x00}, {0x06, 0x00}, {0x96, 0x00}}, /* RESET */ + {{0x1f, 0x00}, {0x00, 0x00}, {0x04, 0x00}, {0x05, 0x00}, {0x06, 0x00}, {0x0b, 0x00}}, /* IDLE */ {{0x1f, 0x00}, {0x0d, 0x00}, {0x00, 0x00}, {0x01, 0x00}, {0x8f, 0x09}, {0x8f, 0x01}}, /* DRSHIFT */ {{0x1f, 0x00}, {0x0c, 0x00}, {0x08, 0x00}, {0x00, 0x00}, {0x8f, 0x09}, {0x8f, 0x01}}, /* DRPAUSE */ {{0x1f, 0x00}, {0x0d, 0x00}, {0x07, 0x00}, {0x97, 0x00}, {0x00, 0x00}, {0x01, 0x00}}, /* IRSHIFT */ |
From: <zw...@ma...> - 2009-07-06 12:34:46
|
Author: zwelch Date: 2009-07-06 12:34:33 +0200 (Mon, 06 Jul 2009) New Revision: 2471 Modified: trunk/src/jtag/jlink.c Log: Gary Carlson <gca...@ca...>: Fix intermittent J-Link interface startup failures: - Use usb_reset to ensure selected dongle is in known good state. - Assert emulator reset durning status check to prevent supurious failures. - Eliminate status check loop; not needed due to other fixes. Modified: trunk/src/jtag/jlink.c =================================================================== --- trunk/src/jtag/jlink.c 2009-07-06 09:32:22 UTC (rev 2470) +++ trunk/src/jtag/jlink.c 2009-07-06 10:34:33 UTC (rev 2471) @@ -305,7 +305,6 @@ static int jlink_init(void) { - int check_cnt; int i; jlink_jtag_handle = jlink_usb_open(); @@ -315,24 +314,28 @@ LOG_ERROR("Cannot find jlink Interface! Please check connection and permissions."); return ERROR_JTAG_INIT_FAILED; } + + /* + * The next three instructions were added after discovering a problem while using an oscilloscope. For the V8 + * SAM-ICE dongle (and likely other j-link device variants), the reset line to the target microprocessor was found to + * cycle only intermittently during emulator startup (even after encountering the downstream reset instruction later + * in the code). This was found to create two issues: 1) In general it is a bad practice to not reset a CPU to a known + * state when starting an emulator and 2) something critical happens inside the dongle when it does the first read + * following a new USB session. Keeping the processor in reset during the first read collecting version information + * seems to prevent errant "J-Link command EMU_CMD_VERSION failed" issues. + */ + + LOG_INFO("J-Link initialization started / target CPU reset initiated"); + jlink_simple_command(EMU_CMD_HW_TRST0); + jlink_simple_command(EMU_CMD_HW_RESET0); + sleep(1); jlink_hw_jtag_version = 2; - check_cnt = 0; - while (check_cnt < 3) - { - if (jlink_get_version_info() == ERROR_OK) - { - /* attempt to get status */ - jlink_get_status(); - break; - } - check_cnt++; - } - - if (check_cnt == 3) + if (jlink_get_version_info() == ERROR_OK) { - LOG_INFO("J-Link initial read failed, don't worry"); + /* attempt to get status */ + jlink_get_status(); } LOG_INFO("J-Link JTAG Interface ready"); @@ -860,6 +863,15 @@ if ((dev->descriptor.idVendor == VID) && (dev->descriptor.idProduct == PID)) { result->usb_handle = usb_open(dev); + + /* + * Some j-link dongles experience intermittent communication issues at startup to varying degrees + * depending on the host operating system. Troubleshooting this problem all the way back to libusb + * revealed that without a usb reset, the hardware can start in an uncertain state causing a litany + * of annoying problems. The next step was added to the original code to address this problem. + */ + + usb_reset(result->usb_handle); /* usb_set_configuration required under win32 */ usb_set_configuration(result->usb_handle, dev->config[0].bConfigurationValue); |
From: oharboe at B. <oh...@ma...> - 2009-07-06 11:32:23
|
Author: oharboe Date: 2009-07-06 11:32:22 +0200 (Mon, 06 Jul 2009) New Revision: 2470 Modified: trunk/src/target/arm926ejs.c Log: 10ms timeout check on cp15 read/write Modified: trunk/src/target/arm926ejs.c =================================================================== --- trunk/src/target/arm926ejs.c 2009-07-06 09:28:37 UTC (rev 2469) +++ trunk/src/target/arm926ejs.c 2009-07-06 09:32:22 UTC (rev 2470) @@ -159,8 +159,9 @@ jtag_add_dr_scan(4, fields, jtag_get_end_state()); - /*TODO: add timeout*/ - do + long long then = timeval_ms(); + + for (;;) { /* rescan with NOP, to wait for the access to complete */ access = 0; @@ -173,7 +174,19 @@ { return retval; } - } while (buf_get_u32(&access, 0, 1) != 1); + + if (buf_get_u32(&access, 0, 1) == 1) + { + break; + } + + /* 10ms timeout */ + if ((timeval_ms()-then)>10) + { + LOG_ERROR("cp15 read operation timed out"); + return ERROR_FAIL; + } + } #ifdef _DEBUG_INSTRUCTION_EXECUTION_ LOG_DEBUG("addr: 0x%x value: %8.8x", address, *value); @@ -228,8 +241,10 @@ fields[3].in_value = NULL; jtag_add_dr_scan(4, fields, jtag_get_end_state()); - /*TODO: add timeout*/ - do + + long long then = timeval_ms(); + + for (;;) { /* rescan with NOP, to wait for the access to complete */ access = 0; @@ -239,8 +254,20 @@ { return retval; } - } while (buf_get_u32(&access, 0, 1) != 1); + if (buf_get_u32(&access, 0, 1) == 1) + { + break; + } + + /* 10ms timeout */ + if ((timeval_ms()-then)>10) + { + LOG_ERROR("cp15 write operation timed out"); + return ERROR_FAIL; + } + } + #ifdef _DEBUG_INSTRUCTION_EXECUTION_ LOG_DEBUG("addr: 0x%x value: %8.8x", address, value); #endif |
From: oharboe at B. <oh...@ma...> - 2009-07-06 11:28:39
|
Author: oharboe Date: 2009-07-06 11:28:37 +0200 (Mon, 06 Jul 2009) New Revision: 2469 Modified: trunk/src/target/arm7_9_common.c Log: simplify debug_reason check Modified: trunk/src/target/arm7_9_common.c =================================================================== --- trunk/src/target/arm7_9_common.c 2009-07-06 08:45:31 UTC (rev 2468) +++ trunk/src/target/arm7_9_common.c 2009-07-06 09:28:37 UTC (rev 2469) @@ -2,7 +2,7 @@ * Copyright (C) 2005 by Dominic Rath * * Dom...@gm... * * * - * Copyright (C) 2007,2008 vind Harboe * + * Copyright (C) 2007,2008 �yvind Harboe * * oyv...@zy... * * * * Copyright (C) 2008 by Spencer Oliver * @@ -1431,18 +1431,10 @@ context[15] -= 3 * 4; } - if ((target->debug_reason == DBG_REASON_BREAKPOINT) - || (target->debug_reason == DBG_REASON_SINGLESTEP) - || (target->debug_reason == DBG_REASON_WATCHPOINT) - || (target->debug_reason == DBG_REASON_WPTANDBKPT) - || ((target->debug_reason == DBG_REASON_DBGRQ) && (arm7_9->use_dbgrq == 0))) + if ((target->debug_reason != DBG_REASON_DBGRQ) || (!arm7_9->use_dbgrq)) context[15] -= 3 * ((armv4_5->core_state == ARMV4_5_STATE_ARM) ? 4 : 2); - else if (target->debug_reason == DBG_REASON_DBGRQ) - context[15] -= arm7_9->dbgreq_adjust_pc * ((armv4_5->core_state == ARMV4_5_STATE_ARM) ? 4 : 2); else - { - LOG_ERROR("unknown debug reason: %i", target->debug_reason); - } + context[15] -= arm7_9->dbgreq_adjust_pc * ((armv4_5->core_state == ARMV4_5_STATE_ARM) ? 4 : 2); if (armv4_5_mode_to_number(armv4_5->core_mode)==-1) return ERROR_FAIL; |
From: <zw...@ma...> - 2009-07-06 10:45:37
|
Author: zwelch Date: 2009-07-06 10:45:31 +0200 (Mon, 06 Jul 2009) New Revision: 2468 Modified: trunk/doc/Makefile.am Log: Fix maintainer-clean target in doc directory. Modified: trunk/doc/Makefile.am =================================================================== --- trunk/doc/Makefile.am 2009-07-06 08:05:58 UTC (rev 2467) +++ trunk/doc/Makefile.am 2009-07-06 08:45:31 UTC (rev 2468) @@ -14,4 +14,6 @@ MAINTAINERCLEANFILES = \ $(srcdir)/Makefile.in \ $(srcdir)/mdate-sh \ + $(srcdir)/stamp-vti \ + $(srcdir)/version.texi \ $(srcdir)/texinfo.tex |
From: oharboe at B. <oh...@ma...> - 2009-07-06 10:05:59
|
Author: oharboe Date: 2009-07-06 10:05:58 +0200 (Mon, 06 Jul 2009) New Revision: 2467 Modified: trunk/tcl/board/digi_connectcore_wi-9c.cfg Log: bitrot: fix numerous syntax errors added correct jtag device id Modified: trunk/tcl/board/digi_connectcore_wi-9c.cfg =================================================================== --- trunk/tcl/board/digi_connectcore_wi-9c.cfg 2009-07-06 08:04:57 UTC (rev 2466) +++ trunk/tcl/board/digi_connectcore_wi-9c.cfg 2009-07-06 08:05:58 UTC (rev 2467) @@ -26,7 +26,7 @@ if { [info exists CPUTAPID ] } { set _CPUTAPID $CPUTAPID } else { - set _CPUTAPID 0xFFFFFFFF + set _CPUTAPID 0x07926031 } set _TARGETNAME [format "%s.cpu" $_CHIPNAME] @@ -41,6 +41,7 @@ ###################### target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm926ejs + $_TARGETNAME configure -event reset-init { mww 0x90600104 0x33313333 mww 0xA0700000 0x00000001 # Enable the memory controller. @@ -99,12 +100,12 @@ mww 0xA0700160 0x00084280 # Enable buffer access #Set byte lane state (static mem 1)" - mww 0xA0700220, 0x00000082 + mww 0xA0700220 0x00000082 #Flash Start - mww 0xA09001F8, 0x50000000 + mww 0xA09001F8 0x50000000 #Flash Mask Reg - mww 0xA09001FC, 0xFF000001 - mww 0xA0700028, 0x00000001 + mww 0xA09001FC 0xFF000001 + mww 0xA0700028 0x00000001 # RAMAddr = 0x00020000 # RAMSize = 0x00004000 @@ -122,6 +123,3 @@ #M29DW323DB - not working #flash bank cfi <base> <size> <chip width> <bus width> <target#> flash bank cfi 0x50000000 0x0400000 2 2 0 - - - |
From: oharboe at B. <oh...@ma...> - 2009-07-06 10:04:58
|
Author: oharboe Date: 2009-07-06 10:04:57 +0200 (Mon, 06 Jul 2009) New Revision: 2466 Modified: trunk/TODO Log: added known problem w/line number's being off in syntax errors for target reset events Modified: trunk/TODO =================================================================== --- trunk/TODO 2009-07-06 08:01:22 UTC (rev 2465) +++ trunk/TODO 2009-07-06 08:04:57 UTC (rev 2466) @@ -15,6 +15,9 @@ This section provides possible things to improve with OpenOCD's TCL support. +- Fix problem with incorrect line numbers reported for a syntax + error in a reset init event. + - organize the TCL configurations: - provide more directory structure for boards/targets? - factor configurations into layers (encapsulation and re-use) @@ -97,7 +100,7 @@ - general layer cleanup: @par https://lists.berlios.de/pipermail/openocd-development/2009-May/006590.html - ARM11 improvements (MB?) - - fix single stepping (reported by ) + - fix single stepping (reported by �H) - implement missing functionality (grep FNC_INFO_NOTIMPLEMENTED ...) - Cortex A8 support (ML) - add target implementation (ML) @@ -141,7 +144,7 @@ - finish implementing bus width/chip width handling (suggested by NC) - factor vendor-specific code into separate source files - add new callback interface for vendor-specific code -- investigate/implement "thin wrapper" to use eCos CFI drivers () +- investigate/implement "thin wrapper" to use eCos CFI drivers (�H) @section thelistdebug Debugger Support |
From: oharboe at B. <oh...@ma...> - 2009-07-06 10:01:23
|
Author: oharboe Date: 2009-07-06 10:01:22 +0200 (Mon, 06 Jul 2009) New Revision: 2465 Modified: trunk/src/helper/command.c Log: try to use tabs instead of spaces Modified: trunk/src/helper/command.c =================================================================== --- trunk/src/helper/command.c 2009-07-06 07:33:38 UTC (rev 2464) +++ trunk/src/helper/command.c 2009-07-06 08:01:22 UTC (rev 2465) @@ -875,17 +875,17 @@ *ul = func(str, &end, 0); \ if (*end) \ { \ - LOG_ERROR("Invalid command argument"); \ + LOG_ERROR("Invalid command argument"); \ return ERROR_COMMAND_ARGUMENT_INVALID; \ } \ if ((max == *ul) && (ERANGE == errno)) \ { \ - LOG_ERROR("Argument overflow"); \ + LOG_ERROR("Argument overflow"); \ return ERROR_COMMAND_ARGUMENT_OVERFLOW; \ } \ if (min && (min == *ul) && (ERANGE == errno)) \ { \ - LOG_ERROR("Argument underflow"); \ + LOG_ERROR("Argument underflow"); \ return ERROR_COMMAND_ARGUMENT_UNDERFLOW; \ } \ return ERROR_OK; \ |
From: oharboe at B. <oh...@ma...> - 2009-07-06 09:33:39
|
Author: oharboe Date: 2009-07-06 09:33:38 +0200 (Mon, 06 Jul 2009) New Revision: 2464 Modified: trunk/src/helper/command.c Log: human readable error message upon invalid arguments Modified: trunk/src/helper/command.c =================================================================== --- trunk/src/helper/command.c 2009-07-06 07:31:46 UTC (rev 2463) +++ trunk/src/helper/command.c 2009-07-06 07:33:38 UTC (rev 2464) @@ -2,7 +2,7 @@ * Copyright (C) 2005 by Dominic Rath * * Dom...@gm... * * * - * Copyright (C) 2007,2008 vind Harboe * + * Copyright (C) 2007,2008 �yvind Harboe * * oyv...@zy... * * * * Copyright (C) 2008, Duane Ellis * @@ -867,15 +867,27 @@ int parse##name(const char *str, type *ul) \ { \ if (!*str) \ + { \ + LOG_ERROR("Invalid command argument"); \ return ERROR_COMMAND_ARGUMENT_INVALID; \ + } \ char *end; \ *ul = func(str, &end, 0); \ if (*end) \ + { \ + LOG_ERROR("Invalid command argument"); \ return ERROR_COMMAND_ARGUMENT_INVALID; \ + } \ if ((max == *ul) && (ERANGE == errno)) \ + { \ + LOG_ERROR("Argument overflow"); \ return ERROR_COMMAND_ARGUMENT_OVERFLOW; \ + } \ if (min && (min == *ul) && (ERANGE == errno)) \ + { \ + LOG_ERROR("Argument underflow"); \ return ERROR_COMMAND_ARGUMENT_UNDERFLOW; \ + } \ return ERROR_OK; \ } DEFINE_PARSE_NUM_TYPE(_ulong, unsigned long , strtoul, 0, ULONG_MAX) |