Добрый день!
Использую связку Keil uVision v5.24.2.0 с установленным пакетом поддержки ВК028 + Segger J-Link v9 с добавленным ВК028 + плата макетно+отладочная 1921ВК028.
Проект (управление светодиодами) компилируется без ошибок.
При переходе в сессию отладки, отчёт:
...
JTAG speed 5000 kHz
Erase Done
Programming Done
Verify OK.
* JLink Info: Reset: Halt ... via DEMCR.VC_CORERESET
* JLink Info: Reset: Reset ... via AIRCR.SYSRESETREQ
Application running...
Flash load finished...
И всплывающее окно:
JLink - кортекс-M Error
Cannot access memory!
И сессия отладки закрывается.
Но приложение загружается, после переподачи питания стартует, мигает светодиодами как планировалось.
В настройках "Debug" файл инициализации не указывал.
1) Подскажите пожалуйста - как настроить отладчик?
2) Можно вместо flash подставить ОЗУ0 для отладки? И как это сделать?
К1921ВК028 отладка в Keil.
Модераторы: ea, dav, bkolbov, Alis, pip, _sva_
-
- Сообщения: 2
- Зарегистрирован: 10 апр 2025, 14:13
- Предприятие: АО "Концерн "Гранит-Электрон"
Re: К1921ВК028 отладка в Keil.
В настройках подключения по JTAG укажите меньшую скорость, например, 1000 kHz, или попробуйте выбрать вместо JTAG - интерфейс SWD.Лаврентьев писал(а): ↑15 апр 2025, 09:41 Добрый день!
Использую связку Keil uVision v5.24.2.0 с установленным пакетом поддержки ВК028 + Segger J-Link v9 с добавленным ВК028 + плата макетно+отладочная 1921ВК028.
Проект (управление светодиодами) компилируется без ошибок.
При переходе в сессию отладки, отчёт:
...
JTAG speed 5000 kHz
Erase Done
Programming Done
Verify OK.
* JLink Info: Reset: Halt ... via DEMCR.VC_CORERESET
* JLink Info: Reset: Reset ... via AIRCR.SYSRESETREQ
Application running...
Flash load finished...
И всплывающее окно:
JLink - кортекс-M Error
Cannot access memory!
И сессия отладки закрывается.
Но приложение загружается, после переподачи питания стартует, мигает светодиодами как планировалось.
В настройках "Debug" файл инициализации не указывал.
1) Подскажите пожалуйста - как настроить отладчик?
2) Можно вместо flash подставить ОЗУ0 для отладки? И как это сделать?
Для настройки проекта Keil, расположенного в области ОЗУ необходимо:
1. В настройках проекта на вкладке "Target" в поле "IROM1:" указать адрес памяти ОЗУ 0x20000000 (см. скриншот "Keil_1921VK028_StartRAM_Target.PNG")
2. В настройках проекта на вкладке "Debug" в поле "Initialization File:" указать путь к файлу инициализации "Start_ram.ini" (см. скриншот "Keil_1921VK028_StartRAM_Debug.PNG").
Содержимое файла инициализации "Start_ram.ini":
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
}
Setup(0x20000000); // Get ready to execute image in SRAM or whatever region it is in G,main
Комментарий: необходимо загрузить на форум три файла из вложения:
- Keil_1921VK028_StartRAM_Debug.PNG
- Keil_1921VK028_StartRAM_Target.PNG
- Start_ram.ini
-
- Сообщения: 2
- Зарегистрирован: 10 апр 2025, 14:13
- Предприятие: АО "Концерн "Гранит-Электрон"
Re: К1921ВК028 отладка в Keil.
Здравствуйте!
Спасибо за ответ, отладчик среды Keil заработал.
По 2-му вопросу:
Вы предлагаете разместить код в ОЗУ1 по адресу 0х20000000.
Однако, если посмотреть схему соединения из описания, то видно, что ОЗУ1 не имеет соединения с шиной I-CODE. Это значит, что код не может исполняться из ОЗУ1?
ОЗУ0 имеет подключение, аналогичное встроенной FLASH и м.б. перемычками BOOT[1:0] перенесено в адрес 0. Можно, выставив перемычки BOOT[1:0], линкером разместить код с адреса 0, как для FLASH, но загрузить и исполнить его из ОЗУ0?
Спасибо за ответ, отладчик среды Keil заработал.
По 2-му вопросу:
Вы предлагаете разместить код в ОЗУ1 по адресу 0х20000000.
Однако, если посмотреть схему соединения из описания, то видно, что ОЗУ1 не имеет соединения с шиной I-CODE. Это значит, что код не может исполняться из ОЗУ1?
ОЗУ0 имеет подключение, аналогичное встроенной FLASH и м.б. перемычками BOOT[1:0] перенесено в адрес 0. Можно, выставив перемычки BOOT[1:0], линкером разместить код с адреса 0, как для FLASH, но загрузить и исполнить его из ОЗУ0?
Re: К1921ВК028 отладка в Keil.
Дополнение по второму вопросу:Лаврентьев писал(а): ↑28 апр 2025, 14:25 Здравствуйте!
Спасибо за ответ, отладчик среды Keil заработал.
По 2-му вопросу:
Вы предлагаете разместить код в ОЗУ1 по адресу 0х20000000.
Однако, если посмотреть схему соединения из описания, то видно, что ОЗУ1 не имеет соединения с шиной I-CODE. Это значит, что код не может исполняться из ОЗУ1?
ОЗУ0 имеет подключение, аналогичное встроенной FLASH и м.б. перемычками BOOT[1:0] перенесено в адрес 0. Можно, выставив перемычки BOOT[1:0], линкером разместить код с адреса 0, как для FLASH, но загрузить и исполнить его из ОЗУ0?
ОЗУ1 подключено к ядру через системную шину. И согласно унифицированной карте памяти процессорных ядер арм позволяет исполнять инструкции, но время доступа будет больше, т.к. задействована одна шина и для инструкций и для данных.
Если исполняться из ОЗУ0, то получим макстмальную производительность, так как задействованы две отдельные шины: для чтения кода программы и данных.
Поэтому, возожны различные варианты исполнения из ОЗУ.