Pagina iniziale

Tecnologie e piattaforme

Linguaggi di programmazione, piattaforme hardware, bus e strumenti — la scelta segue i requisiti del progetto, non le mie preferenze.

Questa pagina offre una panoramica compatta delle tecnologie con cui lavoro. L'elenco non è esaustivo — nomina le piattaforme, i linguaggi e gli strumenti frequenti nei miei progetti o che considero particolarmente rilevanti per lo sviluppo embedded. Se la vostra piattaforma specifica non compare qui, ciò non significa necessariamente mancanza di esperienza; nei progetti embedded i concetti spesso si trasferiscono ad altre piattaforme non appena il compito è chiaro.

Linguaggi

1. Linguaggi di programmazione e HDL

Scelta del linguaggio secondo il compito: prossimo all'hardware ed efficiente nelle risorse in C o assembler, orientato agli oggetti in C++, logica FPGA in VHDL e SystemVerilog, strumenti e analisi in Python.

  • C — linguaggio principale per firmware microcontrollore, da bare-metal a FreeRTOS
  • C++ — per applicazioni embedded più complesse con strutture a oggetti, conforme a MISRA se richiesto
  • Assembler — sotto vincoli estremi, per driver hardware, codice di boot e reverse engineering
  • VHDL — progetti FPGA con forte chiarezza strutturale
  • SystemVerilog — sviluppo FPGA moderno, testbench, verifica
  • Verilog — descrizione FPGA classica
  • Python — automazione di test, script, analisi dati, backend web
  • Kotlin — per applicazioni Android di accompagnamento a dispositivi embedded
  • JavaScript / HTML / CSS — frontend web e interfacce di configurazione
MCU

2. Piattaforme microcontrollore

Esperienza con tutte le piattaforme microcontrollore consolidate sul mercato embedded — dall'ARM Cortex ad alte prestazioni al chip Atmel ottimizzato sui costi, come microcontrollore nudo o come piattaforma a scheda tipo Arduino o BeagleBone.

  • ARM Cortex-M — la piattaforma standard per requisiti medi
  • ARM Cortex-A — quando serve Linux o più potenza di calcolo
  • ESP32 — applicazioni embedded con Wi-Fi/Bluetooth
  • Atmel / Microchip AVR — p. es. famiglia ATmega per progetti sensibili al prezzo
  • Arduino — prototipazione rapida, didattica e dimostrazioni
  • BeagleBone — piattaforma ARM Cortex-A con Linux per applicazioni più impegnative
  • Microcontrollori a memoria minima — bare-metal, senza RTOS (progetto Stihl come esempio, vedi referenze)
  • altre piattaforme su richiesta
FPGA

3. Piattaforme FPGA

Sviluppo FPGA dalla specifica alla verifica. Accento sui prodotti Xilinx, familiarità con le toolchain moderne e i metodi di verifica.

  • Xilinx Artix-7 — FPGA efficienti nei costi per compiti di controllo ed elaborazione del segnale
  • Xilinx Zynq — piattaforma combinata ARM+FPGA per sistemi complessi
  • Vivado — toolchain per sintesi, implementazione e programmazione
  • Icarus Verilog / Verilator — simulatori open source per iterazione rapida
  • Testbench in SystemVerilog — verifica strutturata dei progetti FPGA
Bus

4. Bus e protocolli di comunicazione

Esperienza con i bus consolidati negli ambienti automotive, industriale ed embedded — dall'implementazione prossima all'hardware alla diagnostica.

  • CAN / CAN FD — standard automotive e industriale
  • MOST — bus infotainment con esperienza dal progetto Audi (vedi referenze)
  • Ethernet / EtherCAT — comunicazione industriale in tempo reale
  • SPI / I²C / UART — interfacce standard per sensori e periferiche
  • UDS (ISO 14229) — protocollo diagnostico per centraline
  • WebSocket / MQTT — per connessioni IoT e cloud
RTOS

5. Sistemi operativi di tempo reale e framework

Scelta dell'architettura software secondo i requisiti di progetto — dal bare-metal su microcontrollori limitati ai sistemi operativi di tempo reale multi-core completi.

  • Bare-metal — quando memoria e determinismo contano
  • FreeRTOS — standard di fatto per RTOS su microcontrollore
  • Architetture multi-core — distribuzione di compiti su più core
  • Linux embedded — su piattaforme tipo BeagleBone, quando le applicazioni ne traggono beneficio
Strumenti

6. Strumenti, framework di test e IDE

Gli strumenti sono mezzi. Lavoro con ciò che si addice al progetto — e mi familiarizzo rapidamente con toolchain ignote se rilevanti per il progetto.

  • Vector CANoe / CAPL — standard per test automotive e simulazione di bus
  • LabView — software di misura e controllo
  • Robot Framework — automazione di test end-to-end
  • Banchi HIL — hardware-in-the-loop per test integrati di sistema
  • Pulsonix — strumento di schema e progettazione PCB
  • Vivado — toolchain FPGA Xilinx
  • Git / GitLab — controllo di versione e revisione del codice
  • Wireshark — analisi di rete e bus
Web/App

7. Tecnologie web e app (software di accompagnamento)

Quando i dispositivi embedded richiedono un'interfaccia di configurazione, una dashboard o un'applicazione mobile, posso fornire anche il software di accompagnamento.

  • JavaScript / HTML / CSS — frontend web
  • Chart.js — visualizzazione di dati nel browser
  • Python / Flask — backend web
  • Node.js — componenti server
  • Socket.IO / WebSocket / MQTT — trasmissione di dati in tempo reale
  • Kotlin — applicazioni Android per dispositivi embedded
  • API REST — interfacce standardizzate tra embedded e cloud

Cosa non compare in questo elenco

Questa pagina nomina le tecnologie usate frequentemente — non è un catalogo completo. Se la vostra piattaforma, il vostro linguaggio o il vostro strumento non compare qui, vale comunque la pena parlarne. Nello sviluppo embedded, ciò che conta in fine non è tanto quale toolchain concreta si conosce, bensì con quale rapidità se ne adotta una nuova e con quale profondità si comprendono i concetti sottostanti.

Schema colori

Lingua