Setting up an Embedded Development Environment

The preferred development environment for LHRS embedded systems is VSCode on a Linux machine. Options for developers not on a native Linux machine include WSL (specifically WSL2, supported on Windows) or a Virtual Machine (supported on both Windows and macOS). Instructions provided here will assume that you have a working Linux environment with terminal control.

Currently Ubuntu 20.04 and 22.04 (preferably Server edition) are the latest tested & supported Linux distributions. Other options may work but have not been rigorously tested.

Linux Environment

WSL2

WSL2 Install Guide (Preferred)

For WSL2 USB support (for flashing the leaderboard), additional instructions will need to be followed. This guide assumes you are using either Windows 10 or 11. WSL Connect USB Devices

Linux VM

Ubuntu 22.04 Server ISO Download (Server edition is best, not desktop)

Ubuntu 22.04 VM (VMWare) Install Guide

Ubuntu 22.04 VM (VirtualBox) Install Guide

In order to use a VM, you will need to set up VSCode via SSH to remote into the machine. You will not need to do this if using WSL as VSCode supports direct connection to WSL using the WSL extension.

SSH Setup from Windows -> Linux VM

GitHub SSH Keys

GitHub security now mandate SSH keys to contribute to GitHub repositories. Make sure you do this on your Linux machine.

Generating SSH Key 

Adding SSH Key

Other

It is a good idea to install a few key extensions in your VSCode environment. Some of these may only be available if you sign up for and receive the GitHub Student Developer pack. You are encouraged to explore the Extension marketplace, but here are a few that we have found to be useful:

Finally, a friendly warning. With the emergence of AI pair programmers such as GitHub Copilot and GPT derivatives, one may be tempted to begin by installing an AI extension. Do not get into the habit of relying on these assistants. If you are learning for the first time, put yourself through the challenge of coding unassisted for at least a year before adding these tools to your workflow. If you do not, it will clearly show in the quality of your code, and will make you more unproductive than you realize. 

This is intended to be a general guide across all of our embedded systems. For more system-specific steps, please consult either system-specific Confluence pages, or the README's of the appropriate repositories.

Cloning Repository

Embedded teams (Controls, BPS, Data Acquisition) need to clone both specific system repo and Embedded-SharePoint repo. You should also make sure to git submodule update --init --recursive to include the necessary submodules required (i.e. uCOS RTOS).