Develop software across spacecraft, FPGA, and commercial platforms. For our locations in Italy and Switzerland Freezz is looking for a versatile Software Engineer to develop software for Friisat and other commercial products. The role focuses primarily on C and C++ development across FPGA-based platforms, payload computers, and onboard computers. Depending on your experience and project requirements, you may also contribute to FPGA functions, higher-level applications, development tools, networked services, and software for other Freezz communication products. This position is well suited to an engineer who enjoys working across hardware and software boundaries and wants to contribute at multiple levels of a complete system.
What You Will Do
- Design, implement, test, and maintain software primarily in C and C++.
- Develop functions for payload computers, onboard computers, embedded processors, and FPGA-based platforms.
- Help determine how functionality should be divided between FPGA logic, embedded processors, and higher-level software.
- Implement control, configuration, monitoring, telemetry, telecommand, and data-processing functions.
- Develop software that interfaces with FPGAs, communication payloads, RF devices, sensors, and other hardware components.
- Build efficient data paths for moving, buffering, processing, and storing high-rate information.
- Develop software for embedded Linux, real-time operating systems, and resource-constrained environments.
- Develop hardware-abstraction layers, device interfaces, libraries, services, and reusable software components.
- Implement system-control logic, state machines, scheduling, timing, logging, diagnostics, and fault-handling mechanisms.
- Create unit, integration, regression, simulation, and hardware-in-the-loop tests.
- Debug complex interactions between software, processors, FPGA logic, communication algorithms, and physical hardware.
- Profile and optimise software for performance, latency, memory use, reliability, and power consumption.
- Contribute to higher-level applications, APIs, network services, automation tools, and user-facing software when required.
- Support software development for other Freezz commercial products beyond the Friisat programme.
- Participate in architecture discussions, code reviews, technical documentation, continuous integration, and release management.
- Collaborate with FPGA, DSP, RF, telecommunications, networking, electronics, and systems engineers.
What We Are Looking For
- Degree in computer science, software engineering, computer engineering, electronics, telecommunications, or a related discipline; or equivalent practical experience.
- Strong programming skills in C and C++.
- Experience developing reliable software for Linux, embedded Linux, an RTOS, or another systems-level environment.
- Good understanding of software architecture, data structures, concurrency, memory management, and multithreaded programming.
- Experience working with processors, SoCs, FPGA-based platforms, or hardware-connected systems.
- Understanding of hardware/software interfaces and low-level communication mechanisms.
- Familiarity with networking, inter-process communication, and communication protocols.
- Experience debugging and testing software in environments that combine hardware and software.
- Familiarity with Git, build systems, code reviews, automated testing, and continuous integration.
- Ability to work across different abstraction levels; from hardware-facing code to higher-level applications.
- Strong problem-solving, documentation, and teamwork skills.
- Professional working proficiency in English.
Valuable Additional Experience
- AMD/Xilinx, RFSoC, Zynq, or comparable platforms.
- Embedded Linux development using Yocto, Buildroot, or similar systems.
- Linux related development, device drivers, or board-support packages.
- DMA, PCIe, Ethernet, AXI, SPI, I²C, UART, CAN, SpaceWire, or other hardware interfaces.
- Python or another language used for automation, testing, simulation, or higher-level services.
- Network programming, distributed systems, APIs, databases, or cloud-connected applications.
- Bootloaders, secure boot, cryptography, remote updates, or embedded cybersecurity.
- Spacecraft software, communication payloads, avionics, automotive systems, robotics, or other reliability-focused applications.
- Fault-tolerant software, redundancy, health monitoring, or recovery mechanisms.
Why Join Us & Hiring Details
You will have the opportunity to work across a broad technology stack, from FPGA-connected hardware and embedded computers to higher-level applications and commercial communication products. Rather than being limited to one narrow software layer, you will help decide where functions should run, implement them on the most appropriate platform, and participate in their integration into complete operational systems.
How to Apply
- Please fill up the application form on this page.
- Where relevant, candidates are encouraged to include examples of technical projects, publications, portfolios, Git repositories, or descriptions of systems they have helped design.
- Freezz welcomes applicants from different backgrounds. Selection decisions are based on professional qualifications, experience, and the requirements of the position.
- We review applications on a rolling basis and respond within 5 business days. We’re actively hiring and moving fast. If you’re a strong fit, expect to hear from us quickly.