Custom Board: Gave up waiting for Root device

Forums Devices OSD335x-SM Custom Board: Gave up waiting for Root device

Tagged: 

Viewing 10 reply threads
  • Author
    Posts
    • #5398
      Jesse AbellaJAbella
      Participant

      We are bringing up custom boards and followed the instructions for Robert C Nelsons EEPROM bypass in uboot. This was succesful as uboot detects it is a blank eeprom and continues the botting process. However it comes to the point where it says “Gave up waiting for root device” and “ALERT!  /dev/mmcblk1p1 does not exist.  Dropping to a shell!”. The boot log is located below:

      What could be causing this error? Uboot is clearly able to locate the sd card to find the device tree and kernel image but always fails when it starts to load the kernel

    • #5412
      Eshtaartha Basu
      Moderator

      Hello JAbella,

      From your boot log, it looks like the board is having difficulty booting from MMC0 interface (MMC0 is typically connected to SD card slot on BB Black) as indicated by the lines:

      Card did not respond to voltage select!
      mmc_init: 95, time 13
      ** Bad device mmc 0 **

      You can see that the board is trying to boot from MMC1 once booting from MMC0 fails. At line 48, it says:

      mmc1 is current device

       

      I’ll need a little more information before we proceed further.

      1. What interface is SD card connected to in your design (MMC0 or MMC1)?

      2. Does your design have both eMMC and SD card?

      3. If yes to previous question, have you flashed both eMMC and SD card with the same image?

    • #5415
      Jesse AbellaJAbella
      Participant

      Thanks for the reply,

       

      1. The SD Card is connected to MMC1 interface.

      2. My design has no eMMC so only the SD card interface at MMC1.

      Is there something in the image (originally a PocketBeagle Image) which only allows the SD interface to be set up on MMC0? I would think that if it had no trouble locating the kernel and device trees from the sd interface it should continue booting properly.

    • #5418
      Eric TannerEricT
      Participant

      It looks like the kernel is having a hard time talking to the hardware peripherals.  Having the SD car on MMC1 should be ok.

      This is likely a kernel or dtb configuration issue.

      What Kernel are you using?

       

      -Eric

    • #5439
      Jesse AbellaJAbella
      Participant

      I am using kernel 4.4.91-ti-r141 and the am335x-pocketbeagle device tree. I’ve attached the device tree source to see if there’s a  simple change that could be made to solve the problem.

    • #5440
      Eshtaartha Basu
      Moderator

      @JAbella

      Looks like your attachment was not uploaded successfully due to security reasons. Please ZIP the file and resend it.

    • #5441
      Jesse AbellaJAbella
      Participant

      Apologies, should be attached now

    • #5445
      Eric TannerEricT
      Participant

      I’ll look at the attached dts soon..

       

      your uboot output looks like it’s trying to use an overlay as well, line 66 and 67.. is that intentional? something that can be turned off in uEnv.txt?

    • #5448
      Eshtaartha Basu
      Moderator

      @JAbella

      You’re not able to boot from MMC1 interface because in the PocketBeagle device tree MMC1 interface is NOT enabled at all by default (This is because SD card is connected to MMC0 interface and MMC1 interface is not used on PocketBeagle). U-Boot will be able to see and read the MMC1 interface but the kernel will not be able to run from MMC1 if the interface is not enabled in the kernel’s device tree. This is why you get the error:

      ALERT!  /dev/mmcblk1p1 does not exist.

      To successfully boot your board, you will have to modify the PocketBeagle Device Tree to exactly match your custom board hardware. This will involve enabling the MMC1 interface and also doing the required pin muxing in the device tree. If any of the other peripherals on your custom board is different from PocketBeagle, you will have to make suitable modifications to capture those differences as well.

      Please note that MMC0 device tree node is labeled “mmc1” and MMC1 device tree node is labeled “mmc2” in Beagleboard/PocketBeagle device trees. This can lead to some confusion if you’re new to device trees. Keep this in mind while modifying device tree.

    • #5456
      Jesse AbellaJAbella
      Participant

      Is it as simple as modifying the section in the dts where it says status = “disabled” and changing that to “okay” to match mmc1? Or are there other changes that need to be done for the kernel to recognize it.

    • #5457
      Eshtaartha Basu
      Moderator

      Apart from changing the status property, you’ll have to set other properties as well as shown here to enable the MMC1 interface. In the link given, make sure you reference “mmc2” instead of “mmc1” by changing node name to “&mmc2” from “&mmc1”. Also make suitable name changes to pinctrl-0 property. Retain cd-gpios property if you plan to use chip detect pin. Else, remove it.

      Next, setup proper pin muxing for your MMC1 interface as shown here (This is a reference to BB Black’s MMC1 pin muxing for eMMC). You should modify the pin muxing shown in the given link to 4 wire interface instead of 8 wire since SD card uses a 4 wire interface. If you’re using chip detect pin, setup pin mux for it too as shown here (Don’t forget to make suitable changes to node name).

      The above two steps will help you bring up the MMC1 interface.

       

       

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