Job Responsibilities
Design, develop, analyze, test and debug of computer software applications and/or systems mostly in a Real-time embedded environment.
Work in a Linux Development environment.
Customization and configuration of the Linux operating system for the target system.
Develop both in the kernel space (BSP, Drivers, etc) as well as user space application to interface with devices and FPGA registers and provide a socket-based user interface.
Provide regular reporting of progress and status including schedule input for design assignments as well as cost.
Document component and subsystem specifications including design documents, interface documents, test plans, etc.
Communicate clearly (written and oral) with other groups internally such as manufacturing, and program management as required.
Participate heavily in preparation of the more complex and significant proposals.
This means having to create a SOW, requirements, BOE, etc.
Provide technical expertise and assistance to other engineers and support personnel.
Maybe responsible for driving technology and leading a group of engineers on a technical activity and completion of activity on time and budget.
Qualifications
Bachelor's degree in Computer Science or Computer Engineering, with a minimum of 5 years of experience or a combination of education and experience.
Strong background in software development using C/C++ and Python on Linux operating systems (with some experience on Windows as well).
Solid understanding of multi-threading and multi-processing concepts.
Hands-on experience in embedded device development, including ARM-based systems interfacing with FPGAs.
Proficient in developing embedded drivers under Linux for interfaces such as TCP/IP, UART, I²C, PCIe, and others.
Well-versed in modern software development practices, including version control systems (Git, SVN), defect tracking tools (preferably Jira), peer code reviews, and Agile methodologies.
Fluent in relevant technologies and application domains.
Demonstrated ability to independently lead technical teams.
Preferred Qualifications:
Experienced with RF signal processing such as DDC, ADC, DAC, and equalization.
Experienced in software-defined radio development, including the VITA 49 protocol.
Strong ability to work with cross-functional teams across SW, FW, HW, and RF disciplines.
Experience with build and development tools such as Linux virtual machines (VMs), Docker, and related technologies.