Participate in software development projects following a formal process, including software design, development, code reviews, hardware reviews, use of software standards, and generation and use of testing frameworks
Provides broad support, analysis, design, development, debugging, and maintenance related to software running on real-time and non-real-time OS and bare metal microprocessor and microcontroller systems
Integrate firmware, embedded software apps with sensors, communication modules (e.g., BLE, LTE, Wi-Fi), and other hardware components
Debug, optimize, and validate embedded software applications on target hardware
Coordinates the design, development, and testing of new software, drivers, interfaces, TCP/IP stack, SDKs, APIs, and applications
Prepares documents, including requirements analysis, design, unit testing plans, release notes, and user guides, etc.
Investigates, recommends, and implements new technologies
Requirements
Experience in defining project scope, deliverables, and team requirements
Ability deliver results against milestones and deliverables
Proficiency in C/C++ for embedded systems
Experience with MCUs, SoCs, and embedded development tools (e.g., JTAG, oscilloscopes, logic analyzers)
Familiarity with real-time operating systems (FreeRTOS, Zephyr, etc.), Linux OS, and Drivers
Familiarity with secure boot, firmware OTA, and TLS encryption
Strong debugging and troubleshooting skills
Able to work successfully in a deadline-driven, fast-paced environment and effectively multitask priorities in a team-oriented environment
Must be flexible and able to adapt to changing requirements and schedules
Demonstrates problem-solving skills with the ability to think strategically
Ability to effectively present information and respond to questions from groups