======Запускаем микроконтроллер для управления двигателями, "Электросила", в режиме DUALCORE | IDE IAR====== В [[https://startmilandr.ru/doku.php/prog:spec:elpower_dualcore|прошлой статье]] мы рассмотрели запуск и отладку микроконтроллера для управления двигателями “Электросила” в режиме //DUALCORE// в //IDE Keil// с помощью программатора **ULINK2** – рекомендуем прочесть перед рассмотрением этой статьи, так как большая часть теоретической информации здесь будет опущена. Мне в руки попал **CMSIS-DAP** совместимый адаптер производства компании Миландр и программатор **I-jet** производства компании //IAR Systems//. На рисунке ниже представлены фотографии двух этих программаторов. **CMSIS-DAP** от компании Миландр на данный момент находится в разработке. {{ prog:esila_cores:1_0.png }} Если кратко, то **CMSIS-DAP** является стандартом, позволяющим получить доступ к порту отладки микроконтроллера (the Coresight Debug Access Port) на ядре ARM Cortex через USB. **CMSIS-DAP**, как правило, реализован в виде встроенной интерфейсной микросхемы, обеспечивающей прямое USB-подключение со стороны машины разработчика к отладчику, и через //JTAG// или //SWD// от отладчика к целевому устройству. В основе **CMSIS-DAP** программатора от Миландр лежит микроконтроллер 1986ВЕ92QI. В среде //IAR// запустить микроконтроллер “Электросила” в режиме //DUALCORE// и произвести отладку двух ядер можно **ТОЛЬКО** с помощью **CMSIS-DAP** программатора или **I-jet**. Ранее с **ULINK2** мы были ограничены лишь средой //Keil uVision//, не имея возможность произвести отладку где-то еще. Программатор **J-Link** не поддерживает двухъядерную отладку ни в среде //Keil//, ни в среде //IAR// Проект для //IDE IAR//, который будет рассмотрен в статье, [[https://drive.google.com/open?id=12E8dWb4RrVJdRBW66uasUMuIH7gGyk-4|доступен по ссылке]]. Для открытия проекта необходимо запустить //MLDR124_test.eww// из папки //IAR_Systems//. Это рабочее пространство основного проекта. Рабочее пространство //MLDR124_slave.eww// будет подключаться для запуска вторым ядром в ходе настройки, представленной ниже. Перед работой не забудьте добавить поддержку микроконтроллера “Электросила” в среду //IAR//. Это можно сделать согласно [[https://startmilandr.ru/doku.php/prog:start:elpower_iar|этой статье]] Обратите внимание, что по пути проекта //*\IAR_Systems\FLASH\Exe// находится файл //MLDR124_test.hex//, который можно сразу прошить в микроконтроллер и приступать к отладке, не забыв выставить указанные настройки ниже. Помощь при написании, как и в прошлой статье, оказала презентация Миландра с выставки “ЭкспоЭлектроника”. Она доступна по [[https://www.milandr.ru/upload/iblock/919/919554e6e35a437853091f7516b2489b.pdf|следующей ссылке]] Процесс перехода из режима //LOCKSTEP// в режим //DUALCORE// принципиально ничем не отличается от проекта для //Keil//. В файле //startup_mldr124.s// для обработчика //Reset_Handler// прописаны инструкции, после которых произойдет переход в режим //DUALCORE//. Ядра 0 и 1 продолжат выполнять программу по отдельности. Сама программа устроена с помощью мьютексов, в процессе запуска проекта одно ядро будет мигать зеленым светодиодом на отладочной плате на базе микроконтроллера “Электросила”, а второе ядро красным светодиодом. =====Настройки среды IAR для двухъядерной отладки с помощью программатора CMSIS-DAP===== Для того, чтобы настроить среду //IAR// для двухъядерной отладки по программатору **CMSIS-DAP** необходимо выполнить по шагам следующие действия: **1.** Собрать проект. **2.** Зайти в настройки проекта, нажав правую кнопку мыши по названию проекта. {{ prog:esila_cores:1.png }} **3.** Выбрать пункт //Debugger//. **4.** В выпадающем списке Driver выбрать //CMSIS DAP// {{ prog:esila_cores:2.png }} **5.** Перейти во вкладку Download. **6.** Указать путь для файла конфигурации для загрузчика памяти программ (все файлы для микроконтроллера “Электросила” должны быть заранее установлены в среду). {{ prog:esila_cores:3.png }} **7.** Перейти во вкладку //Multicore//. **8.** Если у Вас версия IDE IAR 8.3x, то нужно поставить галочку возле строки //Enable multicore master mode//, тем самым активировав режим ведущего для текущего проекта. В версии IDE IAR 8.4x нужно выбрать пункт "Simple", чтобы запустить возможность заполнения аналогичных полей для двухъядерной отладки. **9.** Указать путь к рабочему пространству ведомого проекта. Путь до файла с рабочим пространством ведомого по умолчанию задан корректно, однако, сам файл лежит в папке ///IAR_Systems// **10.** Указать название проекта ведомого. **11.** Задать конфигурацию для проекта ведомого. По умолчанию //FLASH//. {{ prog:esila_cores:4.png }} После настройки можно приступать к отладке. В //IDE IAR// имеются две кнопки для запуска процесса отладки, подробнее на рисунке ниже. {{ prog:esila_cores:5.png }} * При нажатии первой кнопки произойдет загрузка файла прошивки в микросхему, и последует запуск режима отладки. * При нажатии второй кнопки запустится сразу режим отладки. В случае с адаптером **CMSIS-DAP** производства Миландр подходит просто запуск отладки. Файл с прошивкой был заранее загружен в микроконтроллер. =====Настройки среды IAR для двухъядерной отладки с помощью программатора IAR Systems I-jet===== Настройка аналогична **CMSIS-DAP**, только в четвертом пункте необходимо во всплывающем списке выбрать //I-jet/JTAGjet//. {{ prog:esila_cores:6.png }} После этого можно приступать к отладке. =====Отладка двух ядер===== После запуска режима отладки можно будет наблюдать два окна //IDE IAR//, помеченных как **MLDR124_test – Master** и **MLDR124_slave – Slave**. Окно мастера отвечает за первое ядро (в IDE помечено цифрой “0”), соответственно, на панели инструментов для первого ядра будет закрашенная стрелка или квадратик, в зависимости от того, активно ядро или нет, а для второго эти символы будут пустыми. Всё это указывает на то, что из первого окна Вы можете управлять режимом отладки ТОЛЬКО для первого ядра. Аналогично для второго окна. {{ prog:esila_cores:7.png }} =====Возможные трудности при запуске отладки двух ядер на отладочной плате "Электросила"===== **1.** Если при работе с программатором //I-jet// Вы увидели ошибку из картинки ниже, когда запускаете отладку вместе с загрузкой программы (зеленая кнопка //"Download and Debug"//, которая описывается ранее в статье), то для её устранения необходимо нажать кнопку **S5** на отладочной плате. Кнопка снимает питание аналоговой части: без её нажатия загрузка программы в среде //IAR// через программатор //I-jet// может выполняться не всегда. {{ prog:esila_cores:error_0.png }} **2.** Была выявлена особенность работы при использовании версии //IDE IAR 8.40// вместе с программматором //I-jet//. Когда происходит загрузка отладки, может произойти ситуация, когда одно из ядер по непонятным причинам на момент запуска оказывается в //HardFault//. Для устранения ошибки достаточно перезагрузить микроконтроллер, после этого отладка двух ядер происходит в штатном режиме. **3.** Если Вы запускаете тот же пример из официального пака для //IDE IAR//, представленного на [[https://ic.milandr.ru/soft/|официальном сайте]], то обратите внимание на общую структуру проекта. Чтобы иметь возможность отладить проекта (запустить второе окно среды для второго ядра), в настройках //Debugger -> Multicore// нужно выставить следующие настройки: {{ prog:esila_cores:iar_vasiliy.png }}