Principal Firmware Engineer
SURVIVAL SYSTEMS STAFFING, INC.
San Jose, United States of America
13 days ago
Role details
Contract type
Permanent contract Employment type
Full-time (> 32 hours) Working hours
Regular working hours Languages
English Experience level
SeniorJob location
San Jose, United States of America
Tech stack
Clean Code Principles
Abstraction Layers
API
Assembly Language
Unit Testing
C++
Code Composer Studio
Software Documentation
Software Quality
Computer Engineering
Software Debugging
Programming Tools
Device Drivers
Embedded C
Embedded Software
Firmware
Hardware Design
Joint Test Action (IEEE Standards)
Performance Tuning
Process Driven Development
Real-Time Operating Systems
Software Engineering
Subversion
System Programming
Universal Asynchronous Receiver/Transmitter
Scripting (Bash/Python/Go/Ruby)
PIC Microcontroller
Real Time Systems
Peripherals
GIT
Integration Tests
Information Technology
Software Version Control
Job description
We are seeking an experienced Embedded Firmware Engineer to develop and maintain low-level firmware for TI C2000 Digital Signal Processors (DSP). This role involves designing real-time control algorithms, developing device drivers, and optimizing firmware performance for power electronics applications. The ideal candidate will have deep expertise in embedded C development, DSP architecture, and low-level hardware abstraction., * Develop and maintain firmware for TI C2000 DSP family (F28xxx series) using C and assembly language
- Design and implement low-level device drivers for peripherals including PWM, ADC, SPI, I2C, CAN, and UART interfaces
- Develop hardware abstraction layers (HAL) to simplify application-level software development
- Implement and optimize real-time control algorithms for digital power conversion and motor control applications
- Write efficient DSP math library functions leveraging C2000 CPU and floating-point capabilities
- Optimize firmware for performance, memory footprint, and power consumption
- Debug firmware using CCS (Code Composer Studio) and in-circuit debugging tools
- Conduct unit testing, integration testing, and field validation of firmware implementations
- Maintain comprehensive firmware documentation, including design specifications and API documentation
- Collaborate with hardware engineers and systems architects on embedded system design
Requirements
- Bachelor's degree in Electrical Engineering, Computer Science, Computer Engineering, or related field
- 5+ years of professional experience developing embedded firmware in C
- Hands-on experience with Texas Instruments C2000 DSP processors (F28xxx family)
- Strong proficiency with embedded development tools including Code Composer Studio (CCS)
- Experience developing device drivers for peripherals (ADC, PWM, SPI, I2C, CAN, UART)
- Knowledge of DSP architecture, real-time processing concepts, and interrupt handling
- Proficiency with version control systems (Git, SVN, or equivalent)
- Experience with debugging techniques and in-circuit emulation/JTAG debugging
- Ability to write clean, maintainable code with strong software engineering practices
- Strong problem-solving skills and ability to work both independently and collaboratively
Preferred Qualifications
- Experience with grid-connected power electronics and utility-scale inverter systems
- Knowledge of renewable energy systems (solar, wind) or energy storage applications
- Experience with real-time control systems and control theory implementation
- Familiarity with analog-to-digital conversion, signal conditioning, and measurement techniques
- Experience with RTOS (Real-Time Operating Systems) or baremetal firmware development
- Knowledge of C++ or other systems programming languages
- Familiarity with hardware design and ability to read schematics
- Background in power electronics, motor control, or power conversion systems
Technical Skills
- Languages: C, assembly language, basic Python scripting
- Microcontrollers/DSPs: TI C2000 series, microcontroller fundamentals
- Development Tools: Code Composer Studio, JTAG debuggers, oscilloscopes, logic analyzers
- Peripheral Interfaces: ADC, PWM, SPI, I2C, CAN, UART, GPIO
- Development Methodology: Version control, code documentation, unit testing, debugging practices
Key Competencies
- Technical Expertise: Deep knowledge of embedded systems, DSP architecture, and firmware development
- Problem-Solving: Systematic debugging approach and ability to solve complex firmware issues
- Code Quality: Commitment to writing clean, efficient, and maintainable firmware code
- Performance Optimization: Experience optimizing code for speed and memory efficiency
- Communication: Ability to document code, design, and share knowledge with team members
- Adaptability: Quick learner who can master new tools, platforms, and application domains