Программирование C Bare-Metal C на руке
Этот репозиторий содержит учебную электронную книгу, касающуюся программирования системы ARM с обнаженным металлом. Более конкретно он имеет дело с версией ARMV7A универсальной экспресс -платформы ARM, эмулированной на обычном ПК через QEMU. Вы можете исследовать репозиторий или прочитать вещи по порядку.
Оглавление
Также доступна обновленная версия PDF.
Следующие главы можно рассматривать как первое издание электронной книги, предоставляя полный путь от начала работы до рабочей программы, которая использует аппаратные функции.
- Глава 0: Введение. Краткое вступление в предмет и электронную книгу.
- Глава 1: Настройка. Короткая глава, посвященная подготовке среды Linux для дальнейшего развития.
- Глава 2: Первый ботинок. Основное использование QEMU и кросс-компилятора, получая самый простой возможный код для запуска.
- Глава 3: Добавление загрузчика. Создание очень популярного загрузчика U-Boot и получение его загрузки нашего собственного кода.
- Глава 4: Подготовка среды C. В этой главе рассматривается необходимая работа для получения от запуска в код сборки до C -кода.
- Глава 5: Система сборки и отладки. Здесь мы показываем, как работа может быть упорядочена, добавив систему сборки на основе Cmake и как можно отладить программу с голой металлом.
- Глава 6: Разработка водителя UART. В этой главе записан драйвер устройства для UART.
- Глава 7: Прерывания. Глава проходит через настройку общего контроллера прерываний ARM, используя его для получения и ответа на прерывания. Также драйвер UART адаптируется для использования прерываний.
- Глава 8 - WIP: планирование. Работа в процессе.
Структура репозитория
Репозиторий состоит из двух папок верхнего уровня. Папка doc содержит фактические учебные главы. Папка src содержит исходный код, соответствующий каждой главе. Так, например, src/04_cenv содержит исходный код, когда он заканчивает завершение главы 4.
Кроме того, папка src имеет некоторые общие вещи. src/common_uboot содержит урезанную версию U-Boot, используемая в примерах.
Получайте удовольствие и не стесняйтесь настроить и экспериментировать, это отличный способ учиться!