BBB eMMC boot partition

Hello,

I’m new here, so I’ll introduce myself, I’m an embedded software developer working with ARM based boards (A10, iMx, AM335x) from the Netherlands.

I’ve been working on a custom linux installation for the BBB (buildroot). There’s only one nagging problem I can’t seem to solve. For booting I use u-boot and an uSD card with three partitions. The first is FAT. This work fine. But then comes the problem: eMMC.

It seems like the only way to let the BBB boot off the eMMC is to create a FAT partition (#1) that goes from cylinder 1 to 9 (255 heads, 63 sectors). The eMMC is big enough for sure, so that’s no problem, but it bothers me that I can’t seem to change the partition size, and I don’t understand why.

On the partition is a vfat filesystem with the MLO, u-boot.img and uEnv.txt files.

I’ve read the AM335x technical reference thoroughly, checked all the boot flowcharts against a hexdump of the mmcblk1 device, but I can’t find the reason why the device won’t boot when I change the partition size.

Does anyone know about any requirements I’ve missed? Is the size a given constraint? I would like to use a very small FAT partition of 1MB or so…

Thanks,

Sjef.

Hello,

I'm new here, so I'll introduce myself, I'm an embedded software developer
working with ARM based boards (A10, iMx, AM335x) from the Netherlands.

I've been working on a custom linux installation for the BBB (buildroot).
There's only one nagging problem I can't seem to solve. For booting I use
u-boot and an uSD card with three partitions. The first is FAT. This work
fine. But then comes the problem: eMMC.

It seems like the only way to let the BBB boot off the eMMC is to create a
FAT partition (#1) that goes from cylinder 1 to 9 (255 heads, 63 sectors).
The eMMC is big enough for sure, so that's no problem, but it bothers me
that I can't seem to change the partition size, and I don't understand why.

That's an old requirement, it was a "x-loader" bug, that got fixed
years ago.. (x-loader (original MLO) couldn't find "u-boot.bin")

On the partition is a vfat filesystem with the MLO, u-boot.img and uEnv.txt
files.

I've read the AM335x technical reference thoroughly, checked all the boot
flowcharts against a hexdump of the mmcblk1 device, but I can't find the
reason why the device won't boot when I change the partition size.

Does anyone know about any requirements I've missed? Is the size a given
constraint? I would like to use a very small FAT partition of 1MB or so..

fat16 needs 12MB or greater to work.

btw, instead of bothering with the fat partition, just use one big ext4:

sudo dd if=MLO of=/dev/sdX count=1 seek=1 conv=notrunc bs=128k
sudo dd if=u-boot.img of=/dev/sdX count=2 seek=1 conv=notrunc bs=384k

Then just remember, to create the first partition with a 1mb hole at the start.

sudo sfdisk --in-order --Linux --unit M ${DISK} <<-__EOF__
1,0x83,*
__EOF__

Regards,

Hello,

I’m new here, so I’ll introduce myself, I’m an embedded software developer
working with ARM based boards (A10, iMx, AM335x) from the Netherlands.

I’ve been working on a custom linux installation for the BBB (buildroot).
There’s only one nagging problem I can’t seem to solve. For booting I use
u-boot and an uSD card with three partitions. The first is FAT. This work
fine. But then comes the problem: eMMC.

It seems like the only way to let the BBB boot off the eMMC is to create a
FAT partition (#1) that goes from cylinder 1 to 9 (255 heads, 63 sectors).
The eMMC is big enough for sure, so that’s no problem, but it bothers me
that I can’t seem to change the partition size, and I don’t understand why.

That’s an old requirement, it was a “x-loader” bug, that got fixed
years ago… (x-loader (original MLO) couldn’t find “u-boot.bin”)

Thing is, MLO isn’t even loaded, I just get the CCCC console output.

On the partition is a vfat filesystem with the MLO, u-boot.img and uEnv.txt
files.

I’ve read the AM335x technical reference thoroughly, checked all the boot
flowcharts against a hexdump of the mmcblk1 device, but I can’t find the
reason why the device won’t boot when I change the partition size.

Does anyone know about any requirements I’ve missed? Is the size a given
constraint? I would like to use a very small FAT partition of 1MB or so…

fat16 needs 12MB or greater to work.

I din’t realize that… I have a 1MB FAT32 partition on the uSD card that works just fine…
So I reasoned that this should work on the eMMC too.,.

btw, instead of bothering with the fat partition, just use one big ext4:

sudo dd if=MLO of=/dev/sdX count=1 seek=1 conv=notrunc bs=128k
sudo dd if=u-boot.img of=/dev/sdX count=2 seek=1 conv=notrunc bs=384k

Then just remember, to create the first partition with a 1mb hole at the start.

sudo sfdisk --in-order --Linux --unit M ${DISK} <<-EOF
1,0x83,*
EOF

This is a good solution, thank you. It still bothers me that I can’t get a handle
on why the FAT booting only works with a single specific partition size, but
I’ll let it go :slight_smile:

Best regards,

Sjef.