Platforma EmBi
Modul EmBi_Platform poskytuje jednotný způsob inicializace, strukturování a správy projektů založených na STM32. Automatizuje vytváření projektu, nastavení adresářů a inicializaci BSP pro zvolenou rodinu MCU STM32.
Obsah
Tento modul obsahuje:
- Nástroje pro práci s artefakty – Nástroje pro správu a zpracování build artefaktů (např. stahování, verzování, ověřování).
- Šablony projektů STM32CubeIDE – Připravené struktury projektů pro mikrokontroléry STM32.
- Pomocné skripty CMake – Sada pomocných skriptů, které zjednodušují integraci s build systémy založenými na CMake.
- Společné utility – Univerzální nástroje znovupoužitelné napříč moduly RAL (např. hashování, určování cest nebo parsování konfigurace).
- Updater – Nástroj zajišťující potřebné aktualizace EmBi_Platform.
Integrace
1. Přidejte EmBi_Platform jako Git submodul
V kořenovém adresáři svého projektu spusťte:
git submodule add <URL to EmBi_Platform GIT repository> ./EmBi_Platform
Tip: Doporučuje se přidat submodul přímo pod kořen projektu, aby cesty zůstaly konzistentní se skripty CMake.
2. Spusťte instalační skript
Windows
Setup.bat
Linux / macOS
./Setup.sh
Skript zobrazí menu s několika volbami. Chcete-li inicializovat nový projekt, zvolte možnost „Configuration“ zadáním jejího čísla. Zobrazí se několik podvoleb, které jsou popsány níže.
Volba: Initialize project necessary files
Toto je nutné provést jednou při první inicializaci projektu.
Tato volba zkopíruje do projektu soubory spravované uživatelem.
CMakeLists.txt
Kořenový soubor CMakeLists projektu. Uživatel zde může přidat kroky před buildem a po něm, zadat požadované build flagy a vlastní funkcionalitu.
ArtifactsConfig.txt
Konfigurační soubor handleru artefaktů. Uživatel zde může zadat požadované artefakty, jejich verze a podverze pomocí syntaxe:
<artifact_name>;<binary_version>;<handler_version>
Příklad:
ninja;1.12.1;1
gcc-arm-none-eabi;13.2.rel1;2
Volba: Initialize STM32CubeIDE project
Tato volba zkopíruje soubory projektu STM32CubeIDE do repozitáře projektu (do složky STM32CubeIDE/ na nejvyšší úrovni — viz Struktura projektu, jak to souvisí s kopií šablony dodávanou v EmBi_Platform/STM32CubeIDE).
Volba: Configure application layer
Toto je nutné provést jednou při první inicializaci projektu.
Vygeneruje se struktura složek aplikačního modulu a zkopírují se hlavičkový soubor hlavního vstupního bodu aplikace a soubory s funkcemi.
Volba: Configure BSP module
Toto je nutné provést jednou při první inicializaci projektu nebo při změně rodiny MCU.
Skript vypíše všechny dostupné rodiny MCU STM32 podporované systémem BSP.
Příklad výstupu:
Available BSP Families:
[0]: STM32G4
[1]: STM32G4_Dev
[2]: STM32H5
[3]: STM32H5_Dev
[4]: STM32U5
[5]: master
Enter branch ID (numerical):
Zadejte číslo odpovídající požadované rodině MCU (např. 0 pro rodinu STM32G4). Položky s příponou _Dev sledují vývojovou větev dané rodiny; master sleduje nejnovější nevydané změny BSP napříč všemi rodinami a je určena spíše pro vývoj/testování platformy než pro produkční projekty.
Po zvolení rodiny MCU instalační skript automaticky:
- Přidá všechny potřebné submoduly BSP
- Provede checkout správných větví a commitů
- Aktualizuje konfigurace CMake pro zvolenou rodinu MCU
Volba: Update documents module
Tato volba obnoví lokální kopii obsahu modulu Docs používaného projektem (např. generovanou/referenční dokumentaci načtenou ze zdroje dokumentace platformy).
Volba: Configure Middleware module
Spusťte jednou pro každou komponentu middlewaru, kterou chcete použít, a znovu pokaždé, když chcete tuto komponentu přepnout na jinou verzi.
Skript nejprve vypíše všechny dostupné komponenty middlewaru deklarované v katalogovém repozitáři Middlewares a po výběru jedné z nich vypíše všechny dostupné verze (Git tagy) repozitáře dané komponenty.
Příklad výstupu:
[0]: Return back
[1]: FreeRTOS
[2]: u8g2
Enter middleware ID (numerical):
Available versions for 'FreeRTOS':
[0]: Latest (V10.4.3)
[1]: V10.3.1
[2]: V10.4.3
Enter version ID (numerical, 0 = Latest):
Po výběru obou položek instalační skript:
- Přidá komponentu jako Git submodul pod
Middlewares/ThirdParty/<Name>s checkoutem zvolené verze. - Pouze poprvé vytvoří kostru projektové handler složky
Middlewares/<Name>— sem patří váš vlastní glue/port kód a konfigurace komponenty; pozdější rekonfigurace ji nikdy nepřepíše. - Zapojí obě složky do
Middlewares/Middlewares.cmakepomocíadd_subdirectory()(složkuThirdParty/<Name>pouze pokud tato vendorovaná složka obsahuje vlastníCMakeLists.txt).
Pokud tuto volbu spustíte znovu pro již přidanou komponentu s jiným ID verze, checkout Middlewares/ThirdParty/<Name> této komponenty se přepne na nově zvolenou verzi, aniž by se dotkl vaší handler složky.
Volba: Update Middleware module
Aktualizuje jednu, již přidanou komponentu middlewaru na její nejnovější dostupnou verzi — její nejnovější Git tag, nebo poslední commit výchozí větve, pokud zatím nemá žádné tagy. Nejprve se zobrazí stejný seznam middlewaru jako výše, abyste mohli vybrat, kterou komponentu aktualizovat.
Volba: Update EmBi_Platform
Spustí nástroj Updater, který porovná aktuálně integrovanou verzi EmBi_Platform s nejnovějším dostupným vydáním a aplikuje aktualizaci, přičemž znovu provede konfigurační kroky, které se v důsledku toho změnily.
Použití
Modul EmBi_Platform je určen k použití jako podpůrná vrstva v rámci frameworku Embedded Abstraction. Sám neobsahuje žádné komponenty související s hardwarem, ale poskytuje sdílenou funkcionalitu a vývojové nástroje, na kterých stavějí ostatní moduly závislé na hardwaru (Application, Bsp, Middlewares).
Typické použití zahrnuje:
- Práce s artefakty — skripty pro správu a ověřování stažených nebo cachovaných artefaktů používaných napříč build systémem.
- Integrace s CMake — pomocné skripty pro automatizované nastavení, validaci prostředí a registraci modulů.
- Podpora STM32CubeIDE — šablony projektů pro generování konfigurací kompatibilních s IDE a testovacích prostředí.
Poznámka: Modul EmBi_Platform není pro běh firmwaru na cílovém hardwaru potřeba, ale pro vývoj a workflow CI/CD se důrazně doporučuje.
Požadavky
- Git 1.7.10+
- Bash (Linux/macOS) nebo přibalený
Setup.bat(Windows) - CMake 3.19+
- STM32CubeIDE 1.4.0+
- Podporované hostitelské OS: Windows, Linux, macOS
Struktura projektu
Project_root/
│
├── Application Application module
│ ├── AppCom Application communication interface
│ ├── AppComp Application components
│ ├── AppCore Application core handler
│ ├── AppFun Application functionality
│ └── AppMain Application main function
│
├── Bsp Board Support Packages
│ ├── Hal Hardware Abstraction Layer
│ ├── Linker Linker generator module
│ ├── Mcal Micro-Controller Abstraction Layer
│ ├── Ral Register Abstraction Layer
│ └── Startup Startup handler
│
├── Middlewares Middlewares module
│ ├── ThirdParty Vendored middleware sources (added per-component as Git submodules)
│ │ ├── FreeRTOS FreeRTOS sources, checked out at the selected version
│ │ ├── u8g2 u8g2 sources, checked out at the selected version
│ │ └── ...
│ ├── FreeRTOS Project-side FreeRTOS handler (port layer, configuration)
│ ├── u8g2 Project-side u8g2 handler (port layer, configuration)
│ ├── ...
│ └── Middlewares.cmake Middlewares root CMake file
│
├── EmBi_Platform Platform root folder (this module, added as a submodule)
│ ├── CMake CMake build functionality
│ │ ├── ArtifactsManager Artifacts handling module
│ │ │ ├── Artifacts.cmake Artifacts core CMake file
│ │ │ └── README.md Artifacts module documentation
│ │ │
│ │ ├── HelperTools Reusable CMake helper scripts (hashing, path resolution, config parsing, etc.)
│ │ ├── Build.cmake CMake core build script
│ │ ├── Flags.cmake Build flags list
│ │ ├── Platform.c Top level .c file
│ │ ├── Platform.h Top level .h file
│ │ └── README.md CMake component documentation
│ │
│ ├── STM32CubeIDE STM32CubeIDE project *template* (source copied into the root STM32CubeIDE folder below)
│ └── README.md Template documentation
│
├── STM32CubeIDE Generated STM32CubeIDE project folder (created from the template above)
│ ├── .cproject STM32CubeIDE C project file
│ ├── .project STM32CubeIDE project file
│ ├── Debug Build output folder
│ └── ...
│
├── ArtifactsConfig.txt Artifacts configuration file
├── CMakeLists.txt Project root CMake file
└── README.md Project documentation
Poznámky
- Modul EmBi_Platform může v případě potřeby obsahovat externí open-source utility.
- Všechny interní skripty jsou psány tak, aby byly pokud možno nezávislé na platformě.
- Změny tohoto modulu by měly být pečlivě zkontrolovány, protože mohou ovlivnit více modulů napříč build systémem.
Licence
Tato platforma se skládá z komponent ze dvou různých zdrojů, které jsou licencovány samostatně:
- Komponenty třetích stran (např. balíčky pocházející od STMicroelectronics a dalších výrobců) si ponechávají své původní licence. Podrobnosti najdete ve složce/README jednotlivých komponent.
- Komponenty vytvořené Embedbits (samotná EmBi_Platform, pomocné skripty CMake, nástroje pro práci s artefakty, Updater a další původní nástroje nepřipsané třetí straně) jsou licencovány pod PolyForm Noncommercial License 1.0.0: lze je volně používat, kopírovat, upravovat a distribuovat pro nekomerční účely. Komerční použití vyžaduje samostatnou písemnou licenci od Embedbits.
Vybraným společnostem může být udělena bezplatná licence k použití komponent vytvořených Embedbits pro komerční účely na základě samostatné písemné dohody. O její udělení požádejte na nobody@embedbits.com.
Autoři
- Mr.Nobody — embedbits.com
Příspěvky jsou vítány pro nekomerční vylepšení! Otevřete prosím pull request.