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.

AM3352: Bootloader for custom board

Part Number: AM3352
Other Parts Discussed in Thread: BEAGLEBONE, AMIC110


we are currently using a modified bootloader from the latest TI StarterWare to load the application into RAM.
The board currently boots from SD card.
Unfortunately, it looks like the bootloader (resp. the MMC- or FatFS driver) has a problem if we want to execute the f_write command.
It writes an empty file but with no content and corrupts the FAT file system (file has the correct size but no content).

Therefore I tried to switch to a newer bootloader from the latest SDK/PDK.

I have already added and built my custom board into the PDK structure regarding to your manual:

I also tried/changed the files in the starterware sub-directory because in your manual there is only a statement (see, which says that additional steps have to be done for AM335x, but no discrete manual on how to do this.
1) Is such a manual available?

I would like to rebuild the (secondary) bootloader with my custom board but I have no clue how to do this.
I tried to follow your manual on how to rebuild the bootloader from here:

But it only accepts the EVM values: am335x-evm, am43xx-evm, amic110-ddrless

2) Is there a manual how to change the Make- or Config files to be able to build a bootloader for my custom board?

Thank you,

  • Markus,

    We need to isolate the issue with MMC SD/FATFS driver from any custom HW related issues. Do you see the same issue when testing this on TI evluation HW. The bootloader only performs read from boot media and there is no write to the boot media during boot. Can you please indicate why you are executing f_write during the boot operation.  We recommend that you perform the f_write after the boot process is complete and use SDMMC driver with FATFS driver rather than using Starterware driver for the write.

    The discrete manual that talks about starterware changes does exist but most details have been integrated in the software developers guide. If you need this for reference, please look at the attached:


    2. For the second issue, the TI bootloader user generic name am335x-evm for bootloader for AM335x so you don`t need to create a separate target for custom board. The bootloader code contains call to a function that reads EEPROM over I2C to detect the boardID to perform pinmux, clock and DDR configuration that is specific to the EVM. there is a board ID structure on a personality EEPROM for AM335x EVM, AM335x ICEv2 and beaglebone black.

    If you still think that there is value in creating a separate build target then you can look for AMIC110 DDRLess in the source and build files to see how the port was created. That is the most recent target that we have added to that flow. We have not documented this in a manual as we expect customers to hard code or bypass the boardID in the bootloader source to have bootloader configure the SOC and board components as per their HW design rather than create a new target.




  • Hello Rahul,

    thank your for the information and the file provided.

    Since we have an eMMC on our custom board, the intention was to let the MLO bootloader do the firmware upgrade of the eMMC as well.
    But it looks like the better way is to implement a 2nd stage bootloader using TI RTOS and its MMCSD- & FATFS drivers.
    Using the TI RTOS drivers, we have no problems writing to SD- & eMMC media.

    Kind regards,