Install Ubuntu on the Microchip Polarfire SoC Icicle Kit¶
FPGA Design¶
Ubuntu’s kernel 5.19 requires the Icicle Kit Reference Design v2022.10 or
later. The archive MPFS_ICICLE_BASE_DESIGN_yyyy_mm.zip
contains a
job file and digest file which can be used. This job file also includes the
latest version of the Hart Software Services at the time of the release.
FlashPro Express is needed to program the job file to the FPGA. FlashPro
Express standalone is bundled with the Programming and Debug Tools.
Hart Software Services¶
The first stage boot loader of the PolarFire SoC FPGA Icicle Kit is called Hart Software Services (HSS). Ubuntu’s kernel 5.19 requires version 2022.10 or later of this software. Microchip provides a FlashPro Express programming job that can be used to update the HSS on a kit to the latest version without having to build the software, this job is provided with the FPGA design. Otherwise the HSS sources are available from GitHub and can be built and programmed independently of the design using the command line or the SoftConsole IDE.
Using the pre-installed server image¶
Download one of the supported images:
Ubuntu 24.10 (Oracular Oriole) images:
Ubuntu 24.04.1 LTS (Noble Numbat) images:
Ubuntu 22.04.5 LTS (Jammy Jellyfish) images:
Flash the pre-installed server image to a microSD card or the Icicle Kit on board eMMC (see Flash images to a microSD card). The board uses package
u-boot-microchip
as second stage boot loader. It is installed in the partition with label “loader” on the above pre-installed server disk image. Ubuntu’s U-Boot has been set up to use all U54 cores for Linux. If you want to use one or more cores for a real time operating system in parallel to Ubuntu, you will have to uninstall this package and install your own U-Boot onto the partition loaderInsert the microSD card into the board
Connect to the UART console (see UART console and Connect to a UART console)
Power on the board
Wait for an output line confirming that cloud-init has finished running; this service is responsible for generating SSH keys, and creating the default user:
[ 291.932176] cloud-init[1282]: Cloud-init v. 22.3.4-0ubuntu1 finished at Thu, 20 Oct 2022 08:25:11 +0000. Datasource DataSourceNoCloud [seed=/var/lib/cloud/seed/nocloud-net][dsmode=net]. Up 291.79 seconds
Login with the user ubuntu and the default password ubuntu; you will be asked to choose a new password
Cloud-init seed¶
Sample files for a cloud-init seed are present on the FAT partition labeled “CIDATA”. See Configure your board for headless use for more information.
UART console¶
The board features a USB to quad UART bridge controller (J11), hence this is one of the boards that does not require a USB-UART adapter. Connect with a regular micro-USB cable.
When connected, it appears as several devices in Linux. The first UART
(typically /dev/ttyUSB0
) has the HSS output, while the second
(typically /dev/ttyUSB1
) is used for the U-Boot and Linux console.
Connect with the following settings (see Connect to a UART console):
115200 baud
8 data bits
no parity
1 stop bit
no flow control
USB¶
The USB OTG port (J16) can both be used a USB client or a USB host port. Jumpers on the board switch between client and host mode (J15) and control the provision of 5 Volt to the USB port (J17). The Ubuntu kernel supports the host mode.
Limitations¶
As of Linux kernel version 6.2, PCIe is not supported.