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.

WEBENCH® Tools/AM5728: SD card boot issue

Part Number: AM5728

Tool/software: WEBENCH® Design Tools

Respected Sir,

I am using custom AM5728 Custom board and am57xx-evm-linux-06.00.00.07 image through win32DiskImager loaded files in Beagle Board X15 properly working.

In custom board it's not displaying any data because of EEPROM(u8) not used in custom board.

Without EEPROM in serial port data nothing will occur or any data will display?

Could you tell me any solution for boot sd card give me solution ?

Please give me some solution

Thanking You,

Ramachandra

  • Hello Ramachandra,

    Ramachandra Parlapalli said:
    Without EEPROM in serial port data nothing will occur or any data will display?

    With the latest Processor SDK, if no EEPROM is present, nothing will occur on a serial port.


    Ramachandra Parlapalli said:
    Could you tell me any solution for boot sd card give me solution ?

    Please, see this, this, this and this thread.

    Best regards,
    Kemal

  • Thank you for the information,

    Could you send me the eeprom patch file for u-boot I am using am5728evm.

    Thanking you sir,

    Regards

    RAMACHANDRA

  • You can use the patch from this post for am5728evm.

  • Hai sir,

    I am added this patch for u-boot 2017.01 version but not getting any display in serialport.

    in beagleboard x15 it's working fine.

    below reference way I have downloaded and used compilers.

    (https://www.digikey.com/eewiki/display/linuxonarm/BeagleBoard-X15)

    git apply 0001-AM57xx-Setup-board-name-to-AM572PM_-if-EEPROM-init-f.patch

    applied above patch also not I am not getting data in hyper terminal.

    Thanking you,

    Ramachandra

  • Can you apply the patch to the latest Processor SDK and retry?

  • Hai,

    The latest SDK.6.01.00.08 downloaded and based on Below link i have downloaded and build the cross compilers

     

    But while building u-boot errors occurring could tell me how to install cross compilers, below way i am installed

    1.sudo apt-get install git build-essential python diffstat texinfo gawk chrpath dos2unix wget unzip socat doxygen libc6:i386 libncurses5:i386 libstdc++6:i386 libz1:i386

    2.$ wget https://developer.arm.com/-/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz

    $ tar -Jxvf gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz -C $HOME

    3.$ git clone git://arago-project.org/git/projects/oe-layersetup.git tisdk

    $ cd tisdk

    $ ./oe-layertool-setup.sh -f configs/processor-sdk/processor-sdk-<version>-config.txt

    $ cd build

    $ . conf/setenv

    $ export TOOLCHAIN_PATH_ARMV7=$HOME/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf

    export PATH=$HOME/gcc-linaro-4.9-2015.05-x86_64_arm-linux-gnueabihf/bin:$PATH
    $ make CROSS_COMPILE=arm-linux-gnueabihf- distclean
    $ make CROSS_COMPILE=arm-linux-gnueabihf- O=am57xx_evm am57xx_evm_defconfig 
    $ make CROSS_COMPILE=arm-linux-gnueabihf- O=am57xx_evm


    Above distclean time only errors getting.
    how to check which compiler is presently working?
    Previosly i have done below method it's working properly while build SDK problem occurring?

    ARM Cross Compiler: GCC


    wget -c https://releases.linaro.org/components/toolchain/binaries/6.5-2018.12/arm-linux-gnueabihf/gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabihf.tar.xz
    tar xf gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabihf.tar.xz
    export CC=`pwd`/gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
     Test Cross Compiler:
    ${CC}gcc --version
    arm-linux-gnueabihf-gcc (Linaro GCC 6.5-2018.12) 6.5.0
    Copyright (C) 2017 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    Bootloader: U-Boot

    git clone https://github.com/u-boot/u-boot

    cd u-boot/
    git checkout v2017.01 -b tmp
    git pull --no-edit git://git.ti.com/ti-u-boot/ti-u-boot.git ti-u-boot-2017.01
    git checkout 590c7d7fe15d06a4d708403d3234bcd01cd039e1
      
    wget -c https://github.com/eewiki/u-boot-patches/raw/master/ti-2017.01/0001-beagle_x15-uEnv.txt-bootz-n-fixes.patch
      
    patch -p1 < 0001-beagle_x15-uEnv.txt-bootz-n-fixes.patch
    make ARCH=arm CROSS_COMPILE=${CC} distclean
    make ARCH=arm CROSS_COMPILE=${CC} am57xx_evm_defconfig
    make ARCH=arm CROSS_COMPILE=${CC}
    for this i am addded without EEPROM Patch file it's not working?
    Could you tell me how to build SDK?
    Thanking You,
    Ramachandra
  • Just install the latest Processor SDK, apply the patch ant type make u-boot command in the SDK's top level directory.

  • i have installed automatically it's installed in /opt folder then i applied patch using below command 

    /opt/ti-processor-sdk-linux-am57xx-evm-06.01.00.08/board-support/u-boot-2019.01+gitAUTOINC +029e4c009a-g029e4c009a$ sudo patch -p1 <0001-AM57xx-Setup-board-name-to-AM572PM_-if-EEPROM-init-f.patch

    /opt/ti-processor-sdk-linux-am57xx-evm-06.01.00.08$ sudo make u-boot
    ===================================
    Building U-boot
    ===================================
    make -j 2 -C /opt/ti-processor-sdk-linux-am57xx-evm-06.01.00.08/board-support/u-boot-* CROSS_COMPILE=/opt/ti-processor-sdk-linux-am57xx-evm-06.01.00.08/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-linux-gnueabihf- am57xx_evm_config
    make[1]: Entering directory '/opt/ti-processor-sdk-linux-am57xx-evm-06.01.00.08/board-support/u-boot-2019.01+gitAUTOINC+029e4c009a-g029e4c009a'
      HOSTCC  scripts/basic/fixdep
      HOSTCC  scripts/kconfig/conf.o
      YACC    scripts/kconfig/zconf.tab.c
    /bin/sh: bison: command not found
    scripts/Makefile.lib:228: recipe for target 'scripts/kconfig/zconf.tab.c' failed
    make[2]: *** [scripts/kconfig/zconf.tab.c] Error 127
    make[2]: *** Waiting for unfinished jobs....
    Makefile:496: recipe for target 'am57xx_evm_config' failed
    make[1]: *** [am57xx_evm_config] Error 2
    make[1]: Leaving directory '/opt/ti-processor-sdk-linux-am57xx-evm-06.01.00.08/board-support/u-boot-2019.01+gitAUTOINC+029e4c009a-g029e4c009a'
    Makefile:354: recipe for target 'u-boot' failed
    make: *** [u-boot] Error 2

    Error getting sir

    Thanking you,

    Ramachandra

  • Hi,

    Just now properly created u-boot.img & MLO files based on above post thanking you sir,

    After that i am copied the files in sd card using below commands(Already partitions done using create_sdcard.sh).

    before that i applied below patch using patch -p1 <0001-AM57xx-Setup-board-name-to-AM572PM_-if-EEPROM-init-f.patch

    From 626f460db9da711908dff70a1b1e2c44757d2cd7 Mon Sep 17 00:00:00 2001
    From: "Kemal R. Shakir" <kemal@ti.com>
    Date: Thu, 7 Feb 2019 16:39:30 +0200
    Subject: [PATCH 1/1] AM57xx: Setup board name to AM572PM_ if EEPROM init fails

    ---
     board/ti/common/board_detect.c | 5 +++--
     1 file changed, 3 insertions(+), 2 deletions(-)

    diff --git a/board/ti/common/board_detect.c b/board/ti/common/board_detect.c
    index 64149581c5..d33d0b049d 100644
    --- a/board/ti/common/board_detect.c
    +++ b/board/ti/common/board_detect.c
    @@ -189,10 +189,11 @@ int __maybe_unused ti_i2c_eeprom_am_get(int bus_addr, int dev_addr)
         rc = ti_i2c_eeprom_get(bus_addr, dev_addr, TI_EEPROM_HEADER_MAGIC,
                        sizeof(am_ep), (uint8_t *)&am_ep);
         if (rc)
    -        return rc;
    +        strlcpy(ep->name, "AM572PM_", TI_EEPROM_HDR_NAME_LEN + 1);
    +    else
    +        strlcpy(ep->name, am_ep.name, TI_EEPROM_HDR_NAME_LEN + 1);
     
         ep->header = am_ep.header;
    -    strlcpy(ep->name, am_ep.name, TI_EEPROM_HDR_NAME_LEN + 1);
         ti_eeprom_string_cleanup(ep->name);
     
         /* BeagleBone Green '1' eeprom, board_rev: 0x1a 0x00 0x00 0x00 */
    --
    2.17.1

    but not displaying any data in Minicom or else send me another patch file what is the problem i am not understanding.

    Actually in our board EEPROM not used only I2C lines connected to PMIC side.

    Any other EEPROM patch files will be there foreword me sir

    Thanking you,

    Ramachandra

  • Can you attach the CCS + JTAG logs from this post?

  • I am not using any JTAG sir, idon't have.

    through micro SD-Card only u can suggest sir, i am comparing with beagle board hardware side all voltages occurring properly, for same code i am loading to Beagle board it's working.

    In my board nothing it's displaying any other solution.

    upto 7sec only led displaying then 3.3v volts stopping not displaying any data in serial port.

    before that i will use XDS110 JTAG and intimate you sir.

    Thanking you,

    Ramachandra

  • Hai Sir,

     Based on below reference i have done and loaded *.dss file.

    CTRL_CORE_BOOTSTRAP = 0x00008127
      * sysboot15 = 1, internal pulldown permanently disabled (recommended for eMMC boot)
      * XIP/NAND BOOTDEVICESIZE = 8-bit
      * XIP/NAND MUXCS0DEVICE = Non-muxed
      * XIP/NAND BOOTWAITEN, wait pin not monitored
      * SPEEDSELECT = 20 MHz
      * QSPI offset = 64KB
      * QSPI_4 -> SD -> USB
    
    Current tracing vector, word 1 = 0x0000009f
      * Bit  0: [Boot] Passed the public reset vector
      * Bit  1: [Boot] Entered main function
      * Bit  2: [Boot] Running after the cold reset
      * Bit  3: [Boot] Main booting routine entered
      * Bit  4: [Memory boot] Memory booting started
      * Bit  7: [Boot] GP header found
    
    Current tracing vector, word 2 = 0x00001000
      * Bit 12: [Memory boot] Memory booting trial (first block)
    
    Current tracing vector, word 3 = 0x00000800
      * Bit 11: [Memory boot] Memory booting device QSPI_4
    
    Current tracing vector, word 4 = 0x00000000
    
    Cold reset tracing vector, word 1 = 0x00000000
    
    Cold reset tracing vector, word 2 = 0x00000000
    
    Cold reset tracing vector, word 3 = 0x00000000
    
    Cold reset tracing vector, word 4 = 0x00000000
    
    Current copy of the PRM_RSTST register (reset reasons) = 0x00000001
      * Bit 0 : GLOBAL_COLD_RST
    
    PRM_RSTST = 0x00000001
      * Bit 0 : GLOBAL_COLD_RST
    
    Cortex A15 Program Counter = 0x0003808c
      -> Data abort exception default handler
      -> DFAR = ffefeeee
      -> DFSR = 00000801
    

    it's created the text document in this case below message i got.

    Cortex A15 Program Counter = 0x0003808c
      -> Data abort exception default handler
      -> DFAR = ffefeeee
      -> DFSR = 00000801

    while loading u-boot.bin using CCSv8 reference of below video path

    It will struct 0x0000000c PRUSS1_GP register i am going step by step also same problem occurring.

    Tell me any another way to run u-boot.

    Thanking You,

    Ramachandra

  • Ramachandra,

    can you use a JTAG debugger and for example Code Composer Studio to check U-Boot SPL operation? With that it will be pretty easy to tell what is going wrong.

    Regards, Andreas

  • Hai sir,

    I am using Below steps through CCSv8

    1)Launch Selected configuration from am5728.ccxml and Load and test configuration of Device Name: GPEVM_AM572X

    2) CPU Reset then PC=0x00030000

    3)Tools--> Load Memory ->u-boot-spl.bin (0x40300000) -->Type Size(32-bits)-->Finish

    4)Run -->Load Symbols --> u-boot-spl(not giving any address) --> OK

    5)checking Disassembler and Memory Browser data present or not.

    6)Change Program Counter to 0x40300000

    7)Run the code.

    In beagle board it will stop (##ERROR ## Please Reset the board ###)

    but in our custom board nothing it's displaying, it will go and stop in 0x0000000c PRUSS1_GP register.

    Beacuse of any problem or EEPROM am not used in the board, but in u-boot EEPROM patch file added and created.

    I am using latest PSDK images only.

    Thanking you ,

    Ramachandra

  • Ramachandra,

    what I would recommend is using the regular ROM boot flow through the SD card to load SPL etc rather than side-load through CCS as doing so can cause a whole host of issues due to side effects in terms of how the boot happens, what CCS scripts do to the device, etc.. For this simply insert a short section of debug code into your board_init_f() like shown below or wherever you need for debugging to "trap" code execution, and then boot and use this to attach the debugger to this point, also allowing you to continue working from there (after loading the symbols from the u-boot-spl ELF file)

    volatile bool halt = true;
    while (halt);

    With this you should be able to debug where your issues are.

    Regards, Andreas

  • Hi Andeas,

    Already i'm inserted the assembly code in early_system_init() in hwinit_common.c file below assembly code i am attaching

        asm("test: nop");
        asm("    nop");
        asm("    b test");
        asm("    nop");
        asm("    nop");

    1. after that single step execution doing though XDS110 but not displaying any data in serial port.

    actually i added #define DEBUG 1 in include/configs/ams7xx_evm.h in below method i added

    #ifndef __CONFIG_AM57XX_EVM_H
    #define __CONFIG_AM57XX_EVM_H

    #define DEBUG 1
    #include <environment/ti/dfu.h>
    #include <linux/sizes.h>

    #define CONFIG_IODELAY_RECALIBRATION

    not occurring any debug messages in serial port?

    2.In serial port no problem because of Baremetal code working in the custom board below few things i'm changed.

    Actually in GEL file i have changed below things

    #define HW_LEVELING_ENABLED     (1U)
    #define IS_EMIF2_AVAILABLE      (0U)
    #define ENABLE_ECC              (0U)
     /* Only one of following two options can be used. */
    #define MEMMAP_2GB_NON_INTL_EMIFX2   (1U) /* Two EMIFs in non interleaved mode
                                               * - 2GB total memory */
    #define MEMMAP_2GB_INTL_EMIFX2       (0U) /* Two EMIFs in interleaved mode
                                               * - 2GB total memory */                                        
    Because in my board single chip select of DDR3 used another EMIF2 not used no EEPROM, No EMIF2, NO EMMC, No USB used.

    3)In u-boot how to disable EMIF2 could you send me the path.

    Thanking you,

    Regards,

    Ramachandra 

  • Rama,

    Ramachandra Parlapalli said:

    after that single step execution doing though XDS110 but not displaying any data in serial port.

    actually i added #define DEBUG 1 in include/configs/ams7xx_evm.h in below method i added

    #ifndef __CONFIG_AM57XX_EVM_H
    #define __CONFIG_AM57XX_EVM_H

    #define DEBUG 1

    While this may work usually how you enable debug printing for a specific module (C source file) is by placing a '#define DEBUG' near the top of that specific file. Doing this in a header file may have unintended consequences/side effects at the worst, or end up being overly chatty at the best.

    Also it was discussed in another thread, either the debug UART (if activated) or the main console need to be up before any printing can happen. And those are initialized during different steps in the SPL init flow. As you step through the code and you move past the initialization of either one (debug_uart_init or preloader_console_init), UART should start outputting text. If that's not the case then there is some issue with the code that can be debugged via JTAG for example.

    Ramachandra Parlapalli said:
    3)In u-boot how to disable EMIF2 could you send me the path.

    U-Boot on our devices requires DDR, which means EMIF is required. So it can't be disabled.

    Regards, Andreas