#+title: PolarFire SoC FPGA
#+author: Penguin
#+date: 06/19/23
#+OPTIONS: ^:nil
* About the Board

#+attr_html: :width 50%
#+attr_html: :height 50%
[[./doc/img/PolarFire-Board.png]]
* 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
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
repo sync
repo rebase
#+end_src

** Set up the Bitbake environment
#+begin_src bash
. ./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
MACHINE=icicle-kit-es bitbake mpfs-dev-cli
#+end_src

*** Building a RAM-based Root Filestystem
#+begin_src bash
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
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 SoC Yocto]]

****
