52491

[i] Создаем проект для МК MDR1206FI, MDR1206AFI в IAR EW for RISC-V

Дата последнего изменения: 27.07.2026 15:37:58

Поддержка микроконтроллеров MDR1206FI, MDR1206AFI на базе ядра RISC-V предусмотрена как в среде IDE Eclipse (подробнее в соответствующей статье), так и в среде IAR Embedded Workbench for RISC-V. При работе с IAR EW требуется использовать программатор I-Jet.

Основное отличие между микросхемами MDR1206FI и MDR1206AFI заключается в контроллере FLASH-памяти и требует использования разных алгоритмов для работы с FLASH. Программная идентификация микросхем MDR1206FI и MDR1206AFI выполняется по значению поля CHIP_ID регистра FLASH_CNTRL->CHIP_ID_CTRL: 215 для MDR1206AFI и 217 для MDR1206FI. Более подробно алгоритм определения версии микросхемы описан по ссылке, в среде IAR EW алгоритм определения версии аналогичен.

Статья содержит информацию о:

1. Добавлении поддержки МК MDR1206(A)FI в среду IAR EW for RISC-V.

2. Создании и конфигурации базового проекта.

3. Особенностях конфигурации отладочной платы и подключении отладчика при работе с IAR EW for RISC-V.

4. Запуске отладки проектов в среде IAR EW for RISC-V.

Вводные сведения о библиотеке MDR32VF0xI и организации проектов

Микросхемы MDR1206FI, MDR1206AFI являются усовершенствованной версией К1985ВК025 (MDR32F02) с некоторыми отличиями. Поскольку МК MDR1206(A)FI функционально близки к К1986ВК025, программная поддержка уровня CMSIS и SPL для микроконтроллеров К1986ВК025 (MDR32F02), MDR1206FI и MDR1206AFI реализована в общей библиотеке - MDR32VF0xI. Поэтому информация из данной статьи по большей части также применима для К1986ВК025 (MDR32F02).

В свою очередь проекты (в том числе шаблонов) для микроконтроллеров реализованы как один общий для всех, так и раздельные индивидуально под МК. Помимо этого, для микроконтроллеров MDR1206FI и MDR1206AFI реализованы общие проекты MDR1206, поскольку функциональные отличия минимальны. 

Для выбора конкретного МК необходимо выбрать соответствующий макрос USE_MDR... в файле MDR32VF0xI_config.h на уровне SPL или, если уровень SPL не используется и используется только уровень CMSIS, в файле system_MDR32VF0xI_config.h на уровне поддержки устройства (DeviceSupport) в CMSIS. После выбора конкретного МК с помощью макроса при сборке проекта необходимо также выбрать соответствующую микроконтроллеру конфигурацию сборки.

Примеры проектов с общим для микроконтроллеров MDR32F02, MDR1206FI, MDR1206AFI функционалом реализованы в общем для всех примере. Например, проект "MDR32VF0xI_Template" является общим для всех этих МК. 

1. Подготовка среды IAR EW for RISC-V

Для добавления поддержки МК MDR1206FI, MDR1206AFI в среду IAR EW for RISC-V необходимо запустить установочный exe-файл, который автоматически добавит требуемые файлы, из архива в "Файлы поддержки IDE IAR EW for RISC-V для МК К1986ВК025, MDR1206FI, MDR1206AFI" - предварительно рекомендуется ознакомиться с информацией в ReadMe.pdf. После этого в настройках проекта можно будет выбирать МК: Milandr -> MDR32VF0xI -> MDR1206 -> "Milandr MDR1206FI" / "Milandr MDR1206AFI".

1.1. Особенности поддержки стандартных Z-расширений ядра BM-310S0 в IAR

Ядро BM-310S0 микроконтроллеров MDR1206FI, MDR1206AFI поддерживает стандартные расширения для битовых манипуляций и скалярной криптографии.

В старых версиях IAR Embedded Workbench for RISCV возможность подключения любых Z-расширений при выборе микросхемы отсутствует, при их указании формируется ошибка. В актуальных версиях IAR неподдерживаемые стандартные Z-расширения игнорируются без ошибок, а также реализовано часть расширений, которые есть у ядра BM-310S0 микросхем MDR1206(A)FI. 

Для обратной совместимости со старыми версиями среды разработки поддержка Z-расширений по умолчанию отключена, ее активацию необходимо выполнять вручную. 

Чтобы ее включить на актуальных версиях IAR нужно:

  1. Перейти в директорию, в которую установлены файлы поддержки. По умолчанию для инсталлятора это C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.4.

  2. Из директории перейти в папку .\riscv\config\devices\Milandr\MDR1206. Например, итоговый абсолютный путь будет C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.4\riscv\config\devices\Milandr\MDR1206.

  3. В данной папке расположены конфигурационные xml-файлы выбора устройства MDR1206FI.menu и MDR1206AFI.menu. Их необходимо открыть как текстовые файлы и поменять комментирование в строках, содержащих <core></core>.

Более подробно процедура описана в файле ReadMe.pdf, который идет с файлами поддержки IAR for RISCV для MDR32F02, MDR1206(A)FI.

2. HelloWorld для MDR1206FI

После запуска среды IAR EW for RISC-V необходимо создать новое рабочее пространство (File->New Workspace), затем - новый проект (Project->Create New Project...). В окне "Create New Project" следует выбрать Milandr project templates -> MDR32VF0xI project templates-> MDR1206 project templates -> MDR1206(A)FI empty project. Могут быть выбраны другие варианты, например "MDR32VF0xI empty project", "MDR1206FI empty project" или "MDR1206AFI empty project" - информация о различиях приведена выше.

Рисунок 1 - Окно создания нового проекта


После создания и сохранения файла проекта будет создан новый пустой проект, в котором уже произведены основные необходимые настройки.

2.1. Конфигурации проекта

В шаблоне проекта MDR1206(A)FI empty project реализованы несколько конфигураций под каждый из МК MDR1206FI/MDR1206AFI (рисунок 2): 

  • Конфигурации "FLASH" - для запуска программы из Flash-памяти с программированием hex-файла типовой загрузочной программы, расположенного в папке bootloader.
  • Конфигурации "RAM_TCM_Debug" - для запуска программы из ОЗУ TCM RAM.

Рисунок 2 - Типовые конфигурации проекта


Различия в этих конфигурациях заключаются в расположении кода и данных.

В конфигурациях "RAM_TCM_Debug" весь код и данные расположены в ОЗУ, поэтому конфигурация подходит только для отладки - код загружается в микроконтроллер только отладчиком-программатором при входе в отладку, при сбросе по питанию ОЗУ очищается.

В конфигурациях "FLASH" код программы расположен в Flash-памяти, данные расположены в ОЗУ. Так как используется FLASH-память, для ее программирования применяется алгоритм Flashloader. Поскольку в микроконтроллерах MDR1206FI и MDR1206AFI разные алгоритмы работы с Flash-памятью, для работы с микросхемами MDR1206FI и MDR1206AFI реализовано два раздельных алгоритма программирования Flash-памяти.

За указание расположения областей программы по определенным регионам памяти отвечает файл Linker Configuration, указываемый в настройках проекта (Options for node...->Linker->Linker configuration file). В меню настроек можно зайти, нажав ПКМ по проекту, и в появившемся всплывающем окне выбрав пункт "Options...". В файлах поддержки для IAR EW реализованы 3 Linker-файла для размещения кода программы в Flash-памяти, памяти TCM RAM или AHB RAM (рисунок 3) - пользователем могут быть выбраны другие самостоятельно разработанные варианты.

Рисунок 3 - Выбор Linker файла для расположения кода в ОЗУ или FLASH


Как указано выше, в MDR1206FI и MDR1206FI используются два разных механизма работы с памятью Flash, которые реализованы в двух отдельных алгоритмах программирования Flashloader. Выбор алгоритма программирования памяти Flash осуществляется автоматически на основе выбранного устройства в настройках проекта (General Options -> Target -> Device), если вручную не выбран другой алгоритм программирования.


2.1.1. Программирование загрузочной программы в область BOOT

Микросхемы MDR1206FI, MDR1206AFI поставляются с записанной в область BOOT загрузочной программой. Загрузочная программа в микроконтроллере расположена в области BOOT (информационной области Flash-памяти) и может быть стерта или перезаписана при использовании. Рекомендуется всегда использовать актуальную версию загрузочной программы с сайта.

Скомпилированный образ описанного в спецификации примера загрузочной программы доступен в составе примеров и шаблона в папке bootloader - файл boot_MDR1206.hex. Данный файл общий для обеих версий микросхемы MDR1206FI.

Для программирования загрузочной программы в область BOOT можно использовать отладочные конфигурации "FLASH". Для данных конфигураций в настройках проекта в окне "Debugger", вкладка "Images", добавлена загрузка hex-файла загрузочной программы (рисунок 4). При активации опции "Download extra image" с выбранным файлом boot_MDR1206.hex при запуске отладки будет задействован алгоритм программирования Flashloader.

Рисунок 4 - Настройка программирования загрузочной программы в область BOOT


Если опция "Download extra image" не выставлена в конфигурациях "FLASH" (не выставляется при создании проекта из шаблона), ее необходимо выставить вручную.

2.2. Код проекта

Код для проекта HelloWorld можно взять из папки ExampleProjects\MDR32VF0xI\common\PORT (файл main.c) из архива "Файлы поддержки IDE IAR for RISCV для МК 1986ВК025, MDR1206FI, MDR1206AFI". 

В примере PORT осуществляется подключение требуемых библиотек (заголовочный файл МК, библиотеки тактирования и портов общего назначения), включение тактирования порта D и инициализация его выводов 5-8 (на модуле отладочном для микросхем MLDR1206FI светодиоды заведены на выводы PD[8:5]) и затем циклическое переключение светодиодов.

После копирования кода из примера PORT в файл main.c проекта необходимо скомпилировать проект (рисунок 5) с помощью кнопки на верхней панели, или же ПКМ по проекту->Make (выделено на рисунке 5 красным) - при этом среда IAR потребует сохранить рабочее пространство.

Рисунок 5 - Компиляция проекта


3. Подготовка отладочной платы, подключение отладчика

Для работы с отладчиком-программатором I-Jet по интерфейсу JTAG на отладочной плате должны быть убраны перемычки на разъёме JTAG TO USB. Более подробно о возможностях отладки микроконтроллера MDR1206FI на отладочной плате написано в статье [i] Создаем проект для МК MDR1206FI, MDR1206AFI в IDE Eclipse.

На отладочной плате должны быть установлены перемычки на разъемах 3V3 to LED и 3V3 to LCD_LED.

Питание VCCB формируется дополнительным источником питания - например, батарейкой. Вместо батарейки питание VCCB можно подать с VCC, установив перемычку на отладочной плате между разъёмами Ucc и BUcc.

Для работы МК из внутренней Flash-памяти на отладочной плате переключателями MODE[1:0] должен быть выбран режим 2'b00. Для запуска из внутренней ОЗУ - режим 2'b11.Однако при этом стоит иметь в виду, как работает режим отладки в IAR - вне зависимости от установленного на MODE[1:0] режима работа загрузочной программы пропускается. Выбор режима загрузки MODE имеет смысл при наличии запрограммированной в область BOOT типовой загрузочной программы, поскольку является ее программным функционалом.

Не допускается подключение внешнего отладчика к отладочной плате переведенных в положение ON переключателях разъема JTAG to USB.

4. Запуск проекта

После успешной компиляции проекта можно приступить к отладке. Для этого нужно выбрать пункт Project->Download and Debug. После этого произойдёт прошивка памяти Flash (если используются конфигурации "FLASH" - в конфигурациях "RAM_TCM_Debug" ПО запускается из ОЗУ без программирования Flash-памяти) и будет запущен режим отладки (рисунок 6). Для запуска проекта следует выбрать опцию Debug->Go (или клавиша F5).

Для просмотра регистров ядра и периферии нужно перейти в пункт View->Registers->Registers 1 - после этого появится окно просмотра регистров.

Рисунок 6 - Режим отладки проекта


Для прошивки памяти без запуска режима отладки: Project->Download->Download active application. При этом, однако, программирование образа загрузочной программы, если она указана в настройках проекта в категории Debugger, осуществляться не будет. 

Для стирания Flash памяти: Project->Download->Erase memory. Возможно осуществить стирание всей Flash-памяти и отдельно основной области памяти Flash и области BOOT.

Сохранить статью в PDF

Документация

Программное обеспечение

Теги

Была ли статья полезной?