[i] Настройки проекта IDE Keil для МК К1986ВЕ8Т (RAM)
В микроконтроллере К1986ВЕ8Т вместо внутренней FLASH памяти используется однократно программируемая память (OTP), в связи с чем для отладки прошивки используется внутренняя ОЗУ (RAM). В данной статье рассмотрены настройки проекта в IDE Keil для отладки программы из внутренней ОЗУ.
Готовые проекты, демонстрирующие работу с периферийными блоками, доступны в Software Pack, директория Examples.
Опции проекта можно открыть через меню 'Project - Options for Target…', либо через Toolbar (Рисунок 1).
Рисунок 1 - Открытие 'Options for Target…' через Toolbar
Содержание
|
1. Device 2. Target 3. Output 4. Listing 5. User 6. C/C++ 7. Asm 8. Linker 9. Debug 9.1 J-Link, окно 'Target device settings' 9.2 Настройки программатора 10. Utilities 11. Manage Run-Time Environment |
1. Device
Рисунок 2 - Options for Target. Вкладка 'Device'
Во вкладке 'Device' для МК К1986ВЕ8Т необходимо выбрать MDR32F8.
2. Target
Рисунок 3 - Options for Target. Вкладка 'Target'
Во вкладке 'Target' указано расположение областей памяти в микроконтроллере. Эти значения также могут использоваться во вкладке 'Linker'. Для сборки прошивки под внутреннюю ОЗУ необходимо указать диапазоны IROM1 и IRAM1 из области 0x2000_0000-0x2000_7FFF (32 Кбайт). Например, можно выбрать следующее разбиение:
- IRAM1 - Start: 0x20000000, Size: 0x5000
- IROM1 - Start: 0x20005000, Size: 0x3000
3. Output
Рисунок 4 - Options for Target. Вкладка 'Output'
Во вкладке 'Output' можно активировать опцию - Create HEX file, которая добавляет после сборки проекта генерирование выходного образа прошивки в формате Intel HEX. Также можно изменить название исполняемого файла в поле 'Name of Executable'.
4. Listing
Рисунок 5 - Options for Target. Вкладка 'Listing'
Во вкладке 'Listing' выставляются различные опции вывода справочной информации при сборке программы. Самым интересным является *.map файл, в котором показано распределение программы и данных в памяти микроконтроллера.
5. User
Рисунок 6 - Options for Target. Вкладка 'User'
Во вкладке 'User' можно задать различные скрипты, которые будут выполняться автоматически перед компиляцией проекта, перед сборкой (Before Build/Rebuild) и после сборки (After Build/Rebuild).
6. C/C++
Рисунок 7 - Options for Target. Вкладка 'C/C++'
Во вкладке C/C++ выбираются опции компиляции, пути к заголовочным файлам (Include Path) и т.д. В строке "Define" можно задать ключи условной компиляции, если они используются в проекте.
При разработке и отладке программ рекомендуется выключать оптимизацию - "-O0". При высоком уровне оптимизации получается более компактный и быстрый код, но из-за применяемых оптимизаций его сложнее отлаживать. Повышение уровня оптимизации лучше оставить до полного окончания разработки и отладки программы.
7. Asm
Рисунок 8 - Options for Target. Вкладка 'Asm'
Во вкладке 'Asm' приведены настройки ассемблера. При работе с ARM Compiler v6 рекомендуется выбирать автоопределение ассемблера - поле 'Assembler Option', значение 'armclang (Auto Select)'. Иначе может быть выведено предупреждение [i] Warning A1950W (armasm is deprecated) после перехода на новую версию Keil 5.42.0.0.
8. Linker
Рисунок 9 - Options for Target. Вкладка 'Linker'
Во вкладке 'Linker' необходимо установить опцию 'Use Memory Layout from Target Dialog', чтобы Keil автоматически генерировал scatter-файл на основе описания областей IROMx/IRAMx из вкладки 'Target'.
9. Debug
Во вкладке 'Debug' необходимо подключить файл инициализации Start.ini, чтобы при старте отладки Keil запустил выполнение программы из внутренней ОЗУ.
Рисунок 10 - Options for Target. Вкладка 'Debug'
Содержание файла Start.ini (входит в примеры проектов, расположенные в Software Pack, Examples):
FUNC void Setup (unsigned int region)
{
region &= 0xFFFFF000;
SP = _RDWORD(region); // Setup Stack Pointer
PC = _RDWORD(region + 4); // Setup Program Counter
_WDWORD(0xE000ED08, region); // Setup Vector Table Offset Register
}
LOAD $L%L INCREMENTAL
Setup(0x20005000); // Get ready to execute image in SRAM or whatever region it is in
g,main
В поле 'Use' выбирается программатор. Поддерживаемые программаторы в IDE Keil приведены в статье [i] Совместимость микроконтроллеров со средами разработки и программаторами. Для перехода к настройкам программатора необходимо нажать кнопку 'Settings'.
9.1 J-Link, окно 'Target device settings'
При первом запуске 'Settings' программатора J-Link открывается окно Target device settings. Поскольку J-Link официально не поддерживает микроконтроллеры Миландр, то необходимо выбрать аналог с корректным указанием ядра из списка и нажать ОК.
В зависимости от микроконтроллера выбор должен быть таким:
-
К1986ВЕ8Т, К1986ВК01GI - "Unspecified Cortex-M4"
-
К1986ВЕ9x, К1901ВЦ1QI - "Unspecified Cortex-M3".
-
К1986ВЕ1x - "Unspecified Cortex-M1",
Рисунок 11 - SEGGER J-Link, Target device settings
Если выбор микроконтроллера был осуществлен неверно, то самый простой способ повторного выбора - это удалить файл JLinkSettings.ini из папки с проектом. После удаления данного файла при открытии 'Settings' программатора J-Link снова открывается окно 'Target device settings' с выбором микроконтроллера.
9.2 Настройки программатора
Сначала необходимо выбрать отладочный интерфейс подключения к плате. Обычно во всех микроконтроллерах с ядрами Cortex-Mx или аналогами доступны два интерфейса - JTAG и SWD. Интерфейс SWD использует меньшее количество выводов для связи, чем JTAG - статья Подключение выводов JTAG в микроконтроллерах.
Например, выбираем Port: JTAG. После выбора порта, если ранее было подключено питание и если все подключено правильно, то в окне справа появится подключенное устройство в 'JTAG Device Chain'. Выбираем рабочую частоту, например, 2 МГц. При необходимости частоту можно увеличить.
В группе 'Connect & Reset Options' рекомендуется установить подключение с предварительным сбросом, при этом сам сброс необходимо выбрать по выводу RESET микроконтроллера. Для разных программаторов данные настройки немного отличаются, ниже приведены примеры для J-Link и ULINK2/CMSIS-DAP.
Рисунок 12 - Options for Target. Вкладка 'Debug', 'Settings->Debug', J-link
Рисунок 13 - Options for Target. Вкладка 'Debug', 'Settings->Debug', ULINK2/CMSIS-DAP
Во вкладке 'Flash Download' выбираются опции программирования (стирание, программирование, верификация). Поскольку прошивка загружается во внутреннюю ОЗУ, то программирование выполнять не нужно, и все опции выключены.
Рисунок 14 - Options for Target. Вкладка 'Debug', 'Settings->Flash Download'
10. Utilities
Рисунок 15 - Options for Target. Вкладка 'Utilities'
Во вкладке 'Utilities' необходимо выбрать 'Use External Tool for Flash Programming', чтобы выключить программирование.
11. Manage Run-Time Environment
Следующий этап - подключение к проекту драйверов ядра, периферийных блоков и отладочной платы, меню 'Project - Manage - Run-Time Environment...'. Например, для проекта 'led_button_exti' из состава Software Pack потребуются: Board Support, CMSIS-CORE, Device-Startup и Drivers-CLKCTRL,PORT.
Рисунок 16 - Manage Run-Time Environment, выбор драйверов
Сохранить статью в PDF