# Table of Contents
1. [Installing via Portage ](#org3a6549a )
2. [Installing Manually ](#orge000bac )
1. [Prerequisites ](#org0fd2701 )
1. [Download Libero ](#orgbf609ab )
2. [Download SoftConsole ](#orgfa083ed )
2. [Install ](#orgc791c33 )
1. [Setup ](#org180e2e4 )
2. [Install Libero ](#orgfe1c9e4 )
3. [Install SoftConsole ](#orgc4f7dd5 )
3. [Post-Install ](#org1aab735 )
1. [Installing FlashPro Drivers ](#orgcec48c8 )
2. [Installing Your License ](#org01887da )
3. [Installing the Licensing Daemon ](#orgb0a7b68 )
3. [Install Yocto Ecosystem ](#orgecf7921 )
1. [Prerequisites ](#org2fca117 )
2. [Create the Yocto Workspace ](#org2f15271 )
3. [Update the repo workspace ](#orgce514fa )
4. [Setup the Bitbake environment ](#org732eaac )
5. [Optimize your build environment ](#orgac0a974 )
6. [Build the Disk Image ](#orgf5edd26 )
4. [Creating a Bootable Yocto Linux Image ](#org40b9d56 )
1. [Create a workspace (OPTIONAL) ](#orga1efcaa )
2. [Update the repo workspace ](#org35bd6db )
3. [Set up the Bitbake environment ](#org4c59d20 )
4. [Building Board Disk Image ](#orgbaf8a8f )
1. [Building a Linux Image with a root file system (RootFS) ](#org72cdb3e )
2. [Building a RAM-based Root Filestystem ](#org1d95b8f )
3. [Building a Linux Image for an external QSPI flash memory ](#orgbf5cb99 )
4. [Flashing an SD Card ](#org1cfcc9a )
5. [References ](#org30d3773 )
< a id = "org3a6549a" > < / a >
# TODO Installing via Portage
< a id = "orge000bac" > < / a >
# Installing Manually
< a id = "org0fd2701" > < / a >
## Prerequisites
sudo emerge -a sys-apps/lsb-release
< a id = "orgbf609ab" > < / a >
### Download Libero
Download the latest version from [here ](https://www.microchip.com/en-us/products/fpgas-and-plds/fpga-and-soc-design-tools/fpga/libero-software-later-versions ).
mkdir -p ~/Documents/MicrochipInstallers
cd ~/Documents/MicrochipInstallers
mv ~/Downloads/libero_soc_*.*_web_lin.zip .
unzip libero_soc_*.*_web_lin.zip
< a id = "orgfa083ed" > < / a >
### Download SoftConsole
Download the latest version from [here ](https://www.microchip.com/en-us/products/fpgas-and-plds/fpga-and-soc-design-tools/soc-fpga/softconsole ).
mkdir -p ~/Documents/MicrochipInstallers
cd ~/Documents/MicrochipInstallers
mv ~/Downloads/Microchip-SoftConsole-*.*-RISC-V-*-linux-x64-installer.run .
< a id = "orgc791c33" > < / a >
## Install
< a id = "org180e2e4" > < / a >
### Setup
export INSTALL_DIR=/opt/microchip
sudo mkdir -p $INSTALL_DIR
sudo chown $USER:$USER $INSTALL_DIR
< a id = "orgfe1c9e4" > < / a >
### Install Libero
Installer Directions:
- Install Directory: $INSTALL\_DIR/Libero\_SoC\_< version \_major > .< version \_minor >
- Common Directory: $INSTALL\_DIR/common
- Install Set: Everything
cd ~/Documents/MicrochipInstallers
./Libero_SoC_*.*_Web.bin
1. Gentoo Specific Libero Fixes
When attempting to run `/opt/microchip/Libero_SoC_v2024.1/Libero/bin64/libero` , you will most likely be met with the following error:
Warning: You are running a version of Suse Linux that is not supported.
Please refer to Libero SoC Release Note for the detail of supported operating systems.
/opt/microchip/Libero_SoC_v2024.1/Libero/bin64/libero_bin: /opt/microchip/Libero_SoC_v2024.1/Libero/lib64/rhel/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /usr/lib64/libicuuc.so.74)
The way I chose to combat this was to delete all of the `libstdc++.so.6` files that came with the tools and then supplying the system’ s provides files via $LD\_LIBRARY\_PATH. I’ ve also chosen to do this with git commits so you don’ t have to start all over if you mess up. The git parts are optional but recommended. (Thanks to sam for helping me figure this out)
cd /opt/microchip/Libero_SoC_*.*
git init
git add .
git commit -m "init"
find . -name "libstdc++.so.6" -type f -or -type l -delete
git add .
git commit -m "removed tool specific libstdc++.so.6 files"
# test it to make sure it launches
LD_LIBRARY_PATH="/usr/lib/gcc/x86_64-pc-linux-gnu/13" ./Libero/bin64/libero
This should launch and then give you an error saying license not found. This is normal and will be fixed later in the guide.
< a id = "orgc4f7dd5" > < / a >
### Install SoftConsole
cd ~/Documents/MicrochipInstallers
./Microchip-SoftConsole-*.*-RISC-V-*-linux-x64-installer.run
< a id = "org1aab735" > < / a >
## Post-Install
sudo $INSTALL_DIR/Libero_SoC_*.*/Logs/req_to_install.sh
< a id = "orgcec48c8" > < / a >
### Installing FlashPro Drivers
You need to have the FlashPro device to install these, so ignore this if you don’ t have a FlashPro device.
1. FlashPro 5
sudo $INSTALL_DIR/Libero_SoC_v2023.1/Libero/bin/udev_install
2. FlashPro 6
sudo $INSTALL_DIR/Libero_SoC_v2023.1/Libero/bin/fp6_env_install
< a id = "org01887da" > < / a >
### Installing Your License
You can register for a microchip and request a year-long evaluation license here: < https: / / www . microchipdirect . com / login ? redirectTo = %2Ffpga-software-products >
You’ ll want to get the **LIB-PL-MACID-F-EVAL** license, which is a floating linux license.
mkdir -p $INSTALL_DIR/Libero_SoC_v2023.1/license
cp /path/to/license /opt/microchip/Libero_SoC_v2023/license
< a id = "orgb0a7b68" > < / a >
### Installing the Licensing Daemon
sudo cp scripts/libero-license.service /etc/systemd/user
< a id = "orgecf7921" > < / a >
# Install Yocto Ecosystem
< a id = "org2fca117" > < / a >
## Prerequisites
sudo emerge -pv gawk wget dev-vcs/git diffstat unzip sys-apps/texinfo chrpath socat libsdl xterm bmap-tools repo
sudo emerge -a
< a id = "org2f15271" > < / a >
## Create the Yocto Workspace
mkdir yocto-dev & & cd yocto-dev
repo init -u https://github.com/polarfire-soc/polarfire-soc-yocto-manifests.git -b main -m default.xml
< a id = "orgce514fa" > < / a >
## Update the repo workspace
repo sync
repo rebase
< a id = "org732eaac" > < / a >
## Setup the Bitbake environment
. ./meta-polarfire-soc-yocto-bsp/polarfire-soc_yocto_setup.sh
< a id = "orgac0a974" > < / a >
## Optimize your build environment
Yocto builds take a very long time. We can optimize this.
mkdir -p ${HOME}/.local/share/yocto/downloads
mkdir -p ${HOME}/.local/share/yocto/sstate-cache
mkdir -p ${HOME}/.local/share/yocto/persistent
cd < project_root > /build/conf/
echo '
BB_NUMBER_THREADS ?= "${@oe.utils.cpu_count()}"
PARALLEL_MAKE ?= "-j ${@oe.utils.cpu_count() - 1}"
DL_DIR = "${HOME}/.local/share/yocto/downloads"
SSTATE_DIR = "${HOME}/.local/share/yocto/sstate-cache"
PERSISTENT_DIR=${HOME/.local/share/yocto/persistent
SOURCE_MIRROR_URL ?= "file://${HOME}/.local/share/yocto/downloads"
INHERIT += "own-mirrors"
BB_GENERATE_MIRROR_TARBALLS = "1"
# uncomment to test sources
# BB_NO_NETWORK = "1"
# remove static deps
STATICLIBCONF = "--disable-static"
DISABLE_STATIC:pn-openssl = ""
DISABLE_STATIC:pn-openssl-native = ""
DISABLE_STATIC:pn-nativesdk-openssl = ""
DISABLE_STATIC:pn-libtalloc = ""
EXTRA_OECONF += "${STATICLIBCONF}"
' >> local.conf
< a id = "orgf5edd26" > < / a >
## Build the Disk Image
cd $PROOT
bitbake mpfs-dev-cli
< a id = "org40b9d56" > < / a >
# Creating a Bootable Yocto Linux Image
We have two options: Create a new workspace, or we can use this repo as a workspace because this repo is my working workspace.
< a id = "orga1efcaa" > < / a >
## Create a workspace (OPTIONAL)
mkdir yocto-dev & & cd yocto-dev
repo init -u https://github.com/polarfire-soc/polarfire-soc-yocto-manifests.git -b main -m default.xml
< a id = "org35bd6db" > < / a >
## Update the repo workspace
repo sync
repo rebase
< a id = "org4c59d20" > < / a >
## Set up the Bitbake environment
. ./meta-polarfire-soc-yocto-bsp/polarfire-soc_yocto_setup.sh
< a id = "orgbaf8a8f" > < / a >
## Building Board Disk Image
< a id = "org72cdb3e" > < / a >
### Building a Linux Image with a root file system (RootFS)
MACHINE=icicle-kit-es bitbake mpfs-dev-cli
< a id = "org1d95b8f" > < / a >
### Building a RAM-based Root Filestystem
MACHINE=icicle-kit-es bitbake -R conf/initramfs.conf mpfs-initramfs-image
< a id = "orgbf5cb99" > < / a >
### Building a Linux Image for an external QSPI flash memory
< a id = "org1cfcc9a" > < / a >
### Flashing an SD Card
zcat build/tmp-glibc/deploy/images/icicle-kit-es/mpfs-dev-cli-icicle-kit-es.wic.gz | sudo dd of=/dev/sdX bs=4096 iflag=fullblock oflag=direct conv=fsync status=progress
< a id = "org30d3773" > < / a >
# References
1. [PolarFire Yocto Github ](https://github.com/polarfire-soc/meta-polarfire-soc-yocto-bsp )