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.

AM572x RTOS bootloader

Other Parts Discussed in Thread: AM5728

Hi,

AM5728 sdk rtos diagnostic boot images APP and MLO are built and copied into SDcard and its working fine on EVM, where as same SDcard not booting in custom hardware. Am i missing something please let me know asap!!!

Chethan


 

  • The RTOS team have been notified. They will respond here.
  • Chethan,

    Can you please confirm that your custom hardware is based on the GP EVM design? A custom platform can have different clocking, DDR memory, SD/MMC instance, pinmux setup and PMIC components.

    In order to test the diagnostics on a custom platform you will need to modify the board library, SBL source to account for these changes. We refer to this topic in section 9 of the training slides here :
    software-dl.ti.com/.../index.html

    As well as in the board library section:
    processors.wiki.ti.com/.../Processor_SDK_RTOS_Board_Support

    you will need to create a board library corresponding to your custom hardware and have the SBL link to that library and also modify the diag test to account for any peripheral instance change that you may have on the custom hardware.

    Regards,
    Rahul
  • Hi Rahul,

      Thanks for your reply!!!

    1. Yes our custom hardware design is based on GP EVM (TI_AM572xEVM_REV_A3a).

    2. For custom platform i'm generating board library using PINMUXTOOL there i have done with boardPadDelayInit.c, now as per the below

    http://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_Board_Support#Custom_Board_Addition

    • Edit the boardPadDelayTune.h file to select the appropriate IO timing modes for the modules by uncommenting the build macros. Refer the pinmux tool documentation on how to select the IO timing modes.

    This point confusing me and i tried to do the IO timings but unable to generate the file, please explain this part briefly. How to generate the file and explain its necessary?

    3. As per your first statement "In order to test the diagnostics on a custom platform you will need to modify the board library, SBL source to account for these changes." What i suppose to do with SBL source and how can i do that??

    Thanks and regards,

    Chethan

  • Hi Rahul,

      Any comments on above doubts??

    Chethan

  • For IO timing modules selection, please refer to the application notes provided here:
    www.ti.com/.../sprac44.pdf

    This provides an example and also refers to the files in the board library where this needs to be done.

    The SBL mostly relies on board library for initializing underlying SOC as you can see from this code in SBL_main.c
    boardCfg |= BOARD_INIT_UNLOCK_MMR |
    BOARD_INIT_MODULE_CLOCK |
    BOARD_INIT_PINMUX_CONFIG |
    BOARD_INIT_DDR |
    BOARD_INIT_UART_STDIO |
    BOARD_INIT_WATCHDOG_DISABLE;

    However, there are some power management settings (for AVS and ABB settings for configuration for the voltage rails). If you are using the same PMIC and have the same power management as the GP EVM, you may not need to modify these settings.

    Regards,
    Rahul
  • Hi,

    I'm building Custom Board Library as steps given in the following link

    http://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_Board_Support#Custom_Board_Addition

            4. Create build makefile infrastructure for new board under <ti/board/build>. Please refer existing board makefiles for reference.

            5.Update top level makefile <ti/board/makefile> for additional support of new boards.

    And how to link SBL with the custom boar library

    Please help with this its like block in my task!!

    Regards,

    Chethan

  • Hi,


            Any suggestions on above??

    Thanks,

    Chethan

  • Chethan,

    In the SBL code, if you look at the makefile for evmAM572x(pdk_am57xx_1_0_4\packages\ti\boot\sbl\board\evmAM572x\build), the board library is linked to the EVM board library using the variable BOARD_LIB as shown below:

    BOARD_LIB = "$(PDK_INSTALL_PATH)/ti/board/lib/$(BOARD)/a15/release/ti.board.aa15fg"

    Change this MACRO to point to the board library that you have created an rebuild the SBL.

    Regards,

    Rahul

  • Thanks rahul!!!!

    Because of 12 hours difference somehow i manged to do R&D and the do the stuff, now i'm stuck in MLO build stage please tell me how can i do this i reffered few related links but its clear to me.

    Chethan

  • Rahul Prabhu said:


    Chethan,

    In the SBL code, if you look at the makefile for evmAM572x(pdk_am57xx_1_0_4\packages\ti\boot\sbl\board\evmAM572x\build), the board library is linked to the EVM board library using the variable BOARD_LIB as shown below:

    BOARD_LIB = "$(PDK_INSTALL_PATH)/ti/board/lib/$(BOARD)/a15/release/ti.board.aa15fg"

    Change this MACRO to point to the board library that you have created an rebuild the SBL.

    Regards,

    Rahul


    Hi Rahul,

    I tried to build custom board library but this part not going well to me, let me explain what i have done so far

    Steps i have done so far to boot my custom board:

    1. In ../../../ti/board/src -- i have created AM5728_SDR (project name) folder, which contains all files of ../../../ti/board/src/evmAM572x

    2. Since our custom board DDR,UART and PMIC's hardware as well as pinmuxing same as GP EVM, so i'm not touching anything in TI-PINMUX and sbl_main.c source

    3. Now with out doing pinmuxing because my interest is to boot my custom board(eventhough codes are ready), so all four mandatory files(boardPadDelayDevice.c, boardPadDelay.h, boardPadDelayInit.c and boardPadDelayTune.h ) copied into ../../../ti/board/src/AM5728_SDR

    4. These steps are done by referring

    processors.wiki.ti.com/.../Processor_SDK_RTOS_Board_Support

    For a while i'm ignoring this part "Edit the boardPadDelayTune.h file to select the appropriate IO timing modes for the modules by uncommenting the build macros. Refer the pinmux tool documentation on how to select the IO timing modes" because no interface is involved.

    5. Next i added custom board name AM5728_SDR in ../../../ti/board/build/makefile.mk line number 41 and 55 in makefile

    What should i do next please suggest me to build custom board library.


    Regards,

    Chethan
  • Chethan,

    Did you rebuild the AM5728_SDR board library. Board library can be build using the command from pdk_1_x_x\packages folder
    make -C ./ti/board all

    If you have then you should see the board library file ti.board.aa15fg created under the path $(PDK_INSTALL_PATH)/ti/board/lib/AM5728_SDR/a15/release/ti.board.aa15fg" similar to what we have under $(PDK_INSTALL_PATH)/ti/board/lib/evmAM572x/a15/release/ti.board.aa15fg

    Regards,
    Rahul

    PS: Make sure you have renamed the file src_files_evmAM572x.mk to src_files_AM5728_SDR.mk and also that all the files you have modified are listed as src files in the make file.

  • Rahul,

      No i haven't do that there only stuck, i don't no how to proceed further that is the main reason i raised the question.

    Please assume that i had only created AM5728_SDR folder under ../../../ti/board/src with no pinmuxing files(contains default files of ../../ti/board/srcevmAM572x).

    Please explain that step by step.

    Chethan

  • Chethan,

    Ok. Thanks for your patience. Stepping back a little, here is my take on experience with creating a custom board library.

    Step1: Ensure your custom board library build is setup correctly:

    * Create a board library folder under pdk_1_x_x\packages\ti\board\src\. In your case it is "AM5728_SDR"

    * Copy all your files from the boaard that your custom board is based on. In your case evmAM572x.

    * Modify the build files src_files_<custom board name>.mk and add the the custom board to the pdk_am57xx_1_0_4\packages\ti\board\build\makefile.mk target.

    * GO to pdk_1_x_x\packages directory and test the build by running

    make ./ti/board all

    this should generate a file ti.board.aa15fg

    $(PDK_INSTALL_PATH)/ti/board/lib/<custom board>/a15/release/ti.board.aa15fg

    Please confirm if you are having having any issues to getting to this step and post the error log so that we can analyze the issue.

    Step 2: Test linking the board library with exisiting examples for evmAM572x.

    * Since all files in evmAM57xx were copied to the custom board library folder,  at the moment your custom board library should be same as evmAM57xx board library. You can verify this by linking custom board library to existing LLD or diagnostics examples in the SDK and testing it on the EVM

    * Now modify the source files in your custom board library area to match the clocking, pinmuxing, DDR and power management changes. List of files to chnage is provided either  

    * Rebuild the custom board library as in step 1 using make ./ti/board all

    Step 3 : Test on custom hardware.

    * Now that all off your custom board changes are in place, you should be able to link it to the unit tests/diagnostics by modifying the link step in the make files to use the modified custom board library instead of ti.board.aafg library from evmAM572x area.

    * Note if the peripheral instance, interrupts required are different then you may need to make corresponding changes to the unit tests.

    Regards,

    Rahul

  • Rahul,

    I'm really thankful to you, great effort!!!
    I think these steps takes too much time for me. By the way in india its mid night i will work on it tomorrow please be in touch with me this weekend if possible.

    In step 1 i didn't get this point
    * Modify the build files src_files_<custom board name>.mk and add the the custom board to the pdk_am57xx_1_0_4\packages\ti\board\build\makefile.mk target. please explain this if this part clear rest i can do.

    Chethan
  • Rahul,

     As your suggestion i have followed the steps but custom board library is not generating.

    1. Created separate folder in ../../../ti/board/src/AM5728_SDR and copied all file from evmAM572x folder

    2. Modified file names too, like evmAM572x_clock.c to sdrAM572x_clock.c (I think this is not necessary but i tried this method also)

    3. Modified the build files in ../../../ti/board/src/AM5728_SDR/src_files_evmAM572x.mk

    SRCDIR += src/AM5728_SDR src/AM5728_SDR/device src/AM5728_SDR/include
    INCDIR += src/AM5728_SDR src/AM5728_SDR/device src/AM5728_SDR/include

    # Common source files across all platforms and cores
    SRCS_COMMON += sdrAM5728.c sdrAM5728_lld_init.c sdrAM5728_pinmux.c sdrAM5728_clock.c sdrAM5728_ddr.c sdrAM5728_info.c sdrAM5728_pll.c
    SRCS_COMMON += pmic_device.c enet_phy.c boardPadDelayDevice.c boardPadDelayInit.c iodelay_config.c

    ifeq ($(CORE),$(filter $(CORE), c66x))
        SRCS_ASM_COMMON += iodelay_stack_C66.asm
    endif

    PACKAGE_SRCS_COMMON =   src/AM5728_SDR/src_files_evmAM572x.mk

    4. And executed the following command

        ../../../packages/  make ./ti/board all After execution file ti.board.aa15fg not created

    $(PDK_INSTALL_PATH)/ti/board/lib/<custom board>/a15/release/ti.board.aa15fg

    Obseravtion:

    chethan@chethan:~/ti/pdk_am57xx_1_0_3/packages$ ls -lrt ti/board/lib/
    total 12
    drwxr-xr-x 5 chethan chethan 4096 Sep 21 15:24 idkAM571x
    drwxr-xr-x 5 chethan chethan 4096 Sep 21 15:24 idkAM572x
    drwxr-xr-x 5 chethan chethan 4096 Sep 21 15:24 evmAM572x

    Please note: Here default evm's board library also not updating please have a look at date and timings.

    Please guide me where i'm making mistake.

    Regards,

    Chethan

  • Rahul,

      Any suggestions???

    Chethan

  • Chethan,

    Sorry for the delayed response. I check the latest SDK build setup files and realized that there has been some change in the build structure that may be causing the issue that you are seeing. With the new SDK, you are also required to

    * Copy files from evmAM572x to customAM572x folder. Modify the file src_files_customAM572x.mk

    * update line 92 in Rules.make (under pdk_x_X_x\packages\ti\build)

    *  add CFLAGS_GLOBAL_<customAM572x>  = -DSOC_AM572x to build_config.mk (under pdk_x_X_x\packages\ti\build\makerules)

    * Add custom platform to Line 56 on platform.mk (under pdk_x_X_x\packages\ti\build\makerules)

    *Check for changes in makefile.mk under pdk_x_X_x\packages\ti\board\build\

    * Also check line 92 in board.h, config.bld, package.bld files under   (under pdk_x_X_x\packages\ti\board)

    In order to test this setup, I have created a "customAM572x" board library and provided all my files for your reference. To check all files, you can look for files modified on 21st November in this package.

    custom_board_library.zip

    what will also help, you reduce build times since you are using evmAM572x and customAM572x is to use the following setting in pdkSetupEnv.sh(line 191)

    export LIMIT_SOCS="am572x"
    export LIMIT_BOARDS="evmAM572x customAM572x"

    Hope this helps.

    Regards,

    Rahul

    PS: It is Holiday week in the US, so my responses may be slightly delayed. I appreciate your patience on this issue.

  • Hi Rahul,

      Since i'm using SDK 3.0 you meant to say, i should use SDK 3.1 and follow the above steps??? or SDK 3.0 is enough please confirm this. I tried the above steps in SDK 3.0 and no custom board created.

    $(PDK_INSTALL_PATH)/ti/board/lib/<custom board>/a15/release/ti.board.aa15fg not generating.

    I will try on SDK 3.1 once sdk build completed.

    I had thoroughly referred your attachment and those steps, but AM5728_MARS is not generating.

    Let me know what is happening?

    Chethan

  • Chethan,

    Do you even see the custom board library build while building or does the make only build evmAM572x and idkAM57xx board libraries.

    Did you add customAM572x  to the pdkSetup.sh file as I had mentioned. after you add that platform, you need to call setup.sh from root folder for the changes to take effect. Please make sure that you don`t miss any .mk file changes or makefile changes. I am able to modify the build files from ProcSDK RTOS 3.0 and generate the custom board library. The first thing to check would be to see why the build is not invoking

    Can you use a diff function and compare your files with the files I have provided from PRocSDK 3.0 and see if you missed something.pdk_packages_ti.zip

    Regards,

    Rahul

  • Chethan,

    Just checking in. How is the porting effort going. Were you able to create custom board library and build the board library for your custom platform. Can I close this post or do you want me to keep this thread open for further questions.

    Regards,
    Rahul
  • Rahul,

      Thanks for your concern!!! i'm on leave will have discussion on this topic in coming days.

    Chethan

  • Chethan,

    I have split this e2e thread to create a new e2e thread for the issue with building the diagnostics. Please post only bootloader and custom board build issues on this e2e thread.

    AM572x RTOS diagnostics is posted here
    e2e.ti.com/.../558817

    Regards,
    Rahul
  • I am building a custom board for the C66 on the AM5728 using pdk_am57xx_1_0_5.  I thought I would add the changes I made to help anyone in the future. The process is fairly involved and took me the better part of an entire day.  Note that I also added a custom platform, so some of the changes are needed for that also.


    1) In pdksetupenv.bat:


    @REM if not defined LIMIT_BOARDS set LIMIT_BOARDS=evmAM572x idkAM571x idkAM572x
    if not defined LIMIT_BOARDS set LIMIT_BOARDS=myCustomBoard

    2) In packages\ti\board\build\makefile.mk


    changed


    ifeq ($(BOARD),$(filter $(BOARD), evmAM572x idkAM571x idkAM572x))

    to


    ifeq ($(BOARD),$(filter $(BOARD), myCustomBoard evmAM572x idkAM571x idkAM572x))

    3) In packages\ti\build\makerules\platform.mk


    Added the following lines:


      ifeq ($(BOARD),$(filter $(BOARD), myCustomBoard))
        PLATFORM_XDC = "evmAM572XCustom"
      endif

    4) In packages\ti\board\src


    Create new directory myCustomBoard copied from evmAM572x


    5) In packages\ti\board\src\myCustomBoard


    Rename file src_files_evmAM572x.mk to src_files_myCustomBoard.mk.  This file will need a bit of work depending on what elements of board you need for your platform.  I left all the files evmAM572x_*.c but modified as needed.


    6) In packages\ti\board\src\src_files_lld.mk, I added the following lines:


    ifeq ($(BOARD),$(filter $(BOARD), myCustomBoard))
    SRCDIR +=   $(PDK_INSTALL_PATH)/ti/drv/uart/soc/am572x \
                $(PDK_INSTALL_PATH)/ti/drv/spi/soc/am572x

    INCDIR +=   $(PDK_INSTALL_PATH)/ti/drv/uart/soc/am572x \
                $(PDK_INSTALL_PATH)/ti/drv/spi/soc/am572x

    # Common source files across all platforms and cores
    SRCS_COMMON += UART_soc.c
    endif

    In my board the C66 does not use the I2C and I have a custom SPI_soc.c, so those were removed.  I think you still need to add this code for your custom board.


    7) In packages\ti\board\board.h, I added the lines:


    #if defined (myCustomBoard)
    #include <ti/board/src/myCustomBoard/include/board_cfg.h>
    #endif

    8) In packages\ti\board\board_component.mk, I changed the lines:

    board_lib_BOARDLIST       = myCustomBoard evmAM335x icev2AM335x skAM335x bbbAM335x evmAM437x idkAM437x skAM437x evmAM572x idkAM571x idkAM572x evmK2H evmK2K evmK2E evmK2L evmK2G iceK2G \

    #board_lib_tda2xx_CORELIST = a15_0 ipu1_0 c66x
    board_lib_tda2xx_CORELIST = c66x

    #board_lib_am572x_CORELIST = c66x a15_0 ipu1_0
    board_lib_am572x_CORELIST = c66x

    I did not want to build any A15 or IPU.


    9) In packages\ti\board\config.bld, I added the following lines:

    var myCustomBoard= {
        name: "myCustomBoard",
        ccOpts: "-DevmAM572x -DSOC_AM572x",
        targets: [C66LE],
        lldFiles: ["$(PDK_INSTALL_PATH)/ti/drv/uart/soc/am572x/UART_soc.c",
                "$(PDK_INSTALL_PATH)/ti/drv/spi/soc/am572x/SPI_soc.c"]
    }

    Again, this was to limit to the C66 and remove I2C.

    10) In packages\ti\board\package.bld, I added the following line:

    Pkg.otherFiles[Pkg.otherFiles.length++] = "src/myCustomBoard/src_files_myCustomBoard.mk";


    To build:

    In c:\ti\pdk_am57xx_1_0_5\packages, first run pdksetupenv.bat

    To make just the board:    gmake board

  • Chris,

    We appreciate your efforts in archiving your experience on the E2E forums so that the AM57xx and Processor SDK RTOS developer community can benefit from your effort. Users like you make the E2E model great for getting quality information.

    Thanks once again. We have forwarded your feedback for discussion internally regarding the user experience with the software offering and will try and take action when there is a major change in the build infrastructure.

    Regards,
    Rahul