Translate READMEs to Russian

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-14 16:03:56 +03:00
co-authored by Claude Sonnet 5
parent 8b0102b56c
commit 17b0421aaf
2 changed files with 129 additions and 125 deletions
+45 -43
View File
@@ -1,57 +1,59 @@
# ZIFI32 — ESP32 WiFi/SPI module for ZX Evolution # ZIFI32 — модуль ESP32 WiFi/SPI для ZX Evolution
Firmware and hardware for the ESP32-S3-based WiFi/SPI module ("ZiFi32") used Прошивка и аппаратная часть модуля ESP32-S3 (WiFi/SPI, "ZiFi32") для
by the ZX Evolution / TS-Conf ("Pentevo") retro-computer platform. Adds ретро-компьютера ZX Evolution / TS-Conf ("Pentevo"). Даёт WiFi,
WiFi, a WAV/XM/MOD/S3M audio tracker, and (new in this fork, work in аудио-трекер (WAV/XM/MOD/S3M), а также (новое в этом форке, в разработке)
progress) an SMB2/3 network share that exposes the machine's real SD card сетевую шару по SMB2/3, открывающую доступ к реальной SD-карте машины с
to any Windows/macOS/Linux client. любого клиента Windows/macOS/Linux.
**Base source**: [tslabs/zx-evo](https://github.com/tslabs/zx-evo/tree/master/pentevo/esp32). **Исходная база**: [tslabs/zx-evo](https://github.com/tslabs/zx-evo/tree/master/pentevo/esp32).
See [`firmware/README.md`](firmware/README.md) for the full list of changes Полный список изменений этого форка и их текущий статус — в
made in this fork and their current status. [`firmware/README.md`](firmware/README.md).
## Requirements ## Требования
- The ZX Evolution/TS-Conf board's own **core firmware must be built with - Прошивка ядра платы ZX Evolution/TS-Conf **должна быть собрана с
VDAC2 and ESP32 (ZiFi32) peripheral support enabled** - without both, the поддержкой VDAC2 и ESP32 (ZiFi32)** — без этого ядро вообще не увидит
core won't recognize this module on the SPI bus at all, and won't drive модуль на шине SPI, а видеочип FT8xx работать не будет.
the FT8xx video chip either. - **Перемычка RESET на разъёме IDE должна быть установлена** — см.
- The **RESET jumper on the IDE connector must be installed** - see
[`hardware/connection_diagram.webp`](hardware/connection_diagram.webp). [`hardware/connection_diagram.webp`](hardware/connection_diagram.webp).
## Repository layout ## Структура репозитория
| Path | What's there | | Путь | Что там |
|---------------------|--------------| |---------------------|--------------|
| `src/` | ESP32 firmware source (ESP-IDF project) | | `src/` | Исходный код прошивки ESP32 (проект ESP-IDF) |
| `firmware/` | Ready-to-flash compiled binaries + flashing instructions + changelog | | `firmware/` | Готовые к прошивке скомпилированные файлы + инструкция по прошивке + список изменений |
| `hardware/` | Adapter board connection diagram, PCB photo, Gerber files | | `hardware/` | Схема подключения переходной платы, фото платы, Gerber-файлы |
| `doc/` | Protocol/design notes | | `doc/` | Заметки по протоколу/архитектуре |
| `test/` | Original upstream SPI protocol test scripts (Python, Raspberry Pi) | | `test/` | Оригинальные тестовые скрипты протокола SPI из апстрима (Python, Raspberry Pi) |
| `spi_gpio_probe/` | Standalone diagnostic firmware - logs raw SPI pin edges, used for bring-up debugging, NOT the main firmware | | `spi_gpio_probe/` | Отдельная диагностическая прошивка — логирует сырые фронты на пинах SPI, использовалась для отладки при разработке; НЕ основная прошивка |
## Quick start ## Быстрый старт
1. Flash `firmware/esp-spi.bin` (+ bootloader/partition table) to the ESP32-S3 1. Прошейте `firmware/esp-spi.bin` (+ bootloader/таблицу разделов) в модуль
module - see [`firmware/README.md`](firmware/README.md#flashing) for the ESP32-S3 — точная команда `esptool.py` в
exact `esptool.py` command. [`firmware/README.md`](firmware/README.md#Прошивка).
2. Wire it up per [`hardware/connection_diagram.webp`](hardware/connection_diagram.webp) 2. Подключите по схеме
(adapter PCB Gerbers are in [`hardware/gerber/`](hardware/gerber/) if you're [`hardware/connection_diagram.webp`](hardware/connection_diagram.webp)
making your own board - see the photo in [`hardware/pcb_photo.jpg`](hardware/pcb_photo.jpg)). (Gerber-файлы переходной платы — в [`hardware/gerber/`](hardware/gerber/),
3. Make sure the ZX Evolution core firmware requirement above is met. если делаете свою плату; фото платы —
4. Build from source instead of flashing the prebuilt binary: ESP-IDF [`hardware/pcb_photo.jpg`](hardware/pcb_photo.jpg)).
**v6.1** (not `v6.1-rc1`), `idf.py build flash`. 3. Убедитесь, что выполнено требование по ядру ZX Evolution (см. выше).
4. Собрать из исходников вместо прошивки готового бинарника: ESP-IDF
**v6.1** (не `v6.1-rc1`), `idf.py build flash`.
## Status ## Статус
WiFi, audio tracker playback, and the SMB2/3 VFS bridge (browse, download, WiFi, воспроизведение аудио-трекера и SMB2/3-мост (просмотр, скачивание,
upload, delete over a real SD card) all work against real hardware. The VFS загрузка, удаление на реальной SD-карте) — всё работает на реальном
bridge is still **actively being developed** - directory creation, in-place железе. Мост к SMB всё ещё **активно дорабатывается** — пока не реализовано
file truncation on overwrite, and live directory-change notifications aren't создание директорий, обрезка файла при перезаписи более коротким
implemented yet. Full details in [`firmware/README.md`](firmware/README.md). содержимым и уведомления об изменениях в реальном времени. Подробности —
в [`firmware/README.md`](firmware/README.md).
## License ## Лицензия
This repository vendors [libsmb2](https://github.com/sahlberg/libsmb2) В этом репозитории вендорится [libsmb2](https://github.com/sahlberg/libsmb2)
(LGPL-2.1) under `src/third_party/libsmb2` - see its own `COPYING` and (LGPL-2.1) в каталоге `src/third_party/libsmb2` — см. его собственные файлы
`LICENCE-LGPL-2.1.txt` there. `COPYING` и `LICENCE-LGPL-2.1.txt`.
+84 -82
View File
@@ -1,92 +1,93 @@
# ESP32 firmware (ZX Evolution / TS-Conf ZiFi32 module) # Прошивка ESP32 (модуль ZiFi32 для ZX Evolution / TS-Conf)
Compiled firmware for the ESP32-S3-based WiFi/SPI module used by the ZX Скомпилированная прошивка для WiFi/SPI-модуля на базе ESP32-S3,
Evolution / TS-Conf ("Pentevo") platform. используемого платформой ZX Evolution / TS-Conf ("Pentevo").
**Base source**: this firmware is based on **Исходная база**: этот форк основан на
[tslabs/zx-evo](https://github.com/tslabs/zx-evo/tree/master/pentevo/esp32) — [tslabs/zx-evo](https://github.com/tslabs/zx-evo/tree/master/pentevo/esp32) —
full source for this fork lives in `pentevo/esp32/src` alongside this folder; полный исходный код лежит в `pentevo/esp32/src` рядом с этой папкой; в
this `firmware/` directory only holds ready-to-flash binaries. `firmware/` — только готовые к прошивке бинарники.
## Requirements ## Требования
The ZX Evolution/TS-Conf board's own core firmware must be built with Прошивка ядра платы ZX Evolution/TS-Conf должна быть собрана с поддержкой
**VDAC2** and **ESP32 (ZiFi32)** peripheral support enabled - without both, **VDAC2** и **ESP32 (ZiFi32)** — без этого ядро вообще не увидит модуль
the core won't recognize the ESP32 module on the SPI bus at all (no matter ESP32 на шине SPI (независимо от того, насколько корректна прошивка самого
how correct this ESP32-side firmware is), and won't drive the FT8xx video ESP32), а видеочип FT8xx работать не будет. Проверьте это, прежде чем
chip either. Check this before assuming a connection problem is on the считать проблему подключения проблемой стороны ESP32.
ESP32 side.
The **RESET jumper on the IDE connector must be installed** as well - see **Перемычка RESET на разъёме IDE тоже должна быть установлена** — см.
`../hardware/connection_diagram.webp`. `../hardware/connection_diagram.webp`.
## What's changed vs. the upstream source ## Что изменено относительно апстрима
Most of the work in this fork is a **VFS bridge that exposes the ZX Основная часть работы в этом форке — **мост VFS, открывающий реальную
Evolution's real SD card as a network share over SMB2/3**, so any Windows/ SD-карту ZX Evolution как сетевую шару по SMB2/3**, чтобы любой клиент
macOS/Linux SMB client can browse, download, upload to, and delete files on Windows/macOS/Linux мог просматривать, скачивать, загружать и удалять
the real Wild Commander filesystem without pulling the card. This is still файлы на реальной файловой системе Wild Commander без извлечения карты.
**actively being worked on** — see "Status" below. Эта часть всё ещё **активно дорабатывается** — см. раздел "Статус" ниже.
Changes so far, roughly in the order they were made: Изменения, примерно в порядке внесения:
- **Real filesystem wired up.** `vfs_bridge.cpp`'s SMB2 handlers - **Подключена реальная файловая система.** SMB2-обработчики в
(CREATE/READ/WRITE/CLOSE/QUERY_DIRECTORY/QUERY_INFO/etc.) now talk to the `vfs_bridge.cpp` (CREATE/READ/WRITE/CLOSE/QUERY_DIRECTORY/QUERY_INFO и
real filesystem via a small request/response bridge (`vfs_request.cpp`) т.д.) теперь общаются с реальной файловой системой через небольшой мост
over the existing SPI link to the Z80 side, instead of the original запрос/ответ (`vfs_request.cpp`) поверх существующей SPI-связи со
hardcoded demo filesystem. стороной Z80, вместо оригинальной захардкоженной демо-файловой системы.
- **Upload (WRITE) and delete support** for files and empty directories, - **Поддержка загрузки файлов (WRITE) и удаления** файлов и пустых
including proper `FILE_DELETE_ON_CLOSE` handling and a директорий, включая корректную обработку `FILE_DELETE_ON_CLOSE` и ответ
`SMB2_STATUS_DIRECTORY_NOT_EMPTY` reply when a non-empty directory delete `SMB2_STATUS_DIRECTORY_NOT_EMPTY` при попытке удалить непустую
is rejected. директорию.
- **Directory listing fixes**: `SMB2_RETURN_SINGLE_ENTRY` pagination support - **Исправления листинга директорий**: поддержка пагинации
(needed by `cmd.exe`'s own SMB2 client, not just Explorer), the missing `SMB2_RETURN_SINGLE_ENTRY` (нужна собственному SMB2-клиенту `cmd.exe`, не
non-"ID" directory info classes, synthesized `.`/`..` entries, and a только Проводнику), недостающие не-"ID" классы информации о директории,
`NextEntryOffset` encoding bug in the vendored `libsmb2` that silently синтезированные записи `.`/`..`, и баг кодирования `NextEntryOffset` в
corrupted any listing past the second entry. вендоренном `libsmb2`, молча портивший любой листинг длиннее двух
- **`srvsvc` share-enumeration fix**: the RPC pipe used to always report the записей.
Phase-1 placeholder share name `"test"` regardless of what a client had - **Исправление перечисления шар в `srvsvc`**: RPC-канал всегда сообщал
actually connected to — fixed to report the real share name. заглушку-имя шары `"test"` из Фазы 1 независимо от того, к чему реально
- **Added `SMB2_FILE_FS_VOLUME_INFORMATION`** support (a bare `dir`/`net use` подключился клиент — исправлено на реальное имя шары.
needs it; Explorer doesn't ask for it, which is why this was missed at - **Добавлена поддержка `SMB2_FILE_FS_VOLUME_INFORMATION`** (нужна голому
first). `dir`/`net use`; Проводник её не запрашивает, поэтому пропустили
- **Stability fixes**: a NULL-pointer crash in the named-pipe RPC transceive изначально).
path, and a 0-length SPI DMA transaction that could wedge the whole SPI - **Исправления стабильности**: падение по нулевому указателю в обработке
channel to the Z80 side. named-pipe RPC transceive, и нулевая по длине SPI DMA-транзакция, которая
- **`libsmb2` (vendored, `src/third_party/libsmb2`) patches**: могла подвесить весь SPI-канал к стороне Z80.
- `SMB2_FSCTL_DFS_GET_REFERRALS` now answers `STATUS_OBJECT_PATH_NOT_FOUND` - **Патчи `libsmb2`** (вендорено в `src/third_party/libsmb2`):
instead of `STATUS_NOT_IMPLEMENTED` — the wrong status code was sending - `SMB2_FSCTL_DFS_GET_REFERRALS` теперь отвечает
Windows Explorer into a retry storm before it would even attempt to `STATUS_OBJECT_PATH_NOT_FOUND` вместо `STATUS_NOT_IMPLEMENTED` —
connect to the share. неверный код статуса отправлял Проводник Windows в шторм повторных
- `SET_INFO` parsing is now permissive for info classes this server запросов ещё до попытки подключения к шаре.
doesn't specifically implement (passes the raw buffer through instead of - Разбор `SET_INFO` стал терпимым к классам информации, которые сервер
failing to parse) — a hard parse failure here used to tear down the отдельно не реализует (пропускает сырой буфер вместо ошибки разбора) —
*entire* TCP connection instead of just failing that one request, which раньше жёсткая ошибка разбора здесь рвала *всё* TCP-соединение вместо
showed up as Explorer aborting mid file-copy with a generic error. отказа только в этом одном запросе, что проявлялось как обрыв
- A `close_cmd` return value of `-2` now maps to Проводником копирования файла посередине с общей ошибкой.
`SMB2_STATUS_DIRECTORY_NOT_EMPTY` in the CLOSE reply instead of a generic - Возврат `-2` из `close_cmd` теперь отображается в ответе CLOSE как
`SMB2_STATUS_DIRECTORY_NOT_EMPTY` вместо общего
`STATUS_NOT_IMPLEMENTED`. `STATUS_NOT_IMPLEMENTED`.
- **Auth simplified** to plain guest/anonymous sessions (`authorize_handler` - **Упрощена авторизация** до обычных гостевых/анонимных сессий
always succeeds) — an earlier attempt at forcing NTLMv2 + SMB2 signing (`authorize_handler` всегда успешен) — более ранняя попытка
turned out to be unrelated to a since-fixed listing bug, so it was backed принудительной NTLMv2 + подписи SMB2 оказалась не связана с уже
out rather than kept as unnecessary complexity. исправленным багом листинга, поэтому убрана как лишняя сложность.
- Removed high-frequency per-request debug logging that was originally added - Убрано частое отладочное логирование каждого запроса, добавленное для
to chase the above bugs, replaced with a single per-connection summary отлова описанных выше багов, заменено одной итоговой строкой на
line. соединение.
## Status ## Статус
The SMB2/3 server (read, browse, upload, delete) works against real Windows/ SMB2/3-сервер (чтение, просмотр, загрузка, удаление) работает с реальными
Samba clients. **This is still in-progress work** — directory/file creation клиентами Windows/Samba. **Работа всё ещё продолжается** — создание
(`MKDIR`) isn't implemented yet, overwriting an existing file with shorter директорий (`MKDIR`) пока не реализовано, перезапись существующего файла
content doesn't truncate the old tail, and there's no live-update более коротким содержимым не обрезает старый хвост, и нет поддержки
(`change_notify`) support, so Explorer can show a stale listing for a moment уведомлений об изменениях в реальном времени (`change_notify`), поэтому
after a change until it's refreshed. See the source tree's own code comments Проводник может на мгновение показывать устаревший листинг до обновления.
for the current state of any specific handler. Актуальное состояние конкретных обработчиков — в комментариях исходного
кода.
## Flashing ## Прошивка
Target chip: **ESP32-S3**. Using `esptool.py` directly: Целевой чип: **ESP32-S3**. Через `esptool.py` напрямую:
```bash ```bash
esptool.py --chip esp32s3 -p COM5 -b 460800 write_flash \ esptool.py --chip esp32s3 -p COM5 -b 460800 write_flash \
@@ -96,16 +97,17 @@ esptool.py --chip esp32s3 -p COM5 -b 460800 write_flash \
0x10000 esp-spi.bin 0x10000 esp-spi.bin
``` ```
(replace `COM5` with the actual port; `flasher_args.json` in this folder has (замените `COM5` на реальный порт; `flasher_args.json` в этой папке
the same offsets in `idf.py`'s own JSON format, for reference or scripting.) содержит те же смещения в собственном JSON-формате `idf.py` — для справки
или скриптов.)
If you're building from source instead: ESP-IDF **v6.1** (not `v6.1-rc1`) — Если собираете из исходников: ESP-IDF **v6.1** (не `v6.1-rc1`) —
`idf.py build flash`. `idf.py build flash`.
## Hardware ## Аппаратная часть
See `../hardware/` for: См. `../hardware/`:
- `connection_diagram.webp` — how this module wires up to a ZX Evolution - `connection_diagram.webp` — как этот модуль подключается к плате ZX
board. Evolution.
- `pcb_photo.jpg` — a photo of the adapter board. - `pcb_photo.jpg` — фото переходной платы.
- `gerber/` — Gerber files for the adapter PCB. - `gerber/` — Gerber-файлы переходной платы.