Keil System Viewer - просмотр содержимого регистров микроконтроллера


В четвертой версии Keil uVision посмотреть состояние портов ввода-вывода в режиме отладки можно было открыв окно из вкладки, например: Peripherials -> General Purpose IO -> GPIOA . В пятой версии такое решение "из коробки" убрали, но сделали возможность подключения внешнего файла с описанием регистров периферийных устройств для их отображения отладчиком.

Информация из help-файла:

Вкладка System Viewer отображает информацию о регистрах периферийных устройств при отладке приложения. Механизмом отображения информации о регистрах периферийных устройств является файл регистра периферийных устройств. Эти файлы называются в соответствии с устройством или серией устройств, к которым они принадлежат. Файлы расположены в папке ..\ARM\SFD\vendor\device_series и имеют расширение *.SFR.

Устройства, поддерживаемые MDK, настроены на автоматическое отображение информации о регистрации периферийных устройств. Однако, если файл регистрации периферийных устройств отсутствует, вы можете добавить этот файл в базу данных устройств или в проект, как описано ниже.


Как накрафтить sfr-файл

Для начала необходимо найти svd-файл (System View Description) - файл описания системного представления. Эти файлы предоставляются производителями микроконтроллеров и содержат информацию о регистрах периферии и пр. в виде обычного xml-файла. Информация используется в отладчике различных сред разработки для отображения состояния устройств микроконтроллера.


Вариант 1: найти требуемый файл в среде Keil uVision.

-  Поиском в проводнике в каталоге установленного Keil'а выбрать нужный файл вида <Имя_семейства_микроконтроллера>.svd, или

-  В окне свойств проекта "Options for Target ..." на вкладке "Target" (поставив галочку "Use custom file") кнопкой выбора открыть каталог "System Viewer File". В каталоге по умолчанию установлен фильтр на *.sfr-файлы. Переключить на All Files. Должны отобразиться svd-файлы.

Найденые в Keil'е (версии 5.41 2024 года) файлы оказались 2016 года.


Вариант 2: найти требуемый файл в среде STM32Cube.

При установленном CUBE от STMicroelectronics, простейший поиск в проводнике находит в недрах CubeIDE нужный файл. Например: STM32F103.svd.


Выбрать файл одного из двух вариантов и преобразовать его в sfr-формат.

В пакете Keil'а есть утилита: System View Description Converter (SVDConv), которая расположена: Keil_v5/UV4/SVDConv.exe

Копируем в папку с утилитой найденный svd-файл. Копируем именно svd-файл в папку с утилитой, т.к. запуск утилиты в другом месте не приводит к генерации sfr-файла (видимо использует другие файлы этого каталога).

Сделать bat-файл или с помощью Total Commander сформировать командную строку по образцу:

SVDConv  <SVD file>  --generate=sfr

Для платы Blue pill командная строка выглядит так:

SVDConv.exe  STM32F103.svd  --generate=sfr

Запустить. В результате получим два файла, один из которых требуемый .sfr

Разместить файлы в каталоге, рекомендованном Keil. Примерно так: C:\Keil_v5\ARM\SFD\ST\STM32F1xx\STM32F103.sfr

Путь должен совпадать [но это не точно, не проверял] с нижней строкой в окне: File -> Device Database... -> Device Database

Подключить файл к проекту в окне "Options for Target ..." на вкладке "Target" (поставив галочку "Use custom file"):

Теперь в режиме отладки доступно меню: System Viwer Windows:

и окно просмотра состояния регистров периферийных устройств: