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.

RTOS/AM6548: SBL issue

Other Parts Discussed in Thread: TMDX654IDKEVM

Hello All,

I have a problem with executing SBL from the SD card for AM65xx on AM654x IDK.
My configuration is:

CCS ver 8.3.0
Windows version - Windows 10 Pro version 1803
PDK - pdk_am65xx_1_0_3

I built SBL from the cmd line as instructed in:

http://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_Foundational_Components.html#am65x

My openssl version is OpenSSL 1.1.0j 20 Nov 2018
Build seemed successful (I attached gmake output). Source was not modified.

I then prepared SD card (used original SD card shipped with IDK) by copying sbl_mmcsd_img_mcu1_0_release.tiimage as tiboot3.bin set the bootmode pins and tried booting.
However, I did not get anything from the MCU UART. If I use original tiboot3.bin everything works as expected.

I checked the map file and it seems ok:


OUTPUT FILE NAME: </ti/pdk_am65xx_1_0_3/packages/ti/boot/sbl/build/../../../../ti/boot/sbl/binary/am65xx_idk/mmcsd/bin/sbl_mmcsd_img_mcu1_0_release.xer5f>
ENTRY POINT SYMBOL: "_sblResetVectors" address: 41c00100


MEMORY CONFIGURATION

name origin length used unused attr fill
---------------------- -------- --------- -------- -------- ---- --------
RESET_VECTORS 41c00100 00000100 000000d8 00000028 X
OCMRAM_SBL 41c00200 00027e00 00020490 00007970 RWIX
OCMRAM_SBL_SYSFW 41c28000 00040000 00000008 0003fff8 RWIX


SEGMENT ALLOCATION MAP

run origin load origin length init length attrs members
---------- ----------- ---------- ----------- ----- -------
41c00100 41c00100 000000d8 000000d8 r-x
41c00100 41c00100 000000d8 000000d8 r-x .rstvectors
41c00200 41c00200 00010450 00010450 r-x
41c00200 41c00200 00010450 00010450 r-x .text
41c10680 41c10680 00003b80 00000000 rw-
41c10680 41c10680 00003b80 00000000 rw- .data
41c14200 41c14200 00003ad0 00000000 rw-
41c14200 41c14200 00003ad0 00000000 rw- .bss
41c17cd0 41c17cd0 00000e68 00000e68 r--
41c17cd0 41c17cd0 00000e68 00000e68 r-- .const
41c18b80 41c18b80 00000b88 00000b88 r--
41c18b80 41c18b80 00000500 00000500 r-- .boardcfg_data
41c19080 41c19080 00000688 00000688 r-- .cinit
41c21000 41c21000 00005000 00000000 r--
41c21000 41c21000 00000800 00000000 r-- .undStack
41c21800 41c21800 00002000 00000000 r-- .svcStac
41c23800 41c23800 00001000 00000000 r-- .irqStack
41c24800 41c24800 00001000 00000000 r-- .fiqStack
41c25800 41c25800 00000800 00000000 r-- .abortStack
41c26000 41c26000 00002008 00000000 rw-
41c26000 41c26000 00002000 00000000 rw- .stack
41c28000 41c28000 00000008 00000000 rw- .firmware

What am I missing here?

Best regards,

Milan

SBL_gmake_log.txt

  • Milan,

    I split your post into a new thread to track it as a separate/new question and moved it into the appropriate forum that will be able to support this.
  • Hello AartiG,

    Thank you on the quick reply and sorry for posting on the wrong thread.

    I did some debugging by modifying sbl_main.c and placed the printf just before Load SYSFW:

        SBL_log(SBL_LOG_MIN, "%s", SBL_VERSION_STR);
    	
        /* Load SYSFW. */
        SBL_SciClientInit();

    Now I get "SBL Revision: 01.00.09.0" from MCU UART but baudrate is 57600. After this I receive no more logs.
    So it seems that SBL starts executing after all. I will check this further.

    Best regards,
    Milan

  • Milan,

    I am not sure why you need to change the MCU UART baud rate to 57600. The SBL is designed to log messages to the MCU UART at 115.2 kbps assuming a input clock of 25 MHz. Are you trying this on a custom board ? Have you modified any of the default DPLL setup? For the processor SDK RTOS version that you are using, you have an additional requirement of  using sysfw.bin along with tiboot3.bin.

    The SYStem firmware for the M3 was separated from the tiboot3.bin image as specified in the Release notes for this version of the SDK so please ensure that you are following the steps here:

    If you are debugging this on your platform, you can follow these steps to step through the SBL code:

    • When the code crashes, attach CCS.
    • From the menu select Run->Load->Load Symbols ->
    • Browse and select the SBL executable - for eg - sbl_mmcsd_img_mcu1_0_release.xer5f and hit enter.
    • You will now see symbols in the disassembly window. If you are prompted, use CCS to browse to the directory where the sources are. CCS will show up the source corresponding to the disassembly.

    Another tip is to increase the SBL logging Level to 3 in the build. This will output more messages in the UART to point to the failure. Check description of SBL_LOG_LEVEL here 

    http://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_Foundational_Components.html#building-the-sbl-and-its-components

    Hope this helps.

    Regards,

    Rahul

  • Hello Rahul,

    I added sysfs.bin to the SD card and now SBL boots fine.
    Thank you on the quick reply and advices for debugging.

    I am using AM65x industrial development kit (IDK) - TMDX654IDKEVM without any modifications.
    Regarding MCU SBL I just modified sbl_main.c by adding SBL_log line before SYSFW loading like in my previous message.
    I was not sure if SBL was loading and executing at all and that is why I added this log line.
    What I observed afterwards is that MCU UART sends the log message exactly on 57600bps so I had to adjust my terminal baudrate accordingly.
    I did not modify clock settings for AM65xx anywhere.

    Best regards,
    Milan