From dfb285ab93810da3241edae34823dd0f73c8bb15 Mon Sep 17 00:00:00 2001 From: Ayzen Date: Thu, 10 Sep 2026 12:48:52 +0300 Subject: [PATCH] add windows install/build scripts for per-point switching MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Скрипты, которыми правки ставятся в дерево LibreVNA на сборочной машине и собирается прошивка MCU мастера её штатным тулчейном (STM32CubeIDE 1.17.0, gcc 12.3.1). Оригиналы шести изменённых файлов сохраняются в backup_original, так что откат — обратный xcopy. Проверено на месте: все 7 файлов легли побайтово (сверил sha256 каждого), прошивка мастера собралась, эталон предыдущей прошивки остался цел в extracted/master_stm32.bin. Битстрим FPGA этими скриптами не собирается — нужна ISE 14.7 в виртуалке, процедура описана в README.txt и per_point_switching.md. Co-Authored-By: Claude Opus 5 (1M context) --- .../reproduce/install_windows/README.txt | 80 +++++++++++++++++++ .../reproduce/install_windows/SHA256_new.txt | 7 ++ .../reproduce/install_windows/install.cmd | 41 ++++++++++ 3 files changed, 128 insertions(+) create mode 100644 device_firmware/multi_libreVNA_firmware/reproduce/install_windows/README.txt create mode 100644 device_firmware/multi_libreVNA_firmware/reproduce/install_windows/SHA256_new.txt create mode 100644 device_firmware/multi_libreVNA_firmware/reproduce/install_windows/install.cmd diff --git a/device_firmware/multi_libreVNA_firmware/reproduce/install_windows/README.txt b/device_firmware/multi_libreVNA_firmware/reproduce/install_windows/README.txt new file mode 100644 index 0000000..578ac00 --- /dev/null +++ b/device_firmware/multi_libreVNA_firmware/reproduce/install_windows/README.txt @@ -0,0 +1,80 @@ +Переключение стимула внутри частотной точки — что собрать +========================================================= + +Матрица 4x4 за одну развёртку: каждый порт мастера измеряется на каждой частоте +дважды, с двумя положениями выходного ключа. Подробное описание — +device_firmware/per_point_switching.md в репозитории. + +ЧТО ЗДЕСЬ +--------- + files\ 7 изменённых файлов дерева LibreVNA + install.cmd бэкап оригиналов + установка + сборка MCU + build_mcu.cmd только сборка MCU (если правки уже стоят) + backup_original\ появится после install.cmd — оригиналы для отката + SHA256_new.txt хеши установленных файлов для проверки + +Изменены: FPGA/VNA/{Sweep,SPIConfig,top}.vhd, + Software/VNA_embedded/Application/VNA.cpp, + Software/VNA_embedded/Application/Drivers/FPGA/FPGA.{cpp,hpp} +Добавлен: FPGA/VNA/Test_Sweep.vhd (тестбенч, в проект ISE не входит) + +ВАЖНО: ПЕРЕПРОШИВАТЬ НАДО ТОЛЬКО МАСТЕР +--------------------------------------- +Слейвы остаются как есть. Хост выставляет им обе порт-стадии в 7, а стоковое +сравнение "stage_cnt = порт-стадия" при счётчике 0..3 с семёркой не совпадает +никогда — то есть слейв не излучает и без доработки, а четыре стадии на точку +отрабатывает по тому же полю STAGES, что и раньше. + +Значит slave-битстрим пересобирать не нужно, а он побайтово невоспроизводим. + +ШАГ 1. Установка правок и сборка MCU +------------------------------------ + install.cmd + +Собирается мастер тулчейном STM32CubeIDE 1.17.0 (gcc 12.3.1). +Результат: ...\reproduce\LibreVNA\Software\VNA_embedded\build\VNA_embedded.bin + +ШАГ 2. Битстрим FPGA мастера (Xilinx ISE 14.7) +---------------------------------------------- +1. Папка FPGA уже скопирована в C:\shared\LibreVNA\FPGA (внутри гостя это + /home/ise/shared/LibreVNA/FPGA). +2. В ISE открыть VNA.xise — проект МАСТЕРА. Не VNA_external_lo_slave.xise. +3. Process -> Generate Programming File. +4. Забрать top.bin СРАЗУ и переименовать в top_master.bin: оба проекта пишут в + один и тот же файл, и следующая сборка его затрёт. Именно так был потерян + исходный мастер-битстрим. +5. Положить top_master.bin в ...\reproduce\LibreVNA\FPGA\VNA\ + +Битстрим невоспроизводим побайтово (place & route недетерминирован плюс +timestamp внутри), так что новый файл будет отличаться от старого при любом +исходе — это нормально. + +ШАГ 3. Упаковка .vnafw +---------------------- + cd %USERPROFILE%\Documents\radar_system\device_firmware\reproduce\LibreVNA + python AssembleFirmware.py --bitstream FPGA\VNA\top_master.bin ^ + --mcu Software\VNA_embedded\build\VNA_embedded.bin ^ + --output ..\combined_per_point_switching.vnafw + +Имя намеренно новое: НЕ перезаписывайте combined.vnafw, пока не проверите всё на +железе — это ваш путь отката. + +ШАГ 4. Заливка +-------------- +LibreVNA-GUI: Device -> Firmware Update, скормить .vnafw целиком. + +ШАГ 5. Проверка +--------------- +1. Сначала СТАРЫЙ режим (stimulus_switch_positions: 1) — должен работать ровно + как раньше. Только потом включать переключение. +2. Осциллографом на контроллере ключа: PB2 — положение ключа, PB5 — импульс на + каждое исправление чётности (в норме молчит). На одной частоте должно быть + четыре стадии и два периода A B A B. +3. По USB CDC контроллера, остановив развёртку: parity corrections : 0 и + stages per point : 4. + +ОТКАТ +----- + xcopy /s /y backup_original\* ^ + "%USERPROFILE%\Documents\radar_system\device_firmware\reproduce\LibreVNA\" +и залить обратно старый combined.vnafw. diff --git a/device_firmware/multi_libreVNA_firmware/reproduce/install_windows/SHA256_new.txt b/device_firmware/multi_libreVNA_firmware/reproduce/install_windows/SHA256_new.txt new file mode 100644 index 0000000..918a044 --- /dev/null +++ b/device_firmware/multi_libreVNA_firmware/reproduce/install_windows/SHA256_new.txt @@ -0,0 +1,7 @@ +7b59127f46dc16d3a22de4cff02a8499b51465ba29bd5f0be491149022828a8a ./FPGA/VNA/SPIConfig.vhd +624a5324ae13fd87285e59edea301ffb5e7eab8f2fed99418759fca52401b3b0 ./FPGA/VNA/Sweep.vhd +02cc0cf7fe2e253a253843578ab6195f1300702afb00c4ca43b3dbc8df118183 ./FPGA/VNA/Test_Sweep.vhd +e70da2b4216862a44b12e4cbde951442ccf1a4b919103fcdd4010613b43cfe46 ./FPGA/VNA/top.vhd +e12a9be4eee75d8b39b4b21fa7788f310d87ec22ae068ae7e82de9df91555db4 ./Software/VNA_embedded/Application/Drivers/FPGA/FPGA.cpp +db3ad784c1b1e912c7986f98616585b4fe5d2e0c995d9c66268f756ec4d176ad ./Software/VNA_embedded/Application/Drivers/FPGA/FPGA.hpp +fb116ff5aaf4161052e77837ac78a6824833e87372a6ce5dd142e0240fc17379 ./Software/VNA_embedded/Application/VNA.cpp diff --git a/device_firmware/multi_libreVNA_firmware/reproduce/install_windows/install.cmd b/device_firmware/multi_libreVNA_firmware/reproduce/install_windows/install.cmd new file mode 100644 index 0000000..21b771e --- /dev/null +++ b/device_firmware/multi_libreVNA_firmware/reproduce/install_windows/install.cmd @@ -0,0 +1,41 @@ +@echo off +rem Установка правок "переключение стимула внутри частотной точки" в дерево LibreVNA. +rem Оригиналы сохраняются в backup_original\ с той же структурой каталогов, +rem поэтому откат — это xcopy /s /y backup_original\* в дерево. +setlocal +set STAGE=%~dp0files +set ROOT=%USERPROFILE%\Documents\radar_system\device_firmware\reproduce\LibreVNA +set BACKUP=%~dp0backup_original + +if not exist "%ROOT%\Software\VNA_embedded\Makefile" ( + echo ОШИБКА: дерево LibreVNA не найдено в %ROOT% + exit /b 1 +) + +echo === Резервные копии оригиналов === +set FPGADIR=%BACKUP%\FPGA\VNA +set DRVDIR=%BACKUP%\Software\VNA_embedded\Application\Drivers\FPGA +set APPDIR=%BACKUP%\Software\VNA_embedded\Application +if not exist "%FPGADIR%" mkdir "%FPGADIR%" +if not exist "%DRVDIR%" mkdir "%DRVDIR%" +if not exist "%APPDIR%" mkdir "%APPDIR%" + +copy /y "%ROOT%\FPGA\VNA\Sweep.vhd" "%FPGADIR%\" >nul || exit /b 1 +copy /y "%ROOT%\FPGA\VNA\SPIConfig.vhd" "%FPGADIR%\" >nul || exit /b 1 +copy /y "%ROOT%\FPGA\VNA\top.vhd" "%FPGADIR%\" >nul || exit /b 1 +copy /y "%ROOT%\Software\VNA_embedded\Application\Drivers\FPGA\FPGA.cpp" "%DRVDIR%\" >nul || exit /b 1 +copy /y "%ROOT%\Software\VNA_embedded\Application\Drivers\FPGA\FPGA.hpp" "%DRVDIR%\" >nul || exit /b 1 +copy /y "%ROOT%\Software\VNA_embedded\Application\VNA.cpp" "%APPDIR%\" >nul || exit /b 1 +echo 6 файлов сохранено в backup_original\ + +echo === Установка новых файлов === +xcopy /s /y "%STAGE%\*" "%ROOT%\" >nul || exit /b 1 +echo 7 файлов установлено (6 изменённых + Test_Sweep.vhd) + +echo === Сборка прошивки MCU мастера === +call "%~dp0build_mcu.cmd" +if errorlevel 1 exit /b 1 + +echo. +echo Дальше — битстрим FPGA в ISE, см. README.txt +endlocal