Because of the Thanksgiving holiday in the U.S., TI E2E™ design support forum responses may be delayed from November 25 through December 2. Thank you for your patience.

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.

AM5728: eMMC flash issue with Windows 10

Part Number: AM5728
Other Parts Discussed in Thread: BEAGLEBOARD-X15, , SYSCONFIG

Hi all,

I would like to make my evmAM5728 board to boot my RTOS app from eMMC. I'm trying to follow steps 4.6.3.2.5.2.1. "Preparing the eMMC" in Processor SDK RTOS Documentation (ver. 06_00_00_07):

  1. Run USB_devMsc_mmcsd example.
  2. Connect the target board eMMC to the host PC. At this point I can see new drive D: in Windows explorer.
  3. Use Win32 Disk Imager to write .img file to eMMC card. I use sd_card.img in C:\ti\processor_sdk_rtos_am57xx_6_00_00_07\prebuilt-sdcards\evmAM572x\sd_card_img\
  4. When I press Write button and confirm overwrite I get following error:

As far as I know, the eMMC is formatted to have 2 partitions. The first one contains u-boot and the second one is the linux partition. Could you please advice  what could be done to complete write to eMMC? Do I need some other tool to accomplish this? Thanks.

System used:

  • AM5728 on BeagleBoard-X15
  • pdk_am57xx_1_0_15
  • processor_sdk_rtos_am57xx_6_00_00_07
  • bios_6_75_02_00
  • Windows 10 Pro
  • Win32 Disk Imager 1.0

  • I've made some progress today.

    PDK and USB_dev_Msc_example has been rebuilt and now I'm able to write .img file to eMMC. Write is successful, I can see "app" and "MLO" files there, however when I restart the board, following characters are printed on the console - "▒▒▒" and board turns off after about 5 seconds.

  • Can you indicate which MLO you used. If you used the MLO from the .img file, you need to replace that with the MLO for EMMC that we provide at the following location: 

    pdk_am57xx_1_0_13\packages\ti\boot\sbl\binary\evmAM572x\emmc\bin

    The .img file is a prebuilt formated SD card image so I suspect that the MLO you are using is meant to be used for SD card based application boot.

    Regards,

    Rahul

  • Hi Rahul,

    Yes, I've used MLO file from pdk_am57xx_1_0_15\packages\ti\boot\sbl\binary\evmAM572x\emmc\bin.

  • Loaded pdk_am57xx_1_0_15\packages\ti\boot\sbl\binary\evmAM572x\emmc\bin/sbl.out to EVM through JTAG and CCS. Everything is OK, SBL loads app from eMMC.

    Attached to EVM through JTAG and CCS during boot from eMMC. Chcecked RBL tracing data:

    0x4037f040: 0000009F 40001000 000000E0 00000000 00000000 00000000 00000000 00000000

    According to PDK documentation (Section 33.3.9) bit 30 of Tracing Vector 2 is set to 1 (Jumping to initial software), so it means that RBL passed control to SBL.

    PC is at 0x403432a8, based on sbl.mapis in the loop insde IntDefaultHandler():

    .text.IntDefaultHandler
    0x403432ac 0x20 C:/ti/pdk_am57xx_1_0_15/packages/ti/csl/lib/am572x/a15/release/ti.csl.aa15fg(interrupt.oa15fg)
    .text.Intc_IntRegister
    0x403432cc 0x1c C:/ti/pdk_am57xx_1_0_15/packages/ti/csl/lib/am572x/a15/release/ti.csl.aa15fg(interrupt.oa15fg)
    0x403432cc Intc_IntRegister

    Could you please point me somewhere how to debug this further?

    Thanks,

    Below is the state of MMC2 registers:

    MMCHS_HL_REV 0x40200303
    MMCHS_HL_HWINFO 0x0000004B
    MMCHS_HL_SYSCONFIG 0x00000028
    MMCHS_SYSCONFIG 0x00002015
    MMCHS_SYSSTATUS 0x00000001
    MMCHS_CSRE 0x00000000
    MMCHS_SYSTEST 0x00008000
    MMCHS_CON 0x00000680
    MMCHS_PWCNT 0x00000000
    MMCHS_DLL 0x80000000
    MMCHS_SDMASA 0x00000000
    MMCHS_BLK 0x00000200
    MMCHS_ARG 0x00002B70
    MMCHS_CMD 0x113A0010
    MMCHS_RSP10 0x00000900
    MMCHS_RSP32 0xFFFFFFEF
    MMCHS_RSP54 0x0F5903FF
    MMCHS_RSP76 0xD04F0132
    MMCHS_DATA 0x00000000
    MMCHS_PSTATE 0x01F10000
    MMCHS_HCTL 0x00000D10
    MMCHS_SYSCTL 0x000E0207
    MMCHS_STAT 0x20008000
    MMCHS_IE 0x307F0033
    MMCHS_ISE 0x00000000
    MMCHS_AC12 0x00000000
    MMCHS_CAPA 0x22E90080
    MMCHS_CAPA2 0x00000F77
    MMCHS_CUR_CAPA 0x00000000
    MMCHS_FE 0x00000000
    MMCHS_ADMAES 0x00000000
    MMCHS_ADMASAL 0x00000000
    MMCHS_PVINITSD 0x000401E0
    MMCHS_PVHSSDR12 0x00040002
    MMCHS_PVSDR25SDR50 0x00010002
    MMCHS_PVSDR104DDR50 0x00020000
    MMCHS_REV 0x33020000

  • Marian,

    Debugging bootloader has been described over here:

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

    Instead of looking at the map file. You can go to CCS Load- > Load Symbols and browse to sbl.out for EMMC to see if shows the call log for the failure. you may also be able to browse to the CSL source and correlate the symbols with the code loaded by the boot ROM.

    Another approach would be now that you have the app in the EMMC, you can also look to see if you can load the sbl.out using JTAG with HW in debug mode with GEL setup and see of the SBL can read from the EMMC.

    Regards,

    Rahul

  • Hi Rahul,

    I've added spinlock loop at the beginning of the SBL's main() as proposed in the PDK doc (4.6.4.1.2. Software Debug Steps) and debugged the SBL

    Issue is the main()->SBL_Configure_AVS()->SBL_GetBoardid(). As I have Beagleboard-x15, boardId is "BBRDX15_",boardID is incorrect and it can't get correct OPP config in SBL_GetOppConfig().

    After following change the board boots up from eMMC without any further issues:

    @ mnt/c/ti/pdk_am57xx_1_0_15/packages/ti/boot/sbl/board/src/sbl_avs_config.c:800 @ static uint32_t SBL_GetBoardid(char *pBoardName)
        uint32_t boardId;

        /* Check if the board is GPEVM by comparing the string read from EEPROM. */
        if (strncmp("AM572PM_", pBoardName, BOARD_NAME_LENGTH) == 0U)
        if ((strncmp("AM572PM_", pBoardName, BOARD_NAME_LENGTH) == 0U)
            || (strncmp("BBRDX15_", pBoardName, BOARD_NAME_LENGTH) == 0U))
        {
            boardId = BOARD_GPEVMAM572x;

        }

    Regards,

    Marian

  • Marian,

    Thanks for the update and figuring this out. We have indicated multiple times in the forums that one of the reasons BEagle X15 doesn`t work out of the box with TI Processor SDK RTOS is the absence of the boardID in the EEPROM. Your post will highlight this and will help other community members trying the same

    This is also part of our board port guide provided here:

    http://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_board.html#custom-board-addition

    Can you please close the issue and mark the issue resolved.

    Regards,

    Rahul