Principal Firmware Engineer
We are looking for an experienced embedded software (firmware) engineer. Candidates must have experience with C and C++ programming language and development with embedded Linux is preferred. In addition to firmware development, responsibilities of the position include analysis of technical requirements, lead software architecture and design, and software verification. Provide mentorship on all aspects of firmware engineering. Pluses include: Real-time firmware development, unit testing / test-driven development, source control using Git or Subversion, familiarity with in-system debugging, security, secure coding, knowledge of electrical engineering and power systems. The candidate must have a bachelor’s degree in, computer engineering, or electric engineering with embedded firmware experience
Responsible for the functional and empirical analysis and design as related to developing and implementing embedded firmware for the company's products. This may include, but is not limited to, operating software, utility software, development software and diagnostic software. Involved in the development of testing strategies and software reliability studies for both devices and systems, and standards for software documentation.
Reports to: Software Engineering Manager
- Has good communicative capabilities to supply technical advice and information to others.
- Supervise other software engineers and technicians assigned to a particular job or project.
- Create, modify, direct, and maintain firmware for new and revised products.
- Develop and track schedules for firmware development or revisions.
- Program in C/C++ and other high level languages.
- Assist in the development of programming standards and practices.
- Identify, develop justifications for, and use software development tools such as assemblers, compilers, emulators, etc.
- Work with Design Engineer and/or Project Leader during the development of a new or revised designs.
- Lead the development of the definition of the software requirements, objectives, and modules for new or revised designs.
- Lead the development of new embedded architecture, security features, and driver level firmware.
- Perform or assists others in software testing or establishing software testing requirements.
- Work with customers, users, and others to develop software operating requirements or to troubleshoot/debug existing problems. This includes travel when required.
- Lead training of the software operation of new or revised design.
- Assist Technical Writer in writing manuals and other publications as they relate to software.
- Develop and/or direct device communications standards, software programs, and hardware requirements.
- Estimate Engineering effort and material required on jobs or proposals being quoted.
- Provide mentorship on all aspects of firmware engineering.
- Perform other duties as assigned.
- BSCE, BSEE or equivalent plus 10 years’ firmware design experience preferred.
- Working knowledge of software version control tools such as svn or Git.
- Working knowledge of Linux operating system, networking, and multithreaded execution systems.
- Working knowledge of C/C++ and object orient programming.
- Working knowledge of communication hardware. i.e. Ethernet, USB, I2C and SPI.
- Working knowledge of electrical test equipment. i.e. oscilloscope, multi-meter.
- Working knowledge of embedded micro controller systems.
- Working knowledge of XML and JSON schema.
- Working knowledge of third party code integration.
- Computer skills including Microsoft Word, Excel & PowerPoint.
- Ability to speak and write in clear understandable manner.
- Ability to exchange and furnish information requiring detailed explanation and discussions with customers and various levels of personnel.
- Travel as required for training, support of project tasks, product issues, or other design or job related needs.