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.

Running code in emulation boot mode

Hi,

 So when I try to run my application in emulation boot mode, I get a load program error in the DDR memory.  It works fine when I run the evmc6678l.gel file. I believe it fails because I have multiple sections being allocated in the DDR3 in my .cfg file.  I am porting the evmv6678l.gel file into an interal .c file but I can't find the correct spot to call the init function.  In the XDC startup i tried in the last function and I tried in the first function.  Neither worked.  Please help.

Thanks,

Will

  • Will,

    When you run the GEL file, it initializes your DDR3 memory interface (EMIF) so you can use the DDR3 for storage. In a hardware boot mode, something will be configured to initialize the DDR3 either by a secondary bootloader or by parameters supplied to the ROM Boot Loader.

    In the case of emulator boot, you either need to use the GEL file or you need to duplicate the process that a hardware boot mode will go through.

    One option is to load an EMIF initialization routine into internal memory, run it to completion, then load your application into DDR3. The other option is to use the GEL file.

    Why do you want to avoid using the GEL file?

    Regards,
    RandyP

  • Randy,

    I was trying to understand how the functions called before module initialization worked.  I didn't know if this was the correct place to call the init routine for the DDR ram.  I will need to load the executable code from I2C in the near future and I know I can't use a gel file for that purpose.  THats the reason to move away from the gel script. 

    Will

  • Will,

    You marked this as Answered, but do you have your complete answer, yet?

    I am not an expert on the C6678 bootloader but now that I know you want to use I2C boot, I can offer a little information that may help. The EVM has an I2C bootloader burned into the board if you select I2C boot, and I believe the sum of documentation in the Bootloader User Guide + Wiki + other forum posts + EVM documentation + MCSDK documentation will have enough information for you; that sounds like a lot, but you can scan and search and sort to find the relevant parts.

    In I2C boot mode, you will be constructing boot tables. Some of these are Boot Configuration Tables that allow directed writes of data to specified addresses, and that is the way to duplicate the initializations that are done in the GEL script prior to copying code into DDR3 memory space. Other initializations may be needed for other peripherals only if those are also used during the boot process, but not if they can be initialized by function calls from main() or later in your code.

    Regards,
    RandyP