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: Boot from uart and loading application via uart

Expert 1680 points
Part Number: TMDXSK437X

Hi Team,

I am testing boot from uart and than load application from uart and execute it

I would like to use the led blink sk demo (TI RTOS) for this test.

I am doing so on the AM437x SK, which was modified to boot from UART.

After boot , when looking at the terminal I get 'C' printed continuously which, as I understand indicates that the  SK is in UART boot mode.

How do I go about actually downloading the application and executing at this stage ? 

is there anything I should do for the application output file before I download it with the uart ?

  • Hi inno,

    inno said:
    is there anything I should do for the application output file before I download it with the uart ?

    The required formats for UART boot are described here: https://software-dl.ti.com/processor-sdk-rtos/esd/docs/06_03_00_106/AM437X/rtos/index_Foundational_Components.html#tools-and-binary-formats

    For UART, the .bin format should be used for both the bootloader and the application.

    The format conversion is described here: https://software-dl.ti.com/processor-sdk-rtos/esd/docs/06_03_00_106/AM437X/rtos/index_Foundational_Components.html#binary-format-conversion-procedure

    The bootloader build procedure is described here: https://software-dl.ti.com/processor-sdk-rtos/esd/docs/06_03_00_106/AM437X/rtos/index_Foundational_Components.html#building-the-bootloader

    The .bin file for the UART bootloader is generated during the build and is located here: <PDK>\packages\ti\starterware\binary\bootloader\bin\am43xx-evm\gcc.

    inno said:
    How do I go about actually downloading the application and executing at this stage ? 

    This is documented here: https://software-dl.ti.com/processor-sdk-rtos/esd/docs/06_03_00_106/AM437X/rtos/index_Foundational_Components.html#booting-via-uart

    Regards,
    Frank

  • Thanks for the fast response

    your information indeed helped me a lot

    a quick complementary question :

    in the links you sent , I found the following table : 

    while the GPEVM supports boot from uart , the SK does not.

    looking at the schematics , the both use DDRs , but the GPEVM DDR is twice the side as the SK DDR (other than that they seems the same)

    does the table refers only for the HW limitations : for example @ the starter kit I had to manipulated the sysboot resistors , or does it refers to boot loader software?

    or from a different angle : Can I use the boortoader image "bootloader_boot_uart_a9host_debug.bin" on the SK ? 

    or am I missing something ?

     

  • Hi inno,

    inno said:
    Can I use the boortoader image "bootloader_boot_uart_a9host_debug.bin" on the SK ? 

    This is a good question. I haven't tried to use the UART bootloader on an AM437x StarterKit EVM.

    inno said:
    while the GPEVM supports boot from uart , the SK does not.

    I checked the SYSBOOT pin connections on the hardware platforms in the table.

    • The default SYSBOOT resistor connections on the AM437x IDK and SK don't provide UART as a boot source, and these platforms don't support UART boot.
    • The default SYSBOOT resistor connections on the AM335x SK and BBB provide UART as a boot source, and these platforms support UART boot.
    • The AM335x ICEv2 SYSBOOT resistors (and jumper) allow selecting UART0 as a boot source, but UART0 is connected to a CAN transceiver. This platform doesn't support UART boot.
    • The SYSBOOT connections for the remaining is configurable via DIP switches, and UART boot is supported.

    inno said:
    but the GPEVM DDR is twice the side as the SK DDR

    The smaller DDR size shouldn't be a problem, as long as the application image isn't loaded to DDR that does exist on the platform. Inspecting the bootloader source code, I see the following:

                main()
                    SBLPlatformConfig()
                        SBLPlatformDdrInit()
                            else if(BOARD_EVMSK == boardId) /* For IDK EVM - DDR3 */
                            {
                                ddrCfg = EVMSK_DDR3_CONFIG;
                                memType = SBL_PLATFORM_MEM_TYPE_DDR3;
                            }
    

    Hence I think bootloader should properly configure DDR for the StarterKit.

    I don't have an SK board, but I tried loading bootloader_boot_uart_a9host_debug.out and bootloader_boot_uart_a9host_release.out to an AM437x IDK via JTAG to see if it would work.  The loader unexpectedly throws an error:

    CortexA9: Trouble Writing Memory Block at 0x402f0074 on Page 0 of Length 0x7ff0: (Error -1065 @ 0x3D5A) Unable to access device memory. Verify that the memory address is in valid memory. If error persists, confirm configuration, power-cycle board, and/or try more reliable JTAG settings (e.g. lower TCLK). (Emulation package 8.4.0.00006)

    This memory is listed as unavailable in the TRM, but I don't see anything linked to this memory range in the the bootloader .map files. I'll try to figure this out in the next few days.

    Can you see if you can load bootloader_boot_uart_a9host_debug.out to your SK board? If you can load the bootloader, then you can debug it like any other application. Please see: https://software-dl.ti.com/processor-sdk-rtos/esd/docs/06_03_00_106/AM437X/rtos/index_Foundational_Components.html#software-debug-steps, Emulator based debugging of boot.

    Regards,
    Frank

  • Thanks

    It seems that I am able to use the bootloader image as is, with the (modified sysboot pins) SK board

    I managed to load the ledblink and run it successfully