3.6.8.2.5 Step 5 - Flashing the Embedded Linux Image to the Board
(Ask a Question)A Linux image is tightly related to the SoC hardware design it was compiled for. SmartHLS™ uses the Microchip Linux image - 2023.02.1 release, which is meant to be used with the Icicle Kit Reference Design - 2023.02 release and may not be the same as the image that the Icicle Kit board has been flashed with from the factory, or any other image currently loaded in your board. If you have your own Linux image and your own Libero SoC project then see the User-defined SmartDesigns section.
To program this Linux image to the board, follow these instructions:
- Download the Linux image core-image-minimal-dev-icicle-kit-es-20230328094718.rootfs.wic.gz and its associated core-image-minimal-dev-icicle-kit-es-20230328094718.rootfs.wic.bmap file file. Then verify their checksum.
$> wget https://github.com/polarfire-soc/meta-polarfire-soc-yocto-bsp/releases/download/v2024.2/core-image-minimal-dev-icicle-kit-es-20230328094718.rootfs.wic.gz $> wget https://github.com/polarfire-soc/meta-polarfire-soc-yocto-bsp/releases/download/v2024.2/core-image-minimal-dev-icicle-kit-es-20230328094718.rootfs.wic.bmap $> sha256sum core-image-minimal-dev-icicle-kit-es.wic.* 58fdce37eb4e3f63cb8e6aa0569d5a5a47fcb67352e6548dc659a082e8ad6a76 core-image-minimal-dev-icicle-kit-es-20230328094718.rootfs.wic.bmap 4a1406ba9e764a94026fcea2ee8fbb84f91384e953e7ba6176fcb7dadcbc5522 core-image-minimal-dev-icicle-kit-es-20230328094718.rootfs.wic.gz ...
- In the Host PC with Linux enter the command
ls /dev/sd*
, and take note of what appears. This will be used in a later step to help determine the device name of the eMMC flash memory.
In our example, we have /dev/sda
and /dev/sdc
already:
Expose Board’s eMMC Flash Memory to Host PC as USB flash storage
To flash the Embedded Linux image we first need to expose the eMMC flash memory as a USB storage device to the host PC. Make sure the board’sUSB OTG
connection is made as described in Step 1: Setup Required Board Connections.- Reset the Icicle Kit by pressing push button SW4 (top left push button). In the
HSS Serial terminal
, when prompted toPress a key to enter CLI
, press any key aside fromESC
. If you don’t press a key within 1 second then the board will continue to boot Linux and you will have to reset the board again. Double check in theLinux Serial Terminal
to verify that you don’t see any output from Linux booting.You should now see a prompt for the HSS command-line interface: - In the
HSS Serial Terminal
, enter the commandmmc
to select the eMMC flash memory (only needed for newer HSS versions). Then enter the commandusbdmsc
.Important: If you see “FLASH_DRIVE_init() returned false” (below), then you forgot to run themmc
command before runningusbdmsc
. - If the board is properly connected to your host computer, you should see data being read as shown on the last line of the following image:
- On a Linux host PC, you can run again
ls /dev/sd*
and compare against what we saw inin the earlier step. Note which new device shows up. In our example,/dev/sda
and/dev/sdc
were present before, but/dev/sdb
is new. Therefore, the eMMC flash memory on the board is represented on our host machine as:/dev/sdb
. We can now flash the Linux image to the board.Alternatively, you can check the exact device using thelshw
command and it will show the device for the PolarFireSoC:$> sudo lshw -class disk -short H/W path Device Class Description============================================================== /0/100/14/0/6/0.0.0 /dev/sdb disk 7820MB PolarFireSoC_msd /0/100/14/0/6/0.0.0/0 /dev/sdb disk 7820MB /0/1/0.0.0 /dev/sda disk 1TB Samsung SSD 860
On a Windows host PC, you can use the Windows File Explorer -> This PC to see the Icicle Kit’s eMMC flash memory as a media drive. In this case, shown as “boot (D:)”:
Flash the Embedded Linux Image to the Board
Using Balena Etcher
For either Linux or Windows, you can easily flash the Embedded Linux image (*.wic.gz file) using Balena Etcher software, which can be downloaded here: etcher.balena.io.
Open Balena's Etcher and click on Flash from file
. This will open a window to select the file you want to flash. Choose the *.wic.gz file (Embedde Linux Image file) then click on Select target
button and choose the board's flash memory drive as described in the previous section. The drive should have been detected by Windows or Linux when you issued the usbdmmc command. Once you have set the target and file, click on theFlash!
button and wait for the image file to be flashed to the board.
After the flashing command completes, you should disconnect the mounted drive, by typing Ctrl+C in the HSS Serial Terminal. The embedded Linux image on the board is now updated.
Using command line (Linux-only).
Alternateively, when using Linux you can use the bmap
tool. Assuming the board flash storage device is /dev/sdb
you can flash the image like this:
$> bmaptool copy <linux image>.wic.gz /dev/sdb
Note that to use bmap
you need the *.wic.bmap
file that was downloaded earlier.
Yet anoter alternative in Linux is to use the dd
command as follows:
$> sudo umount /dev/sdb
$> zcat <linux image>.wic.gz | sudo dd of=/dev/sdb bs=4096iflag=fullblock oflag=direct conv=fsync status=progress
dd
flashing command should take several minutes to complete. DO NOT power cycle the Icicle board at this point.
Ctrl+C
in the HSS Serial Terminal
. The embedded Linux image on the board is now updated.