Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

How ARM7TDMI JTAG controls can program Flash memory? [HELP]

158 views
Skip to first unread message

cromr

unread,
Apr 26, 2005, 6:02:21 AM4/26/05
to
Hi All,

I am very new to ARM and currently i am using a development board that
have an ARM7TDMI testchip core on it. It have a Multi-Ice connector
for programming.

I want to write some codes for the ARM7 and put it on Flash.
I understand that any flash programmer that can use Multi-Ice
interface can program the ARM7, but i was wondering how does the
actual flash programming is done. Please bear with me as i am not so
sure how to ask my question :(
I even not sure how to write the subject for this topic.

I review my development board schemetics and i found out that the
Multi-Ice is only connected to the ARM7 JTAG controls pins
(TCK,TMS,TDI,TDO) and some other pins for reset stuff. But there is no
direct connection to the Flash memory or any other memory too. Oh
yeah..please note that the memories are all externally connected to
the ARM7 address and data bus.

So i was wondering, if i program my flash memory, the ARM7 will do all
the flash programming work for me? Will the ARM7 generate the
appropriate control signals for writing the Flash itself?
I think that Multi-Ice program will tell the ARM7 how to do it, i mean
write data into the flash. Is this correct?This method is more logical
i think.. right?i think i need to understand more on how Multi-Ice
works...
Unfortunately, currently i also still have not got my hands on any
Multi-Ice programs or cables to test it out.. so i was just thinking
about this...

hmmm...does my question make any sense??
i try looking on the web and in steve furber book..but i did not find
anything about this...
i really hope that someone can shed some light into this for me.

thank you very much for your attention and help.

Best Regards,
cromr

Claudio

unread,
Apr 27, 2005, 6:12:41 PM4/27/05
to
mr.c...@gmail.com (cromr) wrote in message news:<331764ed.0504...@posting.google.com>...

Hi,

The JTAG interface was created originally to allow
external control of the pins of a chip for testing
purposes.

An external device (test computer) is connected to
a board under test through the JTAG interface and
applies test vectors (states of the pins), reads
the responses and compares the results.
If other chips in the board also have JTAG interfaces,
these interfaces can be chained together so
pratically all the board can be tested.

The JTAG interface can also be used to access the
in-circuit-emulation hardware contained in most of
the ARM cores (and other processors as well)
Through this hardware is possible to:
- stop the processor.
The processor stops and enters debug mode.
- set hardware breakpoints.
This is used mainly for debugging.
- inject instructions into the processor data bus.
This feature is very important because it allows to,
using the apropriate instructions, to read and write
to any memory connected to the processor.
- restart the processor

To my knowledge there are two ways to write the
Flash connected to an ARM core through the JTAG
interface:

- The first way uses the JTAG to set the state of the pins
of the data, address and control bus of the processor
in the correct sequence to write the Flash.
- The second way stops the processor, downloads a small
program in the processor RAM (if there is any) or
external RAM and runs this program. This program then
accepts commands and data form the JTAG interface
using the Debug Communication Channel.
An external computer connected to the JTAG interface
sends commands and data to this small program to
write the Flash.

The second method is faster because less data is
transmitted through the JTAG interface but on the
other hand it is necessary to have some RAM
available in the system. If the system has only DRAM,
for example, the DRAM must be initialized properly
before it can used, complicating the process.
But most ARM chips has some static RAM available
inside.


Hope it helps,
Claudio

cromr

unread,
Apr 27, 2005, 11:35:08 PM4/27/05
to
hi Claudio,

Thank so much for the reply. really appreciate it :)

my development board uses the ARM7TDMI testchip processor...
and i looked inside its specs and i dont think it have any static RAM
at all... all memory is connected to its data bus as external
memories.. flash and RAM

back to your explanation, so by means of JTAG, the writing software
(maybe adebugger,etc), can setup the appropriate signals inside the
ARM7 to accomplish proper communication protocol with the flash/ram
memory.
if it is using the first method you describe, then the programming
code(my code) will be downloaded thru' the JTAG into flash/RAM
is my understanding correct?

in the second method, we still need to use the JTAG to transfer my code
right?since the only interface available is the JTAG.

actually.. i am asking this question because currently for my
development board i dont have a multi-ice system to program my flash.
still waiting for arrival. But i do have an other JTAG cable (Xilinx
Parallel IV JTAG cable) that is used to program FPGA.
So i was wondering if i can use this cable for my flash programming
while waiting for my Multi-ice.
I was considering using Keil built in Flash writer if its possible. do
you think its possible?
I think i need to know how Keil does its flash programming.
Thats why i was wondering about ARM JTAG properties.

Anyway, i think i understand more now... thanks a lot for you info.

Best Regards,
cromr

Laurent Gauch

unread,
May 4, 2005, 2:35:43 AM5/4/05
to cromr
Hi,

Please have a look on the 'ARM Debug ValuePack' from www.amontec.com .
The 'ARM Debug ValuePack' comes with :
- one Chameleon POD
- one Multi-ice 20-pin arm adapter
- one USB powwer cable
Close to $160.-

The Chameleon POD can be programmed as a Raven or as a Wiggler JTAG
interface. The Raven is 30x faster as the Wiggler ! A free Chameleon
Programmer will upload the Chameleon configuration in the seconde.

Then, you may download the pre-compiled gnuarm tools from
http://www.amontec.com/amt_gnuarm.shtml (actual release is 4.0).

The GNU tools include the GDB debugger you can use to do you 'Flash
upload application'.

Larry

0 new messages