Preskočiť na hlavný obsah

Startup

Modul StartUp je základným komponentom vstavaného systému, ktorý zabezpečuje správnu inicializáciu mikrokontroléra bezprostredne po resete alebo zapnutí napájania. Tento modul pripraví hardvérové a pamäťové prostredie skôr, než odovzdá riadenie používateľom definovanej funkcii main().

Účel​

Modul StartUp je zodpovedný za nastavenie základného prostredia potrebného na správny beh aplikácie. Je úzko spätý s architektúrou mikrokontroléra a typicky sa vykonáva hneď po spustení reset vektora.

Vlastnosti​

  • Inicializácia ukazovateľa zásobníka a vektorovej tabuľky
    Nastaví počiatočný ukazovateľ zásobníka a nakonfiguruje tabuľku vektorov prerušení, aby sa zaistilo správne spracovanie výnimiek a prerušení.

  • Inicializácia pamäťových sekcií
    Skopíruje inicializované dáta z flash do RAM a vynuluje sekciu .bss, čím inicializuje neinicializované premenné na nulu.

  • Vykonanie konštruktorov
    Automaticky volá statické konštruktory (napr. globálne objekty C++) pred zavolaním main(), čím zabezpečí správne nastavenie runtime prostredia.

  • Inicializácia RCC (Reset and Clock Control)
    Nakonfiguruje systémové hodiny (HSE, PLL atď.), aby mikrokontrolér a periférie pracovali na požadovaných frekvenciách.

  • Spustenie hlavnej aplikácie
    Odovzdá riadenie funkcii AppMain(), ktorá obsahuje logiku používateľskej aplikácie.

Podrobnosti implementácie​

  • Modul typicky obsahuje assemblerový súbor startup_<device>.s a zdrojové súbory v C pre nízkoúrovňovú inicializáciu.
  • Spracúvané štandardné pamäťové sekcie:
    • .data – kopíruje sa z flash do RAM
    • .bss – v RAM sa inicializuje na nulu
  • Pre nastavenie hodín alebo prípravu periférií môžu byť poskytnuté vlastné inicializačné funkcie.

Závislosti​

  • CMSIS (podpora jadra ARM Cortex-M)
  • MCAL (pre konfiguráciu RCC a NVIC)
  • Linker script (definuje pamäťové oblasti a štartovacie symboly)

Použitie​

Tento modul zahrňte na úplný začiatok svojej vstavanej aplikácie. Uistite sa, že vektorová tabuľka a symboly reset handlera sú definované v linker scripte a že štartovací assembler je vstupným bodom vo vašom projekte.

Licencia​

Tento projekt je licencovaný pod licenciou Creative Commons Attribution–NonCommercial 4.0 International (CC BY-NC 4.0).

Toto dielo môžete slobodne používať, upravovať a zdieľať na nekomerčné účely, pokiaľ uvediete primeraný zdroj.

Úplné znenie podmienok nájdete v LICENSE.md alebo na creativecommons.org/licenses/by-nc/4.0.


Autori​

Príspevky sú vítané! Otvorte prosím pull request.