- Design and implement software for embedded devices and systems, from requirements to production and commercial deployment.
- Develop, code, test, and debug system software.
- Review code and design, focusing on improving efficiency, stability, and scalability of system resources.
- Integrate and validate new product designs.
- Develop, integrate, and troubleshoot bootloaders and Linux device drivers.
- Work with ARM-based embedded processors, particularly System-on-a-Chip (SoC) devices like Altera SoC and Xilinx Zynq.
- Utilize experience with Marvell switches and network protocols such as TCP/IP, UDP, VLAN.
- Demonstrate knowledge of related interfaces and technologies, including IP stack, storage, USB, I2C, SPI, PCIe, and DMA systems.
- Leverage embedded Linux development frameworks such as Yocto and Buildroot, along with related cross-compilation tools.
- Support software QA efforts and optimize I/O performance.
- Provide post-production technical support for products.
- Collaborate with hardware design and development teams to ensure seamless system integration.
- Assess and integrate third-party and open-source software solutions.&
- Bachelor's degree in Computer Science, Engineering, or a related field.
- Proven experience in software engineering, particularly in embedded systems design with preemptive, multitasking real-time operating systems.
- Proficiency in programming languages such as C or C++.
- Hands-on experience in the development and troubleshooting of embedded systems and Linux device drivers.
- Familiarity with software configuration management tools, defect tracking systems, and peer review processes.
- Strong understanding of OS coding techniques, IP protocols, interfaces, and hardware subsystems.
- Ability to interpret schematics and data sheets for hardware components.
- Excellent documentation and written communication skills.