Expertise in C programming writing low-level drivers in embedded systems.
Working knowledge of embedded development tools (i.e. IAR, Keil, Arduino, Code Composer Studio)
Experience with RTOS and/or embedded linux development.
Familiarity with FPGAs and associated HDL development languages including VHDL, Verilog, and System Verilog is a plus.
Competency in communication protocols such as SPI, UART, I2C, RS-422, USB, and Ethernet.
Requirements generic to all:
Background in Computer Science, Electrical or Computer Engineering, or related technologies.
Fluency in software architecture, object-oriented programming, design patterns, databases, data structures and algorithms.
Knowledge of the full software release cycle including planning, implementation, testing, configuration management, code reviews, and build processes.
Development experience in Linux operating systems
Experience with cellular and/or WiFi in an embedded environment is a plus.
Fluency in debugging embedded systems with hardware debug technologies, logic analyzers, and oscilloscopes.