Thread (7 messages) 7 messages, 4 authors, 2006-11-28

Re: RE : Using Linux on ML405: Some basic questions

From: Andrei Konovalov <hidden>
Date: 2006-11-28 15:55:40

Peter Mendham wrote:
alayrac wrote:
quoted
<----> I have a few questions, I was wondering if someone could help me
<----> out:
<----> 
<----> 1) I don't really understand how the kernel image gets loaded from
<----> the .ace file.  I've seen articles which say that the SystemAce
<----> controller puts the kernel image directly into RAM, but on
<----> inspection of the datasheet I can't see any capability other that
<----> JTAG programming and acting as a slave to a processor.  Can anyone
<----> explain the way this works?

XACCACE can load an ace file from a FAT16 partition into the FPGA fabric
using boundary scan chain (JTAG).

First of all it loads the FPGA fabric, the bitsream file. If you have a
look in Applications in the ML405 project there should be a bootloop
code marked as activated and as used to initialized BRAM. 
This code is loaded at address 0xFFFFFFFC (where there is a BRAM) wich
is the reset address of the powerpc. Thus after bitstream dowload, the
powerpc is in an infinite loop so that it won't try to access any
peripheral, especially memory.

Then systemeace will downlaod the elf file, in your case the kernel
image (it could be standalone apllication as well as uboot).

To do so the systemace take controle of powerpc through jtag chain (just
as you are dowing with the JTAG cable when you are debugging you code on
powerpc inside the FPGA). In fact the FPGA fabric include a JTAG daisy
chain, so that the PowerPC is seen on JTAG chain after FPGA
initialization (if you start an xps design from scratch you will see in
the wizard that you can select the debug chain of your powerpc from JTAG
or stub...)

So just to finish, as soon as system ace can see the PowerPC through
JTAG, it can see and use all powerpc peripherals and espaecially the
memory in your case. So it read the destination address of the elf image
to laod (from the elf file itself) and just copy the data at the
specific address. Then it put the PC at this address and sart the
powerpc.
  
Wow.  Thanks Chris, that makes a lot of sense, although I had no idea 
that the SystemAce chip was quite so clever.  I take it that the 
bitstream in the .ace file is specially constructed by the tools to do 
the DRAM download?  What is it that produces the text:
loaded at:     00400000 004E21E4
board data at: 004DF13C 004DF154
relocated to:  00405660 00405678
zimage at:     00405C25 004DE92F
avail ram:     004E3000 04000000
I have always assumed that it is a piece of software that does this.  Is 
that correct?
This is from the bootwrapper code (arch/ppc/boot/simple/)
Thanks very much for replying, the information is really helpful.
-- Peter

_______________________________________________
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help