Нативный Zynq Ethernet для DSView
Драйвер регистрирует сетевой прибор в списке DSView. Через нативные Run и Stop он читает каналы по TCP (ZLA1/ZLS1) или UDP (ZLT1/ZLB1/ZLP1/ZLP2/ZLR1). Фронты декодируются из тех же отсчётов, которые получает экран DSView. Для RJ2 драйвер запрашивает буфер сокета 32 МиБ и восстанавливает порядок отсчётов в окне на 16 384 UDP-пакета. При разрыве запись сохраняет непрерывный фрагмент до пропущенного пакета.
Для сборки нужны MSYS2 UCRT64 и зависимости из
основного рецепта. Исходный DSView берётся из
upstream.
Рецепт применяет патчи SETGUI и ethernet.patch, копирует драйвер,
дисковый писатель и заголовки, затем собирает полный runtime.
git clone https://github.com/DreamSourceLab/DSView.git build/dsview-upstream
git -C build/dsview-upstream checkout 2e9e2c8e726df4ef5687d39b83d4f797cc44b574
python tools/dsview/zynq-ethernet/build.py --msys-root C:/msys64 --output build/dsview
Для SETGUI положите полный каталог dsview рядом с приложением.
Внутри DSView нажмите Zynq Ethernet…, введите IPv4, выберите
режим и используйте обычные настройки частоты, длительности и каналов.
С прошивкой ZLP2 список частот учитывает число включённых каналов.
Для Zynq RJ2 режим выбирается через Options → Operation Mode.
FPGA Snapshot (Advanced) передаёт окно из BRAM после аппаратного
срабатывания. Глубина до 65 536 отсчётов, до 200 Мвыб/с на всех
восьми каналах. ZLT1 включает меню Advanced: до 16 стадий, AND/OR,
инверсию, число совпадений, смежные совпадения и Serial Trigger
с условиями Start/Stop/Clock и шаблоном данных. Буфер хранит
предысторию по положению триггера. В 16-позиционных полях DSView
входы D0–D7 — восемь правых позиций.
- Buffer Mode пишет один ZIP64 DSL порциями до Stop. Экран показывает ожидание триггера и длительность записи после его срабатывания. Полный захват виден после закрытия файла.
- Stream Mode → Single пишет выбранную длительность до 60 минут и показывает текущее окно при записи. После окончания график переключается на полный файл. Repetitive повторяет захваты, Loop показывает поток в кольцевом окне.
Options → Max Height задаёт высоту дорожек от 1X до 5X. Перетаскивание двойной черты под меткой канала меняет высоту этой дорожки. Оно доступно для всех цифровых источников: Demo, USB, Zynq, обычных файлов DSL и записей RJ2. Графики PWM изменяют высоту таким же жестом. Текстовые поля анализаторов имеют фиксированную высоту по размеру шрифта: между заголовком и полем, а также между полем и следующим заголовком остаётся 2 пикселя. Высота входных каналов, Max Height и растягивание PWM не увеличивают эти промежутки. Нижнюю границу можно захватить по всей ширине заголовка дорожки. Размеры каналов и анализаторов независимы и сохраняются при изменении размера окна и обновлении декодирования. Изменение Max Height задаёт общий размер заново. Колесо над метками прокручивает список дорожек.
Скрытие и показ строк анализатора, обычное подтверждение неизменённых настроек и переключение PWM split / combined используют уже рассчитанные аннотации. Повторный анализ выполняется при смене входов, параметров расчёта, границ анализируемого диапазона или исходной записи.
Новые файлы содержат индекс zynq_tiles.bin. Общий масштаб читает
индекс, при увеличении график читает точные отсчёты нужных блоков.
Для старых файлов RJ2 индекс строится в памяти при открытии.
Время открытия зависит от размера записи и скорости диска.
При сетевой ошибке файл содержит непрерывный префикс принятых данных.
При ошибке диска может остаться временный файл .part-*.
Потеря связи останавливает также Repetitive и Loop. Причина ошибки и кнопка Закрыть показаны в панели DSView перед графиком. Предупреждение скрывается вместе с вкладкой и не блокирует закрытие DSView или приложения-хоста. После восстановления связи захват запускается вручную кнопкой Run; повторные окна ошибки не накапливаются.
Нативная проверка обрыва без платы запускается на Windows из каталога рецепта:
python tests/check_link_loss.py --source <checkout-DSView> --runtime <проверочный-runtime> --output <артефакты> # Проверяем собранный checkout на отдельной копии runtime с сохранением результатов в каталоге артефактов.
Нужен собранный build-win64 и отдельная полная копия runtime: проверочный
EXE создаётся рядом с её ресурсами. Loopback-эмулятор занимает UDP 37575.
Сценарий проверяет остановку повтора, отсутствие модальности и дубликатов,
запоздавшие сигналы ошибки, ручной запуск, целостность сохранённого DSL
и штатное закрытие с открытым предупреждением. Текст и кнопка проверяются
на видимость в настоящем встроенном окне; переход на соседнюю страницу
проверяет скрытие через Win32. Снимки notice-*.png показывают предупреждение.
При поддержке ZLR1 частота 200 Мвыб/с доступна и для 5–8 каналов. В этом случае FPGA запускает поток по аппаратному триггеру и сжимает повторы уровней без потерь. Если входы меняются слишком часто и очередь переполняется, захват завершается с ошибкой. На 1–4 каналах 200 Мвыб/с по-прежнему идут через ZLP2 с фиксированным темпом. Прошивка и пины относятся к проекту платы.
package_arm.py упаковывает тот же набор декодеров для Linux armhf.
Платформенная сборка, FPGA, ядро и переключатель AUX ETH / Local
относятся к проекту прибора.