24228

[i] Проект “Hello, World” для МК К1986ВК01GI ("Электросила”). Запуск из ОЗУ и внутренней памяти

Автор статьи: Лампадов Илья Александрович (Инженер)
Дата последнего изменения: 11.07.2024 11:21:19

Перспективный микроконтроллер К1986ВК01QI (далее "Электросила") поддерживает современные методы управления электроприводами. Содержит два ядра Cortex-M4F и обладает широким набором цифро-аналоговых устройств и интерфейсных контроллеров. Достоинством данного процессора является большая надежность и эффективность в решении специализированных задач, требующих бессбойный ход выполнения программы и высокую точность наряду с высокой производительностью.

При написании статьи применялась отладочная плата «Электросилы» производства компании Миландр EVB v0.3. Проект, рассмотренный в статье, предназначен для включения RGB-светодиода при помощи трёх ШИМ-сигналов по каждому каналу цвета (красному, зеленому и синему). Рассмотренный проект "pwm_rgb" включен в состав установочного пака для IDE Keil, который доступен для загрузки на отдельной странице официального сайта компании Миландр с выпускаемым программным обеспечением.

Необходимо произвести установку пака в IDE Keil версии 5 и выше, желательно, в директорию по умолчанию. После завершения процесса можно перейти в выбранную для установки папку и обнаружить, что добавились все необходимые файлы поддержки микроконтроллера "Электросила" в среде, включая множество примеров по работе с периферийными блоками микроконтроллера, но из папки "Examples" для работы по данной статье потребуется пример "pwm_rgb". Запустим его.

Настройка и запуск проекта из ОЗУ

В проекте содержится два набора настроек: для запуска из оперативной памяти и из ПЗУ. Необходимо убедиться, что в Select Target выбран параметр RAM (Оперативная память). Показано на рисунке 1. Выбор любого из параметров автоматически задаёт адреса и прочие настройки, позволяющие запуститься микроконтроллеру из нужной памяти. Однако, в статье всё равно приведены особенности выставления всех необходимых параметров.

Рисунок 1 - Выбор проекта для ОЗУ в Select Target 

Следом необходимо перейти в настройки "Options for Target", далее "Device", и выбрать микроконтроллер "MDR1986VK01" из всплывающего меню "Cortex-M4". Настройка показана на рисунке 2. 

Рисунок 2 - Выбор поднастройки MDR1986VK01 для работы с микроконтроллером "Электросила"

Далее необходимо убедиться в том, что в "Options for Target", вкладка Target, выставлены правильные адреса для ОЗУ. 128 Кбайт ОЗУ разбиты на два банка по 64 Кбайт: первый банк начинается с адреса 0x20000000, второй с 0x20010000. Наглядно показано на рисунке 3.

Рисунок 3 - Настройки адресов памяти в IDE Keil для работы с ОЗУ

Для подключения средств отладки будет использоваться JTAG-B. Режим загрузки JTAG-B по выводам MODE - “10001”. Для программирования/отладки был применён программатор J-Link, выбор же программатора необходимо производить согласно информации из статьи "Совместимость средств разработки Keil, IAR, CodeMaster и программаторов".

Из важного, что следует отметить в настроенном проекте, так это файл инициализации, который описан в папке с проектом под названием “0x20000000.ini” – его подключение видно на рисунке 4. Данный файл позволяет запускать проект в режиме отладки из ОЗУ (именно с адреса 0x20000000 в микроконтроллере расположена ОЗУ).

Рисунок 4 - Подключение файла 0x20000000 к проекту для корректного запуска из ОЗУ

Подробнее о запуске кода из ОЗУ написано в статье "Запуск программы из ОЗУ в среде Keil"

Согласно спецификации на данный микроконтроллер, большинство блоков имеют регистр KEY, и при записи в этот регистр значения 0x8555AAA1, разрешается запись других регистров конкретного блока:

CLK_CNTR->KEY = 0x8555AAA1; // разрешаем запись регистров CNTR (Clock Control)
// Настройка регистров разрешения тактирования шин периферийных блоков
CLK_CNTR->PER0_CLK = 0xFFFFFFFF;
CLK_CNTR->PER1_CLK = 0xFFFFFFFF; 
Фрагмент кода 1

Пояснения к работе и конфигурирование RGB-светодиода при помощи ШИМ:

В проекте настраиваются выводы для работы с RGB-светодиодом (стандартные настройки на выход всех трёх каналов светодиода), а также конфигурируются два таймера: MDR_TIMER2 и MDR_TIMER3. Таймеры включаются для работы с ШИМ, при этом MDR_TIMER2, канал 1, настраивает работу с зеленым каналом RGB-светодиода. MDR_TIMER3, канал 1, настраивает работу с синим каналом RGB-светодиода. MDR_TIMER3, канал 3, настраивает работу с красным каналом RGB-светодиода. О настройке режима ШИМ в таймерах общего назначения можно подробнее узнать из статьи "Таймеры общего назначения". В приведенном примере для пользователя имеется абстракция, и регулировка яркости каждого канала RGB-светодиода производится при помощи директив #define LED_color_MAX_BRIGHT в файле leds.h проекта (соответственно, меняется значение CCR для сравнения и запуска ШИМ).

После компиляции проекта необходимо перейти в режим отладки комбинацией Ctrl+F5.

Остаётся запустить проект кнопкой F5. RGB-светодиод будет статично гореть согласно настройкам в файле leds.h. Поскольку в составе файлов поддержки имеется также файл .SFR, который содержит информацию об адресах регистров микроконтроллера, к которым можно получить доступ к режиме отладки, можно корректировать яркость светодиодов в реальном времени без перепрограммирования микроконтроллера. Для этого необходимо во время выполнения программы нажать на иконку "System Viewer Windows", как это показано на рисунке 5, а далее открыть окно необходимого таймера, например, MDR_TIMER2. После чего откроется отдельное окно в правой части экрана с содержимым всех регистров блока MDR_TIMER2. Здесь, меняя значение поля регистра CCR1, можно регулировать свечение зеленого канала RGB-светодиода. Аналогичную конфигурацию можно выполнить и для двух других каналов RGB-светодиода, тем самым, можно получить любой цвет.

Рисунок 5 - Регулировка каналов RGB-светодиода в режиме отладки

Настройка и запуск проекта из ПЗУ

Теперь будет рассмотрен процесс запуска данного проекта из внутренней памяти микроконтроллера, которая составляет 1 Мбайт.

Перед работой важно не забыть установить кластер настроек в Select Target на FLASH. Это настроит Keil на работу с внутренней памятью. Показано на рисунке 6.

Рисунок 6 - Выбор проекта для FLASH в Select Target 

Согласно спецификации на данный микроконтроллер, FLASH-память расположена по адресу 0х01000000. Это значение и диапазон (1 Мбайт = 0х100000) нужно указать в Options for Target, во вкладке Target для значений ROM, значения RAM выставляются в соответствии со вторым банком статического ОЗУ в размере 64 Кбайт, находящимся по адресу 0х20010000. Настройка показана на рисунке 7.

Рисунок 7 - Настройки адресов памяти в IDE Keil для работы с FLASH

Теперь необходимо перейти во вкладку Debug. Здесь важно отсутствие файла инициализации, который присутствовал в настройке проекта для работы с ОЗУ, так как проект будет записываться в память микроконтроллера посредством FLM-файла. В настройках программатора нужно выставить в поле"Connect and Reset Pin" параметры, которые показаны на рисунке 8.

Важной особенностью настроек, представленных на рисунке 8 является следующее: в красной рамке окна "Cortex JLink/JTrace Target Driver Setup" выделены параметры, которые влияют на возможность вести отладку по точкам останова, и если данные параметры выставлены не так, как на картинке, при запуске с внутренней памяти FLASH, то в режиме отладки невозможно будет выставлять точки останова. Важно отсутствие галочки именно на опции "Download to Flash".

Рисунок 8 - Настройки вкладки Debug для работы с FLASH

Теперь следует в настройках программатора, вкладка "Flash Download", выставить параметры, представленные на рисунке 9.

Именно здесь задается файл c алгоритмом программирования, добавленный в папку с Keil при установке пака.

Важно также соблюдать достаточное для алгоритма FLM значение Size 0хF000 (на рисунке 9 поле "RAM for Algorithm").

Рисунок 9 - Дополнительные настройки вкладки Debug для работы с FLASH

Во вкладке Utilities важно выбрать Use Target Driver for Flash Programming, поскольку теперь программа будет выполняться из FLASH-памяти. Выставление нужного параметра показано на рисунке 10.

Рисунок 10 - Настройки вкладки Utilities для работы с FLASH

Проект готов к тому, чтобы его записать в микроконтроллер "Электросила". 


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

Теги

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