Přeskočit na hlavní obsah

Startup

Modul StartUp je základní komponentou vestavěného systému, která zajišťuje správnou inicializaci mikrokontroléru bezprostředně po resetu nebo zapnutí napájení. Tento modul připraví hardwarové a paměťové prostředí dříve, než předá řízení uživatelsky definované funkci main().

Účel​

Modul StartUp odpovídá za nastavení základního prostředí potřebného ke správnému běhu aplikace. Je úzce svázán s architekturou mikrokontroléru a typicky se spouští přímo po vyvolání reset vektoru.

Vlastnosti​

  • Inicializace ukazatele zásobníku a tabulky vektorů
    Nastaví počáteční ukazatel zásobníku a nakonfiguruje tabulku vektorů přerušení, aby bylo zajištěno správné zpracování výjimek a přerušení.

  • Inicializace paměťových sekcí
    Zkopíruje inicializovaná data z flash do RAM a vynuluje sekci .bss, čímž inicializuje nulou neinicializované proměnné.

  • Spuštění konstruktorů
    Automaticky volá statické konstruktory (např. globální objekty C++) před zavoláním main(), a zajišťuje tak správné nastavení běhových prostředí.

  • Inicializace RCC (Reset and Clock Control)
    Nakonfiguruje systémové hodiny (HSE, PLL atd.), aby mikrokontrolér a periferie pracovaly na požadovaných frekvencích.

  • Spuštění hlavní aplikace
    Předá řízení funkci AppMain(), která obsahuje logiku uživatelské aplikace.

Podrobnosti implementace​

  • Modul typicky zahrnuje assemblerový soubor startup_<device>.s a zdrojové soubory v C pro nízkoúrovňovou inicializaci.
  • Standardní zpracovávané paměťové sekce:
    • .data – kopíruje se z flash do RAM
    • .bss – v RAM se inicializuje nulami
  • Pro nastavení hodin nebo přípravu periferií mohou být poskytnuty vlastní inicializační funkce.

Závislosti​

  • CMSIS (podpora jádra ARM Cortex-M)
  • MCAL (pro konfiguraci RCC a NVIC)
  • Linker script (definuje paměťové oblasti a startovací symboly)

Použití​

Tento modul zahrňte na úplný začátek své vestavěné aplikace. Zajistěte, aby symboly tabulky vektorů a reset handleru byly definovány v linker scriptu a aby vstupním bodem ve vašem projektu byl startup assembler.

Licence​

Tento projekt je licencován pod licencí Creative Commons Uveďte původ–Neužívejte komerčně 4.0 Mezinárodní (CC BY-NC 4.0).

Toto dílo můžete volně používat, upravovat a sdílet pro nekomerční účely za předpokladu, že uvedete odpovídající autorství.

Úplné podmínky najdete v LICENSE.md nebo navštivte creativecommons.org/licenses/by-nc/4.0.


Autoři​

Příspěvky jsou vítány! Otevřete prosím pull request.