BSP – Board Support Package
Ein Board Support Package (BSP) ist die grundlegende Softwareschicht, die eine spezifische Hardware-Platine mit einem Betriebssystem oder RTOS lauffähig macht. Es bildet die Brücke zwischen Ihrer kundenspezifischen Leiterplatte und der darauf ausgeführten Software und enthält alles, was zur Initialisierung des Prozessors, zur Konfiguration der Peripherie und zur Bereitstellung einer Hardware-Abstraktionsschicht für den Anwendungscode erforderlich ist.
Was ein BSP enthält
| Komponente | Zweck | Beispiel |
|---|---|---|
| Startcode | CPU-Initialisierung, Vektortabelle, Stack-Setup | startup_stm32f407xx.s |
| Linker-Skript | Speicherbelegungsplan (Flash, RAM, Stack-, Heap-Bereiche) | STM32F407VG_FLASH.ld |
| Taktkonfiguration | PLL-Setup, Bustakteiler, Peripherietaktung | system_init(), Devicetree |
| Peripherietreiber | GPIO, UART, SPI, I²C, ADC, PWM, DMA | HAL/LL-Treiber, Zephyr-Treiber |
| Pin-Multiplexing | Zuweisung von MCU-Pins zu platinenspezifischen Funktionen | Devicetree-Overlays, CubeMX |
| Platinenspezifische Konfiguration | LED-Zuweisungen, Tastenbelegung, Sensoranschlüsse | Board-DTS-Dateien |
| Debug-Konfiguration | JTAG/SWD-Probe-Einstellungen, Flash-Programmieralgorithmen | OpenOCD-Konfigurationen, pyOCD |
Entwicklungs-Workflow für BSPs
Wenn Inovasense ein BSP für eine kundenspezifische Platine entwickelt:
- Schaltplanprüfung – Überprüfung von Pinbelegung, Spannungsdomänen, Taktquellen
- Erstellung von Devicetree/Konfiguration – Zuweisung jedes MCU-Pins zu seiner Funktion auf der Platine
- Inbetriebnahme des Startcodes – Taktinitialisierung, serielle Konsole, LED-Blinken („Hello World“ für Hardware)
- Verifikation der Peripherie – Testen jedes Busses (SPI, I²C, UART) mit einem Logikanalysator
- Treiberintegration – Sensortreiber, Funkmodule, Display-Controller
- Energiemanagement – Konfiguration des Schlafmodus, Einrichtung von Aufweckquellen
- Produktionstest-Firmware – Fertigungstestsequenz für jede Peripheriekomponente
BSP vs. SDK vs. HAL
| Ebene | Umfang | Beispiel |
|---|---|---|
| HAL (Hardware Abstraction Layer) | Vom Hersteller bereitgestellte Wrapper auf Registerebene | STM32 HAL, nrfx |
| BSP (Board Support Package) | Platinenspezifische Konfiguration unter Verwendung der HAL | Kundenspezifischer Devicetree + Treiber |
| SDK (Software Development Kit) | Vollständiges Framework mit RTOS + Middleware | nRF Connect SDK, ESP-IDF |
Warum die Qualität eines BSPs entscheidend ist
Ein schlecht geschriebenes BSP verursacht Probleme, die später extrem schwer zu debuggen sind:
- Falsche Taktkonfiguration → sporadische UART-Datenfehler bei hohen Baudraten
- Falsches Pin-Muxing → SPI-Buskonflikt, der nur auftritt, wenn eine bestimmte Peripherie aktiv ist
- Fehlende Pull-up-Konfiguration → I²C funktioniert auf dem Labortisch, fällt aber bei extremen Temperaturen aus
- Falsche Flash-Wait-States → HardFault-Abstürze, die erst nach Erwärmung des Chips auftreten
Verwandte Begriffe
- RTOS – Das BSP stellt die Hardwareschicht bereit, auf der der RTOS-Kernel läuft.
- SoC – Das System-on-Chip, für das das BSP ausgelegt ist.
- Leiterplattendesign – Die BSP-Entwicklung beginnt mit dem Schaltplan und dem Leiterplattenlayout.
Die BSP-Entwicklung für kundenspezifische Platinen ist eine unserer zentralen Dienstleistungen im Bereich eingebetteter Systeme. Informieren Sie sich über unsere Kompetenzen in der Entwicklung eingebetteter Systeme.
Offizielle Referenzen
- IEC 62304 – Software-Lebenszyklus-Prozesse für Medizinprodukte – IEC (BSP-Validierung im sicherheitskritischen Kontext)