The firmware team is responsible for developing control software to drive all the electrical systems in our car. If you have experience or an interest in low-level programming, embedded systems development, or are just curious about how software in cars even works, this is the place for you!
There is no application process and you don’t need to have any experience when you join (many of our members don’t) All it takes to be a member is interest in what we’re doing, attending bi-weekly meetings, and putting in effort into helping us build the best software we can. Welcome to the team! Please follow this step-by-step process for onboarding:
First Steps
Join our Slack for all team communications. Team Communication
Make sure you join the #elec-firmware and #general channels! That is where all our firmware conversations and updates happen
[Optional] Add our google calendar for all meeting times Midnight Sun Calendar
...
Follow @uwmidsun on instagram/LinkedIn!
...
Take a look at Intro to Solar Car Electrical Systems if you’re interested, to get an overview of the project we’re working on. Even though you’ll be working on firmware, it’s important to understand the context of the projects you work on. Intro to Solar Car Electrical Systems
Read about the competition we attend here: https://www.americansolarchallenge.org/ It’s in two parts, there’s a track race (laps) and a rally (distance/time)
Onboarding Process
Introduction
Attend Firmware 101 to get a quick overview of our firmware system and complete the homework, or read through the notes. Notes and homework here: Firmware 101 Notes
[Optional] If you’re unfamiliar with shell, git, or C programming, please watch through the relevantEvery term we hold an introductory training session to tell people what we’re all about. If you’re still not convinced what team you want to be a part of, this is a great place to start. Check Elec-firmware for updates on when this will be taking place, or take a look at previous notes (Firmware 101 Notes ) if you want to get ahead
Background learning
There are several tools/technologies we use to help us run a mean, clean software organization. These are:
Git
Shell Environments (Linux)
C programming
If you don’t have a lot of experience with these, luckily we have Midnight-Sun-specific Shell Environments, Git, and C Programming videos creates by the legendary Arshan Khanifar (a retired firmware lead). Tutorial Videos There are also lots of resources available online.
**NOTE: We do not expect you to be an expert in any of these; just know the basics. Git and Shell Environments are a bit less complicated, but C-programming will take a while to pick up
Setup and Learning our Systems
Get your environment set up with Module 1 of Software 101. Module 1: Setup
Attend Firmware 102 to get an understanding of how our firmware team works and complete the homework, or read through the notes. Notes and homework here: Firmware 102 Notes
Attend Firmware 103 to get an understanding of our basic libraries and finding hardware information and complete the homework, or read through the notes. Notes and homework here: Firmware 103 Notes
[Optional] review the relevant videos by Arshan relating to GPIO, ADCs, and Interrupts.
Have a task assigned on JIRA.
Attend Firmware 104 to get an understanding of inter-chip communication and complete the homework, or read through the notes. Notes and homework here: Firmware 104 Notes
[Optional] Watch the Arshan’s video on CAN.
[Optional] Read through the notes on Codegen Tooling. This probably won’t be relevant right now, but will be down the line.
Attend Firmware 105 to get a detailed understanding of our project architecture and complete the homework, or read through the notes. Notes and homework here: Firmware 105 Notes -105 (held weekly):
Each session has a live component (training session), as well as supplementary notes and homework. They are all contained in Firmware 102 Notes . Feel free to read/work ahead if you’re feeling ambitious 🤩
Your first project and beyond!
After you have completed Firmware 103 (and the homework) your are ready for your first task!
Reach out to one of the leads, and they will get assign you something on Jira. You are now ready to start contributing!
Once you’ve completed these steps, pat yourself on the back, you’re now a fully onboarded Midnight Sun firmware member!
...