Looking for a Linux firmware developer who is able to program Linux applications using C & C++11. Must be able to write software for an embedded Linux distribution always keeping in mind that system resources are limited and able to create code which is very efficient, stable, and fault tolerant. Engineer must be a self starter able to create and document complex systems.
- Experience with real-time operating systems (embedded Linux experience highly desired).
- Experience writing C/C++ code for embedded devices.
- Use hardware tools such as multimeters and oscilloscopes to troubleshoot firmware behavior.
- Read schematics and component datasheets to understand requirements for hardware driver implementation.
- Strong C/C++11.
- Posix Programming: Sockets & Threads.
- Bash & Sh shell scripting
- Proficient using, and configuring Linux systems.
- Strong understanding of bootloaders.
- Strong analytical and problem solving skills.
- Familiar with UART, I2C, SPI, USB, etc.
- Wireless communications (LTE/WiFi)
- Good understanding of Object Oriented analysis and design, as well as ability to work in computer mixed languages.
- Able to work in a collaborate environment ( team code reviews and design ).
- Familiarity with Agile Development tools such as JIRA and Confluence.
- Ability to communicate well with others, motivated and organized.
- Ability to analyze and understand an existing codebase and use that knowledge to troubleshoot, isolate, and resolve issues.
- Deliver software features with exceptional quality, meeting designated release plans and delivery commitments.
- Bachelor’s degree in Computer Science or related field, or equivalent work experience.
- Excellent verbal and written communication skills.
- Knowledge of open source software platforms and tools.
Useful & Nice to have:
- Buildroot experience.
- Experience with automotive data bus interfaces highly desired (CAN, J1939, UDS, OBD-II).
- Experience with message queues such as RabbitMQ, Kafka.
- Experience in designing and building large scale systems. Demonstrated knowledge with distributed and multi-threaded implementations a plus.