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/AM4376: Custom board configuration for SD card boot

Part Number: AM4376

Tool/software: TI-RTOS

Hello,

I am trying to run the RTOS template application on a custom board. In order to do that I'd like to boot the board via a SD card. Hence, I am following the procedure described here : 

The "booting via SD card" part refers to the image :  <mmcsd_bootloader>_ti.bin which I guess in my case should be bootloader_boot_mmcsd_a9host_debug_ti.bin (renamed MLO)

If I understood well, it is this secondary bootloader that should load the application to the DDR memory. Therefore, the SBL should know what are the Pinmux, clocking and DDR configurations on our custom board, right ?

How can I update these configurations in the bootloader image ?

I am using :

Code composer studio 8.2.0

sdk RTOS 5.02.00.10

AM4376 Custom board

Thank you in advance,

Best regards,

Gilles

  • Gilles,

    The custom board porting for PRcoessor SDK RTOS is described here:
    software-dl.ti.com/.../index_board.html

    The article is common to all the platforms that we support and brings out specifics that may diverge from the common path for specific devices so for clocking, pinmux and DDR you can look at the steps that apply to AM335x/AM437x.

    You might first want to evaluate how different your design is to one of the TI evaluation platforms before you start modifying the board/bootloader. Do you have an update DDR configuration setting that you have validated over emulator using GEL file. We highly recommend that you do this before modifying the bootloader software.

    Regards,
    Rahul
  • Hello Rahul,

    thank you for answering,

    I do have a DDR configuration which has been tested and validated over emulator using GEL files. I managed to run a bare metal app on the custom board.

    I followed the procedure that you linked and it leaded to additional questions :

    • section 3.1.3.6.2 : additional steps for AM335x/AM437x users mentions additional modifications to the build files in starterware to build a custom library :
      • I'm guessing that it means adding the custom board to pdk.../packages/ti/starterware/build/makerules/platform.mk ?
        • If yes, for AM4376, the image should be loaded at address 0x80000000, right ?
      • Is there any other changes that needs to be done regarding this part ?

    • section 3.2.2.3 : Creating the SD Card Loadable Files mentions out2rprc.exe and MulticoreImageGen.exe which are supposed to be located in the <PDK>/packages/ti/boot/sbl/tools folder. My problem is that I can't find neither those 2 files nor the folder <PDK>/packages/ti/boot/(my version of the pdk is 1.0.13) and I know for sure that I didn't delete it by accident.
      • The alternative way to do it is by doing a make <BOARD>_sd. Shouldn't it be : create_sd.bat <BOARD> ? (I'm using Windows)
        • create_sd.bat also uses out2rprc.exe and MulticoreImageGen.exe so I guess it would also be an issue ?

    Thank you in advance,

    regards,

    Gilles

  • Gilles,

    Additional instructions specific to AM335x/AM437x that relates to starterware is provided in the document attached.

    8117.AM335x_AMIC110_Board_Porting_using_PRSDK.pdf

    The board library doesn`t program any memory location for the application. The address 0x80000000 is the base address where the bootloader wlll load the application image. 

    I have answered question regarding out2rprc and MulticoreImageGen here. Can you please review my response on that E2E thread and let me know if you have any further question:

    https://e2e.ti.com/support/processors/f/791/t/798613

    Hope this helps.

    Regards,

    Rahul

  • Hello Rahul,

    thank you very much for your answer, it helped.

    But some issues remain :

    1) When I want to setup processor SDK build environment after I modified the PRCM Modules and updated the pinmux configuration of the IDK AM437x :

    C:/ti/pdk_am437x/packages> gmake board_lib

    I get :

    gmake -C ./ti/board all

    gmake[1]: Entering directory 'C:/ti/pdk_am437x_1_0_13/packages/ti/board'

    gmake[1]: Nothing to be done for 'all'.

    gmake[1]: Leaving directory 'C:/ti/pdk_am437x_1_0_13/packages/ti/board'

    Is that what it is supposed to do ?

     

    2) When I want to build the bootloader :

    C:/ti/pdk_am437x_1_0_13/packages/ti/starterware> gmake bootloader BUILDCFG=boot BOOTMODE=mmcsd PLATFORM=am43xx-evm PROFILES=release -s KW_BUILD=no


    I get :

    \# Making am43xx-evm:a9host:release:ff9b_lib...
    \# Compiling am43xx-evm:a9host:release:ff9b_lib: ./src/ff.c
    process_begin: CreateProcess(NULL, /bin/arm-none-eabi-gcc -c -mcpu=cortex-a9 -mtune=cortex-a9 -march=armv7-a -mfpu=neon -mfloat-abi=hard -eo.o -ea.o -mlong-calls -fdata-sections -funsigned-char -ffunction-sections -Wall -Dgcc -Darmv7a -D SUPPORT_UNALIGNED -MD -MF C:/ti/pdk_am437x_1_0_13/packages/ti/starterware/binary/library/third_party/ff9b/obj/am43xx-evm/a9/release/gcc/.deps/ff.P -D UART -O2 -DPLATFORM_EVM_SI -DAM43XX_FAMILY_BUILD -DBUILD_A9 -DUSE_STD_ASSERT -DTRACE_ENABLE -DRELEASE_BUILD -DASSERT_ENABLE -DPLATFORM_EVM_SI -DAM43XX_FAMILY_BUILD -DAM437X_BUILD -DBUILD_A9 -DUSE_STD_ASSERT -DTRACE_ENABLE -DRELEASE_BUILD -DASSERT_ENABLE -DPLATFORM_EVM_SI -DAM43XX_FAMILY_BUILD -DAM437X_BUILD -DBUILD_A9 -DUSE_STD_ASSERT -DTRACE_ENABLE -DRELEASE_BUILD -DASSERT_ENABLE -DBUILDCFG_MOD_UART -DBUILDCFG_MOD_I2C -DBUILDCFG_MOD_MCSPI -DBUILDCFG_MOD_GPIO -DBUILDCFG_MOD_MMCSD -DBOOT_MMCSD -DPLATFORM_EVM_SI -DAM43XX_FAMILY_BUILD -DBUILD_A9 -DUSE_STD_ASSERT -DTRACE_ENABLE -DRELEASE_BUILD -DASSERT_ENABLE -DPLATFORM_EVM_SI -DAM43XX_FAMILY_BUILD -DAM437X_BUILD -DBUILD_A9 -DUSE_STD_ASSERT -DTRACE_ENABLE -DRELEASE_BUILD -DASSERT_ENABLE -DPLATFORM_EVM_SI -DAM43XX_FAMILY_BUILD -DAM437X_BUILD -DBUILD_A9 -DUSE_STD_ASSERT -DTRACE_ENABLE -DRELEASE_BUILD -DASSERT_ENABLE -I/arm-non-eabi/include -I/arm-none-eabi/include/newlib-nano -I./src -I./port -IC:/ti/pdk_am437x_1_0_13/packages/ti/starterware/include -IC:/ti/pdk_am437x_1_0_13/packages/ti/starterware/soc -IC:/ti/pdk_am437x_1_0_13/packages/ti/starterware/include/hw -IC:/ti/pdk_am437x_1_0_13/packages/ti/starterware/include/armv7a -IC:/ti/pdk_am437x_1_0_13/packages/ti/starterware/include/armv7a/am437x -IC:/ti/pdk_am437x_1_0_13/packages/ti/starterware/include/am43xx -IC:/ti/pdk_am437x_1_0_13/packages/ti/starterware/include/am43xx/am437x -IC:/ti/pdk_am437x_1_0_13/packages/ti/starterware/include/am437x -IC:/ti/pdk_am437x_1_0_13/packages/ti/starterware/include/utils/ -IC:/ti/pdk_am437x_1_0_13/packages/ti/starterware/utils -IC:/ti/pdk_am437x_1_0_13/packages/ti/starterware/library/mmcsd/include -I/arm-non-eabi/include -I/arm-none-eabi/include/newlib-nano -x c -o C:/ti/pdk_am437x_1_0_13/packages/ti/starterware/binary/library/third_party/ff9b/obj/am43xx-evm/a9/release/gcc/ff_boot.o ./src/ff.c, ...) failed.
    make (e=2): Le fichier spÚcifiÚ est introuvable.
    gmake[2]: *** [C:/ti/pdk_am437x_1_0_13/packages/ti/starterware/binary/library/third_party/ff9b/obj/am43xx-evm/a9/release/gcc/ff_boot.o] Error 2
    gmake[1]: *** [ff9b_lib] Error 2
    gmake: *** [bootloader] Error 2


    ff_boot.o does not exist anywhere. It is only mentioned in :  bootloader_boot_mmcsd_a9host_release.out.map

    Is there a way to fix this error ?

     

    regards,

    Gilles

  • Gilles,

    Try the following and let me know if the board lib builds.

    set LIMIT_BOARDS=idkAM437x
    
    gmake board_lib_clean
    
    gmake board_lib

    For building the starterware bootloader, try the following steps.. The build doesn`t seem to be working at component level since there has been a change in the build infrastructure where all components use a central build infrastructure from <PDK_INSTALL_PATH>\packages\ti\build

    cd pdk_am437x_x_x_x\packages
    gmake starterware_bootloader

    Hope this helps. I have tested this at my end and should work without any issues.

    Regards,

    Rahul