Passa al contenuto
Inovasense

BSP (Board Support Package)

BSP (Board Support Package) — Livello di astrazione hardware che collega la progettazione del PCB a un RTOS, comprensivo di codice di avvio, driver e configurazione delle periferiche.

Definizione
BSP (Board Support Package) — Livello di astrazione hardware che collega la progettazione del PCB a un RTOS, comprensivo di codice di avvio, driver e configurazione delle periferiche.

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

ComponenteScopoEsempio
Codice di avvio (startup)Inizializzazione della CPU, tabella dei vettori, configurazione dello stackstartup_stm32f407xx.s
Linker scriptMappa di memoria (regioni Flash, RAM, stack, heap)STM32F407VG_FLASH.ld
Configurazione del clockImpostazione del PLL, divisori di bus, clocking delle periferichesystem_init(), Devicetree
Driver delle perifericheGPIO, UART, SPI, I²C, ADC, PWM, DMADriver HAL/LL, driver Zephyr
Multiplexing dei pinMappatura dei pin dell’MCU su funzioni specifiche della schedaOverlay Devicetree, CubeMX
Configurazione specifica della schedaMappatura dei LED, assegnazione dei pulsanti, collegamenti dei sensoriFile DTS della scheda
Configurazione di debugImpostazioni della sonda JTAG/SWD, algoritmi di programmazione della flashConfigurazioni OpenOCD, pyOCD

Flusso di sviluppo del BSP

Quando Inovasense sviluppa un BSP per una scheda personalizzata:

  1. Revisione dello schematico — Verifica delle assegnazioni dei pin, dei domini di tensione, delle sorgenti di clock
  2. Creazione di Devicetree / configurazione — Mappatura di ogni pin dell’MCU sulla rispettiva funzione di scheda
  3. Bring-up di avvio — Inizializzazione del clock, console seriale, lampeggio di un LED (il “hello world” dell’hardware)
  4. Verifica delle periferiche — Test di ogni bus (SPI, I²C, UART) con analizzatore logico
  5. Integrazione dei driver — Driver dei sensori, moduli radio, controller del display
  6. Gestione dell’alimentazione — Configurazione delle modalità sleep, impostazione delle sorgenti di risveglio (wake-up)
  7. Firmware di test di produzione — Sequenza di test di fabbricazione per ogni periferica

BSP vs. SDK vs. HAL

LivelloAmbitoEsempio
HAL (Hardware Abstraction Layer)Wrapper a livello di registro forniti dal fornitoreSTM32 HAL, nrfx
BSP (Board Support Package)Configurazione specifica della scheda basata sull’HALDevicetree + driver per scheda personalizzata
SDK (Software Development Kit)Framework completo con RTOS + middlewarenRF 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

Termini correlati