BSP — Board Support Package
Un Board Support Package (BSP) è il livello software di base che consente a una specifica scheda hardware di funzionare con un sistema operativo o un RTOS. È il ponte tra il vostro PCB personalizzato e il software che vi viene eseguito — e contiene tutto il necessario per inizializzare il processore, configurare le periferiche e fornire un livello di astrazione hardware al codice applicativo.
Cosa contiene un BSP
| Componente | Scopo | Esempio |
|---|---|---|
| Codice di avvio (startup) | Inizializzazione della CPU, tabella dei vettori, configurazione dello stack | startup_stm32f407xx.s |
| Linker script | Mappa di memoria (regioni Flash, RAM, stack, heap) | STM32F407VG_FLASH.ld |
| Configurazione del clock | Impostazione del PLL, divisori di bus, clocking delle periferiche | system_init(), Devicetree |
| Driver delle periferiche | GPIO, UART, SPI, I²C, ADC, PWM, DMA | Driver HAL/LL, driver Zephyr |
| Multiplexing dei pin | Mappatura dei pin dell’MCU su funzioni specifiche della scheda | Overlay Devicetree, CubeMX |
| Configurazione specifica della scheda | Mappatura dei LED, assegnazione dei pulsanti, collegamenti dei sensori | File DTS della scheda |
| Configurazione di debug | Impostazioni della sonda JTAG/SWD, algoritmi di programmazione della flash | Configurazioni OpenOCD, pyOCD |
Flusso di sviluppo del BSP
Quando Inovasense sviluppa un BSP per una scheda personalizzata:
- Revisione dello schematico — Verifica delle assegnazioni dei pin, dei domini di tensione, delle sorgenti di clock
- Creazione di Devicetree / configurazione — Mappatura di ogni pin dell’MCU sulla rispettiva funzione di scheda
- Bring-up di avvio — Inizializzazione del clock, console seriale, lampeggio di un LED (il “hello world” dell’hardware)
- Verifica delle periferiche — Test di ogni bus (SPI, I²C, UART) con analizzatore logico
- Integrazione dei driver — Driver dei sensori, moduli radio, controller del display
- Gestione dell’alimentazione — Configurazione delle modalità sleep, impostazione delle sorgenti di risveglio (wake-up)
- Firmware di test di produzione — Sequenza di test di fabbricazione per ogni periferica
BSP vs. SDK vs. HAL
| Livello | Ambito | Esempio |
|---|---|---|
| HAL (Hardware Abstraction Layer) | Wrapper a livello di registro forniti dal fornitore | STM32 HAL, nrfx |
| BSP (Board Support Package) | Configurazione specifica della scheda basata sull’HAL | Devicetree + driver per scheda personalizzata |
| SDK (Software Development Kit) | Framework completo con RTOS + middleware | nRF Connect SDK, ESP-IDF |
Perché la qualità del BSP è importante
Un BSP scritto male causa problemi estremamente difficili da diagnosticare in seguito:
- Configurazione errata del clock → corruzione intermittente dell’UART ad alti baud rate
- Multiplexing errato dei pin → conflitto sul bus SPI che si manifesta solo quando è attiva una determinata periferica
- Configurazione mancante del pull-up → l’I²C funziona sul banco di prova ma fallisce alle temperature estreme
- Wait state della flash errati → crash con HardFault che si verificano solo dopo il riscaldamento del chip
Termini correlati
- RTOS — Il BSP fornisce il livello hardware su cui gira il kernel dell’RTOS.
- SoC — Il System-on-Chip a cui il BSP è destinato.
- PCB Design — Lo sviluppo del BSP parte dallo schematico e dal layout del PCB.
Lo sviluppo di BSP per schede personalizzate è uno dei nostri servizi embedded fondamentali. Consultate le nostre capacità di Sviluppo di sistemi embedded.
Riferimenti ufficiali
- IEC 62304 — Processi del ciclo di vita del software dei dispositivi medici — IEC (validazione del BSP in contesto critico per la sicurezza)