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.

TMDXSK437X: TMDXSK437X - am437x starter kit - boot from usb

Expert 1130 points
Part Number: TMDXSK437X
Other Parts Discussed in Thread: AM4377, UNIFLASH

Hi Team,

I am trying to make the am437x starter kit boot from usb stick

I made the following process :

1) I compiled the GPIO led blink project and put it on the SD card that I have been using in the past with tirtos (idkam437x)

2) I put the sd card to the starter kit , and was able to boot from it and see the lid blinking

3) I did the procedure from http://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_overview.html  section 1.1.11.3

I used the evm image (not starter kit) and and win32 disk imager to write the image to a usb stick

4) the result was a usb stick with mlo and app. I replaced the app with the app from (1) which I made sure was working.

5) looking at the HW boot order of the starter kit is mmc0 -> usb1 ->usb0 -> qspi. I removed the sd card and reset the HW

nothing happens (on the HW or at the uart terminal) . noot does not seems to start

what do you think I am doing wrong ? what are the requirements from the usb stick ? will any stick work ?

should I copy mlo from sd card to the usb stick ? or should I use a different mlo ?

other ideas?

  • Hi,

    The procedure you mention is for creating a bootable SD card, not a bootable USB stick.

    USB boot isn't supported in PRSDK. Please the the following documentation concerning supported boot modes:

    Regards,
    Frank

  • Hi Frank,

    Thanks for a prompt response.

    The links seems not to work as they lead to an error message.

    Can you provide more details?

    Do you mean that usb boot only works with linux rt os? And not ti rtos?

  • Hi,

    R2d2 said:
    The links seems not to work as they lead to an error message.

    I fixed them.

    R2d2 said:
    Do you mean that usb boot only works with linux rt os? And not ti rtos?

    USB boot isn't supported in Processor-SDK-RTOS.

    Regards,
    Frank

  • Hi Frank,

    In the final product I am involved with , we would like to eliminate the SD Card in order to reduce the number of available opening in the product's cover and save PCB space.

    Product may have uart and\or usb and\or ethercat\ethernet ip connectors.

    The sitara am437x (we plan to use am4377) technical reference guide says that USB boot is one of the available boot options.

    we thought about using the usb connector as it is already "there" : it may be used for configuration and setup of the product , and if need be , used for boot when a sw update is required after a SW crash or when the flash is 'new'

    Can you suggest an alternative solution to SD card boot (for the case of no sw @ product's flash) ?

    I looked also at the uart boot option, but as far as I could tell, boot from uart will require an additional JTAG connection to setup the processor for uart boot mode. Is this accurate ? maybe I miss understood ?

    As far as TI RTOS boot from USB : is there a way to still do this : for example if we were to make changes to the MLO code?

  • Hi,

    R2d2 said:
    The sitara am437x (we plan to use am4377) technical reference guide says that USB boot is one of the available boot options.

    USB boot is supported by the ROM bootloader (RBL), but not the Secondary Bootloader (SBL) in Processor-SDK-RTOS. Linux supports USB boot.

    R2d2 said:
    I looked also at the uart boot option, but as far as I could tell, boot from uart will require an additional JTAG connection to setup the processor for uart boot mode.

    The boot mode is configured using SYSBOOT pins, so no JTAG connection is needed. Please see the AM437x TRM, 5.2.5.2 SYSBOOT Configuration Pins.

    Uniflash can be used to program flash over UART. Please see https://software-dl.ti.com/processor-sdk-rtos/esd/docs/06_03_00_106/AM437X/rtos/index_board.html#uniflash.

    Regards,
    Frank

  • Hi Frank ,

    looking at the documentation : uniflash supports a custom board ? 

    I need to setup the boot options so that UART is there (An before the SD card, for example , in the boot order). right ?

    I see in C:\ti\uniflash_6.1.0\processors\FlashWriter - names of idks and evms ...

    which should I use for my custom board ? 

  • Hi,

    R2d2 said:
    looking at the documentation : uniflash supports a custom board ? 

    You'd need to make modifications for a custom board.

    R2d2 said:
    I need to setup the boot options so that UART is there (An before the SD card, for example , in the boot order). right ?

    Yes, if you want UART boot to have priority over SD boot.

    R2d2 said:
    which should I use for my custom board ? 

    For AM437x it appears only the AM437x IDK is supported for QSPI flash.

    Regards,
    Frank

  • Hi Frank,

    Can you help with a link that may explain how/ what do i need to adopt uniflash to a custom board?

    You mentioned this as a solution to the above problem, but its not clear to me how do i apply this solution to a custom board

    Another question - about usb mass storage device boot-

    When i look at this link

    Starting from Page 196  - it seem that we should be able to boot from a mass storagec device ( section 5.2.6.8) and even do a peripheral boot ( which is probably what is done by uniflash).

    As far as i can tell , the only limitation is the code size (220 kb)

    Do you have a demo ( maybe mlo , and a simple led blink app or uart 'hello world' demo), i can use to try this?

  • Hi,

    R2d2 said:
    Can you help with a link that may explain how/ what do i need to adopt uniflash to a custom board?

    I'm unaware of any detailed documentation. However, please see this e2e post: https://e2e.ti.com/support/processors/f/791/p/905529/3348158#3348158

    R2d2 said:
    Starting from Page 196  - it seem that we should be able to boot from a mass storagec device ( section 5.2.6.8)

    R2d2 said:
    As far as i can tell , the only limitation is the code size (220 kb)

    The ROM Boot Loader (RBL) supports USB MSC boot.  It should be possible to boot using this mode provided you adhere to the constraints listed in the TRM, Section 5.2.6.8. It appears the image is booted to OCMC_RAM (0x4030_0000) and has maximum size of 220 KB:

    Data transfer is performed using the USB core’s DMA, so the boot image can be loaded only from
    0x40300000 because the internal memory of the ARM is not accessible to the DMA. This restricts the
    maximum image size to 220KB.

    Processor-SDK-RTOS doesn't provide a Secondary Boot Loader (SBL) for USB. SBL supported modes are listed here: https://software-dl.ti.com/processor-sdk-rtos/esd/docs/06_03_00_106/AM437X/rtos/index_Foundational_Components.html#boot-modes

    R2d2 said:
    Do you have a demo ( maybe mlo , and a simple led blink app or uart 'hello world' demo), i can use to try this?

    No, I don't such have a demo/example. You'll need to create this on your own.

    R2d2 said:
    even do a peripheral boot ( which is probably what is done by uniflash).

    Right.

    Regards,
    Frank

  • Hi Frank,

    do you have more documentation about UCB RBL Boot ? app notes ? other ?

    any data that will help me get started with this process ?

  • Hi,

    I'm unaware of any material to help with this process. I've looped in a colleague who might have more information.

    Regards,
    Frank

  • Hi,

    My colleague doesn't have much more information that I have. He's what he told me:

    • Unaware of any documentation about RBL USB Boot
    • PRSDK SBL doesn't have a USB stack to support the USB function 
    • Linux U-Boot supports it and could be a reference

    Regards,
    Frank