Обновлены readme
This commit is contained in:
		
							parent
							
								
									502046091c
								
							
						
					
					
						commit
						910bf0a585
					
				
							
								
								
									
										116
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										116
									
								
								README.md
									
									
									
									
									
								
							| @ -1,4 +1,11 @@ | ||||
| # DebugTools - Просмотр переменных по указателям | ||||
| ## Содержание | ||||
| 1. [Описание модуля](#программный-модуль-debugtools) | ||||
| 2. [Описание приложения для настройки](#debugvaredit---настройка-переменных) | ||||
| 3. [Описание терминалки для считывания](#debugvarterminal---считывание-переменных-для-tms) | ||||
| 4. [Для разработчиков](#для-разработчиков) | ||||
| 
 | ||||
| # Программный модуль DebugTools | ||||
| Модуль состоит из трех файлов: | ||||
| - **debug_tools.c** - реализация считывания переменных | ||||
| - **debug_tools.h** - объявление всякого для считывания переменных | ||||
| @ -9,11 +16,26 @@ | ||||
| Для чтения переменных можно использовать функции: | ||||
| 
 | ||||
| ```c | ||||
| /* Читает значение переменной по индексу */ | ||||
| int Debug_ReadVar(int var_ind, int32_t *return_long); | ||||
| int Debug_ReadVarName(int var_ind, DebugVarName_t name_ptr); | ||||
| ``` | ||||
| /* Читает имя переменной по индексу */ | ||||
| int Debug_ReadVarName(int var_ind, DebugVarName_t name_ptr, int *length); | ||||
| /* Читает возвращаемый тип (IQ) переменной по индексу */ | ||||
| int Debug_ReadVarReturnType(int var_ind, int *vartype); | ||||
| /* Читает тип переменной по индексу */ | ||||
| int Debug_ReadVarType(int var_ind, int *vartype); | ||||
| 
 | ||||
| 
 | ||||
| /* Читает значение переменной с нижнего уровня */ | ||||
| int Debug_LowLevel_ReadVar(int32_t *return_long); | ||||
| /* Инициализирует отладку нижнего уровня */ | ||||
| int Debug_LowLevel_Initialize(DateTime_t *external_date); | ||||
| /* Читает возвращаемый тип (IQ) низкоуровнено заданной переменной */ | ||||
| int Debug_LowLevel_ReadVarReturnType(int *vartype); | ||||
| /* Читает тип низкоуровнено заданной переменной.*/ | ||||
| int Debug_LowLevel_ReadVarType(int *vartype); | ||||
| ``` | ||||
| 
 | ||||
| Переменные доступные для чтения определяются в **debug_vars.c** (их можно прописывать вручную или генерировать через **DebugVarEdit**): | ||||
| 
 | ||||
| ```c | ||||
| @ -32,6 +54,26 @@ DebugVar_t dbg_vars[] = {\ | ||||
| }; | ||||
| ``` | ||||
| 
 | ||||
| ## LowLevel - Просмотр абсолютно любых переменных | ||||
| Также присутствует утилита `parse_xml.exe`, которая генерирует `.xml` файл с всеми переменными в программе и их адрессами | ||||
| Для её подключения: | ||||
| -  В Pre-Build Steps добавить следующую команду. Это удаление `debug_tools.obj` файла для его перекомпиялции с актуальной датой компиляции | ||||
| ```  | ||||
| cmd /c del /Q "${CWD}\Src\DebugTools\debug_tools.obj"  | ||||
| ``` | ||||
| -  В Post-Build Steps добавить следующую команду. Это: | ||||
|     - формирование с помощью утилиты компилятора `ofd2000` `.xml` файла с полной отладочной информацией. | ||||
|     - формирование отладочной информации в текстовом файле (для получения таймштампа)   | ||||
|     - запуск утилиты `parse_xml.exe` для формирования итогового `<projname>_allVars.xml` с информацией о переменных и адресах | ||||
| 
 | ||||
| ```  | ||||
| "${CG_TOOL_ROOT}/bin/ofd2000" --obj_display=symbols --dwarf --dwarf_display=all --xml --xml_indent=1 --output="${BuildArtifactFileBaseName}_ofd_dump.xml" "${BuildArtifactFilePath}" | ||||
| "${CG_TOOL_ROOT}/bin/ofd2000" "${BuildArtifactFilePath}" > ${CCS_PROJECT_DIR}/bin/temp.txt | ||||
| "${CCS_PROJECT_DIR}/Src/DebugTools/parse_xml/parse_xml.exe" ${BuildArtifactFileBaseName}_ofd_dump.xml ${CCS_PROJECT_DIR}/bin/temp.txt ${BuildArtifactFileBaseName}_allVars.xml"  | ||||
| ``` | ||||
| После, с использованием терминалки можно прочитать любые переменные по адресам. (должен совпадать таймштапм в прошивке и `.xml` файла, иначе контроллер ответит ошибкой) | ||||
| 
 | ||||
| 
 | ||||
| # DebugVarEdit - Настройка переменных | ||||
| **DebugVarEdit** — графическое приложение для Windows, предназначенное для настройки и генерации отладочных переменных (`debug_vars.c`) на основе исходного C-проекта. Работает с `makefile` проекта, сохраняет изменения в XML и позволяет удобно редактировать переменные и их типы через интерфейс. | ||||
| 
 | ||||
| @ -113,6 +155,68 @@ DebugVar_t dbg_vars[] = {\ | ||||
| ``` | ||||
| 
 | ||||
| --- | ||||
| 
 | ||||
| 
 | ||||
| # DebugVarTerminal - Считывание переменных (для TMS) | ||||
| **DebugVarTerminal** — терминалка для считывания переменных по RS-232 протоколу RS_Functions. | ||||
| Программа — один исполняемый файл `DebugVarTerminal.exe`, не требующий установки и дополнительных зависимостей. | ||||
| > Требуется Windows 7 или новее. | ||||
| 
 | ||||
| --- | ||||
| 
 | ||||
| ## Как использовать приложение | ||||
| 
 | ||||
| 1. Запустите **DebugVarTerminal.exe.** | ||||
| 
 | ||||
| 2. Выберите COM Port и скорость Baud. Нажмиите **Open** | ||||
| 
 | ||||
| 3. Для считывания переменных заданных в `*debug_vars.c`: | ||||
|    - Откройте вкладку **Watch**. | ||||
|    - Выберите стартовый индекс переменной и количество переменных для считывания. | ||||
|    - Нажмите одну из кнопок: | ||||
|       - **Update Service** - считывает информацию об именах и возвращаемых IQ типах переемнных | ||||
|       - **Read Value(s)** - считывает и форматирует значения переменных в соответствии с IQ типами | ||||
|       - **Start Polling** - начать опрос выбранных переменных с заданным интервалом. При старте опроса, имя и тип переменных считываются автоматически | ||||
| 
 | ||||
| 4. Для считывания переменных по адресам: | ||||
|    - Откройте вкладку **LowLevel**. | ||||
|    - Выберите `projname_allVars.xml` в папке bin рядом с бинарником. Из него подгрузятся все доступные для считывания переменные | ||||
|    - Выберите переменные кнопкной **Выбрать переменные** | ||||
|    - Задайте IQ тип и возвращаемый IQ тип если требуется | ||||
|    - Нажмите одну из кнопок: | ||||
|       - **Read Once** - считывает выбранные переменные один раз | ||||
|       - **Start Polling** - начать опрос выбранных переменных с заданным интервалом | ||||
| 
 | ||||
| 5. Запись в CSV: | ||||
|    - Можно записывавать считываемые переменные в CSV файл, с разделителем `;` | ||||
|    - Нажмите кнопку **Начать запись в CSV** | ||||
|    - Когда нужная выборка будет накоплена нажмите **Остаовить запись в CSV** | ||||
|    - Нажмите **Выбрать файл CSV** для выбора пути для сохранения файла и нажмите **Сохранить данные в CSV** чтобы сохранить | ||||
|    - Генерируется совместимый с LogView `.csv` файл | ||||
| 
 | ||||
|    Все параметры выбираются из выпадающих списков, которые можно настроить, чтобы отображались только нужные опции. | ||||
| 
 | ||||
| --- | ||||
| 
 | ||||
| ## Возможности | ||||
| Режим "Watch": | ||||
| - Быстрое и удобное чтение одной или нескольких переменных по их индексу. | ||||
| - Автоматическое получение имен, типов и параметров масштабирования (IQ) переменных. | ||||
| - Запуск постоянного опроса для отслеживания изменений значений в реальном времени. | ||||
| - Наглядное представление данных в таблице с отображением как сырых, так и масштабированных значений. | ||||
| Режим "LowLevel": | ||||
| - Прямое чтение данных из памяти по заданным адресам. | ||||
| - Возможность указания типов указателей, IQ-масштабирования и форматов возвращаемых данных. | ||||
| - Аналогично режиму "Watch", поддерживается постоянный опрос выбранных низкоуровневых переменных. | ||||
| - Умное автодополнение имён переменных и полей структур. | ||||
| Логирование в CSV | ||||
| - Записывайте все полученные значения в файл формата CSV для последующего анализа. | ||||
| - Легкое управление записью: запуск, остановка и сохранение данных в любой момент. | ||||
| 
 | ||||
| --- | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| --- | ||||
| 
 | ||||
| # Для разработчиков | ||||
| @ -124,17 +228,23 @@ Src | ||||
| ├── build/ | ||||
| │   └── build_and_clean.py	  # Билдинг проекта в .exe (через nuitka или pyinstaller) | ||||
| ├── DebugVarEdit_GUI.py       # Главное окно | ||||
| ├── tms_debugvar_term.py      # Терминал DebugVarTerminal | ||||
| ├── tms_debugvar_lowlevel.py  # Виджет для выбора переменных для LowLevel Watch | ||||
| ├── 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 | ||||
| ├── allvars_xml_parser.py     # Парсинг XML со всеми переменными и структурами | ||||
| ├── csv_logger.py             # Логирование переменных в CSV | ||||
| ├── myXML.py                  # Утилиты для XML | ||||
| ├── makefile_parser.py     	  # Парсинг makefile на .c/.h файлы | ||||
| ├── var_setup.py              # Подготовка переменных для окна выбора переменных | ||||
| ├── path_hints.py             # Подсказки для автодополнения путей переменных | ||||
| ├── libclang.dll              # Бибилиотека clang | ||||
| ├── icon.ico                  # Иконка | ||||
| 
 | ||||
| ``` | ||||
| 
 | ||||
| ### Зависимости | ||||
| @ -161,7 +271,7 @@ Src | ||||
| - Очищает временные папки после сборки: | ||||
|   - `build_temp` | ||||
|   - `__pycache__` | ||||
|   - `DebugVarEdit_GUI.*` | ||||
|   - `<MAIN_SCRIPT_NAME>.*` | ||||
| 
 | ||||
| > Все пути, имена файлов, временные папки и выбор между Nuitka и PyInstaller можно настроить в начале файла `build_and_clean.py`. | ||||
| 
 | ||||
|  | ||||
| @ -1,3 +1,4 @@ | ||||
| 
 | ||||
| # Для разработчиков | ||||
| 
 | ||||
| ### Структура проекта: | ||||
| @ -7,31 +8,37 @@ Src | ||||
| ├── build/ | ||||
| │   └── build_and_clean.py	  # Билдинг проекта в .exe (через nuitka или pyinstaller) | ||||
| ├── DebugVarEdit_GUI.py       # Главное окно | ||||
| ├── tms_debugvar_term.py      # Терминал DebugVarTerminal | ||||
| ├── tms_debugvar_lowlevel.py  # Виджет для выбора переменных для LowLevel Watch | ||||
| ├── 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 | ||||
| ├── allvars_xml_parser.py     # Парсинг XML со всеми переменными и структурами | ||||
| ├── csv_logger.py             # Логирование переменных в CSV | ||||
| ├── myXML.py                  # Утилиты для XML | ||||
| ├── makefile_parser.py     	  # Парсинг makefile на .c/.h файлы | ||||
| ├── var_setup.py              # Подготовка переменных для окна выбора переменных | ||||
| ├── path_hints.py             # Подсказки для автодополнения путей переменных | ||||
| ├── libclang.dll              # Бибилиотека clang | ||||
| ├── icon.ico                  # Иконка | ||||
| 
 | ||||
| ``` | ||||
| 
 | ||||
| ### Зависимости | ||||
| 
 | ||||
| Для запуска приложения: | ||||
| - **Python 3.7+** | ||||
| - **clang** — используется для парсинга C-кода (требуется `libclang.dll`) | ||||
| - **clang** — используется для парсинга C-кода (требуется `libclang.dll`, лежит в папке Src) | ||||
| - **PySide2** — GUI-фреймворк | ||||
| - **lxml** — работа с XML | ||||
| > Python 3.7 и PySide2 рекомендуется для совместимости с Windows 7 | ||||
| 
 | ||||
| Для сборки `.exe`: | ||||
| - **Nuitka** — создает полностью автономный `.exe` без внешних зависимостей | ||||
| - **PyInstaller** — создает `.exe` с зависимостью от `pythonXX.dll` (Python должен быть установлен) | ||||
| - **PyInstaller** — создает `.exe` с зависимостью от `pythonXX.dll` (Python должен быть установлен для запуска `.exe`) | ||||
| 
 | ||||
| 
 | ||||
| ### Сборка: | ||||
| @ -44,12 +51,12 @@ Src | ||||
| - Очищает временные папки после сборки: | ||||
|   - `build_temp` | ||||
|   - `__pycache__` | ||||
|   - `DebugVarEdit_GUI.*` | ||||
|   - `<MAIN_SCRIPT_NAME>.*` | ||||
| 
 | ||||
| > Все пути, имена файлов, временные папки и выбор между Nuitka и PyInstaller можно настроить в начале файла `build_and_clean.py`. | ||||
| 
 | ||||
| ### Установка зависимостей | ||||
| 
 | ||||
| ```bash | ||||
| pip install PySide2 lxml nuitka pyinstaller | ||||
| pip install clang PySide2 lxml nuitka pyinstaller | ||||
| ``` | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user