Firmware vs CDH
Firmware Design Lead - Role Description
Overview
The Firmware lead is in charge of directing and coordinating the software loaded onto the microcontrollers. From the common architecture across boards, to the custom drivers for every electronic device, Firmware writes the code to run the entire FINCH CubeSat. As Firmware lead, you will have the opportunity to work with every subsystem as you benchmark, test, and interface with their components, gaining a wide breadth of knowledge about FINCH and software development. In particular, you will work closely with the Hardware and Electrical teams as PCBs and other electrical connections are developed.
Responsibilities
The Firmware lead is expected to perform the following duties:
- Develop and integrate a reliable, high-performance onboard firmware system
- Regularly meet with subsystems to develop and integrate drivers to their requirements
- Direct and support a team of highly-dedicated Firmware members in developing software
- Coordinate and maintain a schedule of “builds” to meet launch requirements
- Document information needed to operate and control the onboard software, during integration and flight
- Debug and regularly test code; use good embedded development practices
- Acquire the flight microcontrollers for integration (order details will be shared by the outgoing lead)
- Actively participate in lead and technical meetings, and UTAT recruitment promotions
Expected time commitment: 8-16 hours, varying by the week. Includes work sessions, technical discussions with the Firmware team and other subsystems, mandatory meetings (leads + systems + general), and miscellaneous tasks.
Skills
While not required, the following are a list of skills that would be beneficial to the applicant. You should expect to learn all of these skills as Firmware Lead:
- Programming
- Embedded C (occasionally embedded C++)
- Experience working with microcontrollers - we use STM32 (ARM), but AVR, PIC, or using Arduinos are also a plus
- Real-Time Operating Systems (RTOS), like FreeRTOS
- Serial and bus protocols (ex. SPI, I2C, UART, CAN, parallel camera data formats)
- Version control systems, like Git (GitHub) or SVN
- Technical
- Interpreting datasheets to find relevant and critical information
- High-level understanding of PCB design and testing
- Basic electronics prototyping (ex. using breadboards, soldering)
- Electrical lab equipment (ex. multimeters, oscilloscopes)
- Leadership
- Managing a team of fellow students (team/1-on-1 meetings, task assignment and followup, assistance when needed)
- Participating in technical and non-technical discussion with other leads (promoting ideas, raising concerns, listening to others)
- Using collaboration platforms (Notion, Slack, Google Workspace)