X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=TODO;h=c73d772e23ee8c37aa8d7b671e47047d66e4ba70;hp=a9e95f6eed65dd2107ac33bdfede34d77a44b6b0;hb=4738a55da416176542efa1b554020de275a5b4e5;hpb=cfc02ccca25b7883ad761123faf207df0df4ad06 diff --git a/TODO b/TODO index a9e95f6eed..c73d772e23 100644 --- a/TODO +++ b/TODO @@ -27,8 +27,8 @@ This section provides possible things to improve with OpenOCD's TCL support. parameters. Currently variables assigned through one such parameter command/script are unset before the next one is invoked. -- Isolate all TCL command support: - - Pure C CLI implementations using --disable-builtin-tcl. +- Isolate all TCL command support: + - Pure C CLI implementations using --disable-builtin-tcl. - Allow developers to build new dongles using OpenOCD's JTAG core. - At first, provide only low-level JTAG support; target layer and above rely heavily on scripting event mechanisms. @@ -37,11 +37,34 @@ This section provides possible things to improve with OpenOCD's TCL support. - See src/jtag/core.c and src/jtag/tcl.c for an example. - allow some of these TCL command modules to be dynamically loadable? -@section thelistjtag JTAG +@section thelistadapter Adapter -This section list issues that need to be resolved in the JTAG layer. +This section list issues that need to be resolved in the Adapter layer. -@subsection thelistjtagcore JTAG Core +@subsection thelistadapterrework Code restructuring + +This section lists pending reworks to complete the restructure from the +old JTAG centric implementation to a generic Adapter layer. +This restructuring is very invasive and will prevent the merge of several +changes pending in gerrit. + +- rename folder src/jtag/ to src/adapter/ +- rename var "jtag" to "adapter" in src/jtag/core.c +- split content of src/adapter/ in the different protocols jtag.[ch], + swd.[ch], ... +- wrap the calls to adapter->transport_ops->api() with transport_api() + and reduce the visibility of global var "adapter" +- complete the migration of JTAG-only drivers to adapter->reset() +- try to remove JTAG_SLEEP also from JTAG mode? +- tap_set_state(TAP_RESET) is already done in src/jtag/core.c. No need + to replicate it in the drivers, apart in case the driver sets TRST + independently +- separate SWIM from HLA and make it independent +- add .hla_ops and .swim_ops to "adapter" +- HLA is a API level (.hla_ops). Transport should simply be {jtag,swd}, + not {hla_jtag,hla_swd}. + +@subsection thelistadapterjtagcore JTAG Core The following tasks have been suggested for cleaning up the JTAG layer: @@ -63,9 +86,9 @@ The following tasks have been suggested for adding new core JTAG support: - (ab)use bit-banging JTAG interfaces to emulate SPI/UART - allow SPI to program flash, MCUs, etc. -@subsection thelistjtaginterfaces JTAG Interfaces +@subsection thelistadapterinterfaces Interface drivers -There are some known bugs to fix in JTAG adapter drivers: +There are some known bugs to fix in Interface drivers: - For JTAG_STATEMOVE to TAP_RESET, all drivers must ignore the current recorded state. The tap_get_state() call won't necessarily return @@ -93,9 +116,6 @@ interface support: -# rewrite implementation to use non-blocking I/O - J-Link driver: - fix to work with long scan chains, such as R.Doss's svf test. -- FT2232 (libftdi): - - make performance comparable to alternatives (on Win32, D2XX is faster) - - make usability comparable to alternatives - Autodetect USB based adapters; this should be easy on Linux. If there's more than one, list the options; otherwise, just select that one. @@ -110,10 +130,6 @@ of a minidriver is required to capture all the jtag_add_xxx() fn's at a high enough level and repackage these cmd's as TCP/IP packets handled by the server. -@section thelistswd Serial Wire Debug - -- implement Serial Wire Debug interface - @section thelistbs Boundary Scan Support - add STAPL support? @@ -142,6 +158,8 @@ Once the above are completed: https://lists.berlios.de/pipermail/openocd-development/2009-May/006590.html - regression: "reset halt" between 729(works) and 788(fails): @par https://lists.berlios.de/pipermail/openocd-development/2009-July/009206.html +- registers + - add flush-value operation, call them all on resume/reset - mcr/mrc target->type support - missing from ARM920t, ARM966e, XScale. It's possible that the current syntax is unable to support read-modify-write @@ -163,17 +181,25 @@ https://lists.berlios.de/pipermail/openocd-development/2009-October/011506.html use hardware stepping if available. - mdb can return garbage data if read byte operation fails for a memory region(16 & 32 byte access modes may be supported). Is this - a bug in the .MX31 PDK init script? Try on i.MX31 PDK: + a bug in the .MX31 PDK init script? Try on i.MX31 PDK: mdw 0xb80005f0 0x8, mdh 0xb80005f0 0x10, mdb 0xb80005f0 0x20. mdb returns garabage. - implement missing functionality (grep FNC_INFO_NOTIMPLEMENTED ...) - Thumb2 single stepping: ARM1156T2 needs simulator support -- Cortex A8 support (ML) +- Cortex-A8 support (ML) - add target implementation (ML) +- Cortex-M3 support + - when stepping, only write dirtied registers (be faster) + - when connecting to halted core, fetch registers (startup is quirky) - Generic ARM run_algorithm() interface - tagged struct wrapping ARM instructions and metadata - not revision-specific (current: ARMv4+ARMv5 -or- ARMv6 -or- ARMv7) - usable with at least arm_nandwrite() and generic CFI drivers +- ETM + - don't show FIFOFULL registers if they're not supported + - use comparators to get more breakpoints and watchpoints + - add "etm drivers" command + - trace driver init() via examine() paths only, not setup()/reset - MC1322x support (JW/DE?) - integrate and test support from JW (and DE?) - get working with a known good interface (i.e. not today's jlink) @@ -197,18 +223,27 @@ https://lists.berlios.de/pipermail/openocd-development/2009-October/011506.html @section thelistsvf SVF/XSVF -- develop SVF unit tests -- develop XSVF unit tests +- develop SVF unit tests +- develop XSVF unit tests @section thelistflash Flash Support - finish documentation for the following flash drivers: - avr - - ecosflash - pic32mx - ocl - str9xpec +- Don't expect writing all-ones to be a safe way to write without + changing bit values. Minimally it loses on flash modules with + internal ECC, where it may change the ECC. + - NOR flash_write_unlock() does that between sectors + - there may be other cases too + +- Make sure all commands accept either a bank name or a bank number, + and be sure both identifiers show up in "flash banks" and "nand list". + Right now the user-friendly names are pretty much hidden... + @subsection thelistflashcfi CFI - finish implementing bus width/chip width handling (suggested by NC) @@ -328,7 +363,7 @@ at the bottom of the list below. Example, on amd64: from unaligned memory addresses - libopenocd support: @par https://lists.berlios.de/pipermail/openocd-development/2009-May/006405.html -- review and clean up interface/target/flash APIs +- review and clean up interface/target/flash APIs The following strategic tasks will require ambition, knowledge, and time to complete: @@ -346,9 +381,10 @@ to complete: - Develop milestone and release guidelines, processes, and scripts. - Develop "style" guidelines (and scripts) for maintainers: - reviewing patches - - committing to Subversion -- Review The Guide for OpenOCD Users for documentation errors or omissions -- Update The Manual for OpenOCD Developers: + - committing to git +- Review Users' Guide for documentation errors or omissions + - "capture" and "ocd_find" commands +- Update Developer's Manual (doxygen output) - Add documentation describing the architecture of each module - Provide more Technical Primers to bootstrap contributor knowledge @@ -356,4 +392,3 @@ to complete: /** @file This file contains the @ref thelist page. */ -