Responsibilities
:
·Serve both as a technical leader and as an individual contributor developing Embedded Software Programs for Microcontrollers and Microprocessor programmable systems
·Work with other embedded software application & UI development teams to deliver full stack solutions
·Lead in development of software abstraction layers for processor architecture, board and chipsets interfaces, using Board Support Packages (BSPs), device Trees, ARM CMSIS and other hardware abstraction interfaces
·Collaborate with the hardware and systems team for board bring-up, firmware specifications, and requirements.
·Maintain, patch and upgrade our Linux kernel and update drivers based on product requirements and ensuring compliance with Secure Product Development practices
·Partner with Third Party Vendors and contract suppliers to deliver on project needs and contribute to requirements and Statements of Work (SOWs) for external efforts
·Contribute to and govern a shared component library full drivers, logging mechanisms, APIs, IPC, and computational algorithms.
·Perform firmware verification of modules, applications, embedded OS drivers using unit tests, static-analysis and hardware-in-the-loop testing
·Support advanced research and product development efforts through evaluating new chipsets, technologies or libraries.
·Follow team standards for firmware/software development, including project planning, documentation, design reviews, firmware testing, project status reporting, and software configuration management.
·Own our Embedded Software product through the entire development Lifecycle through stages of design, implementation, test/verification, documentation, release, maintenance and sustainment; support any internal and external customers through this process
·Work collaboratively with others to achieve goals
·Able to perform comfortably in a fast-paced, deadline-oriented work environment
·Bachelors or Masters Degree in Computer Science, Computer Engineering, Electrical Engineering, or related field with strong firmware/software development background.
·At least 10+ yrs. experience in software development with C/C++ working with Microcontrollers & Microprocessors, preferable ARM Architectures.
·At least 10+ yrs. experience developing embedded software for technical products including supporting the full software lifecycle.
·Strong knowledge and software development experience in customizing Linux Distros using Yocto and/or buildroot.
·Strong knowledge and software development experience with best practices in firmware architecture, multithreaded/concurrent software designs, modular software and Objected Oriented Design (OOD).
·Expert knowledge of modern cross-compiler toolchains, build systems and environment tools to generate software builds and build artifacts, including GCC, Make/CMake, yocto/buildroot, and docker etc.
·Expert usage of source control software (preferably Git).
·Expert skills in Embedded Software verification, debugging and troubleshooting techniques on and off target.
·Effective written and verbal communication abilities to engage with diverse cross-function teams.
·An Inherent desire to lead, support, mentor and collaborate with fellow teammates, fostering a sense of camaraderie and collaboration.
·Possess a growth mindset, unafraid to seek help, learn from failures, question decisions, and constantly strive for improvement.
Additional Qualifications:
·Experience in leading non-project organizational initiatives, small and/or large project teams in Firmware.
·Experience working with RTOS and bare-metal embedded software.
·Experience with various communication interfaces such as USART, I2C, CAN, SPI, USB, etc..
·Experience with TCP/IP protocols or other common networking protocols.
·Ability to develop in Agile-based or scrum processes across multiple projects.
·Experience using cloud based CICD infrastructure to build and automate testing.
·Aptitude for learning new programming languages, tools, concepts, practices and technologies.