Work closely with hardware/FPGA engineers to understand HW control architecture including CPU architecture, memory access and control of various peripherals; develop firmware supporting hardware (drive DACs, read ADCs, control flash devices via low-level interfaces or FPGA interfaces).
Work closely with optical engineers to define optical control requirements and develop and implement control algorithms on Linux and FreeRTOS.
Develop software interface layer that communicates with system controller on a different card through gRPC over Ethernet.
Provide accurate design estimates to management for planning purposes.
Follow development processes to ensure delivery of quality products on time.
Be flexible and adapt to changing tasks when needed.
Requirements
Bachelor or higher degree in Computer Engineering/Electrical Engineering, or equivalent education.
Minimum 5 years of industry experience in real-time programming using C/C++ in embedded Linux and/or RTOS environments
Solid experience with low-level device interfaces, including UART, SPI, and I2C.
Proficient in using lab equipment, such as oscilloscopes and power meters.
Strong understanding of SOC controller/processor architecture, Linux kernel, and real-time OS operations.
Experience with CMAKE build system
Working knowledge in gRPC and protobuf design and implementation
Proven ability to quickly grasp new technical concepts.
Excellent written and verbal communication and presentation skills.
(Nice to have) Experience with optical networking communication systems, particularly optical transceivers or fiber optics modules.
(Nice to have) Experience with Xilinx Zynq/Ultrascale.
(Nice to have) Understanding of digital signal processing principles or PID control algorithms.
(Nice to have) Knowledge of Petalinux and its build environment.