This position will require collaborating with a multi-disciplinary team to provide embedded software for custom hardware solutions. Analyze, design, program, debug and modify the firmware for the execution of drivers, board support packages, and other custom embedded platforms. Job Description! This position will require collaborating with a multi-disciplinary team to provide embedded software for custom hardware solutions. Analyze, design, program, debug and modify the firmware for the execution of drivers, board support packages, and other custom embedded platforms. Work often involves analog and digital hardware and real-time operating systems. The position requires knowledge of and exposure to hardware design and strong C/C++ programming skills. In this role, you’ll: Design and implement systems using C, C++, and a variety of languages (e.g. bash, Python). Experience with various frameworks & OS including bare-metal systems. Write code from high-level embedded applications down to register-level device drivers; Utilize a variety of processors and hardware peripherals (e.g. PWM, ADC, DAC, CAN, UART, etc.) ; Write and execute complete testing plans, protocols, and documentation for assigned portion of the application; identify and debug, and create solutions for issues with code and integration into the application architecture; Develop and modify BSPs (including porting and integrating kernel device drivers); Board bring-up as well as debugging and validation of new hardware. What we expect from you: 3+ years of degreed experience in software development required; Strong C, C++ programming skills; Knowledge of firmware testing methodology, including writing and execution of test plans, debugging, and testing scripts and tools; Full understanding of SPI, I2C, USB 2+, RS232, CAN ; Experience developing for the Linux kernel. Knowledge of basic principles of the kernel, DT, bootloader and how the system works ; Experience with RTOS (real-time operating systems) ; Experience with communications protocols in a low power environment, for example, Bluetooth LE ; Experience with collaboration tools (i.e. GIT, JIRA, and Confluence) and software configuration tools; Demonstrated ability to take initiative to identify and solve complex system-level issues; Excellent analytical and empirical problem solving and troubleshooting skills. Ability to apply statistical methodology in evaluating the design and system performance; Ability to plan work and accomplish challenging objectives with a minimum of direction; Demonstrated ability to work collaboratively, both within and outside one's own workgroup; Strong written and verbal English language communication skills; Bachelor’s degree in Computer Science, Electrical Engineering or related field. We offer: Multicultural team, non-routine work, and a place for your ideas; Hybrid work model – remotely and from our office; Private health insurance, sports compensation, and professional courses.