Senior Embedded Software Engineer will develop the next-generation edge device software that brings AI onto the IoT devices equipped with various cutting-edge sensors. The software which cooperate with cloud platform solves challenging problems in the world of IoT such as centrally managing massively distributed devices, deploying and upgrading applications remotely, securing data end-to-end, and optimizing the placement of workloads onto a set of heterogeneous devices. the edge device works in ultra-low power, so it utilizes not only stable environment but also constraint environment such as high/low temperature, battery powered, under limited network. the device integrates tightly with various sensors/accelerators to reduce power consumption to offer optimal solution for such constraint environment like Smart City, Smart Retail.
We are looking for a highly motivated individual who is willing to learn new technologies and innovate and has strong analytical, problem-solving, and communication skills, as well as the ability to take on multiple responsibilities at once. Must be able to work in a fast-paced environment with teams distributed around the globe.
- In close cooperation with the Team Lead, coordinate the embedded software team in terms of both system architectures designing and implementation.
- Coordinate the firmware development in high quality and on schedule to help achieve company business goals.
- Interact with the product owners to gather requirements, architect solutions, provide means to deploy and support our software.
- Develop Edge Platform Software independent from various of RTOS.
- Design and implement dynamic software loading system over the network.
- Design and implement highly concurrent and efficient software components.
- Lead technical projects and provide guidance to junior engineers.
- Work with HR to help grow the engineering team.
Desired Skills and Experience
- 10+ years of software development experience.
- 2+ years of software team leading experience in international environment.
- Strong system architecture designing experience in embedded software. e.g. RTOS selection, designing power/clock management system followed to RTOS manner.
- Deep knowledge to control hardware inside/outside of MCU and design how to manage a service based on such hardware functionality.
- Experience designing software that under memory constraint environment such as tiny MCU.
- Experience designing and developing peripheral driver such as to control DMAC, I2C, SPI, some specific IP.
- Strong development experience in C/C++, Linux and real-time operating system (RTOS)
Experiences with IoT
- End-to-end security architecture
- Remote management of devices
- On-Chip debugger experience.
- Socket programming experience.
- Concurrent and asynchronous programming.
- Experience with Version Control tools.
- Excellent analytical skills.
- Strong written and verbal communication skills.
The following skills and experience are a plus
- Experience developing in Linux environment.
- Experience developing in NuttX RTOS.
- Sensor technologies and/or specific SW programming (DSP, ISP, FPGA, etc)
- Dynamic software loading on RTOS.
- Cloud technologies such as AWS and OpenStack.
- Knowledge about L2-L7 network protocols including Ethernet, IP, TCP, HTTP.
- Debug peripheral buses and GPIO using oscilloscope.
- Knowledge about electronic circuit to read schematic sheet and utilize for debugging.
BS or MS in Computer Science, or a related field, required.