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.

EVMK2H: How to use boot examples to do something useful?

Part Number: EVMK2H

Hello,

I have cloned the boot examples repository and I have followed the instructions at the link below for launching the UART multistage example

http://processors.wiki.ti.com/index.php/KeystoneII_Boot_Examples

Both stages run successfully and at the end I see the intended output but I have a few questions about these examples that I need answered to clear up some confusion:

It's not clear how I might boot up something like Linux, VxWorks, or even U-boot from this example. My system has a requirement to boot very quickly(seconds) and it appears that the multistage examples can help with this by performing all system critical init as fast as possible in the first stage and then theoretically launch the next stage very quickly. However, the 2nd stage code in these examples appears to be a simple bare metal application that starts the cores and runs an idle loop.

Does TI have any guidance on loading an OS or U-Boot in the second stage or from the second stage? I know I could use U-Boot alone without the boot examples but the boot examples appear to be more lightweight and more conducive for a fast boot process.

Is loading an OS with the boot examples left as an "exercise for the user"?

Could I simply relocate my OS code to DDR after 1st stage has completed all platform initialization?

Thanks,

Brandon

  • Hi Brandon,

    Those boot examples are for TI RTOS.

    If you want to use Linux you will have to use u-boot & optimize the boot time:
    remove unnecessary prints & drivers
    remove the boot delay countdown
    maybe consider falcon boot where you have MLO -> linux kernel, instead of MLO-> u-boot -> Linux kernel.

    Best Regards,
    Yordan
  • Thanks for the reply Yordan. Apart from the singular mention of the word "RTOS" in that page, I would have had no idea that the boot examples were meant to be used with TI RTOS.

    I have been debating whether or not to just slim down U-boot but the Keystone II boot examples seemed to implement the bare minimum that I needed to accomplish to get my board running before handing control over to VxWorks. I still think it could work for me if I could do two things:

    1) Bundle vxworks into the second stage of the multistage example - I have an idea for this

    2) Somehow indicate to the ROM bootloader(RBL) that for the second stage I want to load my code to an address in DDR and then execute from the correct start address.

    I had hoped the boot parameter table would perhaps let me change how the RBL loads and runs code after calling romBootRentry but I could not find any discernible way of setting this up. It seems like all code, at least for UART and SPI boot, wants to run from multicore shared memory (MSMC) @ offset 0x0C000000. Is this true? Are there any documents that describes this exactly as well as maybe the format of the ARM ROM region (0x00001000) and the boot parameter tables?

    Thanks!
    Brandon
  • Hi,

    I still think it could work for me if I could do two things:

    1) Bundle vxworks into the second stage of the multistage example - I have an idea for this

    2) Somehow indicate to the ROM bootloader(RBL) that for the second stage I want to load my code to an address in DDR and then execute from the correct start address.


    I cannot help here, because VxWorks is a third party OS and I am not familiar with it.
    Information about 66AK2Hx ARM bootloader & DSP bootloader can be found in the following user guides:
    www.ti.com/.../spruhj3.pdf
    www.ti.com/.../sprugy5c.pdf

    Best Regards,
    Yordan