Firmware Subteam Overview [W2021]

Firmware makes the hardware work. We write embedded C code that runs on microcontrollers on each board, making the whole electrical system do what it’s supposed to do.

Important

Upcoming 101

Saturday, September 19 2:00 pm. Weekly after that.

Weekly Meetings

Virtual standups: Saturdays at 1:00pm and Wednesdays at 8:00pm.

 

Term Goals

Hardware Validation

  • We’ve written a lot of firmware, but now we need to make it actually work on hardware! That means writing, running, and debugging smoke tests so that we can be sure that each driver and each hardware component works, and debugging our projects until everything runs on hardware correctly.

Integration Testing

  • We need all our projects on different boards to work together smoothly.

Electrical Mockup

  • The end goal for the term is an electrical mockup: we connect the boards together, flash our firmware onto all of them, and test that the whole system works.

 

Term Projects

Telemetry

  • Telemetry is the system that sends the car’s data into the cloud and broadcasts it over both LTE and Wi-Fi to the chase car.

Multi-Project x86 Emulation (MPXE)

  • This project will hopefully let us run simulate running projects on multiple boards at the same time so that we can catch integration bugs before they happen.

Hardware validation support

  • Create more tools like smoke tests that we and the hardware team can use to quickly validate boards and the firmware on them.

Software & Programs Used

Software/Program Name

What it’s used for

Software/Program Name

What it’s used for

C Programming Language

All of our firmware is written in bare-metal C!

Git

Version control

GitHub

Code review, hosting our code

GNU Make

Build system

Travis CI

Continuous integration: checking that every pull request builds and passes unit tests!

VirtualBox + Vagrant

VM for development

Jira

Ticket tracking

Confluence

Documentation

Your Winter 2021 Subteam Leads & Project Managers

 

 

Jess Muir - Technical Lead

About Me
I’m a 2B Systems Design Engineering student with a couple of co-ops in C/C++. I’ve been on the team since May 2019.

Talk to Me About
Onboarding, C, our libraries, MPXE

 

Ryan Dancy - Technical Lead

About Me
Hi! I’m a 2A Software Engineering student, and I’ve been on the team since January 2020. I’ve co-oped in Python and JavaScript and I’ve worked with a bunch more languages. On Midnight Sun I’ve written firmware for the Power Distribution and Solar Sense boards, plus a bunch of drivers.

Talk to Me About
C, Python, setting up your dev environment, our drivers and libraries, tasks you’re working on, anything you’re stuck on

Catherine Cai - Project Manager

About Me
Hi everyone, my name is Catherine and I am currently in my 2B Computer Engineering academic term. I have joined the team in Fall 2018 and have since worked on various systems on the team, including being the Solar Array lead, working on the electrical and mechanical teams, as well as Strategy. I am currently Midnight Sun’s PM and will be helping lead the Mechanical team, Firmware, and Business teams.

Talk to Me About
Anything really! If you want to chat, learn more about the team, engineering, the student experience at Waterloo, or co-op (I specialize in Software and Project Management). If you’re looking to learn more about other teams or looking for tasks, feel free to send me a message! On a non-team/school related note, you can ask me about German history, AI, or F1!

Skills to Thrive on the Subteam

We unfortunately don’t have the resources to guide you through learning programming from scratch, but if you have some programming experience (any language) or you’re a very motivated self-learner you can pick up C and any firmware specific knowledge on the team.

Additional links

Firmware Jira board

Past lead Arshan's excellent tutorial playlist

Coding Standards