Go to file
2025-07-19 18:17:00 +03:00
parse_xml Начата работа над lowlevel терминалкой (по адресам из xml) 2025-07-19 18:01:40 +03:00
Src Улучшена скорость полла Watch (переделано формирование таблицы) 2025-07-19 18:17:00 +03:00
.gitignore добавлен exe для парса всех переменных из .out 2025-07-19 11:36:32 +03:00
debug_tools.c Начата работа над lowlevel терминалкой (по адресам из xml) 2025-07-19 18:01:40 +03:00
debug_tools.h Начата работа над lowlevel терминалкой (по адресам из xml) 2025-07-19 18:01:40 +03:00
DebugVarEdit.exe структурирован код debug_tools 2025-07-19 10:56:46 +03:00
README.md + пример debug_vars.c 2025-07-17 09:26:57 +03:00

DebugTools - Просмотр переменных по указателям

Модуль состоит из трех файлов:

  • debug_tools.c - реализация считывания переменных
  • debug_tools.h - объявление всякого для считывания переменных
  • debug_vars.c - определение массива считываемых переменных

Этот модуль предоставляет функциональность для чтения значений переменных во встроенной системе, включая работу с IQ-форматами, защиту доступа и проверку диапазонов памяти.

Для чтения переменных можно использовать функции:

int Debug_ReadVar(int var_ind, int32_t *return_long);
int Debug_ReadVarName(int var_ind, DebugVarName_t name_ptr);

Переменные доступные для чтения определяются в debug_vars.c (их можно прописывать вручную или генерировать через DebugVarEdit):

// Определение массива с указателями на переменные для отладки
int DebugVar_Qnt = 5;
#pragma DATA_SECTION(dbg_vars,".dbgvar_info")
//												pointer_type    iq_type			return_iq_type  short_name
DebugVar_t dbg_vars[] = {\
{(uint8_t *)&freqTerm,                         	pt_float,       t_iq_none,      t_iq10,         "freqT"              }, \
{(uint8_t *)&ADC_sf[0][0],                      pt_int16,       t_iq_none,      t_iq_none,      "ADC_sf00"           }, \
{(uint8_t *)&ADC_sf[0][1],                      pt_int16,       t_iq_none,      t_iq_none,      "ADC_sf01"           }, \
{(uint8_t *)&ADC_sf[0][2],                      pt_int16,       t_iq_none,      t_iq_none,      "ADC_sf02"           }, \
{(uint8_t *)&ADC_sf[0][3],                      pt_int16,       t_iq_none,      t_iq_none,      "ADC_sf03"           }, \
{(uint8_t *)&Bender[0].KOhms,                   pt_uint16,      t_iq,      		t_iq10,      	"Bend0.KOhm"         }, \
{(uint8_t *)&Bender[0].Times,                   pt_uint16,      t_iq_none,      t_iq_none,      "Bend0.Time"         }, \
};

DebugVarEdit - Настройка переменных

DebugVarEdit — графическое приложение для Windows, предназначенное для настройки и генерации отладочных переменных (debug_vars.c) на основе исходного C-проекта. Работает с makefile проекта, сохраняет изменения в XML и позволяет удобно редактировать переменные и их типы через интерфейс.

Программа — один исполняемый файл DebugVarEdit.exe, не требующий установки и дополнительных зависимостей.

Требуется Windows 7 или новее.


Как использовать приложение

  1. Запустите DebugVarEdit.exe.

  2. Укажите пути и контроллер:

    • Путь к XML — новый или существующий файл настроек переменных;
    • Путь к проекту — путь к корню проека (папка, которая является корнем для проекта в Code Composer);
    • Путь к makefile — путь к makefile относительно корня проекта;
    • Путь для debug_vars.c — папка, куда будет сгенерирован файл debug_vars.c с переменными.
    • МК — TMS или STM. Они отличаются размером int, и также принятыми кодировками файлов (utf-8/cp1251)
  3. Нажмите Сканировать переменные:

    • Программа проанализирует исходники, указанные в makefile, и найдёт все переменные.
    • Результат сохранится в двух XML-файлах:
      • structs.xml — информация обо всех структурах и typedef;
      • аш_файл>.xml — список всех найденных переменных.
  4. Нажмите Добавить переменные:

    • В левой таблице отображаются все найденные переменные.
      Для добавления переменной в проект дважды кликните по ней или нажмите кнопку >, чтобы переместить в правую таблицу.
    • В правой таблице находятся переменные, выбранные для использования.
      Чтобы убрать переменную из проекта, переместите её обратно в левую таблицу двойным кликом или кнопкой <.
    • После выбора переменных нажмите Применить, чтобы обновить основной список переменных и включить их в проект.
  5. Настройте параметры выбранных переменных:

    • En — включение или отключение переменной для генерации;
    • Base Type — базовый тип переменной (например, int8, uint16 и т.д.);
    • IQ Type — формат IQ, если применимо;
    • Return Type — формат возвращаемого значения (IQ-тип или целочисленный);
    • Shortname — короткое имя переменной для для терминалки.

    Все параметры выбираются из выпадающих списков, которые можно настроить, чтобы отображались только нужные опции.

  6. Нажмите Сгенерировать файл для создания файла debug_vars.c с выбранными переменными.


Возможности

  • Загрузка и сохранение настроек переменных в XML-файлах.
  • Автоматическое определение исходных файлов с переменными для удобства работы.
  • Редактирование переменных: включение, короткого имени и типов через удобные списки.
  • Подсветка ошибок при вводе (неправильные имена, слишком длинные короткие имена).
  • Быстрая фильтрация переменных по столбцам.
  • Автоматическая генерация файла debug_vars.c с выбранными переменными.
  • Возможность сразу открыть сгенерированный файл в редакторе.
  • Умное автодополнение имён переменных и полей структур.

Пример XML-файла

<project proj_path="C:/myproj" makefile_path="Debug/Makefile" structs_path="Src/DebugTools/structs.xml">
  <variables>
    <var name="g_myvar">
      <enable>true</enable>
      <show_var>true</show_var>
      <shortname>myv</shortname>
      <pt_type>pt_float</pt_type>
      <iq_type>t_iq24</iq_type>
      <return_type>t_iq24</return_type>
      <type>float</type>
      <file>Src/main/main.c</file>
      <extern>true</extern>
      <static>false</static>
    </var>
  </variables>
</project>


Для разработчиков

Структура проекта:

Src
├── build/
│   └── build_and_clean.py	# Билдинг проекта в .exe (через nuitka или pyinstaller)
├── DebugVarEdit_GUI.py     # Главное окно
├── var_table.py        	# Таблица выбранных переменных
├── var_selector_window.py 	# Окно выбора переменных
├── var_selector_table.py  	# Таблица переменных в окне выбора переменных
├── scan_progress_gui.py   	# Отображение процесса сканирования переменных 
├── scan_vars.py           	# Сканирование переменных среди .c/.h файлов
├── generate_debug_vars.py 	# Генерация debug_vars.c
├── myXML.py                # Утилиты для XML
├── makefile_parser.py     	# Парсинг makefile на .c/.h файлы
├── var_setup.py            # Подготовка переменных для окна выбора переменных
├── libclang.dll            # Бибилиотека clang
├── icon.ico                # Иконка

Зависимости

Для запуска приложения:

  • Python 3.7+
  • clang — используется для парсинга C-кода (требуется libclang.dll, лежит в папке Src)
  • PySide2 — GUI-фреймворк
  • lxml — работа с XML

Python 3.7 и PySide2 рекомендуется для совместимости с Windows 7

Для сборки .exe:

  • Nuitka — создает полностью автономный .exe без внешних зависимостей
  • PyInstaller — создает .exe с зависимостью от pythonXX.dll (Python должен быть установлен для запуска .exe)

Сборка:

Если вы хотите собрать DebugVarEdit.exe самостоятельно из исходников, используйте скрипт build/build_and_clean.py. Он автоматически собирает проект с помощью Nuitka или PyInstaller:

  • Собирает проект в DebugVarEdit.exe в корневой папке.
  • Включает:
    • все необходимые .dll (например, libclang.dll),
    • иконку (icon.ico),
    • плагины PySide2.
  • Очищает временные папки после сборки:
    • build_temp
    • __pycache__
    • DebugVarEdit_GUI.*

Все пути, имена файлов, временные папки и выбор между Nuitka и PyInstaller можно настроить в начале файла build_and_clean.py.

Установка зависимостей

pip install clang PySide2 lxml nuitka pyinstaller