README.md

mik32_amur_simple


Для чего?

Написание программ для К1948ВК018 (MIK32 Amur) без использования лишних прослоек по типу “HAL”. Есть заголовочные файлы с описанием регистров оборудования, есть документация на микроконтроллер. Этого вполне достаточно. К тому же без HAL собранные программы получаются заметно компактней.

На чём тестируется?

На плате ELBEAR ACE-UNO (8 МиБ флэша) с зашитым в EEPROM загрузчиком от ELBEAR. (Два примера в конце списка - для платы BluePill-MIK32, которая также достаточна распространена).
Также можно воспользоваться загрузчиком из примера ex_loader_2 (как его залить в EEPROM см. README.md в директории ex_loader_2). Загрузчик ex_loader_2 “заточен” под плату ELBEAR ACE-UNO, для платы BluePill-MIK32 предназначен загрузчик ex_loader_3, по своему функционалу они идентичны.
Зачем нужен “самосборный” загрузчик? Работает сильно быстрее “штатного”.

Как загружается прошивка?

С загрузчиком от ELBEAR заливка HEX файла загрузочным скриптом elbear_uploader.py (из “официального” сборочного окружения) в последовательный порт. Сборка для работы из SPI Flash.
С загрузчиком ex_loader_2 (или ex_loader_3) для всех тестовых проектов добавлена цель сборки upload, которая приводит к сборке и загрузке и запуску примеров (кроме загрузчиков ex_loader, ex_loader_2 и ex_loader_3).
Для этого плата должна быть подключена по USB и последовательный порт при этом /dev/ttyUSB0, если у Вас порт другой, можно подправить Makefile.

Пример для загрузчика ELBEAR:

python3 ../tools/elbear_uploader.py ./out.hex --com /dev/ttyUSB0

Пример для загрузчиков ex_loader_2 и ex_loader_3:

make upload

Чем собирается?

Комплектом gcc-riscv64-unknown-elf.
Для сборки программы (исходники в ../tools/ex_uploader.c) для “заливки” бинарников через загрузчики ex_loader_2 и ex_loader_3 потребуется gcc для Вашей платформы.

Цели сборки

  • debug - отладка, для запуска из ОЗУ
  • size - сборка для запуска из SPI FLASH (с загрузчиком в EEPROM) с минимальным размером
  • speed - сборка для запуска из SPI FLASH (с загрузчиком в EEPROM) с максимальной оптимизацией по скорости
  • upload - speed плюс заливка в SPI FLASH через загрузчик

Собственно список примеров

  • ex_base - базовые настройки, GPIO, UART
  • ex_adc - блок АЦП, работа с одним каналом
  • ex_adc_2 - блок АЦП, работа с несколькими каналами
  • ex_buttons - работа с кнопками
  • ex_crc - блок CRC, вычисления по разным алгоритмам CRC32
  • ex_crypto - блок CRYPTO, проверки тестовых примеров по разным алгоритмам блока
  • ex_dac - блок ЦАП, DDS генератор на два канала
  • ex_encoder - блок GPIO_IRQ, UART, поворотный энкодер
  • ex_i2c - блок I2C, работа с датчиком BME280/BMP280
  • ex_mfrc522 - блок SPI, работа с NFC чипом RC522, чтение памяти карт Mifare (проверялось на 1K и Ultralight, запись 1K тоже работает)
  • ex_onewire - блок UART, работа с устройствами на шине 1-wire
  • ex_1wire_copy_key - блок UART, работа с устройствами на шине 1-wire, “копирование” ключей DS1990 (проверена запись на RW1990.1, на RW1990.2 и TM2004 не проверено)
  • ex_picolibc - пример сборки с picolibc ( сама picolibc для Mik32/Амур здесь )
  • ex_radio_rc - блок SPI, работа с трансивером SI4432/B0, приём пакетов
  • ex_radio_tr - блок SPI, работа с трансивером SI4432/B0, передача пакетов
  • ex_spi_dma - блоки SPI и DMA, работа с экраном на контроллере ST7735
  • ex_spi_dma_2 - блоки SPI и DMA, работа с экраном на контроллере ILI9341
  • ex_picojpeg - пример вывода изображения в формате JPEG на экран, из формата JPEG декодируется с помощью библиотеки picojpeg
  • ex_picojpeg_2 - пример вывода изображения в формате JPEG на экран, из формата JPEG декодируется с помощью библиотеки picojpeg, выводит 38 “кадров”, меряет время вывода и отправляет в UART_0
  • ex_touchscreen - блоки SPI и EEPROM, работа с контроллером 4-проводного резистивного тачскрина XPT2046
  • ex_tsens - блок датчика температуры
  • ex_timer - блоки SPI, ЦАП и EEPROM, проект кухонного таймера
  • ex_scmrtos - мигалка светодиодом под управлением scmRTOS
  • ex_scmrtos_2 - второй пример для scmRTOS, передача сообщения процессу из прерывания
  • ex_loader - блок SPIFI, загрузчик прошивки в SPI FLASH через UART, в формате “XModem1K”
  • ex_loader_2 - блок SPIFI, загрузчик прошивки в SPI FLASH через UART, кусками по 4 КиБ, быстрый
  • ex_loader_3 - то же самое, что и ex_loader_2, только для платы BluePill-MIK32 с “флэшкой” PY25Q128HA.
  • ex_base_3 - пример ex_base для платы BluePill-MIK32 с “флэшкой” PY25Q128HA.

Другие директории

  • devices - “драйверы” различных устройств
  • docs - дополнительная документация
  • fonts - растровые шрифты со сглаживанием в упакованном формате с кодировкой utf-8 (см. fonts/README.md)
  • images - “упакованные” изображения, для вывода на экран используются функции из devices/display.c
  • ld_scripts - скрипты компоновщика для размещения программ в ОЗУ, ЭППЗУ и SPI Flash
  • libbaremetal - минимальные исходники библиотек libc и libm
  • mik32_hwlibs - заголовочные файлы с описание регистров оборудования микроконтроллера
  • scmrtos - порт scmRTOS v5.2.0 для Mik32 (полностью ещё не протестировано)
  • tools - различные загрузчики (загрузчик для ЭППЗУ можно найти в https://gitflic.ru/project/mikron-mik32/mik32-uploader)
  • utils - утилита для преобразования TGA файлов в сжатые изображения для последующего вывода на экран

Полезные ссылки


Плата ELBEAR ACE-UNO

Микроконтроллер К1948ВК018/К1948ВК015

Описание

Базовый "слой" для К1948ВК018 без использования "HAL" и прочих прослоек.

Конвейеры
0 успешных
0 с ошибкой