доработана демо-терминалка для считывания tms переменных и встроена в DebugVarEdit  | 
			||
|---|---|---|
| Src | ||
| .gitignore | ||
| debug_tools.c | ||
| debug_tools.h | ||
| debug_vars_example.c | ||
| DebugVarEdit.exe | ||
| README.md | ||
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 или новее.
Как использовать приложение
- 
Запустите DebugVarEdit.exe.
 - 
Укажите пути и контроллер:
- Путь к XML — новый или существующий файл настроек переменных;
 - Путь к проекту — путь к корню проека (папка, которая является корнем для проекта в Code Composer);
 - Путь к makefile — путь к 
makefileотносительно корня проекта; - Путь для debug_vars.c — папка, куда будет сгенерирован файл 
debug_vars.cс переменными. - МК — TMS или STM. Они отличаются размером int, и также принятыми кодировками файлов (utf-8/cp1251)
 
 - 
Нажмите Сканировать переменные:
- Программа проанализирует исходники, указанные в makefile, и найдёт все переменные.
 - Результат сохранится в двух XML-файлах:
structs.xml— информация обо всех структурах и typedef;<ваш_файл>.xml— список всех найденных переменных.
 
 - 
Нажмите Добавить переменные:
- В левой таблице отображаются все найденные переменные.
Для добавления переменной в проект дважды кликните по ней или нажмите кнопку>, чтобы переместить в правую таблицу. - В правой таблице находятся переменные, выбранные для использования.
Чтобы убрать переменную из проекта, переместите её обратно в левую таблицу двойным кликом или кнопкой<. - После выбора переменных нажмите Применить, чтобы обновить основной список переменных и включить их в проект.
 
 - В левой таблице отображаются все найденные переменные.
 - 
Настройте параметры выбранных переменных:
- En — включение или отключение переменной для генерации;
 - Base Type — базовый тип переменной (например, int8, uint16 и т.д.);
 - IQ Type — формат IQ, если применимо;
 - Return Type — формат возвращаемого значения (IQ-тип или целочисленный);
 - Shortname — короткое имя переменной для для терминалки.
 
Все параметры выбираются из выпадающих списков, которые можно настроить, чтобы отображались только нужные опции.
 - 
Нажмите Сгенерировать файл для создания файла
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