Experience working with Embedded processors and microcontrollers, preferably ARM.
Experience working with Peripheral buses (I2C, SPI, Serial, PCI).
Experience working with Device IO (Serial, USB, Ethernet, Wifi, Bluetooth, Zigbee).
Experience working with Analog and digital sensors.
Adequate knowledge of reading schematics and data sheets for components.
Ability to quickly learn and adapt to the existing code base and new technical skills.
Highly motivated with demonstrated ability to work independently with minimal supervision.
Have a command of software engineering fundamentals and modern SW development processes.
Strong analytical skills to be able to translate the system requirements and use cases to detailed system design.
Strong problem-solving skills to participate in troubleshooting of issues with different teams to drive towards root cause identification and resolution.
Good team player with excellent communication skills, to be able to collaborate and work with cross functional teams.
Ability to work in a fast-paced, dynamic work environment with a focus on technical excellence, responsiveness to meet timelines.
Preferred:
Basic understanding of embedded hardware / electronics, schematics, and PCB.
Experience with Medical domain firmware development.
Experience with unit testing and static analysis.
Experience with a variety of debugging tools like JTAG, Signal Analyzers, etc.
Experience in using measuring and monitoring electronics test equipments like multimeter, digital oscilloscope, etc.
Familiarity with Requirements management tools, configuration management tools and test management tools like Git, TestRail, Jira, Helix/TestTrack, Confluence, etc.
Responsibilities:
Designing and implementing software for embedded devices and systems.
Designing, developing, coding, testing, and debugging system software.
Develop associated tools to support testing and verification of products.
Collaborate with cross-functional teams to understand the product specification, software requirements, software design, etc.
Responsible documenting and implementing processes for software development.
Responsible for continuous improvement of software and processes to enhance efficiency, stability, and scalability.