We have several different ways to erase bootloader.
SPACE
on the keyboard to enter the U-Boot mode.store boot_erase bootloader
into the U-Boot console, and wait for the erasure process to complete.reboot
or press the RESET
button on your SBC.Use the following serial Terminal print-out as a reference:
kvim1s# store boot_erase bootloader GUID Partition Table Header signature is wrong: 0x0 != 0x5452415020494645 GUID Partition Table Header signature is wrong: 0x0 != 0x5452415020494645 gpt is invalid Caution! Your devices Erase group is 0x400 The erase range would be change to 0x0~0x23ff 8191 blocks erased: OK Caution! Your devices Erase group is 0x400 The erase range would be change to 0x0~0x23ff 8191 blocks erased: OK Caution! Your devices Erase group is 0x400 The erase range would be change to 0x0~0x23ff 8191 blocks erased: OK kvim1s# reboot
If the eMMC has been erased, the serial Terminal should show this print-out when your SBC powers-on:
S4:BL:25dcde;ID:00D9C31D04901F08;FEAT:30F:1FFF0000:B002F:1;POC:DD;RCY:0;OVD:0;DFU:0;USB:ADFU�S4:BL:25dcde;ID:00D9C31D04901F08;FEAT:30F:1FFF0000:B002F:1;POC:DD;RCY:0;OVD:0;DFU:1;USB:0;RD-00:0;
This erasure method is suitable for all products that use the Amlogic SoC:
eMMC boot-loader can be stored on /dev/mmcblk0
and special areas /dev/mmcblk0boot0
or /dev/mmcblk0boot0
.
Cleanup special eMMC boot areas.
dd if=/dev/zero count=8192 | sudo tee /dev/mmcblk?boot? >/dev/null
Also need cleanup eMMC common boot area.
sudo dd if=/dev/zero count=2000 seek=1 of=/dev/mmcblk0
/dev/mmcblk0
maybe different, please check how-to get-block-device-names-for-boot-loaders
sudo dd if=/dev/zero count=8192 | sudo tee /dev/mmcblk?boot? >/dev/null sudo dd if=/dev/zero count=2000 seek=1 of=$(ls /dev/mmcblk?boot?|grep -m1 -o /dev/mmcblk.)
Get block-device names for special boot areas.
~$ ls -1 /dev/mmcblk?boot? /dev/bootloader?
/dev/bootloader0
/dev/bootloader1
/dev/mmcblk0boot0
/dev/mmcblk0boot1
/dev/bootloader?
same areas as /dev/mmcblk?boot?
, but shifted by 512 bytes
Get eMMC block-device name.
~$ ls -1 $(ls /dev/mmcblk?boot?|grep -m1 -o /dev/mmcblk.)
/dev/mmcblk0
This example display empty content for special boot-loaders areas.
~$ for m in /dev/bootloader?;do echo $m; dd if=$m count=1 2>/dev/null | hexdump -C ;done
/dev/bootloader0
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000200
/dev/bootloader1
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000200
Display same but for other boot areas names.
~$ for m in /dev/mmcblk?boot?;do echo $m; dd if=$m skip=1 count=1 2>/dev/null | hexdump -C ;done
/dev/mmcblk2boot0
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000200
/dev/mmcblk2boot1
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000200
Next example display valid boot loader header @ML
.
~$ dd if=/dev/mmcblk0 count=1 skip=1 2>/dev/null | hexdump -C | head -n1
00000000 40 4d 4c 20 8d 66 31 ed 00 00 00 00 80 05 00 00 |@ML .f1.........|