This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

For OMAPL138, how to combine Linux Kernel with a dsp binary to make one AIS file?

Other Parts Discussed in Thread: OMAP-L138

I have a modified Linux kernel and a DSP binary that I want to combine into one AIS file so that when U boot loads the AIS file the Linux kernel and the DSP binary load into the memory space.  That is, I want to do something similar to what's described on the Boot Images for OMAP-L138 wiki (http://processors.wiki.ti.com/index.php/Boot_Images_for_OMAP-L138) but the ARM code is actually the Linux kernel.  I have the SGI EVM board.

The motivation for this is to start some code on the DSP core before the Linux kernel finishes booting.  That is, in my application I need to start my DSP core application very quickly on power-up, so I can't wait for Linux to finish booting.  So the Linux kernel modification sets the DSP boot address vector to the entry point of the DSP program, then reboots the DSP (just like the example code in the wiki).  But I need to get both the kernel and the DSP binary loaded into memory (and of course the DSP loaded into the location where I set the DSP boot address).  I think the uImage file is already in AIS format, so where can I find the binary version of it and then can I use the AISgen tool to combine the binary uImage and the DSP binary?

Thanks,

Jeff

  • Jeff, I think the version of the kernel file you are looking for is the vmlinux file. 

    I'm not sure if the DSK has the vmlinux included in the prebuilt directory.

    If not, you may have to rebuild to create it.

  • Thanks Dave.  Yes I see it and it looks like it was built at the same time that my modified uImage was built.  It looks to be 5MB whereas the Image is 3.6MB and uImage is 1.7 MB.  The Image and uImage are in ../arch/arm/boot.  So I assume that uImage is the compressed version of Image.  But what's the difference between vmlinux and Image?  Can I boot with an uncompressed kernel?

  • Hi Jeff,

    Please refer the below link:

    http://processors.wiki.ti.com/index.php/OMAP-L138_Bootloader

    Topic: Do I need a secondary bootloader (UBL)?

    As per this, the U-Boot needs to be in AIS format.

    uImage means the Linux kernel image has the U-Boot header.

    You may integrate the DSP application with U-Boot image using AISgen tool and then boot this image. 

    When Linux boots, you can boot the DSP.

    -Thanks,

    Balaji N

     

     

     

     

     

  • Hi Balaji,

    Thanks for the response.  Yes, I could combine the DSP app with U-boot, but I would like to try to combine the Linux kernel with my DSP application instead.  This is because this approach would be simpler on my SGI EVM board since I wouldn't have to re-flash the serial prom with a modified U-boot, I could just use the standard U-boot which is already in the flash and then have it load the combined Linux kernel and DSP app from the SD card.

    Do you know if the vmlinux file is the right one (that is the linux kernel that doesn't have the AIS header on it yet?)

    Thanks,
    Jeff

  • Hi Jeff,

    If the U-Boot boots, then ROM bootloader lost its control.
    U-Boot does not parse the AIS image (Linux and DSP application) and load the code to memory.

    The option is:

    You can convert your dsp application code to C Array, then include this code in Linux source,
    the booting time, copy this code to memory and wakeup the DSP by own.

    To access the memory and wakeup, you need to take care of Linux OS related things, i.e.using Linux Kernel APIs and access techniques.

    For bootloader, refer this link: http://www.ti.com/lit/an/sprab41d/sprab41d.pdf

    -Thanks,
    Balaji N

  • Hi Balaji,

    How do I convert my DSP app code to a C array?

    Wouldn't it be easier to combine the Linux kernel with the DSP app into one AIS file like the example in http://processors.wiki.ti.com/index.php/Boot_Images_for_OMAP-L138?  In this example both the arm code and the dsp code are combined into one AIS file which is loaded into memory right? Why can't I do the same thing but with the Linux kernel?

    Thanks,
    Jeff