Reply by Tom Walsh October 27, 20052005-10-27
mark_dell555 wrote:

>Does anyone know how to setup flash jtag programming through the
>debugger (AXD) ? >

Well, I use an Abatron BDI2000 and that operation is done in the
firmware of the probe (BDI2000). I could not correctly program the
LCP2138 until I got some beta firmware from Abatron. I don't know if
Abatron uses their own algorithm or calls the IAP code in Flash... TomW --
Tom Walsh - WN3L - Embedded Systems Consultant
http://openhardware.net, http://cyberiansoftware.com
"Windows? No thanks, I have work to do..."
----------------


An Engineer's Guide to the LPC2100 Series

Reply by Rob Jansen October 27, 20052005-10-27
Mark,

> Does anyone know how to setup flash jtag programming through the
> debugger (AXD) ?

The LPC2106 user manual states (page 199):

JTAG FLASH PROGRAMMING INTERFACE

There are three possibilities for this interface:
1. Debug tools can write parts of the flash image to the RAM and then
execute the IAP call "Copy RAM to Flash" repeatedly
with proper offset.
2. Debug tools can execute the flash programming code via JTAG port. I did not see a "3." in the user manual ... but point 1 seems to be simple.
Prepare a command parameter table with command and (optional) parameters
and have r0 point to this table, also have a piece in memory for the
command result table (point r1 to this) and then execute the IAP call.

I'm not sure how control gets back to the debugger so I would write a 2
word program (BL 0x7ffffff1 and a B <self> or NOP) and place a breakpoint
on the second instruction to return to the debugger.

Rob

-- Three is the number one shall count
One shall not count to two unless to proceed to three ...


Reply by mark_dell555 October 27, 20052005-10-27
Does anyone know how to setup flash jtag programming through the
debugger (AXD) ? Thanks,
Mark


Reply by Michael Johnson October 27, 20052005-10-27
Sounds like the JTAG is still flaky.

Michael

>I noticed another problem with the debugging. When i just let the
>code run, and then hit stop, most of the time it will stop correctly
>within the RAM code. But sometimes it will stop with PC = 0x0000xxxx.
> Ie somewhere in flash. Flash is clear so there is no code there.
>Interrupts are disabled. Not sure why but sometimes it messes up when
>I tell it to stop. It will run correctly for a long time, until i
>tell it to stop. Weird. >Mark >Yahoo! Groups Links




Reply by mark_dell555 October 27, 20052005-10-27
I noticed another problem with the debugging. When i just let the
code run, and then hit stop, most of the time it will stop correctly
within the RAM code. But sometimes it will stop with PC = 0x0000xxxx.
Ie somewhere in flash. Flash is clear so there is no code there.
Interrupts are disabled. Not sure why but sometimes it messes up when
I tell it to stop. It will run correctly for a long time, until i
tell it to stop. Weird. Mark


Reply by mark_dell555 October 27, 20052005-10-27
OK, I was able to set the Aglient probe to 391kHz, and erased the
chip. I can read and write RAM in AXD. I disabled software
breakpoints on the vectors and SWIs. Now I'm not getting Data Aborts
anymore. I created a simple project that just toggles an LED and told
the linker to put everything into RAM (0x40000100+). It runs now. I
still get some too many breakpoints errors, possibly because i have
disabled everything except for hardware breakpoints. I guess the next
step is to try and run some flash code. The data aborts were probably
generated by AXD trying to set software breakpoints in the vector
table, but they're not remapped to RAM, so it failed.

Thanks for all the help so far. I'll try debugging flash code, and
loading flash using the JTAG next, although that might be quite a bit
more difficult. Mark
--- In lpc2000@lpc2..., Michael Johnson <mpj@r...> wrote:
>
> A wiggler will do a maximum of 400kHz - I can't remember if we have LPC
> boards that we've had to put a clock divider on to make things reliable
> - so 500kHz may be too fast. Could there be a program in the flash that
> is causing the problem - try erasing the flash using the ISP.
>
> Regards
> Michael
>
> >Hi Michael,
> >
> >Yes. I can set it anywhere from 500kHz to 10Mhz. I've been using it
> >at 500kHZ and 1 Mhz. I should mention I'm using ADS 1.2.
> >
> >Thanks,
> >Mark
> >
> >
> >
> >>Hi Mark,
> >>
> >>Can you divide the JTAG clock frequency?
> >>
> >>Regards
> >>Michael
> >>
> >>
> >
> >
> >
> >
> >
> >
> >
> >
> >Yahoo! Groups Links
> >
> >
> >
> >
> >
> >
> >
> >
>




Reply by Rob Jansen October 26, 20052005-10-26
> Dear Rob
>
> Will you publish your Jtag design or is it commercial ?
>
> Cheers
> Michael

I was thinking of releasing the binary version for free and provide the
source code on a commercial basis.

I am using the 10/100 Ethernet board from Embedded Artists as development
platform. This gives home users a fairly cheap RDI based jtag debugger.

Rob


Reply by Michael Rubitschka October 26, 20052005-10-26
Dear Rob

Will you publish your Jtag design or is it commercial ?

Cheers
Michael >From: "Rob Jansen" <rob@rob@...>
>Reply-To: lpc2000@lpc2...
>To: lpc2000@lpc2...
>Subject: Re: [lpc2000] JTAG Debugger
>Date: Wed, 26 Oct 2005 15:31:00 +0200 (CEST)
>
> > Hi,
> >
> > I have a Agilent E5900B emulation probe that I've been trying to get
> > working on a LPC2134 with ADS. It works fine on my AT91 dev board,
> > but I cant get it to work in ADS with the LPC2134. Note that this
> > probe is ARM7TDMI not -S. I seem to have some success (RESET, STOP,
> > RUN, and STEP, and poll register etc..) using the telnet interface
> > when I disconnect the RTCK pin. But either way I get alot of Data
> > Aborts in ADS.
>
>I also had some problems (with a Jeeni). It seems to work sometimes or up
>to a certain moment and then strange errors pop up.
>
>Meanwhile I am developing my own JTAG probe - using RTCK I get to about 2
>MHz on the jtag clock (14.7 MHz crystal).
>There are indeed some differences between the TDMI and the -S version that
>may render your TDMI debugger unusable. The TDMI has a third public jtag
>chain and (as far as I remember) supports both INTEST and EXTEST.
>
>A wiggler may do OK for you but I don't like the use of the printer port
>(apart from not being available on my laptop). Therefor I decided to go
>for a debuggerpod that is connected via Ethernet, using the RDI protocol
>which makes it suitable for a wider range of debugger software.
>Software is not yet finished, I keep running into small problems from time
>to time ...
>
>If the Agilent uses RID, try using another debugger (e.g. gdb). I found
>that I could do some debugging with the Jeeni via the RealView debugger
>but was not able to do anything with GDB. It may be the other way around
>for you.
>
>Regards,
>
> Rob
>


Reply by Rob Jansen October 26, 20052005-10-26
> Hi,
>
> I have a Agilent E5900B emulation probe that I've been trying to get
> working on a LPC2134 with ADS. It works fine on my AT91 dev board,
> but I cant get it to work in ADS with the LPC2134. Note that this
> probe is ARM7TDMI not -S. I seem to have some success (RESET, STOP,
> RUN, and STEP, and poll register etc..) using the telnet interface
> when I disconnect the RTCK pin. But either way I get alot of Data
> Aborts in ADS.

I also had some problems (with a Jeeni). It seems to work sometimes or up
to a certain moment and then strange errors pop up.

Meanwhile I am developing my own JTAG probe - using RTCK I get to about 2
MHz on the jtag clock (14.7 MHz crystal).
There are indeed some differences between the TDMI and the -S version that
may render your TDMI debugger unusable. The TDMI has a third public jtag
chain and (as far as I remember) supports both INTEST and EXTEST.

A wiggler may do OK for you but I don't like the use of the printer port
(apart from not being available on my laptop). Therefor I decided to go
for a debuggerpod that is connected via Ethernet, using the RDI protocol
which makes it suitable for a wider range of debugger software.
Software is not yet finished, I keep running into small problems from time
to time ...

If the Agilent uses RID, try using another debugger (e.g. gdb). I found
that I could do some debugging with the Jeeni via the RealView debugger
but was not able to do anything with GDB. It may be the other way around
for you.

Regards,

Rob


Reply by Tom Walsh October 26, 20052005-10-26
Michael Johnson wrote:

>A wiggler will do a maximum of 400kHz - I can't remember if we have LPC
>boards that we've had to put a clock divider on to make things reliable
>- so 500kHz may be too fast. Could there be a program in the flash that
>is causing the problem - try erasing the flash using the ISP. >
I was thinking the same thing, I saw the same prob with Abatron BDI2000
+ LPC2138. The processor would give data aborts via the JTAG until I
erased the Flash.
TomW >Regards
>Michael >
>>Hi Michael,
>>
>>Yes. I can set it anywhere from 500kHz to 10Mhz. I've been using it
>>at 500kHZ and 1 Mhz. I should mention I'm using ADS 1.2.
>>
>>Thanks,
>>Mark
>>
>>
>>
>>
>>
>>>Hi Mark,
>>>
>>>Can you divide the JTAG clock frequency?
>>>
>>>Regards
>>>Michael
>>>
>>>
>>>
>>>
>>
>>
>>
>>
>>
>>
>>Yahoo! Groups Links
>>
>>
>>
>>
>>
>>
>>
>>
>>
> >Yahoo! Groups Links


--
Tom Walsh - WN3L - Embedded Systems Consultant
http://openhardware.net, http://cyberiansoftware.com
"Windows? No thanks, I have work to do..."
----------------