====== VIM1S Erase eMMC bootloader ====== We have several different ways to erase bootloader. =====U-Boot console====== - Connect your PC to the SBC using a [[products:sbc:vim1s:development:setup-serial-tool|Serial Debug Tool]]. - As the SBC is booting-up, press ''SPACE''on the keyboard to enter the U-Boot mode. - Type ''store boot_erase bootloader'' into the U-Boot console, and wait for the erasure process to complete. - After erasure is completed, type ''reboot'' or press the ''RESET'' button on your SBC. Use the following serial Terminal print-out as a reference: ```shell 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: ```txt 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; ``` ===== Interrupt Mode ===== This erasure method is suitable for all products that use the Amlogic SoC: - Carry out eMMC flashing via a [[products:sbc:vim1s:install-os:install-os-into-emmc-via-usb-tool|USB-C cable]]. - Manually interrupt the upgrading process (forcefully disconnect after 15% is recommended). For example, unplug the USB-C cable or eject the TF card. - Power on your SBC again, and you'll find that all the data on the eMMC has been erased. ===== Linux command-line ===== eMMC boot-loader can be stored on ''/dev/mmcblk0'' and special areas ''/dev/mmcblk0boot0'' or ''/dev/mmcblk0boot0''. ==== Cleanup eMMC boot loaders ==== Cleanup special eMMC boot areas. ```sh dd if=/dev/zero count=8192 | sudo tee /dev/mmcblk?boot? >/dev/null ``` Also need cleanup eMMC common boot area. ```sh 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]] ==== Universal method for cleanup all eMMC boot-areas ==== ```sh 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 boot loaders ==== Get block-device names for special boot areas. ```shell ~$ 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. ```shell ~$ ls -1 $(ls /dev/mmcblk?boot?|grep -m1 -o /dev/mmcblk.) /dev/mmcblk0 ``` ==== How-to check boot loaders content ==== This example display empty content for special boot-loaders areas. ```shell ~$ 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. ```shell ~$ 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''. ```shell ~$ 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.........| ``` /* This erasure method is suitable for the SBC with Linux installed: - Power on and boot up. - Open a Terminal, and run ''dd'' to fill your bootloader partition with zeros: ```shell khadas@Khadas:~$ sudo dd if=/dev/zero of=/dev/bootloader dd: writing to '/dev/bootloader': No space left on device 8193+0 records in 8192+0 records out 4194304 bytes (4.2 MB, 4.0 MiB) copied, 1.1226 s, 3.7 MB/s root@Khadas:~# reboot ``` */