2023-06-02 16:25:01 -04:00
|
|
|
Upsilon docker development environment setup.
|
2023-05-26 15:00:46 -04:00
|
|
|
Written by Peter McGoron.
|
|
|
|
|
2023-06-02 16:25:01 -04:00
|
|
|
# Setup steps
|
2023-05-26 15:00:46 -04:00
|
|
|
|
2023-05-29 14:39:02 -04:00
|
|
|
## Rebinding Caps Lock to Escape
|
2023-05-26 15:00:46 -04:00
|
|
|
|
|
|
|
gsettings set org.gnome.desktop.input-sources xkb-options "['caps:swapescape']"
|
|
|
|
|
2023-05-29 14:39:02 -04:00
|
|
|
## Installing OpenFPGALoader
|
2023-05-26 15:00:46 -04:00
|
|
|
|
|
|
|
Then install [openFPGALoader][1]. This utility entered the Ubuntu repositories
|
|
|
|
in 23.04. Install and compile it if you do not have it. Install the udev rule
|
|
|
|
so that admin access is not required to load FPGA bitstreams.
|
|
|
|
|
|
|
|
[1]: https://trabucayre.github.io/openFPGALoader/index.html
|
|
|
|
|
2023-05-29 14:39:02 -04:00
|
|
|
## Setup Rootless Docker
|
2023-05-26 15:00:46 -04:00
|
|
|
|
|
|
|
Docker allows you to run programs in containers, which are isolated
|
|
|
|
environments. Upsilon development (at the Maglab) uses Docker for
|
|
|
|
reproducibility: the environment can be set up automatically, and re-setup
|
|
|
|
whenever needed.
|
|
|
|
|
|
|
|
If you have issues with docker, try adding to `~/.config/docker/daemon.json`
|
|
|
|
|
|
|
|
{
|
|
|
|
"storage-driver": "fuse-overlayfs"
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2023-05-29 14:39:02 -04:00
|
|
|
## Download and Install Python3
|
2023-05-26 15:00:46 -04:00
|
|
|
|
|
|
|
Install `python3-venv` (or `python3-virtualenv`) and `python3-pip`.
|
|
|
|
|
2023-06-02 16:25:01 -04:00
|
|
|
## Clone External Repositories
|
|
|
|
|
|
|
|
Run `make clone`. You may need to download the upsilon repositories
|
|
|
|
and put them in the same folder as the Makefile.
|
|
|
|
|
|
|
|
## Setup Images
|
|
|
|
|
|
|
|
Run `make images` to create all docker images.
|
|
|
|
|
|
|
|
## Setup and Run Containers
|
|
|
|
|
|
|
|
There are three containers: `hardware`, `buildroot`, and `opensbi`. For
|
|
|
|
each of these:
|
|
|
|
|
|
|
|
1. Run `make $NAME-container` to build the container.
|
|
|
|
2. Run `make $NAME-container-copy` to copy Upsilon's code into the container.
|
|
|
|
3. Run `make $NAME-container-execute` to build the data.
|
|
|
|
4. Run `make $NAME-container-get` to retrieve the build artefacts.
|
|
|
|
5. (Optionally) run `make $NAME-container-clean` to delete the container.
|
2023-05-26 15:00:46 -04:00
|
|
|
|