Перейти до основного вмісту

Startup

Модуль StartUp є фундаментальним компонентом вбудованої системи, який забезпечує коректну ініціалізацію мікроконтролера одразу після скидання або подачі живлення. Цей модуль готує апаратне середовище та пам'ять, перш ніж передати керування користувацькій функції main().

Призначення​

Модуль StartUp відповідає за налаштування базового середовища, необхідного для правильної роботи застосунку. Він тісно пов'язаний з архітектурою мікроконтролера і зазвичай виконується безпосередньо після спрацювання вектора скидання.

Можливості​

  • Ініціалізація вказівника стека та таблиці векторів
    Встановлює початкове значення вказівника стека та налаштовує таблицю векторів переривань для коректної обробки винятків і переривань.

  • Ініціалізація секцій пам'яті
    Копіює ініціалізовані дані з flash до RAM і обнуляє секцію .bss, щоб неініціалізовані змінні мали нульове значення.

  • Виконання конструкторів
    Автоматично викликає статичні конструктори (наприклад, глобальні об'єкти C++) перед викликом main(), забезпечуючи правильне налаштування середовища виконання.

  • Ініціалізація RCC (Reset and Clock Control)
    Налаштовує системні тактові сигнали (HSE, PLL тощо), щоб мікроконтролер і периферія працювали на потрібних частотах.

  • Запуск головного застосунку
    Передає керування функції AppMain(), яка містить логіку користувацького застосунку.

Подробиці реалізації​

  • Модуль зазвичай містить assembly-файл startup_<device>.s та файли вихідного коду C для низькорівневої ініціалізації.
  • Стандартні оброблювані секції пам'яті:
    • .data – копіюється з flash до RAM
    • .bss – обнуляється в RAM
  • Для налаштування тактування або підготовки периферії можуть бути надані власні функції ініціалізації.

Залежності​

  • CMSIS (підтримка ядра ARM Cortex-M)
  • MCAL (для конфігурації RCC і NVIC)
  • Linker script (визначає області пам'яті та символи запуску)

Використання​

Підключайте цей модуль на самому початку вашого вбудованого застосунку. Переконайтеся, що символи таблиці векторів і reset handler визначені в linker script, а startup assembly є точкою входу у вашому проєкті.

Ліцензія​

Цей проєкт ліцензовано за Creative Commons Attribution–NonCommercial 4.0 International (CC BY-NC 4.0).

Ви вільні використовувати, змінювати та поширювати цю роботу в некомерційних цілях за умови належного зазначення авторства.

Повні умови дивіться у LICENSE.md або на creativecommons.org/licenses/by-nc/4.0.


Автори​

Внески вітаються! Будь ласка, відкрийте pull request.