Firmware Engineer
Summary
Designs, develops, and optimizes embedded firmware for electronic instrumentation products, working on both non-RTOS state-machine systems and FreeRTOS on ARM Cortex-M0+ through Cortex-A15 multicore DSP SOCs. Day to day this means writing low-power C firmware, device drivers, secure bootloaders, and UIs, and testing with oscilloscopes and JTAG/SWD debuggers alongside hardware engineers.
- Design, develop, and optimize embedded firmware.
- Design for non-RTOS, state machine-based system design.
- Develop using Real-Time Operating systems such as FreeRTOS.
- Develop with ARM processors ranging from Cortex-M0+ SOC up to Arm-A15 multicore DSP.
- Implement device drivers to communicate with off chip peripherals.
- Implement user interfaces.
- Use secure boot loaders.
- Test, debug, and optimize code using oscilloscope, JTAG and SWD debuggers.
- Work closely with hardware and system engineers to achieve design goals.
- Integrate USB and Wireless protocols.
- Ensure operations adhere to laws, guidelines, ISO requirements.
- Comply with safety policies, practices, and procedures. Report all unsafe activities to supervisor and/or Human Resources.
- Bachelor’s degree in Computer Engineering, Computer Science, or Electrical Engineering
- A minimum of 7 years of experience in embedded software development
- Proficient in C
- Hands-on experience with RTOS, and bare-metal programming
- Experience implementing DSP algorithms
- Experience with secure bootloaders supporting OTA updates
- Experience with GIT and Bitbucket
- Able to read schematics and data sheets
- Source code management using Git and Bitbucket
- Experience with Bluetooth is a plus
- Well-lighted, heated and/or air-conditioned indoor office/production setting with adequate ventilation and moderate noise
- May work with or near moving mechanical equipment
- Manual dexterity sufficient to reach/handle items and work with the fingers
- Must be able to bend, stoop, squat, crouch
- Must be able to sit for long periods of time
- Must be able to lift up to ten pounds, with or without assistance