Responsible for design, development and testing of embedded software and firmware from product specifications. Provides specialized knowledge on complex technical and design matters. Creates and maintains documentation at specification, functional, implementation and code levels for all projects. Establishes test and validation criteria and ensures complete documentation of data. Designs, or oversees the design test fixtures as needed. Supports existing products currently in production.
Able to work independently but still as part of a design team. May assume a team lead role for the assigned work group. May mentor junior engineers or technicians to improve skill level of the engineering team.
Minimum 10 years’ experience in C and C++ for various microcontroller architectures.
Plans, schedules and carries out embedded or PC software design projects as assigned.
Writes and maintains microcontroller firmware for a variety of processors.
Implements communication electrical specifications and protocols as required, such as I2C, SPI, Bluetooth, USB, BACnet, Modbus, RS-232, RS-485
Assists in development of, and adhering to, project timelines, cost estimates, reports and design reviews.
Supports test fixture design as directed.
Develops or reviews Manufacturing and Quality Control product testing and alignment procedures as assigned.
Investigates the cause of product failures of a software nature and recommends and implements corrective action as directed.
Ensures that prototype modules and appropriate breadboards are archived properly for future reference.
Generates and reviews ECOs for accuracy and completeness as directed.
Evaluates and approves design changes, specifications and documentation releases for assigned products or projects.
Work with product management and engineering teams to define and validate software features and requirements
Work with peers to review code and assure the best software engineering practices.
Reviews code for corrections and adherence to best practices and programming standards.
Performs all other duties as assigned or directed.
- C and C++ and Assembly for various microcontroller architectures. Expertise with common aspects of embedded software: real-time interrupts, watchdog, timers, data corruption prevention, serial communications, signal digitization and filtering, queues, data structures, object-oriented design, small-screen GUI (Graphical User Interface), compiler optimization, code debugging and optimization in Assembly Language.
- Strong firmware/software design, architecture, and documentation experience
- Ability to perform first time board bring up
- RTOS and Bare-Metal programming
- Electronic skills required for understanding and contributing to design and debugging.
- Strong electronic assembly skills as required for building, debugging and modifying prototype circuits.
- Ability to identify multiple solutions to problems and to select the best option based on product requirements and consensus from the design team.
- Ability to learn new skills quickly, including communication protocols, MCU architectures, and software tools.
- Ability to understand hardware schematics and component datasheets
- Ability to develop software test plans to verify designs meets project requirements
- Knowledge of and experience with ARM processors is a PLUS
- Embedded hardware and mixed signal/analog design experience is a PLUS
BS Degree in Electrical Engineering/Computer Science/Electronics Engineering , MS degree is a plus.