Level 3 | $60,000 – $110,000
As a member of the firmware development team, your daily activities will include the full life cycle of design, development, modification, testing, debugging, and support for new and existing embedded software for our embedded Linux and Android based products.
- Design, develop, implement, debug and maintain embedded real time applications for Android/Linux based products C, & C++ development environments.
- Embedded Linux Kernel / OS development on ARM based platforms including configuration management, build, deployment, hardware interfaces, device driver, device tree
- Work closely with other software and hardware engineers to solve design issues.
- Responsible for design and implementation of new device features on multiple platforms
- Responsible for the maintenance of current software including: feature enhancements, performance increases, troubleshooting, testing, and bug fixing.
- Interfacing software applications with other devices and control systems
- Providing technical documentation (test procedures, design specifications, etc.)
- Special projects as assigned
- A minimum of 6 years of proven experience developing and debugging embedded software, preferably for Android/Linux.
- Must have strong C, & C++ skills.
- Must have experience with:
- Linux OS internals, Linux kernel software
- Embedded Linux U-Boot/kernel development and customization
- Linux Device Tree development
- Embedded Linux device driver development, optimizations, bug fixing, add new functionality
- Ability to independently read and understand electrical schematics
- Hardware and software abstraction
- File system operations
- Multi-threaded and multi-process architectures
- TCP/UDP client and server implementations
- Resource constrained processors (e.g. single core ARM)
- Experience debugging embedded systems where step debugging may not be available.
- Experience with communication networks and protocols (e.g. USB, Ethernet, TCP/IP, etc.) are also beneficial.
- Experience with HW accelerated graphics processing (OpenGL ES) is beneficial
- Android NDK and SDK is beneficial