Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 18 Mar 2015 20:41:43 -0700
From:      Tim Kientzle <tim@kientzle.com>
To:        Guy Yur <guyyur@gmail.com>, Hellmuth Michaelis <hm@hellmuth-michaelis.de>
Cc:        freebsd-arm <freebsd-arm@freebsd.org>
Subject:   Re: beaglebone boot from eMMC
Message-ID:  <40A94DE3-36A6-4E85-8B59-15329D00E89C@kientzle.com>
In-Reply-To: <CAC67Hz_ssdAHoRFqC7VAR9_XvTchc5DNhKPY4=LstcMx3j9NXw@mail.gmail.com>
References:  <3DF08C65-20E3-4524-B0E1-C5C096AA0FE8@hellmuth-michaelis.de> <54BA6DB9-DC61-4A6F-B948-777BB9800F54@bocal.org> <A923E8B5-72DC-4C19-B5CA-7729C7E16A5C@hellmuth-michaelis.de> <20150312132739.GA28385@cicely7.cicely.de> <A3E0A638-450D-4B83-90F7-090D45FF4420@bsdimp.com> <3EF47A05-60B2-4BB0-8688-018E50CF7D4A@hellmuth-michaelis.de> <CAC67Hz_ssdAHoRFqC7VAR9_XvTchc5DNhKPY4=LstcMx3j9NXw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

> On Mar 18, 2015, at 11:16 AM, Guy Yur <guyyur@gmail.com> wrote:
>=20
> Hi,
>=20
> On Wed, Mar 18, 2015 at 9:23 AM, Hellmuth Michaelis
> <hm@hellmuth-michaelis.de> wrote:
>>=20
>> Its really weird. I fetched the Angstroem flasher to put back an =
original image onto the eMMC and that worked. I dumped the MBR for Linux =
and the MBR which was generated by the install script and they are both =
pretty OK and legal. I reordered files on the MSDOS partition. I played =
with different =E2=80=9EBIOS=E2=80=9C geometries (because Linux and =
FreeBSD have a rather different sight on this) to produce the =
partitions.
>>=20
>> Nothing helps - it does not boot FreeBSD from the eMMC MSDOS =
Partition. The only thing which made a difference was, when i used the =
Linux-generated MSDOS partition, removed the files in it and populated =
it with the FreeBSD-generated MLO and things - then it booted from it. I =
failed completely to add an UFS partition after the Linux-generated =
MSDOS partition, tried gpart, fdisk, bsdlabel. The UFS mmcsd1s2a can be =
generated, populated, fsck=E2=80=99d, tested, checked - after the next =
powercycle it simply disappeared.
>>=20
>> It seems to me that there is a bit more magic involved than only =
generate the partitions. In the Linux script to generate the image onto =
the eMMC, they check for:
>>=20
>> HEADER=3D$(hexdump -e '8/1 "%c"' /sys/bus/i2c/devices/0-0050/eeprom =
-s 5 -n 3)
>>=20
>> and possibly write to an eeprom - has someone an idea why this is =
needed ?
>>=20
>> Hellmuth
>>=20
>>=20
>=20
> Is your msdosfs slice on the eMMC aligned to 1 MB?
>=20
> I had the same "CCC" problem when I aligned the partition
> and used newfs_msdos.
> Removing the sector count adjustment calculation in newfs_msdos
> as was done in NetBSD worked for me.
>=20
> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D183234

Fortunately, the AM335x TRM from TI documents the exact checks made by =
the ROM before it will recognize a valid MSDOS partition.  So you =
don=E2=80=99t need to guess; you can compare a hex dump of your disk =
with the docs and see exactly what=E2=80=99s gone wrong.

As I recall, the ROM is very unforgiving:

* The CHS geometry used in the MBR has to exactly match the MSDOS format =
geometry.  Attempts to align the partition on round boundaries can screw =
this up badly.

* The FAT format type (12, 16, or 32) has to match the ROM expectations

If any of the ROM checks fail, it will assume the device is not usable =
and try a different device (ultimately ending up with CCCC on the serial =
port).

The corresponding code in Crochet uses

$ gpart add -a 63 -b 63 -s 2m -t =E2=80=98!12=E2=80=99 <device>

to create the MSDOS partition and then uses

$ newfs_msdos -L <label> -F 12 <device>

Note: Use -F 12 for an MSDOS partition of 16MB or less, otherwise use -F =
16.

Tim





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?40A94DE3-36A6-4E85-8B59-15329D00E89C>