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/AM3358: Issues compiling bootloader for Beaglebone Black

Part Number: AM3358

Tool/software: TI-RTOS

I am trying to build an SD card bootloader for the Beaglebone Black and we are running into a lot of issues.

First, we are trying to build the bootloader as shown in:

http://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_BOOT_AM335x/AM437x

Using the command:

gmake bootloader BUILDCFG=boot BOOTMODE=mmcsd PLATFORM=am335x-evm PROFILE=debug -s KW_BUILD=no

The gmake dies when using a AM335x_pinmux.h because a ton of externs are all gone after using the TI pinmux tool.  

We added the externs and got the AM335x-evm to build.

That created binary files for "bootloader_boot_mmcsd_a8host_debug..." 

How do we build the bootloader for the BBB?  There doesn't seem to be a place to do a gmake bootloader fro the BBB.

  • Alex,

    If you build the bootloader for am335x-evm, the resulting bootloader will work on any of TI evaluation platforms (skAM335x, evmAM335x, beagleboneblack, iceAM335x and iceAMIC110) as the booatloader uses a board detect mechanism which read the board ID from the EEPROM and applies the PLL, pinmux and DDR settings corresponding to the evaluation platform that it detected.

    Each TI eval platform has a small EEPROM connect to I2C interface that provides the Board ID and Revision number to the software to differentiate at the time of initialization.

    Regards,
    Rahul
  • Can you also elaborate on what externs are gone after using the Pin Mux tool as we want to provide this information to the Pin Mux tool team as a defect that we can add to avoid this additonal configuration.

    Regards,
    Rahul
  • Rahul,
    We will give that a shot.

    Where are are the DDR parameters specified for the BBB? Where is that structure located?
  • We had to add in the following to the AM335x_pinmux.h after we used the pinmux tool:

    /* ========================================================================== */
    /* Global Variables */
    /* ========================================================================== */

    /** \brief Pinmux configuration data for the board. Auto-generated from
    Pinmux tool. */
    extern pinmuxBoardCfg_t gGpevmPinmuxData[];

    /** \brief Pinmux configuration data for the board. Auto-generated from
    Pinmux tool. */
    extern pinmuxBoardCfg_t gEvmskPinmuxData[];

    /** \brief Pinmux configuration data for the board. Auto-generated from
    Pinmux tool. */
    extern pinmuxBoardCfg_t gBbPinmuxData[];

    /** \brief Pinmux configuration data for the board. Auto-generated from
    Pinmux tool. */
    extern pinmuxBoardCfg_t gBbbPinmuxData[];

    /** \brief Pinmux configuration data for the board. Auto-generated from
    Pinmux tool. */
    extern pinmuxBoardCfg_t gIceV1PinmuxData[];

    /** \brief Pinmux configuration data for the board. Auto-generated from
    Pinmux tool. */
    extern pinmuxBoardCfg_t gIceV2PinmuxData[];

    /** \brief Pinmux configuration data for the board. Auto-generated from
    Pinmux tool for IceV2, but with AMIC11x naming. Intended for
    manual deviation from IceV2, if applicable. */
    extern pinmuxBoardCfg_t gAMIC11xPinmuxData[];
  • The Beagle Bone DDR settings can be found in the file sbl_am335x_platform_ddr.c at <PDK_INSTALL_PATH>\packages\ti\starterware\bootloader\src\am335x\sbl_am335x_platform_ddr.c

    sblPlatformDdrCfg_t BBW_DDR2_CONFIG // Structure for DDR2 memory used on beaglebone

    sblPlatformDdrCfg_t BBB_DDR3_CONFIG //Structure for DDR3 parameters used on beaglebone black.

    this is then passed to the DDR Initialization function on using the following code:
    if(BOARD_BEAGLEBONEBLACK == boardId) /* For BEAGLEBONE BLACK - DDR3 */
    {
    ddrCfg = BBB_DDR3_CONFIG;
    memType = SBL_PLATFORM_MEM_TYPE_DDR3;
    }

    Regards,
    Rahul