61319

[i] Настройки проекта IDE Keil для МК К1986ВЕ8Т (RAM)

Дата последнего изменения: 01.12.2025 12:26:20

В микроконтроллере К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

Теги

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