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.
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.
Designs and maintains test fixtures 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.
BS Degree or MS degree in Electronics Engineering, or equivalent.
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
Minimum 10 years' experience in C and C++ for various microcontroller architectures
Minimum 10 years' experience in analog and digital circuit design