add windows install/build scripts for per-point switching
Скрипты, которыми правки ставятся в дерево 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) <noreply@anthropic.com>
This commit is contained in:
@@ -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.
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
Reference in New Issue
Block a user