Встраиваемые системы на Ada

О курсе

«Встраиваемые системы на Ada: создание bare-metal драйверов UART, I2C и SPI для периферии STM32F411»

Курс даёт глубокое практическое понимание последовательных интерфейсов и их реализации «с нуля» на языке Ada в среде GNAT Studio. Все драйверы пишутся исключительно по документации (Reference Manual STM32F411, даташитам на датчики и дисплеи) без использования сторонних библиотек или HAL.

Чему вы научитесь?

  • Курс даёт глубокое практическое понимание последовательных интерфейсов и их реализации «с нуля» на языке Ada в среде GNAT Studio. Все драйверы пишутся исключительно по документации (Reference Manual STM32F411, даташитам на датчики и дисплеи) без использования сторонних библиотек или HAL. Длительность курса: 16 занятий (6 лекций, 10 практических). При двух занятиях в неделю – 8 недель интенсивной работы. Все проекты собираются «с нуля», что даёт полное владение периферией STM32 и языком Ada на уровне системного программирования

План курса

Анонс
Подробный план курса Модуль 0. Введение, инструменты и базовый проект Лекция 1. Архитектура STM32F411CEU6, тактирование, GPIO, система прерываний. Обзор документации (RM0383, даташиты на периферию). Философия bare metal на Ada. Структура проекта GNAT Studio, стартап-файл и компоновщик. Прямая адресация регистров через представление записей. Практическое занятие 1. Мигание светодиодом. - Установка тулчейна Ada для ARM (GNAT ARM ELF). - Создание проекта, написание пакета для управления тактированием и GPIO на основе абсолютных адресов. - Настройка порта PC13 (встроенный LED) и реализация задержки на счётчике. Демонстрация первого bare metal приложения на Ada. Модуль 1. UART – обмен данными с ПК Лекция 2. Асинхронный последовательный обмен: кадр, старт/стоп биты, скорость. Блок USART в STM32F411: источники тактирования, настройка пинов (альтернативные функции), регистры управления и статуса. Приём и передача по опросу флагов, обзор прерываний и DMA. Практическое занятие 2. Передача данных в терминал. - Конфигурация USART1 (PA9/PA10) на 115200 8-N-1. - Написание процедуры Put_String с ожиданием флага TXE. Вывод «Hello, Ada!» в PuTTY/терминал. Практическое занятие 3. Эхо сервер. - Реализация приёма символа с ожиданием RXNE и немедленной отсылки. Добавление кольцевого буфера для безопасного буферизованного приёма (пакет Ring_Buffer). Модуль 2. I2C – датчик BME280 Лекция 3. Шина I2C: сигналы SDA/SCL, условия START/STOP, адресация, ACK/NACK. Аппаратный I2C в STM32F411: регистры CR, SR, DR, тайминги для стандартной/быстрой скорости. Принцип чтения/записи регистров ведомого. Датчик BME280: режимы измерения, регистры калибровки и вычисление физических величин (целочисленная арифметика в Ada). Практическое занятие 4. Инициализация I2C и сканирование шины. - Настройка I2C1 (PB6/PB7). Реализация базовых примитивов Send_Start, Send_Stop, Write_Byte, Read_Byte. - Сканирование адресов – обнаружение BME280 по 0x76/0x77. Чтение идентификатора (регистр 0xD0). Практическое занятие 5. Драйвер BME280. - Разработка пакета BME280 на основе даташита: инициализация, чтение калибровочных коэффициентов, запуск форсированного измерения, чтение сырых данных и вычисление температуры, давления, влажности в градусах/Паскалях/процентах. Вывод результатов через UART. Модуль 3. I2C дисплеи – LCD1602 и OLED 0.91″ Лекция 4. Два подхода к дисплеям на I2C. - LCD1602 через I2C адаптер на PCF8574: протокол HD44780 в 4 битном режиме, разделение команды и данных, фазы инициализации, управление курсором. - OLED 0.91″ (SSD1306): графическая память (GDDRAM), команды, страничная адресация, формат фрейма 128×32. Генерация символов с помощью битовых карт шрифта 5×7. Практическое занятие 6. Драйвер LCD1602. - Создание пакета LCD1602_I2C. Процедуры инициализации, очистки, установки курсора и вывода строки. Демонстрация вывода статической надписи и значений BME280 (интеграция с модулем 2). Практическое занятие 7. Драйвер SSD1306 OLED. - Разработка пакета OLED_SSD1306. Инициализация, заполнение экрана, рисование пикселя, функция Draw_Char и строкового вывода. Отображение температуры/влажности в реальном времени. Модуль 4. SPI – флэш память W25Q32 Лекция 5. Интерфейс SPI: линии CS, SCK, MOSI, MISO. Режимы CPOL/CPHA. Периферия SPI в STM32F411: конфигурация, флаги, работа с FIFO. Флэш память Winbond W25Q32: карта памяти, команды (Read JEDEC ID, Read Data, Page Program, Sector Erase), временные диаграммы, типовые операции программирования/стирания. Практическое занятие 8. Конфигурация SPI и идентификация памяти. - Настройка SPI1 (PA5–PA7) в режиме Master, функция Spi_Transfer. Отправка команды 0x9F, приём Manufacturer/Device ID. Практическое занятие 9. Драйвер W25Q32. - Реализация пакета Winbond_Flash. Процедуры стирания сектора (0x20), программирования до 256 байт (0x02) и чтения произвольного объёма (0x03). Тест: запись строки лога, стирание сектора, обратное чтение и проверка целостности данных. Модуль 5. Интеграция и итоговый проект Лекция 6 (обзорная). Сочетание всех освоенных интерфейсов в одном приложении.. Практическое занятие 10. Базовая станция мониторинга (итоговый проект). - Система, опрашивающая BME280 каждые 5 секунд. - Текущие значения температуры, давления, влажности выводятся на OLED (или на оба дисплея по желанию). - Параллельно данные (строка CSV с меткой времени от SysTick) пишутся кольцевым буфером на W25Q32. - Через UART реализован простой командный интерпретатор: команда «dump» вычитывает и передаёт весь лог из флэш памяти на ПК. Длительность курса: 16 занятий (6 лекций, 10 практических). При двух занятиях в неделю – 8 недель интенсивной работы. Все проекты собираются «с нуля», что даёт полное владение периферией STM32 и языком Ada на уровне системного программирования.

  • О курсе

Модуль 0. Введение, инструменты и базовый проект
Лекция 1. Архитектура STM32F411CEU6, тактирование, GPIO, система прерываний. Обзор документации (RM0383, даташиты на периферию). Философия bare metal на Ada. Структура проекта GNAT Studio, стартап-файл и компоновщик. Прямая адресация регистров через представление записей. Практическое занятие 1. Мигание светодиодом. - Установка тулчейна Ada для ARM (GNAT ARM ELF). - Создание проекта, написание пакета для управления тактированием и GPIO на основе абсолютных адресов. - Настройка порта PC13 (встроенный LED) и реализация задержки на счётчике. Демонстрация первого bare metal приложения на Ada.

Модуль 1. UART – обмен данными с ПК
Лекция 2. Асинхронный последовательный обмен: кадр, старт/стоп биты, скорость. Блок USART в STM32F411: источники тактирования, настройка пинов (альтернативные функции), регистры управления и статуса. Приём и передача по опросу флагов, обзор прерываний и DMA. Практическое занятие 2. Передача данных в терминал. - Конфигурация USART1 (PA9/PA10) на 115200 8-N-1. - Написание процедуры Put_String с ожиданием флага TXE. Вывод «Hello, Ada!» в PuTTY/терминал. Практическое занятие 3. Эхо сервер. - Реализация приёма символа с ожиданием RXNE и немедленной отсылки. Добавление кольцевого буфера для безопасного буферизованного приёма (пакет Ring_Buffer).

Модуль 2. I2C – датчик BME280
Лекция 3. Шина I2C: сигналы SDA/SCL, условия START/STOP, адресация, ACK/NACK. Аппаратный I2C в STM32F411: регистры CR, SR, DR, тайминги для стандартной/быстрой скорости. Принцип чтения/записи регистров ведомого. Датчик BME280: режимы измерения, регистры калибровки и вычисление физических величин (целочисленная арифметика в Ada). Практическое занятие 4. Инициализация I2C и сканирование шины. - Настройка I2C1 (PB6/PB7). Реализация базовых примитивов Send_Start, Send_Stop, Write_Byte, Read_Byte. - Сканирование адресов – обнаружение BME280 по 0x76/0x77. Чтение идентификатора (регистр 0xD0). Практическое занятие 5. Драйвер BME280. - Разработка пакета BME280 на основе даташита: инициализация, чтение калибровочных коэффициентов, запуск форсированного измерения, чтение сырых данных и вычисление температуры, давления, влажности в градусах/Паскалях/процентах. Вывод результатов через UART.

Модуль 3. I2C дисплеи – LCD1602 и OLED 0.91″
Лекция 4. Два подхода к дисплеям на I2C. - LCD1602 через I2C адаптер на PCF8574: протокол HD44780 в 4 битном режиме, разделение команды и данных, фазы инициализации, управление курсором. - OLED 0.91″ (SSD1306): графическая память (GDDRAM), команды, страничная адресация, формат фрейма 128×32. Генерация символов с помощью битовых карт шрифта 5×7. Практическое занятие 6. Драйвер LCD1602. - Создание пакета LCD1602_I2C. Процедуры инициализации, очистки, установки курсора и вывода строки. Демонстрация вывода статической надписи и значений BME280 (интеграция с модулем 2). Практическое занятие 7. Драйвер SSD1306 OLED. - Разработка пакета OLED_SSD1306. Инициализация, заполнение экрана, рисование пикселя, функция Draw_Char и строкового вывода. Отображение температуры/влажности в реальном времени.

Модуль 4. SPI – флэш память W25Q32
Лекция 5. Интерфейс SPI: линии CS, SCK, MOSI, MISO. Режимы CPOL/CPHA. Периферия SPI в STM32F411: конфигурация, флаги, работа с FIFO. Флэш память Winbond W25Q32: карта памяти, команды (Read JEDEC ID, Read Data, Page Program, Sector Erase), временные диаграммы, типовые операции программирования/стирания. Практическое занятие 8. Конфигурация SPI и идентификация памяти. - Настройка SPI1 (PA5–PA7) в режиме Master, функция Spi_Transfer. Отправка команды 0x9F, приём Manufacturer/Device ID. Практическое занятие 9. Драйвер W25Q32. - Реализация пакета Winbond_Flash. Процедуры стирания сектора (0x20), программирования до 256 байт (0x02) и чтения произвольного объёма (0x03). Тест: запись строки лога, стирание сектора, обратное чтение и проверка целостности данных.

Модуль 5. Интеграция и итоговый проект
Лекция 6 (обзорная). Использование прерываний и DMA (Rx/Tx) для снижения нагрузки на ядро. Сочетание всех освоенных интерфейсов в одном приложении. Особенности многозадачности в однопоточной среде и защита разделяемых данных (на примере Ada protected объектов при обработке прерываний). Практическое занятие 10. Базовая станция мониторинга (итоговый проект). - Система, опрашивающая BME280 каждые 5 секунд. - Текущие значения температуры, давления, влажности выводятся на OLED (или на оба дисплея по желанию). - Параллельно данные (строка CSV с меткой времени от SysTick) пишутся кольцевым буфером на W25Q32. - Через UART реализован простой командный интерпретатор: команда «dump» вычитывает и передаёт весь лог из флэш памяти на ПК.

Пример сертификата

После прохождения онлайн-курса Вы сможете сгенерировать сертификат об окончании курса!

selected template

Оценки и отзывы студентов

Пока нет отзыва
Пока нет отзыва