В последние годы российская микроэлектроника наконец начала заметно развиваться, и одним из наиболее ярких её примером является микроконтроллер MIK32 «Амур».
Причём в данном случае речь идёт не об очередном импортном кристалле, который просто поместили в отечественный корпус и нанесли на него новую маркировку. Полный цикл создания MIK32 локализован в России: микроконтроллер был разработан внутри группы «Элемент» совместно с НИИМА «Прогресс», а производство кристаллов выполняется на мощностях завода «Микрон».
MIK32 имеет первый уровень локализации и включён в Единый реестр российской радиоэлектронной продукции. Это означает, что в России выполняются не только корпусирование и финальная сборка, но также разработка и производство самой микросхемы.
И что особенно интересно — MIK32 не выглядит очередной копией STM32 или другого зарубежного контроллера. В нём присутствуют собственные и местами достаточно необычные архитектурные решения. Особенно необычно в MIK32 устроены прерывания. Вместо отдельных векторов для периферии здесь используется один общий: контроллер EPIC собирает запросы от устройств и передаёт их единому обработчику, который уже определяет источник события. Такое решение я пока не встретил в современных микроконтроллерах и это хорошо подчеркивает, что MIK32 — самостоятельная разработка со своей архитектурой, а не очередной клон зарубежного контроллера.
Как начать с ним работать?
Чтобы начать писать свою первую программу, разработчику обычно приходится отдельно устанавливать необходимую кучу инструментов.
В этой статье мы пойдём более коротким путём: установим рабочее окружение автоматически, создадим первый проект, соберём его и прошьём наш камень MIK32. Наша задача — получить полностью готовую систему и убедиться, что все инструменты корректно работают вместе.
Что понадобится:
-
компьютер с Windows или линукс;
-
плата на базе MIK32 «Амур»;
-
поддерживаемый программатор либо плата со встроенным программатором;
-
несколько минут свободного времени.
После завершения установки у нас будут готовы среда разработки, компилятор, средства сборки, OpenOCD, фреймворк MIK32, загрузчик и расширение для Eclipse или VS Code.
Шаг 1. Устанавливаем Eclipse
Сначала скачиваем Eclipse Installer с официального сайта и запускаем его. В списке пакетов выбираем Eclipse IDE for Embedded C/C++ Developers. Этот вариант предназначен для разработки встраиваемых систем и уже содержит необходимые инструменты для работы с проектами на C и C++.
На следующем экране можно оставить рекомендуемую версию Java и предложенный каталог. При желании установщик создаст ярлыки в меню «Пуск» и на рабочем столе. Нажимаем Install и дожидаемся завершения.
Когда кнопка Install сменится на Launch, базовая среда готова. Если Eclipse запустился автоматически, пока закрываем его: сначала добавим инструменты MIK32.
Шаг 2. Устанавливаем инструменты MIK32
Запускаем установщик MIK32 Toolchain. На приветственном экране перечислены компоненты, которые он подготовит: OpenOCD, утилиты сборки и программирования, расширение для Eclipse, фреймворк и примеры проектов. Выбираем русский язык и нажимаем Далее.
Установщик сгруппировал параметры по нескольким вкладкам. На первой задаются каталоги для инструментов сборки, OpenOCD и загрузчика.
На вкладке интеграций проверяем путь к Eclipse/PlarformIO и оставляем включёнными нужные системные настройки, в том числе фреймворк и примеры.
В разделе программирования выбираем используемую плату/программатор и необходимые дополнительные параметры. После этого нажимаем Установить.
Шаг 3. Проверяем установку и запускаем Eclipse
Установщик последовательно скачает и развернёт выбранные компоненты. Операция может занять несколько минут — текущий этап отображается в журнале.
После заполнения индикатора проверяем последние строки журнала: там должно появиться сообщение об успешном завершении.
Запускаем Eclipse и открываем Window → Preferences. В разделе MIK32 проверяем пути к фреймворку, примерам и загрузчику. Здесь же выбираем используемый программатор, после чего нажимаем Apply and Close.
Шаг 4. Создаём первый проект
Открываем мастер создания проекта MIK32 через File → MIK32 Projects…, указываем имя проекта и Finish. После завершения мастер создаст готовую структуру проекта и базовый код мигания светодиодом.
Шаг 5. Собираем проект
Выбираем нужную конфигурацию и запускаем сборку нажав на молоток в верхней панели. Если установка прошла успешно, Eclipse самостоятельно найдёт компилятор и инструменты сборки.
После компиляции в консоли появится сообщение об успешном завершении, а также информация об использованном объёме памяти.
Шаг 6. Прошиваем MIK32
Подключаем плату и программатор к компьютеру. Проверяем выбранный тип памяти и запускаем прошивку из Eclipse выбрав один из вариантов сверху на панели.
В консоли должны появиться подключение к микроконтроллеру, запись программы и сообщение об успешном завершении операции.
После запуска программы светодиод на плате начнёт мигать. Значит, среда установлена правильно, проект собирается, а связь с MIK32 прекрасно работает. А в режиме отладки кода, можно так же проверить состояния регистров.
Что установилось автоматически
За несколько шагов мы получили полноценное окружение для разработки под MIK32:
В результате нам не пришлось отдельно искать совместимые версии инструментов, вручную прописывать пути и настраивать интеграцию компонентов между собой. После установки можно сразу создать проект, собрать его и загрузить программу в микроконтроллер.
На этом базовая подготовка завершена. У нас есть рабочий проект Blink, настроенный компилятор, исправно работающий программатор и готовая среда для дальнейшей разработки.
Теперь можно переходить к самому интересному: работе с GPIO, таймерами, UART, SPI и другой периферией MIK32. Именно с этого момента начинается уже не настройка инструментов, а полноценная разработка под отечественный микроконтроллер.
Источники
Не бойтесь экспериментировать: микроконтроллеры лучше всего изучаются не по документации, а на практике. Большие проекты тоже когда‑то мигали одним светодиодом.
Отечественная микроэлектроника стала ближе и удобнее для разработчика.
ссылка на оригинал статьи https://habr.com/ru/articles/1066870/