1*d4e28f0eSBin MengMicrochip PolarFire SoC Icicle Kit (``microchip-icicle-kit``) 2*d4e28f0eSBin Meng============================================================= 3*d4e28f0eSBin Meng 4*d4e28f0eSBin MengMicrochip PolarFire SoC Icicle Kit integrates a PolarFire SoC, with one 5*d4e28f0eSBin MengSiFive's E51 plus four U54 cores and many on-chip peripherals and an FPGA. 6*d4e28f0eSBin Meng 7*d4e28f0eSBin MengFor more details about Microchip PolarFire SoC, please see: 8*d4e28f0eSBin Menghttps://www.microsemi.com/product-directory/soc-fpgas/5498-polarfire-soc-fpga 9*d4e28f0eSBin Meng 10*d4e28f0eSBin MengThe Icicle Kit board information can be found here: 11*d4e28f0eSBin Menghttps://www.microsemi.com/existing-parts/parts/152514 12*d4e28f0eSBin Meng 13*d4e28f0eSBin MengSupported devices 14*d4e28f0eSBin Meng----------------- 15*d4e28f0eSBin Meng 16*d4e28f0eSBin MengThe ``microchip-icicle-kit`` machine supports the following devices: 17*d4e28f0eSBin Meng 18*d4e28f0eSBin Meng * 1 E51 core 19*d4e28f0eSBin Meng * 4 U54 cores 20*d4e28f0eSBin Meng * Core Level Interruptor (CLINT) 21*d4e28f0eSBin Meng * Platform-Level Interrupt Controller (PLIC) 22*d4e28f0eSBin Meng * L2 Loosely Integrated Memory (L2-LIM) 23*d4e28f0eSBin Meng * DDR memory controller 24*d4e28f0eSBin Meng * 5 MMUARTs 25*d4e28f0eSBin Meng * 1 DMA controller 26*d4e28f0eSBin Meng * 2 GEM Ethernet controllers 27*d4e28f0eSBin Meng * 1 SDHC storage controller 28*d4e28f0eSBin Meng 29*d4e28f0eSBin MengBoot options 30*d4e28f0eSBin Meng------------ 31*d4e28f0eSBin Meng 32*d4e28f0eSBin MengThe ``microchip-icicle-kit`` machine can start using the standard -bios 33*d4e28f0eSBin Mengfunctionality for loading its BIOS image, aka Hart Software Services (HSS_). 34*d4e28f0eSBin MengHSS loads the second stage bootloader U-Boot from an SD card. It does not 35*d4e28f0eSBin Mengsupport direct kernel loading via the -kernel option. One has to load kernel 36*d4e28f0eSBin Mengfrom U-Boot. 37*d4e28f0eSBin Meng 38*d4e28f0eSBin MengThe memory is set to 1537 MiB by default which is the minimum required high 39*d4e28f0eSBin Mengmemory size by HSS. A sanity check on ram size is performed in the machine 40*d4e28f0eSBin Menginit routine to prompt user to increase the RAM size to > 1537 MiB when less 41*d4e28f0eSBin Mengthan 1537 MiB ram is detected. 42*d4e28f0eSBin Meng 43*d4e28f0eSBin MengBoot the machine 44*d4e28f0eSBin Meng---------------- 45*d4e28f0eSBin Meng 46*d4e28f0eSBin MengHSS 2020.12 release is tested at the time of writing. To build an HSS image 47*d4e28f0eSBin Mengthat can be booted by the ``microchip-icicle-kit`` machine, type the following 48*d4e28f0eSBin Mengin the HSS source tree: 49*d4e28f0eSBin Meng 50*d4e28f0eSBin Meng.. code-block:: bash 51*d4e28f0eSBin Meng 52*d4e28f0eSBin Meng $ export CROSS_COMPILE=riscv64-linux- 53*d4e28f0eSBin Meng $ cp boards/mpfs-icicle-kit-es/def_config .config 54*d4e28f0eSBin Meng $ make BOARD=mpfs-icicle-kit-es 55*d4e28f0eSBin Meng 56*d4e28f0eSBin MengDownload the official SD card image released by Microchip and prepare it for 57*d4e28f0eSBin MengQEMU usage: 58*d4e28f0eSBin Meng 59*d4e28f0eSBin Meng.. code-block:: bash 60*d4e28f0eSBin Meng 61*d4e28f0eSBin Meng $ wget ftp://ftpsoc.microsemi.com/outgoing/core-image-minimal-dev-icicle-kit-es-sd-20201009141623.rootfs.wic.gz 62*d4e28f0eSBin Meng $ gunzip core-image-minimal-dev-icicle-kit-es-sd-20201009141623.rootfs.wic.gz 63*d4e28f0eSBin Meng $ qemu-img resize core-image-minimal-dev-icicle-kit-es-sd-20201009141623.rootfs.wic 4G 64*d4e28f0eSBin Meng 65*d4e28f0eSBin MengThen we can boot the machine by: 66*d4e28f0eSBin Meng 67*d4e28f0eSBin Meng.. code-block:: bash 68*d4e28f0eSBin Meng 69*d4e28f0eSBin Meng $ qemu-system-riscv64 -M microchip-icicle-kit -smp 5 \ 70*d4e28f0eSBin Meng -bios path/to/hss.bin -sd path/to/sdcard.img \ 71*d4e28f0eSBin Meng -nic user,model=cadence_gem \ 72*d4e28f0eSBin Meng -nic tap,ifname=tap,model=cadence_gem,script=no \ 73*d4e28f0eSBin Meng -display none -serial stdio \ 74*d4e28f0eSBin Meng -chardev socket,id=serial1,path=serial1.sock,server=on,wait=on \ 75*d4e28f0eSBin Meng -serial chardev:serial1 76*d4e28f0eSBin Meng 77*d4e28f0eSBin MengWith above command line, current terminal session will be used for the first 78*d4e28f0eSBin Mengserial port. Open another terminal window, and use `minicom` to connect the 79*d4e28f0eSBin Mengsecond serial port. 80*d4e28f0eSBin Meng 81*d4e28f0eSBin Meng.. code-block:: bash 82*d4e28f0eSBin Meng 83*d4e28f0eSBin Meng $ minicom -D unix\#serial1.sock 84*d4e28f0eSBin Meng 85*d4e28f0eSBin MengHSS output is on the first serial port (stdio) and U-Boot outputs on the 86*d4e28f0eSBin Mengsecond serial port. U-Boot will automatically load the Linux kernel from 87*d4e28f0eSBin Mengthe SD card image. 88*d4e28f0eSBin Meng 89*d4e28f0eSBin Meng.. _HSS: https://github.com/polarfire-soc/hart-software-services 90