# Table of Contents
1. [About the Board](#org05120cc)
2. [Creating a Bootable Yocto Linux Image](#orgac4cb07)
1. [Create a workspace (OPTIONAL)](#org109b3fc)
2. [Update the repo workspace](#orgfd26467)
3. [Set up the Bitbake environment](#org7077080)
4. [Building Board Disk Image](#orge052232)
1. [Building a Linux Image with a root file system (RootFS)](#org4594f3e)
2. [Building a RAM-based Root Filestystem](#orgec80779)
3. [Building a Linux Image for an external QSPI flash memory](#org38ff821)
4. [Flashing an SD Card](#org23fb3ff)
3. [References](#orge93c43d)
# About the Board
![img](./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)
mkdir yocto-dev && cd yocto-dev
repo init -u https://github.com/polarfire-soc/polarfire-soc-yocto-manifests.git -b main -m default.xml
## Update the repo workspace
repo sync
repo rebase
## Set up the Bitbake environment
. ./meta-polarfire-soc-yocto-bsp/polarfire-soc_yocto_setup.sh
## Building Board Disk Image
### Building a Linux Image with a root file system (RootFS)
MACHINE=icicle-kit-es bitbake mpfs-dev-cli
### Building a RAM-based Root Filestystem
MACHINE=icicle-kit-es bitbake -R conf/initramfs.conf mpfs-initramfs-image
### Building a Linux Image for an external QSPI flash memory
### 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
# References
1. [PolarFire SoC Yocto](https://github.com/polarfire-soc/meta-polarfire-soc-yocto-bsp)
**\*\***