IDE для MIK32 Амур с тулчейном Syntacore

Предисловие (крик души, ничего личного!)​

К большому сожалению разработчик микроконтроллера MIK32 (он же Амур) не радует наличием современных IDE, предназначенных для разработки ПО. В настоящее время пользователям доступна возможность использования PlatformIO (на базе VS Code) и MikronIDE (Eclipse). Если последняя IDE и получает очень редкие обновления, то в отношении первой складывается ощущение о полной заброшенности поддержки. Если выразится точнее, то MikronIDE построен на базе Eclipse IDE for C/C++ Developers (даже не сборка для Embedded) версии 4.24.0 (выпуск июнь 2022). При этом сборка абсолютно не масштабируема, любая установка пакетов приводит к сбросу всех настроек. Библиотеки исходных кодов (LL и HAL), по непонятным мне причинам, дублируются в каждом проекте, и разбросаны по разным уровням папок проекта. Примеры программ и генератор периферии разработаны для PlatformIO, в состав MikronIDE включены всего два шаблона (причем, один из них похож на полигон мыслей) и пример загрузчика. Обновление среды штатными средствами невозможна. Но не смотря на все недостатки, она позволяет быстро начать работу с микроконтроллером, и что не мало важно, позволяет мониторить значения в регистрах при отладке кода.
В тоже время, новым пользователям, для освоения перспективных горизонтов отечественной электроники (вывод сделан на основе личного опыта) необходима полноценная, современная, масштабируемая среда разработки с "джентльменским" набором примеров кода для решения различных задач использования микроконтроллера (а возможно и с обвязкой LL и HAL библиотек высокоуровневым API типа Wiring для быстрого прототипирования устройств и обучения).

По существу​

Всё описанное выше натолкнуло меня на мысль, а не собрать ли IDE и пакет библиотек, которые позволили бы решить, если не все проблемы, то хотя бы большую часть из них. Изучение используемых различными разработчиками микроконтроллеров IDE привело к выводам, что большинство из них используют Eclipse Embedded сборку, на втором месте оказались плагины IDE VS Code. Если говорить о MIK32, то использование VS Code, как минимум требует написания кучи скриптов для CMake, что пока не видится мне осуществимым в краткосрочной перспективе (хотя Syntacore активно занимается этим вопросом, но основная их направленность на поддержку эмулятора qmenu). В итоге остался первый вариант - использовать Eclipse. В результате экспериментов и пары бессонных ночей удалось собрать IDE для MIK32 на базе Syntacore Development Toolkit for RISC-V (SC-DT, использовал версию 2023.11-win). Данная IDE разработывается Syntacore с учетом особенностей SCRx ядер (для справки, MIK32 построен на ядре SCR1).

В сухом остатке...​


В текущей, выставляемой на суд общественности, версии можно выделить следующие моменты:
  • появилась возможность использовать компилятор LLVM/clang;
  • по умолчанию используется кроссплатформенные компиляторы GCC (в т.ч. Assembler) и линковщик объектного кода для RISC-V архитектуры (от Syntacore для SCRx);
  • настроена поддержка отладки кода с помощью GNU GDB в связке с OpenOCD и программаторами JTAG на основе чипов FT2232Hx;
  • есть возможность настройки отладки с использованием нативных драйверов SEGGER для JLink (ядро SCR1 поддерживается J-link v11 и выше);
  • добавлен и настроен скрипт загрузки бинарного кода посредством OpenOCD + JTAG - mik32-uploader;
  • установлен плагин Embedded Systems Peripherals Register View, добавлена карта регистров MIK32 (из MikronIDE);
  • переработаны шаблоны для создания новых проектов:
    • исключено дублирование LL и HAL библиотек путем их выноса в отдельную папку (MIK32_SRC). Что позволяет упростить процесс обновления библиотек и повторно использовать их в новых проектах (линкуются к проекту в настройках и рассматриваются Eclipse, как source-папка проекта не нарушая работы построителя индексов);
    • добавлен и переработан шаблон template (для создания программ использующих LL и HAL библиотеки);
    • добавлен и откорректирован шаблон template_freertos (для создания программ на основе ОСРВ);
    • библиотеки описания регистров ядра и периферии перенесены в папку LL (Low level);
    • библиотеки уровня аппаратной абстракции сохранились в папке HAL;
    • библиотеки (файлы) для работы с UART и xprint перемещены в папку SF (Service function);
    • в шаблоны включены файлы readme.md с описанием их назначения и инструкцией для создания новых проектов на их основе.
Актуальная версия IDE для MIK32

Вместо заключения​


Просьба к сообществу, по возможности провести тестирование данной сборки, обратная связь приветствуется!

В данной теме прошу оставлять ваши замечания и предложения по сборке IDE.

Так же хотелось бы узнать о целесообразности дальнейшей поддержки и развития данной сборки IDE.

Если у вас появилось желание помочь в этом нелегком деле, тоже пишите.
 
Последнее редактирование:

cryptozoy

Member
Последнее редактирование:

cryptozoy

Member
mik32-uploader с добавлением команды выхода микросхемы внешней памяти из режима QPI в режим SPI перед началом её прошивки. Изменения найдёте в файле «mik32_spifi.py» и естественно в пересобранном «mik32_upload.exe». Пересоберите его сами, если вдруг пути к библиотекам пайтона не соответствуют. Данная тема обсуждалась ранее тут и тут.
 
Последнее редактирование:

cryptozoy

Member
В файле «m-link.cfg» после «adapter driver ftdi» можно добавить «adapter speed 500», чтобы OpenOCD не матерился при запуске. Частота 500 кГц используется по умолчанию в среде VSCode+PlatformIO.
 

cryptozoy

Member
Обновил описание, уточнил, что речь идет о специализированной IDE для SCRx ядер
"Syntacore Development Toolkit (SC-DT) for RISC-V is designed to create applications for SCR cores."
что в переводе с английского значит:
"Syntacore Development Toolkit (SC-DT) для RISC-V cпроектирован создавать приложения под ядра SCR."

Каким образом поддержка ядер SCR закончилась на версии 2023.11?
 
"Syntacore Development Toolkit (SC-DT) for RISC-V is designed to create applications for SCR cores."
что в переводе с английского значит:
"Syntacore Development Toolkit (SC-DT) для RISC-V cпроектирован создавать приложения под ядра SCR."

Каким образом поддержка ядер SCR закончилась на версии 2023.11?
Там нет ни слова о том, что поддержка закончилась, речь наоборот идет о том, что за основу взята ide разрабатываемая под конкретный вариант ядра scr1 risc-v. Упоминание о поддержке указано только в строке про программатор jlink, там однозначно до версии 11 оффициально не поддерживают scr1.
Прочитайте пожалуйста еще раз, если я неоднозначно выразил свою мысль, то поправлю
 

Shagen

New member
1. Спасибо за предложенный вариант и сборку!

2. Для template примера, "из коробки" работает пример для SPIFI и не работают сборки конфигурации для RAM и EEPROM, ссылаясь на отсутствующий файл:

../src/main.c:1:10: fatal error: mcu32_memory_map.h: No such file or directory

Если ручками прописать - то всё ОК.
 

cryptozoy

Member
Там нет ни слова о том, что поддержка закончилась, речь наоборот идет о том, что за основу взята ide разрабатываемая под конкретный вариант ядра scr1 risc-v. Упоминание о поддержке указано только в строке про программатор jlink, там однозначно до версии 11 оффициально не поддерживают scr1.
Прочитайте пожалуйста еще раз, если я неоднозначно выразил свою мысль, то поправлю
Почему в адаптации не использована самая свежая версия «sc-dt-2024.05-win» вместо «sc-dt-2023.11-win»?
 
Почему в адаптации не использована самая свежая версия «sc-dt-2024.05-win» вместо «sc-dt-2023.11-win»?
Работаю над этим вопросом, основная проблема в ней не устанавливается плагин Embedded Systems Peripherals Register View, если получится его поставить, то обновлю версию до 2024.05
 
1. Спасибо за предложенный вариант и сборку!

2. Для template примера, "из коробки" работает пример для SPIFI и не работают сборки конфигурации для RAM и EEPROM, ссылаясь на отсутствующий файл:

../src/main.c:1:10: fatal error: mcu32_memory_map.h: No such file or directory

Если ручками прописать - то всё ОК.
Спасибо, проверю
 
Подготовлена новая версия IDE для MIK32 на основе Syntacore IDE. В данной версии учтены высказанные замечания и предложения, а также внесены изменения в настройки шаблонов.
Список внесенных изменений.
  1. Обновлена версия Syntacore IDE с 2023.11 на 2024.05 (сборка 0.1.0.202405171149):
    • компилятор GCC 13.2;
    • компилятор LLVM 17.0.0;
    • отладчик GNU GDB 13.2;
    • OpenOCD 0.12+dev;
    • Eclipse IDE 2024-03;
    • и др. см. на оф. сайте
  2. Поддержка MIK32:
    • обновлен mik32-uploader-master (добавлена команда выхода микросхемы внешней памяти из режима QPI в режим SPI перед началом её прошивки);
    • добавлен плагин Embedded Systems Peripherals Register View + карта памяти регистров MIK32;
    • в файл конфигурации m-link.cfg, для программаторов на основе чипов FT2232H(L), добавлен параметр adapter speed 500;
    • для настройки ярлыка запуска IDE в корневую папку добавлен файл иконки с логотипом Syntacore;
    • исправлена ошибка в настройках шаблонов проектов, приводившая к невозможности сборки проектов в режимах RAM и EEPROM.
 
Последнее редактирование:

cryptozoy

Member
Может папку «runtime» с файлом «crt0.S» тоже перенести в «MIK32_SRC»? Тогда для большинства проектов ни о чём кроме «main.c» начинающему разработчику не нужно будет думать.
 
Может папку «runtime» с файлом «crt0.S» тоже перенести в «MIK32_SRC»? Тогда для большинства проектов ни о чём кроме «main.c» начинающему разработчику не нужно будет думать.
К сожалению не получится, уже наступал на эти грабли. Оказалось, что для работы MIK32 с freertos используется измененная версия файла crt0.S. Причем они оказались не взаимозаменяемы, что привело к невозможности использования обычного шаблона и шаблона для freertos в рамках одной рабочей области. А отдельное их подключение слишком сложно для начинающих. Но от этой идеи пока не отказался, и в перспективе планирую вернутся к данному вопросу.
 

ejsanyo

Member
Подготовлена новая версия IDE для MIK32 на основе Syntacore IDE.
0,18 Микрона этому господину! (y) По крайней мере, у меня оно стартует даже чуть быстрее, чем "Mikron IDE". На самом деле, конечно, некоторые нюансы есть. Чтобы у меня всё заработало, сделал следующее:
Хмм, с моих исходников Синтакоровский компилятор делает код на несколько кБ длиннее, чем "обычный". У меня выставлена опция -Ofast, если что. По скорости выполнения кода, правда, результаты не сравнивал.
Ещё такой момент: при запуске мне Эклипс из данной сборки каждый раз выкидывает сообщение, мол, 'Windows Defender Exclusion check' has encountered a problem. Работать это ему, вроде, не мешает, но не очень понятно, нафиг вообще ему лезть в настройки фаервола? :unsure: Вроде это не PlatformIO, чтоб каждый раз лезть за обновлениями?
 

ejsanyo

Member
Ещё уточню такой момент, чтобы они скомпилялись нормально, сделал вот что:
  • Добавил в проекте путь "${workspace_loc:/${ProjName}/MIK32_SRC/HAL/utilities/Include}"
  • Заменил файлы spifi.h и scr1_timer.h на более свежие, которые вытащил из моей текущей версии "Mikron IDE"
 
Сверху