Embedded Software Engineer

  • Design, develop, implement, and test high-performance embedded software solutions in C/C++ for Linux-based embedded systems, System-on-Chip (SoC) platforms, and Software Defined Radio (SDR) applications.
  • Develop firmware and low-level software that interfaces with FPGA-based hardware, RF front-ends, DMA engines, and custom embedded hardware.
  • Design and optimize high-throughput IQ data pipelines between FPGA fabric, system memory, and user-space applications with emphasis on low latency and deterministic performance.
  • Develop and maintain software supporting Xilinx/AMD Zynq, Nvidia Jetson, or similar embedded computing platforms.
  • Configure and optimize DMA transfers, memory management, cache coherency, and zero-copy architectures for efficient data movement.
  • Develop multithreaded real-time software using C/C++, POSIX threads, synchronization primitives, and lock-free programming techniques.
  • Optimize software performance using ARM NEON SIMD instructions, vectorized libraries (VOLK, Eigen), or GPU acceleration where appropriate.
  • Develop and maintain Linux user-space applications and interfaces for SDR hardware using Industrial I/O (IIO), sysfs, ioctl, or custom device interfaces.
  • Support Linux BSP customization and embedded Linux image development using Yocto, PetaLinux, or Buildroot.
  • Collaborate with FPGA, RF, electrical, systems, and test engineers to develop integrated hardware/software solutions.
  • Analyze system performance, including CPU utilization, memory usage, throughput, latency, and timing behavior to ensure sustained real-time processing.
  • Participate in system architecture discussions and assist in defining software requirements and interface specifications.
  • Conduct unit testing, integration testing, and performance validation of embedded software.
  • Implement secure coding practices and support cyber-hardened embedded software designs.
  • Create and maintain technical documentation including software design documentation, interface control documents (ICDs), test procedures, and user guides.
  • Participate in Agile development activities including sprint planning, technical reviews, and code walkthroughs.
  • Support integration, troubleshooting, and defect resolution for fielded systems.
  • Other duties as assigned.