#+title: Installing Microchip FPGA Tools #+author: Penguin #+date: 06/19/23 #+OPTIONS: ^:nil # * About the Board # #+attr_html: :width 50% # #+attr_html: :height 50% # [[./doc/img/PolarFire-Board.png]] * ToDos :noexport: - Less titles, too many large titles - Fix multiple lines of commands being separate chunks of {{Cmd}} instead of being piped - put comments after commands, no need to make new sections all the time * TODO Installing via Portage * Installing Manually ** Prerequisites #+begin_src bash :exports code :eval no sudo emerge -a sys-apps/lsb-release #+end_src *** Download Libero Download the latest version from [[https://www.microchip.com/en-us/products/fpgas-and-plds/fpga-and-soc-design-tools/fpga/libero-software-later-versions][here]]. #+begin_src bash :exports code :eval no mkdir -p ~/Documents/MicrochipInstallers cd ~/Documents/MicrochipInstallers mv ~/Downloads/libero_soc_*.*_web_lin.zip . unzip libero_soc_*.*_web_lin.zip #+end_src *** Download SoftConsole Download the latest version from [[https://www.microchip.com/en-us/products/fpgas-and-plds/fpga-and-soc-design-tools/soc-fpga/softconsole][here]]. #+begin_src bash :exports code :eval no mkdir -p ~/Documents/MicrochipInstallers cd ~/Documents/MicrochipInstallers mv ~/Downloads/Microchip-SoftConsole-*.*-RISC-V-*-linux-x64-installer.run . #+end_src ** Install *** Setup #+begin_src bash :exports code :eval no export INSTALL_DIR=/opt/microchip sudo mkdir -p $INSTALL_DIR sudo chown $USER:$USER $INSTALL_DIR #+end_src *** Install Libero Installer Directions: - Install Directory: $INSTALL_DIR/Libero_SoC_. - Common Directory: $INSTALL_DIR/common - Install Set: Everything #+begin_src bash :eval no cd ~/Documents/MicrochipInstallers ./Libero_SoC_*.*_Web.bin #+end_src **** 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: #+begin_example 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) #+end_example 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) #+begin_src bash :exports code :eval no 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 #+end_src This should launch and then give you an error saying license not found. This is normal and will be fixed later in the guide. *** Install SoftConsole #+begin_src bash :exports code :eval no cd ~/Documents/MicrochipInstallers ./Microchip-SoftConsole-*.*-RISC-V-*-linux-x64-installer.run #+end_src ** Post-Install #+begin_src bash :exports code :eval no sudo $INSTALL_DIR/Libero_SoC_*.*/Logs/req_to_install.sh #+end_src *** Installing FlashPro Drivers You need to have the FlashPro device to install these, so ignore this if you don't have a FlashPro device. **** FlashPro 5 #+begin_src bash :exports code :eval no sudo $INSTALL_DIR/Libero_SoC_v2023.1/Libero/bin/udev_install #+end_src **** FlashPro 6 #+begin_src bash :exports code :eval no sudo $INSTALL_DIR/Libero_SoC_v2023.1/Libero/bin/fp6_env_install #+end_src *** 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. #+begin_src bash :exports code :eval no mkdir -p $INSTALL_DIR/Libero_SoC_v2023.1/license cp /path/to/license /opt/microchip/Libero_SoC_v2023/license #+end_src *** Installing the Licensing Daemon #+begin_src bash :exports code :eval no sudo cp scripts/libero-license.service /etc/systemd/user #+end_src * Install Yocto Ecosystem ** Prerequisites #+begin_src bash :exports code :eval no sudo emerge -pv gawk wget dev-vcs/git diffstat unzip sys-apps/texinfo chrpath socat libsdl xterm bmap-tools repo #+end_src ** Create the Yocto Workspace #+begin_src bash :exports code :eval no mkdir yocto-dev && cd yocto-dev repo init -u https://github.com/polarfire-soc/polarfire-soc-yocto-manifests.git -b main -m default.xml #+end_src ** Update the repo workspace #+begin_src bash :exports code :eval no repo sync repo rebase #+end_src ** Setup the Bitbake environment #+begin_src bash :exports code :eval no . ./meta-polarfire-soc-yocto-bsp/polarfire-soc_yocto_setup.sh #+end_src ** Optimize your build environment Yocto builds take a very long time. We can optimize this. #+begin_src bash :exports code :eval no mkdir -p ${HOME}/.local/share/yocto/downloads mkdir -p ${HOME}/.local/share/yocto/sstate-cache mkdir -p ${HOME}/.local/share/yocto/persistent cd /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 #+end_src ** Build the Disk Image #+begin_src bash :exports code :eval no cd $PROOT bitbake mpfs-dev-cli #+end_src * 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. ** Create a workspace (OPTIONAL) #+begin_src bash :exports code :eval no mkdir yocto-dev && cd yocto-dev repo init -u https://github.com/polarfire-soc/polarfire-soc-yocto-manifests.git -b main -m default.xml #+end_src ** Update the repo workspace #+begin_src bash :exports code :eval no repo sync repo rebase #+end_src ** Set up the Bitbake environment #+begin_src bash :exports code :eval no . ./meta-polarfire-soc-yocto-bsp/polarfire-soc_yocto_setup.sh #+end_src ** Building Board Disk Image *** Building a Linux Image with a root file system (RootFS) #+begin_src bash :exports code :eval no MACHINE=icicle-kit-es bitbake mpfs-dev-cli #+end_src *** Building a RAM-based Root Filestystem #+begin_src bash :exports code :eval no MACHINE=icicle-kit-es bitbake -R conf/initramfs.conf mpfs-initramfs-image #+end_src *** Building a Linux Image for an external QSPI flash memory *** Flashing an SD Card #+begin_src bash :exports code :eval no 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 #+end_src * References **** [[https://github.com/polarfire-soc/meta-polarfire-soc-yocto-bsp][PolarFire Yocto Github]]