Firmware Onboarding | Embedded Software

This tutorial assumes you know absolutely nothing about software development, Git, or coding. If anything is unclear, feel free to reach out for help on the #s_embedded_software channel.

By the end of this list, you should be in a place where you are more than ready to start work on the car. A lot of this stuff you might have already done or don't need to do if you've dabbled in software development before, but if you're fresh out of cornerstone you might need to go step by step. Go through at your own discretion, but each step is pretty important.

General Onboarding

  1. Make sure to look over this landing page and dive into Confluence

  2. Look through this onboarding doc for all new engineers

  3. You might want to use this glossary to reference while trying to understand things

  4. Here is another electrical specific glossary

  5. Here is a 24A car specifc glossary

Git

NER uses GitHub and Git to manage software development

  1. Set up GitHub per this tutorial

  2. Firmware Git standards

Development Environment Setup

Follow this guide to setup your development environment.

Coding Standards

Hardware We Use For Product

  1. What is a microcontroller?

    1. Why use an STM32?

  2. What is a Raspberry Pi?

    1. What is Embedded Linux?

  3. What is the CAN bus?

Note that for NER, we are using Embedded Linux for processing Telemetry Data and wireless communications, and all of the real-time processing happens onboard microcontrollers. These microcontrollers are literally just chips on our custom PCBs, not just Arduino development boards you may be used to.

Other Tools We Use For Development

  1. Install Visual Studio Code

    1. How do I use VSCode?

    2. Customize as you like, all of our tools are in Docker containers or venvs as of now

Coding Basics & Helpful Tips

If you’re ever stuck while programming or debugging, Google and Stack Overflow!! Learning to find answers online is literally half of software engineering

If you're interested in learning Python and coding higher-level applications, try to walk through this tutorial. If you do all the exercises you'll get a pretty good understanding of Python.

If you're interested in learning C++ and lower-level embedded code, try to walk through this tutorial. This should lay the groundwork for coding with objects, constructors, pointers, etc, especially if you do the exercises for the stuff you don't know.

Contribute!

For this team, our motto is:

“Ambition drives success” - Not (Not) Dylan Donahue, 2023

meaning that you truly get out what you put into the team. The typical ask for weekly contribution is around 5 hours for regular members, but people who go beyond typically get more experience/system knowledge and really get to feel like a part of the team.

Talk to your lead/head if you’re looking for things to do!