About the opportunity
Flock is looking to add an Android Systems Engineer to our device software team. Our device team is made up of scrappy engineers who are responsible for all of the code running on a variety of devices Flock deploys in the real world. They enable the whole experience by writing applications that reliably capture, process, and upload over 200M images per day for years at a time without needing human interaction to keep them running.
Some challenges you’ll tackle
- Integrate and port SoC Android BSP to Flock hardware platforms
- Bring-up new hardware device(s) to run Android OS, working with SoC vendors and other partners
- Work with the hardware and framework teams to enable needed functionality in Android-based devices (e.g. cameras, environmental sensors, power systems, etc.)
- Develop, review, port, test, and debug Linux device drivers and Android HAL implementations
- Ensure the stability and robustness of the system software from ideation through production and launch
- Work effectively across a variety of engineering teams to resolve issues and enable new features
- Work with systems designed for ultimate redundancy and high availability
- Design, develop, test, deploy, maintain and improve software.
- Balance performance with energy consumption - we're a machine learning enabled media processing machine powered by the sun!
- Integrate multiple IoT devices together to share data to help each other understand and respond to the environment
- Improve the quality, functionality and security of the platform and devices
About You
- Have a strong desire to understand the root cause of a problem and deliver a robust solution.
- Have development experience within embedded systems/firmware design
- Have experience coding in C/C++
- Have experience with Linux kernel and device driver development
- Have strong knowledge of Linux internals (process scheduler, memory management, concurrency, synchronization, memory allocation, file system, networking, storage, subsystem architecture)
- Have experience in dealing with complex systems and codebases (HALs, sub-systems, etc)
- Have experience bringing up Android devices
- Have experience with Android system software and Android HALs
- Have experience working in Linux development environment with GNU toolchain
- Have experience with common peripheral bus technologies including SPI, I2C, UART, etc