Re: [Openocd-development] Target AJAX like support - User Interface Thread

2009-06-07 Thread Duane Ellis
duane> I think your view is more (A), and mine is more (B).

david>  Yet my example of a "flash download" tool seems more like (B) to 
me. :)

Seems like we both sit at two different ends of the spectrum, you see 
"de-bricking/flashing" a board as day to day I don't. That is perhaps 
good, it makes one think of the other use cases.

If I where to list "use case areas of interest" - they would be:

(a)   "my board is a brick - please help me reflash(recover) my board" 
type GUI interface.

Be it "linux" or some other operating system - the board is dead and 
must be recovered.
This is more for the "linux target board developer type".
Also WinCE types, ie: "urjtag" type solution, and is more "flash 
programmer centric"

Much of this is External NOR flash,or External NAND flash.
What is not - is micro-controller based stuff which is more (d) then 
(a).

Boundary scan method works (ie: the UrJTAG approach) but is slow
or the "download helper code" (the OpenOCD approach) faster.

(b)   How to write a "xlinix flash programer" type solution
aka: Much like Xilinx IMPACT, or the Altera equal (I don't know the 
name).
This is more "jtag centric".

I guess this is more Dick Holenbeck type centric (he wrote the xsvf 
support).

(c)  Boundary Scan - wiggle pins on the jtag chain.

People have asked about this... and we have talked about it
But there are no "drum beaters" eager to help.

(d)  Debug & Software Development solutions.
  
Mostly "non-linux-kernel" micro controller centric
   
"uboot" debug falls into this category.

===

agree?


___
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development


Re: [Openocd-development] Target AJAX like support - User Interface Thread

2009-06-07 Thread David Brownell
On Sunday 07 June 2009, Duane Ellis wrote:
> So what should we focus on?
> 
> (A)  Wizard type features to help *new*users* get started
>   
> (B)  Day to day operational features.
> 
> I think your view is more (A), and mine is more (B).

Yet my example of a "flash download" tool seems more
like (B) to me.  :)

Keep in mind also that while some "day to day" users are
using GDB-over-JTAG to develop microcontroller software,
others have more limited and infrequent demands, like
de-bricking or (similar) installing new boot loaders.

And I'd say that the former will be getting deeply
familiar with command line tools, of necessity ... the
latter are the ones most in need of the kind of "low
learning overhead" interface which motivates GUIs or
turnkey command frameworks.


Plus, semi-related, this project is not doing much right
now to facilitate even basic task-oriented scripting;
so the limits of what can be done without GUIs are not
even in sight yet.

I notice the "Scripting Overview" (in the Doxygen output,
technical primers section) has this disturbing statement
right at the top:

   The scripting support is intended for developers of
   OpenOCD. It is not the intention that normal OpenOCD
   users will use tcl scripting extensively, write lots
   of clever scripts, or contribute back to OpenOCD.

Well, why the heck should users *NOT* use the scripting?
Or contribute?  Color me puzzled.  Classically, those
are the primary reasons to include scripting.

And if users don't contribute scripts, how *do* they
help grow support for more systems?  And how *could* the
developers really understand user requirements?



___
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development


Re: [Openocd-development] Target AJAX like support - User Interface Thread

2009-06-07 Thread Duane Ellis
duane> [ajax]

david> Saying "AJAX" or talking about any other implementation tech 
feels to me like putting the cart before the horse.

Correct, I should have given more examples.  What I ment was - 2 parts:

1) the GUI interface
(a) could be built-in webserver + javascript (ajax)
OR  (b) could be built-in webserver + flash
OR  (c) could be Ecplipse + JAVA
OR  (d) could be  Tcl/Tk app

Perhaps the use of "ajax" is/was very premature - I really mean that 
sort of concept, nothing more.

2) The backend part the above pieces talk to.
It responds to commands.

=

So what should we focus on?

(A)  Wizard type features to help *new*users* get started
  
ie: Some "build a basic configuration file" tool.
That could be *text* - ie: Answer questions, choose from a list.
That's not 'inside openocd' - its more of a "text configuration file'

Could be as simple as Perl CPAN - text mode
Or as simple as Linux Kernel "make config" text mode.
(vrs make xconfig, or make menuconfig).
  
(B)  Day to day operational features.

I think your view is more (A), and mine is more (B).


-Duane.

___
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development


Re: [Openocd-development] Target AJAX like support - User Interface Thread

2009-06-06 Thread David Brownell
Saying "AJAX" or talking about any other implementation tech feels
to me like putting the cart before the horse.  I still don't know
what problems would expect be solved ... though I can think of three
right off the bat that *I* would expect to work:

 * Eclipse integration.  Probably covered for GDB support, but not
   necessarily for other tasks (and it's not like I can do a useful
   "apt-get install eclipse" on Ubuntu), like ...

 * Flash updating.  This being very board-specific.  "Write this
   version of U-Boot to that address" ... sometimes with a special
   header, or needing a "helper" boot loader (e.g. ROM loads helper
   from NAND to on-chip SRAM, which sets up DRAM and loads U-BOOT
   from a different part of NAND).

 * Tell me what's on that JTAG chain, and build an "openocd.cfg" to
   start out with.  Some basic textual or pictorial display; this
   would need ways to grow and manage a chip database.  Plus maybe
   ways to hint about special features.

Also, user interface design skills are rather distinct from hardware
interfacing skills.  Getting very deeply into that would probably
call for a new set of developers.  Especially if something like an
AJAX based web client were in the cards...

But I expect that some simple tools could be written just using TK/Wish.
That flash updating thing, for example ... have a look at the "SAM-BA"
tool from Atmel, which ISTR is written in TK and talks directly to the
ROM boot loader on newer AT91sam chips, using USB or a UART.  (Various
ARMs from TI could do the same thing; both DaVinci and OMAP3 parts, 
in particular.)

How would such a flash updating thing work?  Select interface dongle
from a menu; select board (or maybe just chip/target) ditto.  Then
the board setup file could say "provide these menu commands".  Doing
all that in TK/Wish *ought* to be really easy...

Right now very few boards have much in the way of script support.
I mention "write the boot loader" since it's a fairly basic thing
that is widely needed, and should thus be easy to approach ... but
there will likely be other tasks worth targeting.

- Dave

___
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development


[Openocd-development] Target AJAX like support - User Interface Thread

2009-06-03 Thread Duane Ellis
zach> Duane, Did you write this plan up? Got Links? If not, care to revisit
zach> the vision in a new thread on the list or a patch to The Manual? :)

Nothing wrote up - so I'll put some ideas and concepts here that 
could/should be put into the "developer manual"

This is "vision" - nothing is cast in stone, so toss up some ideas.

This is the *USERINTERFACE* part of the discussion.
Another thread will be the *command ideas*.

It is *UTTERLY* important that we get this API correct - otherwise we 
will screw this feature up big time.
I cannot recommend this GOOGLE TECH TALK - enough

http://lcsd05.cs.tamu.edu/slides/keynote.pdf

http://video.google.com/videoplay?docid=-3733345136856180693

http://www.youtube.com/watch?v=aAb7hSCtvGw

I wrote this 'out of my head' tonight, it is not clean. I've been 
thinking about this for quite some time.

You know, we *COULD* - have OpenOCD serve out the OpenOCD manual this 
way too.
Hmm Interesting

-Duane



== For reference ==

I assume the reader has read:

${OPENOCD_SRC}/doc/manual/server.txt

That is the starting point of this discussion.

Let us assume the user has opened their web browser and points it at the 
"openocd built-in-web-server".

What happens?
What is available?
Let's talk about what the user should be able to do.
I want to paint a picture...


Primary


General Experience Goal - Ability Locally Override

Location #1;
The user should always be able to stuff some files in a 'project 
local directory'
and serve those files out when the user connects to the built in web 
server.
[ie: the directory where OpenOCD runs].

If those files are not found, OpenOCD - searches *standard* places.

Example:   My working directory is: "c:\myproject"
the OpenOCD config file is called:   "c:\myproject\openocd.cfg"
I should be able to put files in:   c:\myproject\openocd\ 
 and override the system.

Remember: there are often lots of html files, to many to clutter the 
current directory.

Location #2
Users ${HOME}/.openocd/http  directory

Location #3
${INSTALLDIR}/ .


Main "HTML" page - what should "index.html" be?


There should be 2 of them.
(a) the main full featured one.
(b) the "framed header"  - that wraps around a users file.

Framed Header EXAMPLE:

If I create a my own "index.html" file.
We should be able to "frame" that with a small title bar with some 
links.
sort of like "google image search" -  It has the original at the top 
of the page.  

This should exists so that the user always has an "out" and can get 
to the main default openocd page.

Maybe that FRAMED header - is fancy and uses something like this:

http://www.brainjar.com/dhtml/menubar/demo.html



STATIC FILES


We should be able to create some simple html files, for example:

SPECIFICALLY:
These are *directories* where all kinds of  kewl things can be put.
What ever you want... the examples here are *directories*


http://localhost:/openocd/static/chip/xilinx/XC3S500E-4FG320C
http://localhost:/openocd/static/target/st/str912
http://localhost:/openocd/static/board/atmel/sam3u-ek
http://localhost:/openocd/static/dongle/xverve/signalizer

Rules should be like Apache.:
   First - try the given name.
   If the given name is a directory, append "index.html" and try again.

LOCATION
   These files should be in the "install" directory, these would be 
under openod/httpd/static/
   the "httpd" directory should be Parallel to the TCL, and other 
directories under install.

REQUIRED FILES
  index.html - for static content
or   index.tcl- for dynamic content }

OPTIONAL (strongly suggested)  various "meta-data.json".
TBD - exact format, style, etc.
TBD - other format, other names.

Example:  'flash.json' - could describe the on-board (or 
on-chip) flash.
Example:  'memory.json' could describe the memory map.
Example:  'cpu.json' - could describe the CPU.

  The cpu.json file in the *board* or *target* directory might 
have an "http-redirect"
   example:   openocd/static/chip/st/stm32/cpu.json - might "REFER" 
to "core/arm/cortex-m3.html"
   Likewise, the "pic32" - might *refer* to the "mips/m4k.html"

These "meta-data" files - can be used by some *GENERIC* AJAX like things 
that create a *MEMORY* view web page, or a FLASH program page.
Maybe another that can b used to *view/edit/change* cpu registers, or 
maybe the  ARM co-processor registers.

Imagine a "memoryviewer.java" - application that uses the meta data 
file:   'memory.json' as configuration data.

TBD:
Exact format and content of the *details.json*  file.
I think JSON is a simple easy to understand and use file format.
It is also easy for