[i] Создаем проект для МК MDR1206FI, MDR1206AFI в IAR EW for RISC-V
Поддержка микроконтроллеров 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_Led является общим для всех этих МК.
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-расширений ядра BM310S0 в IAR
Ядро BM-310S0 микроконтроллеров MDR1206FI, MDR1206AFI поддерживает стандартные расширения для битовых манипуляций и скалярной криптографии.
В старых версиях IAR Embedded Workbench for RISCV возможность подключения любых Z-расширений при выборе микросхемы отсутствует, при их указании формируется ошибка. В актуальных версиях IAR неподдерживаемые стандартные Z-расширения игнорируются без ошибок, а также реализовано часть расширений, которые есть у ядра BM-310S0 микросхем MDR1206(A)FI.
Для обратной совместимости со старыми версиями среды разработки поддержка Z-расширений по умолчанию отключена, ее активацию необходимо выполнять вручную.
Чтобы ее включить на актуальных версиях IAR нужно:
-
Перейти в директорию, в которую установлены файлы поддержки. По умолчанию для инсталлятора это C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.4.
-
Из директории перейти в папку .\riscv\config\devices\Milandr\MDR1206. Например, итоговый абсолютный путь будет C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.4\riscv\config\devices\Milandr\MDR1206.
-
В данной папке расположены конфигурационные 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 Configuraion, указываемый в настройках проекта (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 (информационной области Flash-памяти) и может быть стерта или перезаписана при использовании. Рекомендуется всегда использовать актуальную версию загрузочной программы с сайта.
Скомпилированный образ описанного в спецификации примера загрузочной программы доступен в составе примеров и шаблона в папке bootloader - файл boot_MDR1206.hex. Данный файл общий для обеих версий микросхемы MDR1206FI.
Для программирования загрузочной программы в область BOOT можно использовать отладочные конфигурации "FLASH". Для данных конфигураций в настройках проекта в окне "Debugger", вкладка "Images", добавлена загрузка hex-файла загрузочной программы (рисунок 4). При активации опции "Download extra image" с выбранным файлом boot_MDR1206.hex при запуске отладки будет задействован алгоритм программирования Flashloader.
Рисунок 4 - Настройка программирования загрузочной программы в область BOOT
2.2. Код проекта
Код для проекта HelloWorld можно взять из папки ExampleProjects\MDR32VF0xI\MDR32VF0xI_Led (файл main.c в папке src) из архива "Файлы поддержки IDE IAR for RISCV для МК 1986ВК025, MDR1206FI, MDR1206AFI".
В проекте MDR32VF0xI_Led осуществляется подключение требуемых библиотек (заголовочный файл МК, библиотеки тактирования и портов общего назначения), включение тактирования порта D и инициализация его выводов 0-3 (на модуле отладочном для микросхем MLDR1206(A)FI на основе отладочной платы К1986ВК025 ТСКЯ.468998.125 светодиоды LED[4:1] заведены на выводы PD[3:0]), отключение светодиодов LED[4:1] и затем циклическое их переключение.
После копирования кода из примера MDR32VF0xI_Ledв файл main.c проекта необходимо скомпилировать проект (рисунок 5) с помощью кнопки на верхней панели, или же ПКМ по проекту->Make (выделено на рисунке 5 красным) - при этом среда IAR потребует сохранить рабочее пространство.
Рисунок 5 - Компиляция проекта
3. Подготовка отладочной платы, подключение отладчика
Для работы с отладчиком-программатором I-Jet по интерфейсу JTAG на отладочной плате должны быть убраны перемычки на разъёме JTAG TO USB. Более подробно о возможностях отладки микроконтроллера MDR1206FI на отладочной плате - в статье Создаем проект для МК MDR1206FI в IDE Eclipse
На отладочной плате должны быть установлены перемычки на разъемах 3V3 to LED и 3V3 to LCD_LED.
Для работы МК из внутренней Flash-памяти на отладочной плате переключателями MODE[1:0] должен быть выбран режим 2'b00. Для запуска из внутренней ОЗУ - режим 2'b11.Однако при этом стоит иметь в виду, как работает режим отладки в IAR - вне зависимости от установленного на MODE[1:0] режима работа загрузочной программы пропускается. Выбор режима загрузки MODE имеет смысл при наличии запрограммированной в область BOOT типовой загрузочной программы, поскольку является ее программным функционалом.
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.