Fabio Terrile, Developer in Avegno, Liguria, Metropolitan City of Genoa, Italy
Fabio is available for hire
Hire Fabio

Fabio Terrile

Verified Expert  in Engineering

Software Developer

Location
Avegno, Liguria, Metropolitan City of Genoa, Italy
Toptal Member Since
February 16, 2021

Fabio is a senior software developer with over 25 years of experience who can independently follow all design and implementation steps. He is apt to learn quickly and effectively in a fast-paced, rapidly changing environment. Fabio is looking for new professional experiences in the software and hardware fields, including but not limited to embedded hardware, software, HDL design, and desktop, server, and communication services.

Portfolio

Freelancer
C++, C, Xilinx Vivado, Xilinx Artix-7, Linux, Windows, FPGA...
Phase Motion Control S.p.a.
C, C++, Linux, Windows, FPGA, Assembly, Electronics, OrCAD...
Telefonica Movistar
C, CAN Bus, Windows, Linux, Assembly, Electronics, OrCAD, Motion Control...

Experience

Availability

Part-time

Preferred Environment

Linux, C, C++, Circuit Design, Embedded Development, Firmware, FPGA, Electronic Engineering, Windows, GNU Toolchain

The most amazing...

...project I've started is custom motion control firmware for ALMA OSF in the Atacama desert at 9,500 ft elevation, exposed to sandblasts and a very high UV index.

Work Experience

Software and Hardware Engineer

2021 - PRESENT
Freelancer
  • Developed an embedded application (Linux operating system) for a vacuum controller that monitors air pressure and computes setpoints or activation for one to many vacuum pumps.
  • Created an embedded application (barebone ARM) to automate oxygen breath pressure supply.
  • Made the hardware (schematics, PCB, and prototypes) and HDL of a software-defined radio capable of running several wireless protocols, targeted as a radio base station for 2G/3G microcells.
  • Developed HDL for an audio custom equipment testing solution.
  • Created a configurator for ASAM XCP protocols, targeting automotive ECUs.
  • Worked on developing a high-performance data stream decoder for ASAM XCP-based DAQ data streams.
  • Made firmware and software for embedded device communication through WebUSB and Web Serial API.
  • Oversaw the firmware development for a water infrastructure IoT monitoring device, with sensors optimization onboard ML and Azure IoT Hub connection.
Technologies: C++, C, Xilinx Vivado, Xilinx Artix-7, Linux, Windows, FPGA, Client/Server Networking, Digital Design, DSP, Embedded C, Embedded C++, Embedded Linux, ARM, ARM Embedded, MCU, PCB Design, PCB Layout, OrCAD, Motor Control, Realtime, Real-time Embedded Systems, Verilog HDL, Git, Real-time Operating System (RTOS), ARM Architecture, GNU Make, Microsoft Visual Studio, Microsoft Visual C++, .NET 5, C#, C#.NET WinForms, C#.NET, Visual Studio, Embedded Software, Programmable Logic Device (PLD), Embedded Hardware, Networking, Circuit Design, Desktop App Development, Electrical Engineering, Electronics, Hardware, Industrial & Manufacturing, Industrials, PCB, PCB Functional Testing, Software, SSH, TCP/IP, Motion Control, PID Controllers, Verilog, C++11, GNU Debugger (GDB), GNU Toolchain, Multithreading, USB, Docker, Radio, Software-defined Radio (SDR), DLL, ASAM XCP, Microcontroller Programming, Microcontrollers, STM32, Embedded Development, Firmware, .NET, Sockets, Routing, Electronic Engineering, Internet of Things (IoT), Python

Senior Software Engineer

2001 - 2021
Phase Motion Control S.p.a.
  • Designed and developed software and hardware of an electric vehicle smart charging DC controller, supporting ISO 15118 and CHAdeMO technologies as well as V2G.
  • Developed a new generation of C language programmable motion control platform, scaling from an electronic-integrated servo motor to a stand-alone electronic inverter.
  • Developed a generic purpose high-performance IEC languages programmable motion control embedded platforms for brushless motors.
  • Performed software design and development of high-performance compact electronic-integrated servo motor using Altera Quartus.
  • Conducted IT infrastructure planning, management, and deployment in an ESXi virtual infrastructure environment, both Linux and Windows-based.
Technologies: C, C++, Linux, Windows, FPGA, Assembly, Electronics, OrCAD, Visual Basic for Applications (VBA), Motion Control, Bash Script, ARM Architecture, GNU Toolchain, Multithreading, Boost, Git, Embedded Hardware, Embedded Software, Networking, Concurrent Programming, Digital Design, PCB Design, SQL, CAN Bus, PID Controllers, Verilog HDL, Eclipse IDE, GNU Make, JSON, Visual Studio, Embedded Linux, JavaScript, Embedded C, Embedded C++, Real-time Embedded Systems, Embedded Systems, Microsoft Visual Studio, ARM, MCU, Real-time Operating System (RTOS), C++11, APIs, Bootloaders, Encryption, Data Compression, SSL, SSL Certificates, SSL Configurations, PCB, PCB Layout, PCB Functional Testing, USB, SSH, Databases, GNU Debugger (GDB), IPv4, IP Routing, BSP, Transmission Control Protocol (TCP), TCP/IP, UDP, ICMP, ARP, DNS, BIND DNS, NAT, Iptables, Desktop App Development, Scripting, Information Technology, Client/Server Networking, Computer Networking, Verilog, Intel Quartus Prime, Altera Quartus, Programmable Logic Device (PLD), Circuit Design, Electrical Engineering, Microsoft Visual C++, Motor Control, Bluetooth, Electronic Sensors, Hardware, Industrial Protocols, Industrial & Manufacturing, Industrials, Realtime, Microcontroller Programming, Microcontrollers, STM32, Embedded Development, Firmware, TwinCAT PLC, Sockets, Routing, Electronic Engineering, Internet of Things (IoT), Python

Electronic and Software Engineer

2001 - 2001
Telefonica Movistar
  • Served as a data recording engineer for the competition motorcycle in the FIM Road Racing World Championship Grand Prix, 125cc class.
  • Conducted data recording equipment planning and management and harness design and construction.
  • Developed a prototype of a fly-by-wire throttle servo system (hardware and software), integrated with data recording equipment and engine electrical management equipment.
  • Planned the IT infrastructure and deployed and maintained the systems based on both Linux and Windows.
Technologies: C, CAN Bus, Windows, Linux, Assembly, Electronics, OrCAD, Motion Control, Embedded Hardware, Embedded Software, Networking, Digital Design, PCB Design, PID Controllers, Embedded Systems, MCU, Bootloaders, PCB, PCB Layout, PCB Functional Testing, Circuit Design, Electrical Engineering, Electronic Sensors, Hardware, Microcontroller Programming, Microcontrollers, Embedded Development, Firmware, Routing, Electronic Engineering

Electronic and Software Engineer

1997 - 2000
LCR Honda MotoGP
  • Acted as a data recording engineer for competition motorcycles in the FIM Road Racing World Championship Grand Prix, 125cc class.
  • Served as a recording equipment planner. Managed the processes and designed and constructed harnesses.
  • Developed hardware and software of a system to manage the liquid cooler temperature of the internal combustion engine.
  • Created hardware and software for a multifunctional dashboard for the rider.
  • Managed the IT infrastructure planning, deployment, and maintenance for Linux and Windows.
Technologies: C, CAN Bus, Windows, Linux, Assembly, Electronics, OrCAD, Embedded Hardware, Embedded Software, Networking, Digital Design, PCB Design, PID Controllers, Embedded Systems, MCU, Bootloaders, PCB, PCB Layout, PCB Functional Testing, Circuit Design, Electrical Engineering, Electronic Sensors, Hardware, Microcontroller Programming, Microcontrollers, Embedded Development, Firmware, Routing, Electronic Engineering

Electronic and Software Engineer

1998 - 1999
2D Debus & Diebold Meßysteme GmbH
  • Developed hardware of a programmable multifunction dashboard based on the CAN bus.
  • Developed firmware of the multifunctional dashboard starting from the existing prototype, adapting and bringing it to the production stage.
  • Oversaw the electronic prototyping and measurements for the multifunctional dashboard.
Technologies: C, Embedded Hardware, Embedded Software, Electronics, Assembly, Digital Design, PCB Design, MCU, CAN Bus, Bootloaders, PCB, PCB Layout, PCB Functional Testing, Circuit Design, Electrical Engineering, Microsoft Visual C++, Electronic Sensors, Hardware, Microcontroller Programming, Microcontrollers, Embedded Development, Firmware, Routing, Electronic Engineering

Software Developer | IT Manager

1994 - 1997
Lercari S.r.l.
  • Developed an insurance expertise management application.
  • Built an SQL database for the management application.
  • Deployed and maintained the overall IT infrastructure that ran the management application.
Technologies: Visual Basic, SQL, Windows Server, Networking, Databases, Desktop App Development, Routing

Electrical Vehicle Smart Charging DC Controller

A modular and scalable EV smart charge controller made both for private end-user and public parking places. Developed the core controller (embedded Linux) hardware of the ISO 15118 interface, CHAdeMO interface, and LTE modem board. Software architecture is based on a director process that handles task-specific processes via IPC. Each one acts as interface conversion between different technologies such as ISO 15118 and CHAdeMO brought to a common high-level interface. Hardware interface protocols have an independent microcontroller USB connected to the core controller.

Power-fail Safe Flash Memory Filesystem

Developed an effective and compact embedded filesystem for blocks structured flash memories, likes SPI flash memories. The aim is to have filesystem integrity in an environment where embedded devices could be powered off at any time, without relying on any power fail hardware detection. With the aid of operation-oriented journaling, all filesystem modifications are provided to be safe at any state, reverting any non-committed modifications to the starting point.

Programmable Power Conversion DSP

Designed a digital signal processor specifically targeted for power conversion algorithms such as PID controllers and FIR/IIR filters, featuring high speed and high-resolution variables. Through a custom compiler, it is possible to define local variables, then combine them with input variables taken from high-speed and oversampled AD converters. Required computing is performed, and output variables are used to drive the power section. All definitions and computing instructions are compiled and translated to a binary format loaded on the fly into the DSP.

Ethernet-based Fieldbus

Designed an Ethernet-based fieldbus to network several devices in a high-speed, low latency real-time system. Implemented into an FPGA, the core is a packet rewriting engine — a single IEEE 802.3 Ethernet frame containing input variables is sent from the master station, flowing through in and out connectors of every slave; every device will read its own variables and substitute them with output ones. When the frame returns to the master, it will contain output variables of all devices. Cycle time for a complete variables set exchange could be down to 30 microseconds.

Servodrive for Distributed Torque Control

Derived from the standard software of the electronic-integrated servo motor (I developed the software project for it), the target is having a distributed power amplifier for a distributed BLDC motor (motors feeding torque to the same device, where resulting torque is the sum of all). Software is able to get torque references from CAN bus, transducing it to power section with low latency and synchronous with a clock generated by the master controller.

Fly-by-wire Throttle Servo System

Developed a prototype of a fly-by-wire throttle servo system, including hardware and software. The goal was to have a compact, low voltage brushless motor servo drive to handle the carburetor's throttle valve, real-time computing position, and opening speed based on available onboard sensors like the exhaust temperature, engine speed, and throttle position. Except for throttle position, sensor feed was through onboard data recording system via CAN bus. Hardware was composed by a DSP, including external RAM and flash, three phases power amplifier with current sensing feedbacks, quadrature encoder inputs, and CAN bus driver, all packed in two 55x35 mm sandwich mounted boards.

Domotic Android App Ecosystem

Developed an Android app (Java) for domotic control, monitoring, and surveillance, including the home server ecosystem. It provided a user interface with an online connection to the home server to provide a direct and effective remote control. It has direct video streaming from surveillance cameras avoiding cloud proxying, thus having very low latency, with pinch-and-zoom capability. It can provide a diagnostic log, and it has several panels for maintenance direct I/O control.

A home server can send status and exception notifications to the devices through the Google Firebase platform and a local SMS gateway as a backup; both technologies are in-app managed.

Authentication and security are done through HTTPS on Apache web server, with required SSL client certificate as device authentication. The home server has a web server as a back end. PHP scripts deal with local daemons that perform management and gateway to home devices; it also deals with the local MySQL database supporting the ecosystem.

Software-Defined Radio Module

I developed a software-defined radio (SDR) module, USB host connected, with 100MHz to 6GHz uplink and downlink carrier capability and up to 60MHz of available bandwidth.

The system comprises a USB 3.1 front end connected to an FPGA for data transformation, filtering, and actuation on the RF front-end. The first step was the hardware design, from schematic to PCB routing, through manufacturing facilities for PCB assembly mounting, up to laboratory testing for initial specification matching; the second step was coding the HDL for the FPGA, compliant with USRP devices to be compatible with GNU radio.

Although such a device can run several wireless protocols, the target application was a radio base station for 2G/3G microcells and planned 4G.

Custom Audio Testing HDL

The application is a testing solution for an innovative speakers solution. The aim is to perform high-frequency stimulation via a pattern generator while recording high-frequency data from several analog sources and onboard MICs.

It was developed on the client's custom hardware, with a Xilinx Artix-7 FPGA as the computing core. The application was supported with an external PC, connected via USB or 1G ethernet; the connections were fully managed via the FPGA. The development was HDL for the FPGA and C++ on PC, where the scope was creating an API interface for the client's supervisor software.
1991 - 2005

Master's Degree in Electronic Engineering

University of Genoa - Genoa, Italy

1986 - 1991

High School Diploma in Information Technology

Istituto Tecnico Industriale Don Bosco - Genoa, Italy

Libraries/APIs

Sockets

Tools

Microsoft Visual Studio, Iptables, Altera Quartus, Microsoft Visual C++, GNU Toolchain, Visual Studio, Git, OrCAD, GNU Make, PCB Layout, GNU Debugger (GDB), Eclipse IDE, Apache, C#.NET WinForms, TwinCAT PLC

Frameworks

Realtime, .NET, Boost, .NET 5

Languages

C, C++, Verilog HDL, Assembly, Visual Basic, Embedded C, Embedded C++, C++11, Verilog, Bash Script, SQL, Visual Basic for Applications (VBA), JavaScript, Java, PHP, C#, C#.NET, Python

Paradigms

Concurrent Programming, Desktop App Development, ASAM XCP

Platforms

Linux, Windows, Embedded Linux, STM32, Windows Server, Android, Docker

Storage

Databases, JSON, MySQL

Other

CAN Bus, Networking, Motion Control, Embedded Software, FPGA, Software, Digital Design, Ethernet, Embedded Systems, Real-time Embedded Systems, ARM, MCU, Real-time Operating System (RTOS), Bootloaders, IPv4, IP Routing, Transmission Control Protocol (TCP), TCP/IP, UDP, ARP, NAT, Information Technology, Client/Server Networking, Computer Networking, Industrials, Industrial Protocols, Industrial & Manufacturing, Intel Quartus Prime, Programmable Logic Device (PLD), Circuit Design, Electrical Engineering, Motor Control, Electronic Sensors, Hardware, ARM Embedded, DLL, Microcontroller Programming, Microcontrollers, Embedded Development, Firmware, Routing, Electronic Engineering, PID Controllers, Embedded Hardware, Multithreading, Electronics, ARM Architecture, PCB Design, DSP, IEEE 802.3, APIs, Encryption, SSL, SSL Certificates, SSL Configurations, PCB, PCB Functional Testing, SSH, ICMP, DNS, BIND DNS, Scripting, Xilinx Vivado, Xilinx Artix-7, Internet of Things (IoT), USB, BSP, HomePlug Green PHY, Data Compression, User Interface (UI), Video Streaming, SMS Gateways, Bluetooth, Radio, Software-defined Radio (SDR), Xilinx Spartan, Audio

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring