Artefakt gcc-arm-none-eabi
Přenosná binární distribuce Arm GNU Toolchain (arm-none-eabi-gcc), bare-metal křížového kompilátoru GCC pro embedded cíle ARM Cortex-M/Cortex-A. Tento repozitář využívá Artifact Handler platformy Embedbits k vyhledání, stažení, ověření a konfiguraci toolchainu v navazujících embedded projektech (STM32 a příbuzných).
Tento repozitář je podle rolí rozdělen na tři větve/refy — větev main (master), kterou právě čtete, obsahuje pouze tuto dokumentaci; skripty handleru jsou ve větvi Core a verzované binárky jsou publikovány jako GitHub Releases ukotvené ve větvi Bin.
Obsah repozitáře
main / master
└── README.md ← This document — no other content
Core
├── ArtifactConfig.cmake ← Artifact metadata (name, version constraints, asset naming)
└── CMakeGccArmNoneEabiDefaults.cmake ← Toolchain integration logic (artifact init, version lookup)
Bin (anchor branch — no tracked binary files)
└── (empty commits only; each release tag points here)
Role v platformě
Tento repozitář je jednou z několika distribucí artefaktů v rámci platformy Embedbits. Celkový tok vypadá takto:
GitHub (Embedbits)
──────────────────────────────────────────────────────────
Artifact-gcc-arm-none-eabi
main / master → README only (this document)
Core → ArtifactConfig.cmake, CMakeGccArmNoneEabiDefaults.cmake
Bin → Anchor branch (empty commits)
Releases → gcc-arm-none-eabi-<version>-<platform>.zip + .hash
tagged Bin/<version>-<platform> (platform: Win / Unix / DarwinARM)
Importní skript ve stylu GccArmNoneEabi publikuje každou verzi toolchainu jako GitHub Release — označený tagem Bin/<version>-<platform> — a nikoli jako soubor commitnutý do větve Bin. Samotná větev Bin nese pouze prázdné kotvicí commity, na které tagy vydání ukazují.
Platform Artifact Handler v navazujících projektech odkazuje na větev Core jako na Git submodul. Při konfiguraci CMake přečte ArtifactConfig.cmake, aby zjistil, které vydání stáhnout, a poté stáhne a ověří odpovídající asset vydání pro aktuální platformu.
Struktura větví
| Větev / Ref | Obsah |
|---|---|
main / master | Pouze tento README — žádný funkční obsah |
Core | Skripty CMake handleru (ArtifactConfig.cmake, CMakeGccArmNoneEabiDefaults.cmake) pro použití artefaktu |
Bin | Pouze kotvicí větev — nejsou zde commitovány žádné binárky |
Release tag Bin/<version>-<platform> | GitHub Release obsahující vlastní binární .zip a soubor s kontrolním součtem .hash jako assety vydání, pro platform ∈ Win, Unix, DarwinARM |
Poznámka: Samotný protokol Embedbits Artifact Handleru není na GitHub Releases vázán — takto jednoduše publikují binárky importní skripty hostované na GitHubu. Na Git hostingu bez ekvivalentního Releases API handler podporuje také zabalené binárky commitnuté přímo jako sledované soubory ve větvi
Bin, označené tagem podle verze/platformy (Bin/<version>-<platform>), místo nahrání jako assety vydání. CMake handler obě varianty zpracuje transparentně.
⚠️ Stažení vydání
Binárky nejsou uloženy jako sledované soubory ve větvi Bin — naklonujte větev Core pro skripty handleru a binárky stahujte jako assety vydání pro konkrétní tag namísto klonování větve Bin.
# Core handler scripts
git clone --branch Core --single-branch --depth=1 <repository_url> gcc-arm-none-eabi-core
# Binary + checksum for one specific version/platform (GitHub Release asset)
gh release download Bin/13.2.Rel1-Unix --repo Embedbits/Artifact-gcc-arm-none-eabi --pattern "gcc-arm-none-eabi-13.2.Rel1-Unix.*"
Zahrnuté komponenty
| Komponenta | Popis |
|---|---|
arm-none-eabi-gcc, arm-none-eabi-g++ | Ovladače křížových kompilátorů C a C++ pro Cortex-M/Cortex-A |
arm-none-eabi-ar, arm-none-eabi-ld, arm-none-eabi-objcopy, arm-none-eabi-objdump | Přibalené nástroje křížového toolchainu Binutils |
arm-none-eabi-gdb | Křížový debugger (pokud je součástí upstream vydání) |
| Newlib / Newlib-nano | Přibalená runtime knihovna C pro bare-metal cíle |
Použití
Artefakt se instaluje automaticky během fáze nastavení artefaktů pomocí:
cmake -P Artifacts/GccArmNoneEabi/ArtifactConfig.cmake
Skript zajistí, že je toolchain dostupný, v případě potřeby rozbalí archiv a přidá jej do systémové proměnné PATH pro následující kroky buildu.
Funkce handleru
GccArmNoneEabi_ArtifactInit(ARTIFACT_BIN_PATH)
Inicializuje artefakt: vyhledá (nebo stáhne) toolchain a zpřístupní jeho adresář bin/ v ARTIFACT_BIN_PATH.
GccArmNoneEabi_GetArtifactVersion()
Vrací verzi aktuálně vyhodnoceného toolchainu.
Verzování
Verze artefaktů přímo odpovídají oficiálním verzím vydání Arm GNU Toolchain:
12.3.Rel1, 13.2.Rel1, 13.3.Rel1, ...
Nové verze publikuje importní skript ve stylu GccArmNoneEabi v repozitáři GithubArtifactsHandler, který stáhne oficiální binárky, zabalí je do archivů .zip s ověřením SHA-256 a publikuje je jako GitHub Release označený tagem Bin/<version>-<platform> — samotná větev Bin postupuje dál pouze prázdným kotvicím commitem, na který tag ukazuje.
Poznámky
- Není nutná instalace — binárky jsou přenosné a soběstačné.
- Offline použití je podporováno, jakmile je artefakt lokálně v cache.
- V pipelines Azure DevOps se doporučuje cachovat složku artefaktu, aby se zkrátila doba buildu.
Licence
Arm GNU Toolchain je distribuován pod licencí GNU General Public License (GPL), přičemž komponenty Newlib spadají pod vlastní permisivní licence. Podrobnosti: https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
Autoři
- Mr.Nobody — embedbits.com
Příspěvky jsou vítány! Otevřete prosím pull request.