running from external memory (microblaze)

F

Frank

Guest
Hello,

I have build a bootloader which is located in block ram. Now I want to
download my final application to sdram and execute it. If I'm correct, I've
to make a linker script in order to make this possible. Besides this, I want
to use the xilkernel in my application, but not in the bootloader, is this
possible? I guess I have to convert the application.elf file to a binary
file in order to be placed into sdram by the bootloader?! How are the
interrupts handled? Is the interrupt handler from the bootloader used
(because it default jumps to address 0x18)? Can I install a new interrupt
handler which is located in my application?!

a lot of questions, I searched at the forums, but there are not much
examples available. I'm sure there a people who already did this before.

Please help,
thanks
 
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
 
<p>Frank wrote:
&lt;blockquote TYPE=CITE&gt;Hello,
<p>I have build a bootloader which is located in block ram. Now I want
to
<br>download my final application to sdram and execute it. If I'm correct,
I've
<br>to make a linker script in order to make this possible.&lt;/blockquote&gt;
Not necessarily. You can simply specify a different start address for your
boot loader and your application on the mb-gcc command line. See the Makefile_mb.sh
and other Makefile*.* files related to MicroBlaze in the Xilkernel install
area.
&lt;blockquote TYPE=CITE&gt;Besides this, I want
<br>to use the xilkernel in my application, but not in the bootloader,
is this
<br>possible?&lt;/blockquote&gt;
Yes.
&lt;blockquote TYPE=CITE&gt;I guess I have to convert the application.elf file
to a binary
<br>file in order to be placed into sdram by the bootloader?!&lt;/blockquote&gt;
Depends on your bootloader. If your bootloader expects binary then you
have to. I have seen bootloaders&amp;nbsp; that use other formats as well,
such as SREC or some application specific encoding.
&lt;blockquote TYPE=CITE&gt;How are the
<br>interrupts handled? Is the interrupt handler from the bootloader used
<br>(because it default jumps to address 0x18)? Can I install a new interrupt
<br>handler which is located in my application?!
<p>a lot of questions, I searched at the forums, but there are not much
<br>examples available. I'm sure there a people who already did this before.
<br>&amp;nbsp;&lt;/blockquote&gt;
There are some examples of Xilkernel usage in the install area itself (search
for print_thread.c).
&lt;blockquote TYPE=CITE&gt;&amp;nbsp;
<br>Please help,
<br>thanks&lt;/blockquote&gt;
&lt;/html&gt;
 
Thank you for your information, I am busy with getting XMK working and building an application with his own makefile (which specifies another start address as the bootloader). At this moment one thing is not clear to me: how are interrupts handled? The microblaze jumps to address 0x18, but in my case that's the bootloader in block ram. And I want to handle the interrupts in my application of coarse. Is that possible and if so, how?

TIA,
Frank

"mohan" &lt;mohan@xilinx.com&gt; wrote in message news:3FC39566.9B1CF116@xilinx.com...

Frank wrote:

Hello,
I have build a bootloader which is located in block ram. Now I want to
download my final application to sdram and execute it. If I'm correct, I've
to make a linker script in order to make this possible.

Not necessarily. You can simply specify a different start address for your boot loader and your application on the mb-gcc command line. See the Makefile_mb.sh and other Makefile*.* files related to MicroBlaze in the Xilkernel install area.
Besides this, I want
to use the xilkernel in my application, but not in the bootloader, is this
possible?
Yes.
I guess I have to convert the application.elf file to a binary
file in order to be placed into sdram by the bootloader?!
Depends on your bootloader. If your bootloader expects binary then you have to. I have seen bootloaders that use other formats as well, such as SREC or some application specific encoding.
How are the
interrupts handled? Is the interrupt handler from the bootloader used
(because it default jumps to address 0x18)? Can I install a new interrupt
handler which is located in my application?!
a lot of questions, I searched at the forums, but there are not much
examples available. I'm sure there a people who already did this before.


There are some examples of Xilkernel usage in the install area itself (search for print_thread.c).

Please help,
thanks
 
&lt;!doctype html public "-//w3c//dtd html 4.0 transitional//en"&gt;
&lt;html&gt;
&lt;body bgcolor="#FFFFFF"&gt;
MicroBlaze always jumps to 0x8 or something like that on interrupt. The
initialization code for your application writes the address of your interrupt
handler into this low memory so that when an interrupt occurs, MicroBlaze
jumps to the fixed low address and from there to your interrupt handler.
<p>Frank wrote:
&lt;blockquote TYPE=CITE&gt;At this moment one thing is not clear to me: how
are interrupts handled? The microblaze jumps to address 0x18, but in my
case that's the bootloader in block ram. And I want to handle the interrupts
in my application of coarse.&lt;/blockquote&gt;

&lt;/body&gt;
&lt;/html&gt;
 

Welcome to EDABoard.com

Sponsor

Back
Top