You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

224 lines
7.3 KiB
Org Mode

8 months ago
#+title: Installing Microchip FPGA Tools
1 year ago
#+author: Penguin
#+date: 06/19/23
#+OPTIONS: ^:nil
8 months ago
# * About the Board
1 year ago
8 months ago
# #+attr_html: :width 50%
# #+attr_html: :height 50%
# [[./doc/img/PolarFire-Board.png]]
8 months ago
8 months ago
* TODO Installing via Portage
* Installing Manually
8 months ago
** Prerequisites
#+begin_src bash :exports code :eval no
8 months ago
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
8 months ago
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
8 months ago
mkdir -p ~/Documents/MicrochipInstallers
cd ~/Documents/MicrochipInstallers
mv ~/Downloads/Microchip-SoftConsole-*.*-RISC-V-*-linux-x64-installer.run .
#+end_src
8 months ago
8 months ago
** Install
*** Setup
#+begin_src bash :exports code :eval no
8 months ago
export INSTALL_DIR=/opt/microchip
sudo mkdir -p $INSTALL_DIR
sudo chown $USER:$USER $INSTALL_DIR
8 months ago
#+end_src
8 months ago
*** Install Libero
8 months ago
Installer Directions:
8 months ago
- Install Directory: $INSTALL_DIR/Libero_SoC_<version_major>.<version_minor>
- Common Directory: $INSTALL_DIR/common
8 months ago
- Install Set: Everything
#+begin_src bash :eval no
8 months ago
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
8 months ago
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
8 months ago
cd ~/Documents/MicrochipInstallers
./Microchip-SoftConsole-*.*-RISC-V-*-linux-x64-installer.run
#+end_src
8 months ago
** Post-Install
#+begin_src bash :exports code :eval no
8 months ago
sudo $INSTALL_DIR/Libero_SoC_*.*/Logs/req_to_install.sh
8 months ago
#+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
8 months ago
sudo $INSTALL_DIR/Libero_SoC_v2023.1/Libero/bin/udev_install
8 months ago
#+end_src
**** FlashPro 6
#+begin_src bash :exports code :eval no
8 months ago
sudo $INSTALL_DIR/Libero_SoC_v2023.1/Libero/bin/fp6_env_install
8 months ago
#+end_src
*** Installing Your License
8 months ago
You can register for a microchip and request a year-long evaluation license here: https://www.microchipdirect.com/login?redirectTo=%2Ffpga-software-products
8 months ago
8 months ago
You'll want to get the *LIB-PL-MACID-F-EVAL* license, which is a floating linux license.
8 months ago
#+begin_src bash :exports code :eval no
8 months ago
mkdir -p $INSTALL_DIR/Libero_SoC_v2023.1/license
cp /path/to/license /opt/microchip/Libero_SoC_v2023/license
8 months ago
#+end_src
*** Installing the Licensing Daemon
#+begin_src bash :exports code :eval no
8 months ago
sudo cp scripts/libero-license.service /etc/systemd/user
#+end_src
* Install Yocto Ecosystem
** Prerequisites
#+begin_src bash :exports code :eval no
8 months ago
sudo emerge -pv gawk wget dev-vcs/git diffstat unzip sys-apps/texinfo chrpath socat libsdl xterm bmap-tools repo
#+end_src
8 months ago
** Create the Yocto Workspace
#+begin_src bash :exports code :eval no
8 months ago
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
8 months ago
repo sync
repo rebase
#+end_src
** Setup the Bitbake environment
#+begin_src bash :exports code :eval no
8 months ago
. ./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
8 months ago
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
#+end_src
** Build the Disk Image
#+begin_src bash :exports code :eval no
8 months ago
cd $PROOT
bitbake mpfs-dev-cli
#+end_src
8 months ago
1 year ago
* 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
1 year ago
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
1 year ago
repo sync
repo rebase
#+end_src
** Set up the Bitbake environment
#+begin_src bash :exports code :eval no
1 year ago
. ./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
1 year ago
MACHINE=icicle-kit-es bitbake mpfs-dev-cli
#+end_src
*** Building a RAM-based Root Filestystem
#+begin_src bash :exports code :eval no
1 year ago
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
1 year ago
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
8 months ago
**** [[https://github.com/polarfire-soc/meta-polarfire-soc-yocto-bsp][PolarFire Yocto Github]]