Firmware Engineer
Role details
Job location
Tech stack
Job description
- Responsible for writing low level production code for industrial applications
- Design, develop, and debug embedded devices.
- Be a part of designing and taking a product to market.
- Participate in all project lifecycle phases, from design and code development through unit testing, documentation, and release.
- Collaborate with business stakeholders to understand needs and translate into technical requirements.
Requirements
We are seeking a Firmware Engineer possessing a development background on a Linux Operating Systems platform with Debian based distribution. This position will be responsible for the design, development, and debugging of production level code on embedded devices. Demonstrated expertise in all project lifecycle phases, from design and code development through unit testing, documentation, and release is required. This position is available to US Citizens or Permanent Residency (Green Card) candidates. Direct W2 applicants only, 3rd party recruitment agency submissions or inquiries will NOT be considered., Required
- 7+ years of experience with a focus in embedded software development.
- A Bachelor of Science degree in Computer Science, Computer or Electrical Engineering, or equivalent.
- Strong experience with modern C++, 11 or higher, is required, including the ability to communicate and implement object-oriented class designs.
- Experience with developing on a Linux Operating Systems is required; preferably with a Debian based distribution.
- Experience developing automated unit tests and working with SDETs/QA to ensure product quality is required.
- Experience with RF and baseband device driver and signal processing design and implementation
- Proven commercial experience writing low level production code for industrial applications
- Usage of lab tools such as oscilloscopes or serial analyzers to debug software, and the ability to read electrical schematics.
Preferred
- Experience with concurrency topics (i.e. threading and inter-process communication), event loops, and asynchronous programming.
- Knowledge with Jenkins Continuous Integration, Make and Google Test, Python, and or Golang.
- Experience with network programming topics (e.g. TCP, UDP, sockets, REST, etc.), Standard and BLE Bluetooth, and Wi-Fi.
- Competent with interfacing application code with device drivers on Linux.
- Proficient with Linux kernel development, device trees, driver modification or backporting, bootloader customization, and/or Qt stack.
- Strong understanding of Agile development., * Years of experience with modern C++, 11 or higher
- Years of experience writing low level production code for industrial applications
- Years of experience with RF and baseband device driver and signal processing design and implementation
Education:
- Bachelor's (Preferred)
Experience:
- Linux: 5 years (Required)
- Debian: 3 years (Required)
Benefits & conditions
Pulled from the full job description
- Professional development assistance
- Tuition reimbursement
- Parental leave
- 401(k)
- Health insurance
- Retirement plan
- 401(k) matching, * Unparalleled health benefits (PPO plan with no deductibles, no co-pays, Employer covers 99% of costs)
- Quarterly bonuses
- Professional development
- 401k match
- 22 days PTO
- Parental leave
- 11 annual paid holidays plus 1 floating holiday
- Winter break, * 401(k)
- 401(k) matching
- Dental insurance
- Employee assistance program
- Health insurance
- Health savings account
- Life insurance
- Paid time off
- Parental leave
- Professional development assistance
- Relocation assistance
- Retirement plan
- Tuition reimbursement
- Vision insurance