Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 6 Jan 2017 14:33:36 -0200
From:      "Dr. Rolf Jansen" <rj@obsigna.com>
To:        freebsd-arm@freebsd.org
Subject:   Re: BeagleBone Black MMC ordering clashes
Message-ID:  <0D800E14-799A-4926-AEF8-CD698D647E40@obsigna.com>
In-Reply-To: <1483718084.96230.5.camel@freebsd.org>
References:  <7D750433-59FC-4999-AC24-041683E17310@obsigna.com> <1483718084.96230.5.camel@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
> Am 06.01.2017 um 13:54 schrieb Ian Lepore <ian@freebsd.org>:
>=20
> On Fri, 2017-01-06 at 12:37 -0200, Dr. Rolf Jansen wrote:
>> The BeagleBone Black comes with 2 MMC facilities, one built-in
>> (internal 4 GB) and one provided by a removable SD card. For unknown
>> reasons the BBB defined on the removable SD card to be MMC0 and the
>> internal flash memory is MMC0.
>>=20
>>   1) In the first go, I dd'd the FreeBSD-12 BBB snapshot (20161221)
>> onto a SD card and I was able to start the device from that card.
>> gpart showed me that the device identifier of the SD card is mmcsd0
>> and that of the internal flash memory is mmcsd1. OK, that matches the
>> already mentioned definitions.
>>=20
>>   2) Now, I destroyed the partition of the internal mmcsd1 and
>> created a new one:
>>=20
>> =3D>     63  7552961  mmcsd1  MBR  (3.6G)
>>        63     8129          - free -  (4.0M)
>>      8192     8192       1  fat32  [active]  (4.0M)
>>     16384  7536640       2  freebsd  (3.6G)
>>=20
>> =3D>      0  7536640  mmcsd1s2  BSD  (3.6G)
>>         0  7536640         1  freebsd-ufs  (3.6G)
>>=20
>>   3) I copied over the contents of /boot/msdos from the external SD
>> card to the msdosfs on mmcsd1s1 and I installed the FreeBSD 12
>> snapshot on mmcsd1s1a. Restarting the device from the internal flash
>> and no external SD inserted with FreeBSD 12-CURRENT works well at the
>> first glance.
>>=20
>>   4) However, the internal flash got now the device identifier
>> mmcsd0:
>>=20
>>    ...
>>    mmc0: No compatible cards found on bus
>>    ...
>>    mmcsd0: 4GB <MMCHC MMC04G 5.8 SN 82390DEC MFG 11/1998 by 112
>> 0x0000> at mmc1 48.0MHz/8bit/65535-block
>>    ...
>>=20
>> I know, this is how FreeBSD deals with the device numbering, i.e.
>> serial numbers starting at zero without particular meaning, and I
>> know that we should not rely on the number ordering.
>>=20
>> But it seems that the MMC device driver does cont on the external SD
>> card is at MMC0 when I insert it into the BBB once it has been
>> started from the internal flash. It seems to insist to assign the
>> device ID mmcsd0, which results in the device ordering clash because
>> mmcsd0 has been assigned to the internal flash at MMC1 (s. above).
>>=20
>> In the moment, I can have both flash device active at the same time
>> only when I start the BBB from the external SD.
>>=20
>> I would be glad to hear suggestions on how to deal with the issue. At
>> the end of the day, I want to start the device from the mostly static
>> OS file system on the internal flash and keep the volatile data on
>> the external SD.
>>=20
>> Best regards
>>=20
>> Rolf
>=20
> The mmcsd0 identifier will be assigned to the first mmc device found
> that has a valid mmc or sd card.  If  the external slot has a card in
> it, it will become mmcsd0 because it gets probed first.  If it has no
> card in it, the onboard eMMC becomes mmcsd0 because the sd slot didn't
> claim that device id.  There is no way to change the order of probing;
> probing happens in order of the devices in the chip.  The BBB makers
> decided to connect the external sd to the first device and the onboard
> eMMC to the second one.

Thank you for rephrasing of what I wanted to say in my initial post:

>> I know, this is how FreeBSD deals with the device numbering, i.e.
>> serial numbers starting at zero without particular meaning, and I
>> know that we should not rely on the number ordering.

So, yes, this part is absolutely clear and understood.

> If you want the eMMC to be the root filesystem whether there is an
> external sd card installed or not, the only solution is to use UFS or
> GPT labels instead of device names to refer to partitions in fstab.

I do not rely on device identifiers in fstab on non of my numerous =
FreeBSD boxes, instead, I use the various sorts of labels ever since, =
and I continue to do it also with the BBB installation(s).

# df -h
Filesystem         Size    Used   Avail Capacity  Mounted on
/dev/ufs/SYSTEM     13G    875M     11G     7%    /
devfs              1.0K    1.0K      0B   100%    /dev
/dev/label/BOOT    4.0M    924K    3.1M    23%    /boot/msdos
tmpfs               50M    4.0K     50M     0%    /tmp

However, this does not help in the given case, because the MMC device =
driver refuses to enumerate the SD card when inserted into a BBB that =
has been already started-up from the internal flash. So the question is, =
how can I get the SD card activated once inserted into a running system, =
and I would happily live with any device identifier for it, even let it =
mmcsd77 if only the device would be accessible by this.

Best regards

Rolf




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?0D800E14-799A-4926-AEF8-CD698D647E40>