This board includes an eMMC module. Our off the shelf builds are 4GiB, but up to 64GiB are available for larger builds. The eMMC flash appears to Linux as an SD card at /dev/mmcblk0. Our default programming will include one partition programmed with our Debian image.
The CPU boots out of the emmc's hardware boot partitions /dev/mmcblk0boot0 and /dev/mmcblk0boot1. These are both 16MB, and are separate from the mmcblk0 flash. Erasing or manipulating /dev/mmcblk0 and its partitions will not affect these hardware partitions. The board boots to /dev/mmcblk0boot0 by default, but boot1 can be selected if it has been written with a valid bootloader. This allows atomic updates in the field of u-boot, but should only be done with care as it can leave your board not booting if a bad image is written before switching the active boot partition.
|WARNING:||This may need a development board or RMA to recover the SBC if the CPU fails to boot. Make certain a valid u-boot is present on the boot device before switching to it.|
Write a u-boot to mmcblk0boot1 with:
echo 0 > /sys/block/mmcblk0boot1/force_ro dd if=/path/to/u-boot.kwb bs=1M of=/dev/mmcblk0boot1
Once the data has been verified as written, the active boot partition can be switched to mmcblk0boot1:
# The argument after enable should be 2 for mmcblk0boot1, or 1 for mmcblk0boot0 mmc bootpart enable 2 1 /dev/mmcblk0
The active partition can be read as part of the extcsd read:
mmc extcsd read /dev/mmcblk0