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.



Tool/software: TI-RTOS

Hi ,sir

  We are developing an bootloader project now,it is imported by the latest starterware,the project path is build\armv7a\cgt_ccs\am335x\evmAM335x\bootloader,

I build it by Debug_MMCSD,and all the related libs are also builded by debug mode.

I debug step by step,when the code debuged to MMCSDCardInit,it tips:

Break at address "0x20010" with no debug information available, or outside of program code.

MMCSDCardInit function is related to mmcsdlib,the source code is on the patch: mmcsdlib\mmcsd_proto.c .

I tested this for started by SD,before this problem,the SBL is start up,and we can see the start log on putty,

after SBL,it will copy app to RAM,so it will mount sd first,when it go to MMCSDCardInit() function,it seems crashed.

then I step into it ,it shows:

Could you please help to resolve this issue?

  • TI is no longer supporting older starterware baseline available in standalone package on E2E forums. Please migrate to Processor SDK RTOS software for AM335x:

    In the Processor SDK RTOS, there are no CCS projects for building bootloaders. The build is based on makefile using the instructions provided here:

    If this is a custom board, then we expect that you first test your SD/MMC interface using simple diagnsotics to test functionality before porting the TI provided bootloader

    Hope this clarifies the support.

  • Hi Rahul

          Thank you for your suggestion,I follow your advice,and I can start up on beaglebone board,

    but I can't use the same MLO and app started on my own board,since  there are no CCS projects for building bootloaders,

    Is there any methord to debug bootloader?

        I am sure our board and sd are corretly,What parts do I need to modify to make my own board work?


  • The general guidance on debugging bootloaders is provided here:

    Refer to the software debug steps. you can load the symbols from .out corresponding to the MLO/._ti.bin file using CCS Debug view using Run->Load Prograd- >Load symbols option and check to see the function being executed or correlate the PC of the ARM counter with symbols in the .map file.

  • Just a guess as I have not used the AM335X. You appear to be using the community version derived from the last TI version. That looks to have been partially updated to a newer version of fatfs. Possibly that the community had not totally tested the update. The community version has not been updated since 2017. The contributors are probably not easy to contact.

    Maybe try the last TI version. It uses a really old fatfs but it should be okay as long as you stay with a FAT16 format.
  • Now the bootloader can start up ,and the app img can be copied into RAM from sd card,but the app can not start up.

    I don't know the reason ,I have no methord to analysis it .

    could you please give me some suggestion?

    the log shows:

    StarterWare Boot Loader
    BOARDInit status [0x0]
    SoC : [AM335X]
    Core : [A8]
    Board Detected : [BEAGLEBONEBLACK]
    Base Board Revision : [[JD-signal]]
    Daughter Card Revision: [[JD-signal]]

    Copying application image from MMC/SD card to RAM

    Jumping to StarterWare Application...


  • Usually your GEL script initiailization is missing. Your emulator does this normally. In stand-alone somebody else has to do the init. It can be put into the AISgen or moved into app or boot code.
  • Norman,

    AM335x bootloader doesn`t use AIGEN formatting so the boot process varies quiet significantly from C6748/OMAPL138.


    Are you loading the app to DDR or OCRAM? How did you confirm that the app is loaded correctly in RAM? Did you check the entry point of the application when loaded from emulator and when loaded by the bootloader appears to be the same.

    If you look at the sbl_main.c file, in the following code, can you confirm the entry point (pfnSBLAppEntry) detected is correct:

    /* Giving control to the application */
    pfnSBLAppEntry = (void (*)(void)) gSblEntryPoint;
    (*pfnSBLAppEntry)( );

    Also, check that the vector table is installed correctly.

  • I stand corrected. Forgot about what processor we are talking about.
  • Rahul

    I have printf the value of pfnSBLAppEntry ,it is 0x8000000,
    in function SblMmcsdImageCopy(uint32_t *pEntryPoint, uint32_t* imageSize),there is no any error return,
    for this , I think that the app is loaded correctly in RAM.

  • Thanks for the update. Do you still need further assistance with this setup. If you are continuing to debug this issue then you can chose to use an working app from the PDK to see how the execution is passed from the boot loader to application and compare it with loading of your application.