BSP — Board Support Package
Board Support Package (BSP) je základná softvérová vrstva, vďaka ktorej konkrétna hardvérová doska funguje s operačným systémom alebo RTOS. Je mostom medzi vašou zákazkovou doskou plošných spojov (PCB) a softvérom, ktorý na nej beží — obsahuje všetko potrebné na inicializáciu procesora, konfiguráciu periférií a poskytnutie vrstvy hardvérovej abstrakcie pre aplikačný kód.
Čo BSP obsahuje
| Komponent | Účel | Príklad |
|---|---|---|
| Štartovací kód | Inicializácia CPU, tabuľka vektorov, nastavenie zásobníka | startup_stm32f407xx.s |
| Linkerový skript | Mapa pamäte (oblasti Flash, RAM, zásobníka a haldy) | STM32F407VG_FLASH.ld |
| Konfigurácia hodín | Nastavenie PLL, deličky zberníc, taktovanie periférií | SystemInit() (CMSIS), SystemClock_Config() (STM32Cube), Devicetree |
| Ovládače periférií | GPIO, UART, SPI, I²C, ADC, PWM, DMA | Ovládače HAL/LL, ovládače Zephyr |
| Multiplexovanie pinov | Mapovanie pinov MCU na funkcie konkrétnej dosky | Súbory Devicetree overlay, CubeMX |
| Konfigurácia špecifická pre dosku | Mapovanie LED, priradenie tlačidiel, pripojenie senzorov | Súbory DTS dosky |
| Konfigurácia ladenia | Nastavenia sondy JTAG/SWD, algoritmy programovania pamäte Flash | Konfigurácie OpenOCD, pyOCD |
Postup vývoja BSP
Keď Inovasense vyvíja BSP pre zákazkovú dosku:
- Kontrola schémy — Overenie priradenia pinov, napäťových domén a zdrojov hodín
- Vytvorenie Devicetree / konfigurácie — Namapovanie každého pinu MCU na jeho funkciu na doske
- Prvotné oživenie (bring-up) — Inicializácia hodín, sériová konzola, blikanie LED („hello world“ pre hardvér)
- Overenie periférií — Otestovanie každej zbernice (SPI, I²C, UART) logickým analyzátorom
- Integrácia ovládačov — Ovládače senzorov, rádiové moduly, radiče displejov
- Správa napájania — Konfigurácia režimov spánku, nastavenie zdrojov prebudenia
- Firmvér pre výrobné testovanie — Výrobná testovacia sekvencia pre každú perifériu
BSP vs. SDK vs. HAL
| Vrstva | Rozsah | Príklad |
|---|---|---|
| HAL (Hardware Abstraction Layer) | Obaľovacie funkcie (wrappery) na úrovni registrov dodávané výrobcom | STM32 HAL, nrfx |
| BSP (Board Support Package) | Konfigurácia špecifická pre dosku, ktorá využíva HAL | Devicetree zákazkovej dosky + ovládače |
| SDK (Software Development Kit) | Kompletný framework s RTOS + middleware | nRF Connect SDK, ESP-IDF |
Prečo záleží na kvalite BSP
Zle napísaný BSP spôsobuje problémy, ktoré sa neskôr mimoriadne ťažko ladia:
- Nesprávna konfigurácia hodín → občasné poškodenie dát na UART pri vysokých prenosových rýchlostiach
- Nesprávne multiplexovanie pinov → konflikt na zbernici SPI, ktorý sa prejaví len vtedy, keď je aktívna konkrétna periféria
- Chýbajúca konfigurácia pull-up rezistorov → I²C funguje na stole, ale zlyháva pri extrémnych teplotách
- Nesprávne čakacie cykly (wait states) pamäte Flash → pády HardFault, ku ktorým dochádza až po zahriatí čipu
Súvisiace pojmy
- RTOS — BSP poskytuje hardvérovú vrstvu, na ktorej beží jadro RTOS.
- SoC — System-on-Chip, pre ktorý je BSP určený.
- PCB Design — Vývoj BSP sa začína schémou a návrhom rozloženia dosky plošných spojov (PCB).
Vývoj BSP pre zákazkové dosky patrí medzi naše kľúčové služby pre embedded systémy. Pozrite si naše možnosti v oblasti vývoja embedded systémov.
Oficiálne referencie
- Zephyr Project — Board Porting Guide — Zephyr Project (Devicetree, Kconfig a súbory dosky, z ktorých sa skladá jej port)