DSPRelated.com
Forums

Overlay

Started by suvyakta bhat April 23, 2002
Hi All,
I use Adsp-21065l in my application.
We have ADSP and Arm based Samsung microcontroller
sharing an external memory area.

As our ADSP code exceeds the eprom size, we plan to
retain only the boot code with overlay manager in the
eprom and Samsung microcontroller to place
the additional code (algorithms) in the external
memory. This code should be overlayed by ADSP later.

Which utility should be used in ADSP to generate an
output file which can be placed by the microcontroller
and recognized by the overlay manager running in the
internal memory (bootloaded from the eprom).
If anyone has any Idea about it let me know.
Regards,
Bhat.




On Tue, 2002-04-23 at 08:13, suvyakta bhat wrote:

> Which utility should be used in ADSP to generate an
> output file which can be placed by the microcontroller
> and recognized by the overlay manager running in the
> internal memory (bootloaded from the eprom).
> If anyone has any Idea about it let me know.

There's an option in the LDF output sections to control whether output
is generated to the ELF (.DXE) file for each section. Create two LDF
files that are identical except for which sections go to the ELF file.
Then link twice, once for code you want to go to the EPROM, and once for
code to go to host-loaded overlays. Finally, use the loader utility to
create the EPROM image from the first ELF file and a host image from the
second ELF file.


[Please reply to the list, not directly to me.]

On Wed, 2002-04-24 at 04:33, suvyakta bhat wrote:
> Hi,
> Thank you for your reply. I have tried to follow your
> steps but couldn't get the exact idea. I have few
> doubts.
> This is how I tried to implement.
> For the prom boot code my ldf was linking to a small
> piece of code which would dma the code put on to the
> external memory through the microcontroller.
> My hostloadable code consisted of the overlay
> manager,my overlayed algorithms.(the entire
> project).Suppose I use a loader then the boot loader
> Kernel file code would also be placed in the external
> memory.That code is supposed to do boot strapping for
> eprom boot mode.So how do we manage it here. Do I

Nope, the EPROM boot kernel goes in internal memory, and is for loading
the body of your program, in this case your overlay manager.

> need to have a seperate kernel for host loading.
> Is there no other direct way of meeting the purpose.

Nope, you ignore the host kernel. I haven't used that before so you
might need to write some Windows code to strip off the host kernel from
the second image and just spoon-feed the overlays to the SHARC.

You should read the ADI app notes on how booting works so you have an
intimate familiarity with the kernels. You're going to need to replicate
some of what they do.


Hi Suvyakta

Further to the answers from Kenneth, I have
done something very similar on a 21160 to
what you are trying to do with your 21065l
and Arm based Samsung microcontroller.

As Kenneth rightly points out, the first stage
to combine a (custom) boot-loader with your
overlay manager destined for your Flash is
relatively straightforward. You are likely to
have to customise your boot loader so that
you correctly map the external shared
memory with your Samsung MCU.

The rest of your application code is slightly
more problematic as the elfloader seems to
insist on having two images. The first is
normally the 256 word primary bootloader
named under
Project=>Project Options=>Load=>Kernal file:
The second is meant to be your application,
which is the Project that you have open.

This is fine for your first stage (bootloader
plus overlay manager), but not so clever for
your application code that the Samsung
MCU will place in the shared memory for
your 21065L.

I got around this by generating a dummy
application & project which just contained
a NOP instruction. This satisfied elfloader,
which happily appends a NOP instruction
onto the end of my application, which is
named as the 'Kernal file:'. I use the Boot
type "Host" option with Format "Binary"
option and load this image into Dual Port
RAM over a PCI Bus shared between PC
host and 21160 DSP card.

Admittedly I haven't done this with more
than a test application yet, so I don't know
if elfloader will spot that its "bootloader" will
somewhat exceed 256 words with the proper
application!

You might find this easier to write out as a
header file, and include it with one of your
Samsung sources, or alternatively as Hex.
You haven't said how your Samsung gets
loaded with its code.

Someone may well come up with a prettier
solution!

Just watch the endian formats - you may
need to swap bytes around as you load
your shared memory with your main
application image. ADI is big endian.

Hope the above helps.
Cheers

Andy Coles
Software Engineer
Electronic Navigation Limited
65 Gaunt Street
Westhaven
Auckland
New Zealand
Tel. +64 9 373 5595