Hi all,
Part of my impetus to restructure the command set is to see more
separation of policy and mechanism in the code. The JTAG layer shows
how this can be done: a tcl.c file contains all of the command handlers,
while core.c contains the low-level functions that do the work. It
might be worth considering a cmd.c file with the high-level command
handlers, if they can become fully independent of the Jim APIs.
After the command cleanup that I have started, I believe this type of
factoring deserves to be pursued in the other modules. I propose making
these changes in the following order:
- svf, xsvf, pld: simple core/tcl separation: */core.c and */tcl.c
- flash/nor, flash/nand: likewise, if renamed; otherwise *_{core,tcl}.c
- target.c: split into target/core.c and target/tcl.c
- split drivers similarly: <driver>.c and <driver>_tcl.c
This suggestion helps show why it would be nice to split the flash/
directory contents into subdirectories. While it paves the way for
future types of flash, it allows us to provide them with their own
{core,tcl}.c files and provide normalized names for all modules' layers.
This plan would transform each OpenOCD library module to have the same
file structure in this way, creating a clear division between the
low-level model (in core.c) and the view/controller (in tcl.c). This
division is blurred too often today, with the result that a lot of code
does not promote (or practice) re-use as widely or often as it can.
It also becomes conceivable to provide a '--disable-tcl' option to build
a version of the libraries that do not contain this high-level code.
I have said this before, but I feel it is an imperative to pursue this
strictly for the purpose of improving OpenOCD's architectural integrity.
Cheers,
Zach
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development