Files
radar_system/device_firmware/multi_libreVNA_firmware/reproduce/install_windows
Ayzen 62c0266a6b per-point switching: hardware bring-up, profiles, protocol doc
Verified on the bench that the modified master bitstream excites in every stage
and the RF switch routes: 16 traces per sweep, 62 dB between the two switch
positions of one master port, 9.9k measurements/s. Adds the built master image,
two run profiles, a verification script and librevna_protocol.md, and drops the
stale prototype driver copy that the firmware tree still carried.
2026-09-15 14:41:54 +03:00
..

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Переключение стимула внутри частотной точки — что собрать
=========================================================

Матрица 4x4 за одну развёртку: каждый порт мастера измеряется на каждой частоте
дважды, с двумя положениями выходного ключа. Подробное описание —
device_firmware/per_point_switching.md в репозитории.

ЧТО ЗДЕСЬ
---------
  make_files.sh          собирает files\ и SHA256_new.txt из дерева репозитория
  files\                 8 файлов дерева LibreVNA (НЕ в git, генерируется)
  install.cmd            бэкап оригиналов + установка + сборка MCU
  build_mcu.cmd          только сборка MCU (если правки уже стоят)
  backup_original\       появится после install.cmd — оригиналы для отката
  SHA256_new.txt         хеши устанавливаемых файлов для проверки

Изменены: FPGA/VNA/{Sweep,SPIConfig,top}.vhd,
          FPGA/VNA/VNA.xise  <- закреплён Starting Placer Cost Table = 2,
                                без него сборка даёт нарушение тайминга
          Software/VNA_embedded/Application/VNA.cpp,
          Software/VNA_embedded/Application/Drivers/FPGA/FPGA.{cpp,hpp}
Добавлен: FPGA/VNA/Test_Sweep.vhd (тестбенч, в проект ISE не входит)

ПЕРЕД ОТПРАВКОЙ НА WINDOWS запустить на машине с репозиторием:
    bash install_windows/make_files.sh
Каталог files\ не версионируется намеренно: когда он лежал в git, после
переделки Sweep.vhd и закрепления cost table комплект молча остался со старыми
версиями. Генерация из дерева исключает это.

ВАЖНО: ПЕРЕПРОШИВАТЬ НАДО ТОЛЬКО МАСТЕР
---------------------------------------
Слейвы остаются как есть. Хост выставляет им обе порт-стадии в 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_per_point_switching.bin:
   оба проекта пишут в один и тот же top.bin, и следующая сборка его затрёт.
   Именно так был потерян исходный мастер-битстрим.
5. Положить его в ...\reproduce\LibreVNA\FPGA\VNA\

   ВНИМАНИЕ: имя обязательно новое. Лежащий там top_master.bin — копия
   НЕВОСПРОИЗВОДИМОГО битстрима текущей рабочей прошивки, перезаписывать его
   нельзя ни при каких обстоятельствах.

Битстрим невоспроизводим побайтово (place & route недетерминирован плюс
timestamp внутри), так что новый файл будет отличаться от старого при любом
исходе — это нормально.

ШАГ 3. Упаковка .vnafw
----------------------
    cd %USERPROFILE%\Documents\radar_system\device_firmware\reproduce\LibreVNA
    python AssembleFirmware.py --bitstream FPGA\VNA\top_master_per_point_switching.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 и PB6 — положение ключей (порт 1 и
   порт 2, меняются одновременно), 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.