/dev/mmcblk0p2 does not exist

Hello,

I have a custom board based on the BeagleBone architecture. The board has been working nicely with Robert C. Nelson’s Linux-3.2.33-psp26.1 kernel, after some modifications on the EEPROM content assessment, since we did not have the BeagleBone contents.

Now, after populating the EEPROM with the contents of the BeagleBone EEPROM, we have made some attempts to work with kernel 3.8.13-bone55.1. The board generally boots, but cannot find most of the necessary devices, including the mmcblk0, which means it cannot mount a root filesystem (below the final parts of the boot log):

[ 1.968186] omap_hsmmc mmc.4: of_parse_phandle_with_args of ‘reset’ failed
[ 1.975528] omap_hsmmc mmc.4: Failed to get rstctl; not using any
[ 1.982013] omap_hsmmc mmc.4: could not find pctldev for node /pinmux@44e10800/pinmux_mmc1_pins, deferring probe
[ 1.992807] omap_hsmmc mmc.4: unable to select pin group
[ 1.998736] omap_hsmmc mmc.4: unable to obtain RX DMA engine channel 25

Loading, please wait…
[ 2.434088] udevd[53]: starting version 175
modprobe: chdir(3.8.13-bone55.1): No such file or directory
Begin: Loading essential drivers … done.
Begin: Running /scripts/init-premount … done.
Begin: Mounting root file system … Begin: Running /scripts/local-top … done.
Begin: Waiting for root file system … done.
Gave up waiting for root device. Common problems:

  • Boot args (cat /proc/cmdline)
  • Check rootdelay= (did the system wait long enough?)
  • Check root= (did the system wait for the right device?)
  • Missing modules (cat /proc/modules; ls /dev)
    ALERT! /dev/mmcblk0p2 does not exist. Dropping to a shell!
    modprobe: chdir(3.8.13-bone55.1): No such file or directory
    modprobe: chdir(3.8.13-bone55.1): No such file or directory
    modprobe: chdir(3.8.13-bone55.1): No such file or directory
    modprobe: chdir(3.8.13-bone55.1): No such file or directory
    modprobe: chdir(3.8.13-bone55.1): No such file or directory
    modprobe: chdir(3.8.13-bone55.1): No such file or directory

BusyBox v1▒20.2 (Debian 1:1.20.0-7) built-in shell (ash)
Enter ‘help’ for a list of built-in commands.
/bin/sh: can’t access tty; job control turned off
(initramfs)

Could someone help as to what we are missing?

Thank you,
Nikos

OK, fiddled a bit with the relevant kernel configuration options, and seems I have stepped forward. I now have an operational root filesystem and several devices, but I cannot see my i2c devices (e.g. eeprom) or USB devices (although I have no dmesg errors about the bringing up of the USB subsystem). Could anyone suggest what information I would need to provide to get some help on this?

Thanks

Just a wild guess, it may be a device tree issue. Try looking at the initial boot before zImage, for example:

Loaded environment from uEnv.txt
Importing environment from mmc ...
using: am335x-boneblack-cape-bone-argus.dtb...
Checking if uenvcmd is set ...
gpio: pin 56 (gpio 56) value is 1
Running uenvcmd ...
reading zImage

This is from my system so the line in red should be different on your system.

HTH, Dave.

Hello Dave, thank you very much for your reply.

The thought crossed my mind too. But, shouldn’t loading the original BBone dtb be OK as far as the i2c and USB interfaces are concerned, since i2c is also defined in the BBone device tree and USB is fixed? So, I have kept the original device tree for my current tests. Is this wrong?

I have a slightly different sequence than you in U-Boot:

reading zImage
2795752 bytes read in 381 ms (7 MiB/s)
reading initrd.img
2957458 bytes read in 393 ms (7.2 MiB/s)
reading /dtbs/am335x-bone.dtb

and this is what I get during kernel boot:

[ 0.259440] omap_i2c 44e0b000.i2c: could not find pctldev for node /pinmux@44e10800/pinmux_i2c0_pins, deferring probe
[ 0.259587] platform 44e0b000.i2c: Driver omap_i2c requests probe deferral
[ 0.259857] omap_i2c 4819c000.i2c: could not find pctldev for node /pinmux@44e10800/pinmux_i2c2_pins, deferring probe
[ 0.259974] platform 4819c000.i2c: Driver omap_i2c requests probe deferral

Nikos

Some more progress, after enabling all pinmux related items in the kernel menuconfig (I presumed that all necessary settings should already be selected, but it seems these actions have altered the result slightly). Now I see the i2c devices in /dev but I still don’t have access to them. The boot log says: