The Embedded Firmware Engineer will work on the definition, design, implementation and validation of embedded firmware running on microcontrollers. The Engineer works closely with the hardware, software and product team members to ensure that the embedded code on products is keeping pace with the rest of development in terms of feature set, reliability and scalability for new and existing products.
Job Qualifications and Requirements:
- Design and develop embedded firmware for MultiTech products, both existing and new product development.
- Establishes unit and system test environments to isolate potential software/firmware issues and ensure quality of firmware system.
- Identify and define requirements related to firmware/embedded systems and scope projects to meet these requirements.
- Collaborate closely with the Hardware team to understand PCB designs and desired product functionality and to select and develop critical design components. Use common tools for debugging, logic analysis, and electrical measurements.
- Collaborate closely with the Software team to implement communication interfaces and new firmware functionality to support the ongoing development of new features.
- Collaborate with Production team (Quality Assurance and Manufacturing Engineers) to develop and carry out testing, validation, or troubleshooting of new prototypes, or deployed products.
- Refactoring legacy systems for testing and portability.
- Participate in system integration (Electronics, Mechanic, Software, App, Cloud).
- Participate in the review of design and software work of other Engineers.
- Perform all functions related to software development, including requirements specification, design, coding, debug, test, and documentation.
- Participate in the research and design of new products or feature enhancements to existing products.
- Support existing products by analyzing reported problems, debugging and correcting software/firmware to resolve customer issues.
- Provide input to the selection of tools and the implementation of an effective development environment.
- Provide input to the implementation and improvement of Product Development processes.
Education and/or Experience:
- B.S. Electrical Engineering, Computer Science, or related field.
- 4-6 years of programming experience.
- 2-5 years developing commercial firmware applications, preferably in the IoT industry
- The ability to read PCB schematics and understand the basics of hardware design
- 4-6 years of software development experience using C/C++ or any other high level language
- 3+ years of experience in application development using Embedded Linux/Yocto or any other RTOS
- 3+ years of experience in scripting languages like Ruby, Perl, Python
- Experience in developing real-time embedded applications, multi-threading and inter process communication
- Experience with open source development tools from GNU, MIT, BSD or OpenEmbedded
- Experience in using any of the databases like SQL, MySQL, Mongo
- Strong knowledge of TCP/IP, networking protocols and any other communication protocols
- Knowledge of source code control systems like git, cvs and svn is desirable
- Good knowledge of software design methodologies, communicating and documenting requirements, performing high level and low level designs and design reviews.
- Experience in Embedded Linux or any RTOS with good understanding of device drivers, boot loaders and operating system principles.
- Product development experience for mass production preferred.
<iframe width="560" height="315" src="https://www.youtube.com/embed/l3gPgAn56E8" frameborder="0"></iframe>