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.

Linux/OCTVO-3P-AM335X: AM3358 unable to Boot

Part Number: OCTVO-3P-AM335X
Other Parts Discussed in Thread: AM3358

Tool/software: Linux

Hi,

I am facing problem while booting Linux SDK on custom board having AM3358 as core part. The image stored into SD card and try boot from there.But its showing NO partition found as shown in below.

I have created the image by the following the process as shown official site for Linux SDK. A normal Debian Linux booting successfully but SDK Linux is not working.

so help me out.

Thanks in Advance.

This is debugging logs from my board.

===============================================================================================================================

U-Boot SPL 2018.01-g9d984f4548 (Apr 06 2019 - 07:42:30)
Trying to boot from MMC1
*** Warning - bad CRC, using default environment

U-Boot 2018.01-g9d984f4548 (Apr 06 2019 - 07:42:30 +0000)

CPU : AM335X-GP rev 2.1
Model: TI AM335x BeagleBone Black
DRAM: 512 MiB
NAND: 0 MiB
MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
** Bad device mmc 0 **
Using default environment

<ethaddr> not set. Validating first E-fuse MAC
Net: Could not get PHY for cpsw: addr 0
cpsw, usb_ether
Hit any key to stop autoboot: 0
switch to partitions #0, OK
mmc1(part 0) is current device
** No partition table - mmc 1 **
switch to partitions #0, OK
mmc1(part 0) is current device
SD/MMC found on device 1
** No partition table - mmc 1 **
## Error: "bootcmd_nand0" not defined
starting USB...
USB0: Port not available.
using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
MAC 98:84:e3:93:60:d6
HOST MAC de:ad:be:ef:00:00
RNDIS ready
missing environment variable: pxeuuid
Retrieving file: pxelinux.cfg/01-98-84-e3-93-60-d6
using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
MAC 98:84:e3:93:60:d6
HOST MAC de:ad:be:ef:00:00

=============================================================================================================

  • Gaurav,

    Thanks for your post. Would you please confirm what SDK version you are using?

    Also, please provide the SYSBOOT settings that you are booting with to establish the boot order.

    Could you describe how the MMC interfaces are connected on your board? It looks like the SD Card cage is connected to MMC1, is that correct? Is there anything on MMC0?

    Finally, could you please attach as a text file the output of the printenv command in U-Boot so that I can see the environment you are using?

    Thank you.
  • Hi Ronb,

    Thanks for the reply.

    SDK version :ti-processor-sdk-linux-am335x-evm-05.03.00.07

    i dont know how to see boot sequence here.

    I got below result for MMC using mmc list command

    SD/MMC :0 => SD card

    SD/MMC:1  => eMMC

    I am attaching printenv response below

  • And I also have doubt that why the device not detecting SD card at mmc 0
    its showing message "Bad device mmc 0 ".
    what could be a problem ?
    is it need any change before creating image file
  • Can you please tell me more about the system? How did you build the Debian image? What bootloader did you use with the Debian image?

    It will be very helpful to understand the SYSBOOT settings being used on your board. This determines how the ROM boots the sytem. Since the ROM is clearly able to get SPL and U-Boot, what it is using is working, but what U-Boot is trying to use is not succeeding.

    You should be able to find these pins and their settings on the schmatic of your board. Chapter 26 of the TRM will then tell you how the ROM is loading U-Boot and that will give us some hints as to what U-Boot is missing.

    Thank you.
  • Boot Sequence is like this
    1)MMC1
    2) MMC0
    3) UART0
    4) USB0[5]

    I build the Linux SDK image by following process mention on this website:
    software-dl.ti.com/.../Overview_Getting_Started_Guide.html

    I am using prebuild Linux image (tisdk-docker-rootfs-image-am335x-evm.tar.xz) and u-boot as bootloader.
    everything is exactly the same as to mention on that website.
    My host system is Ubuntu.

    I have one question here
    What if EEPROM data is not valid? Is that because of EEPROM?

    Because when I used the same Linux image on Beaglebone is working but not with our custom board that has exact same designed as beagle bone.
    I have tried with 2 custom board and the result was the same.
  • Gaurav,

    If you have not programmed valid data into the EEPROM, and have not made changes to U-Boot to account for this, it would cause problems in booting. We use the EEPROM data to make a variety of decisions about how to set the board up.

    You can see a lot of this code in u-boot/board/ti/am335x/board.c and .h.
  • RonB,
    EEPROM has valid data. I have already checked it
    Its exactly copied of beaglebone back EEPROM data.
    I have also tried to change mux.c file.
    I have one question after change in this file it's not affect on board as want to change logic of detection of sd card .
    Is that right file to changed for that purpose.?
    Please tell me what is problem ?
    Do I need to rebuild uboot and Linux again.?
  • Gaurav,

    What bootloader did you use to get Debian to boot?

    Yes, if you make a change to a C file, you need to rebuild U-Boot (SPL or MLO and U-Boot) and copy it to the boot medium you want to use, SD Card in this case.

    What file to change depends on what you are trying to do. Mux.c handles pinmuxing.

    It seems U-Boot is not seeing the SD Card at all. What have you done to validate the interface at a h/w level? Do you see clock and data changing on the proper pins?

    Thanks.
  • RonB,
    Uboot is bootloader.
    Can you tell me how to rebuild it.
    There is folder of uboot in Linux sdk folder where I changed mux.c files from board support folder.
    I want to rebuild and put them into prebuilt folder so I can use them in sd card creation process by calling create_sdcard.sh.
    I have gone through many document but not getting clear idea for rebuilding uboot and all documents are related to building Linux sdk.

    Thanks.

  • Gaurav,

    I'm not sure if you've already found this page, but it is a great resource and has the instructions for how to build U-Boot:

    software-dl.ti.com/.../Foundational_Components_U-Boot.html

    I hope it has what you need.
  • Gaurav,

    I normally just create a card using the prebuilt files and then overwrite MLO and u-boot.img with your newly built versions. That way you can easily get back to the prebuilt images by simply writing a new card.

    In terms of verifying your pinmuxing, I have a CCS script that you can use with JTAG to scrape all the pinmux registers. You can download the script here:

    http://git.ti.com/sitara-dss-files/am335x-dss-files/blobs/raw/master/padconf/am335x-padconf.dss

    Instructions on how to run the script are here:

    http://git.ti.com/sitara-dss-files/am335x-dss-files/blobs/master/README

    The output of the script will be an rd1 file on your desktop. I have a separate python script for decoding the files. If you zip and attach the rd1 file I can decode it for you. If you're a "do it yourselfer" you can run the python script to decode the pinmux file yourself. You would start by cloning this entire repository:

    git://git.ti.com/sitara-dss-files/am335x-dss-files.git

    It contains the python script and necessary xml files to decode the rd1 file. More details can be found in this README (note this is a different README than the first one I referenced):

    http://git.ti.com/sitara-dss-files/am335x-dss-files/blobs/master/padconf/README

    Best regards,
    Brad

  • Hi Brad,
    I followed your way and got a problem now.
    it's showing "Card did not respond to voltage select!"

    I have build a Uboot folder by using this command:
    1. sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- am335x_boneblack_defconfig
    2. sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

    Its create uboot.img and MLO in that folder and i put into sdcard BOOT partition.
    What i did wrong in above process.?


    logs:

    U-Boot SPL 2018.01-00569-g7b4e473842-dirty (May 01 2019 - 12:29:09)
    Trying to boot from MMC1
    Card did not respond to voltage select!
    *** Warning - MMC init failed, using default environment


    U-Boot SPL 2018.01-00569-g7b4e473842-dirty (May 01 2019 - 12:29:09)
    Trying to boot from MMC1

    U-Boot SPL 2018.01-00569-g7b4e473842-dirty (May 01 2019 - 12:29:09)
    Card did not respond to voltage select!
    *** Warning - MMC init failed, using default environment


    U-Boot SPL 2018.01-00569-g7b4e473842-dirty (May 01 2019 - 12:29:09)
    Trying to boot from MMC1
    Card did not respond to voltage select!
    *** Warning - MMC init failed, using default environment
  • Sd card (SD card holder) interface don't have CD line so that's why its Detection logic not working and it's not detecting SD card.
    That's the reason I want to remove the logic.CD line should be low for working but as don't have CD pin on a holder, its always high.
    So I changed the HIGH from LOW in dts
  • Gaurav Choubey said:
    Sd card (SD card holder) interface don't have CD line

    How does it behave if you don't configure pin muxing for the CD line at all?  I think the better solution is not to configure the CD pin.  Please also capture the pin mux info I requested.

  • Brad,
    I don't have JTAG option on my custom board. I cannot fetch pin mux info.
    But I solved my problem by replacing uboot.img and MLO as u suggested.
    Thank you so much.