Custom board boot missing eMMC dtb file

Forums Devices OSD335x-SM Custom board boot missing eMMC dtb file

Viewing 3 reply threads
  • Author
    Posts
    • #6383
      Erik HougaardTk4
      Participant

        Hi,

        I have built a custom board based on the PocketBeagle design with added eMMC.

        I am trying to boot the board without the eMMC at first to get things running from an SD card. I have the latest image and patched it according to Robert Nelsons instructions to ignore the EEPROM values.

        But when booting, it seems to be missing a DTB file:

        unable to find [dtb=am335x-boneblack-emmc-overlay.dtb] did you name it correctly

        Right now I don’t need the eMMC to work because I just want the device to boot from SD. But in the future eMMC will be required too.

        After the DTB error I get:

        FAILSAFE: U-Boot UMS (USB Mass Storage) enabled, media now available over the usb slave port …
        Unknown command ‘ums’ – try ‘help’
        uboot_overlays: [fdt_buffer=0x60000] …
        uboot_overlays: loading /lib/firmware/AM335X-PRU-RPROC-4-14-TI-00A0.dtbo …
        3513 bytes read in 656 ms (4.9 KiB/s)
        libfdt fdt_check_header(): FDT_ERR_BADMAGIC
        No FDT memory address configured. Please configure

        I have attached a dump of the log collected over UART. Any help is greatly appreciated.

        Best regards,

        Erik

        Attachments:
      • #6398
        Andres Olivaresandyolivares
        Participant

          I have almost the same problem. I did a custom board with microSD card connector on MMC0.
          All voltages on test points are within expected values. When I power on the board with no microSD in place, I don’t see the “C” character coming from the serial interface (115200N1). But if I power the board with the microSD inserted, it “boots” and I can see all u-Boot messages up to the point:

          unable to find [dtb=am335x-boneblack-emmc-overlay.dtb] did you name it correctly? …

          FAILSAFE: U-Boot UMS (USB Mass Storage) enabled, media now available over the usb slave port …
          Unknown command ‘ums’ – try ‘help’
          loading /boot/initrd.img-4.14.49-ti-r54 …
          4034122 bytes read in 365 ms (10.5 MiB/s)
          debug: [console=ttyO0,115200n8 root=/dev/mmcblk0p1 ro rootfstype=ext4 rootwait coherent_pool=1M net.ifnames=0 quiet] …
          debug: [bootz 0x82000000 0x88080000:3d8e4a 0x88000000] …
          ERROR: Did not find a cmdline Flattened Device Tree
          Could not find a valid device tree
          ** Invalid partition 2 **
          ** Invalid partition 3 **
          ** Invalid partition 4 **
          ** Invalid partition 5 **
          ** Invalid partition 6 **
          ** Invalid partition 7 **
          Card did not respond to voltage select!
          mmc_init: -95, time 12
          gpio: pin 56 (gpio 56) value is 0
          gpio: pin 55 (gpio 55) value is 0
          gpio: pin 54 (gpio 54) value is 0
          gpio: pin 53 (gpio 53) value is 1
          Card did not respond to voltage select!
          mmc_init: -95, time 12
          gpio: pin 54 (gpio 54) value is 1
          Card did not respond to voltage select!
          mmc_init: -95, time 13
          ** Bad device mmc 1 **

          And it stays there and won’t boot the microSD image. I did this image following instructions from https://octavosystems.com/forums/topic/osd3358-boot/#post-4733 to avoid EEPROM checking.

          I assume that after the message “ERROR: Did not find a cmdline Flattened Device Tree” it tries to boot from MMC1 as I can see some messages trying to initialize a card on that interface. And after, it seems to try a USB device with no luck also (no USB device connected).

          Tinkering with u-Boot console, I can see contents on the microSD card (MMC0), so I assume it is working properly. I can also see messages saying that it loaded Linux kernel (vmlinuz) and initrd.img from /boot with no aparent problems.

          Any ideas?

          PS: Attached my boot log for your reference.

          • This reply was modified 6 years, 2 months ago by Andres Olivaresandyolivares. Reason: Additional information added
          Attachments:
        • #6401
          Andres Olivaresandyolivares
          Participant

            Yesterday, after a lot of testing, I decided to go all the way up again, so I performed the following tasks:

            1- Compiled u-Boot with Robert Nelson patches to assume board is BB (https://octavosystems.com/forums/topic/osd3358-boot/#post-4733)
            2- Downloaded latest SM-RED Debian image just in case (I was using latest official BeagleBoard image in my previous tests)
            3- Put image into uSD card using Etcher
            4- DD MLO and u-Boot from 1
            5- Compiled & installed Robert Nelson’s “dtc” tool (https://github.com/RobertCNelson/dtc). This was needed as I’m using CentOS.
            6- Cloned Robert Nelson’s dtb-rebuilder repository (https://github.com/RobertCNelson/dtb-rebuilder)
            7- Created a custom Device Tree file (dtb-rebuilder/src/arm/myboard.dts) based on SM-RED Device Tree but fitted exactly to my custom board
            8- Compiled the Device Tree to get a Device Tree Binary (dtb-rebuilder$ make src/arm/myboard.dtb)
            9- Copied new DTB to my uSD card (/boot/dtbs/[kernel_version]/)
            10- Modified “dtb” variable in /boot/uEnv.txt from uSD card (3) to point to my newly created DTB
            11- Put the uSD on my board and power it up

            I now observed almost no errors and it all went very smooth up to the point of seeing the “Starting Linux…” where I saw a couple of warnings and it stopped with an error saying that it didn’t find my /dev/mmcblk0p1 device (very similar to https://octavosystems.com/forums/topic/custom-board-gave-up-waiting-for-root-device/).

            After some investigation, I noticed that I had removed “mmc1” declaration from my Device Tree thinking it wasn’t neccessary (due to the fact that it was “mmc1” and my uSD is tied to “mmc0”), but it seems like the Device Tree numbers the MMC interfaces from 1, so “mmc1” is actually “mm0” on the processor.

            Once I fixed that and rebuilt my DTB (steps 8-11) it worked just fine and I was presented with Linux login prompt.

            I thought on documenting my process if that helps anybody. I will test the same process with my custom DTB but with BeagleBoard official releases to see if that works as it seems like BeagleBoard releases are more up-to-date than the SM-RED image.

            Best regards!

            • #6404
              Neeraj Dantu
              Moderator

                Thank you very much for documenting the procedure! Very helpful

                Neeraj

            • #6403
              Neeraj Dantu
              Moderator

                Tk,

                It looks like the device tree binary file am335x-boneblack-emmc-overlay.dtb could not be found in /boot/dtbs/[kernel version] directory. Following Andy’s post above https://octavosystems.com/forums/topic/custom-board-boot-missing-emmc-dtb-file/#post-6401 is a good way to go about for bringing up a custom board. Please let us know if you face anymore issues.

                Checkout these links for additional information regarding boot process and device tree:

                https://octavosystems.com/app_notes/osd335x-design-tutorial/osd335x-lesson-2-minimal-linux-boot/osd335x-lesson-2-linux-boot-process-with-the-osd335x/

                https://octavosystems.com/app_notes/osd335x-design-tutorial/osd335x-lesson-2-minimal-linux-boot/linux-device-tree/

                Neeraj

                 

            Viewing 3 reply threads
            • You must be logged in to reply to this topic.