Files
MeshCore-Posadmesh/posadmesh-tools/flasher/index.html
T

163 lines
8.5 KiB
HTML

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Прошивальщик MeshCore и PosadMesh</title>
<meta name="description" content="Прошивка плат MeshCore и MQTT-репитеров PosadMesh прямо из браузера">
<link rel="stylesheet" href="style.css?v=20261018">
</head>
<body>
<div class="wrap">
<header class="top">
<h1>Прошивальщик MeshCore и PosadMesh</h1>
<p>Прошивка плат прямо из браузера по USB. Выберите плату, файл и нажмите «Прошить» — образ запишется
через Web Serial. Для nRF52 браузер прошить не может, такие файлы скачиваются и копируются на устройство.</p>
<div class="badges">
<span class="badge" id="b-serial">проверяю Web Serial…</span>
<span class="badge" id="b-secure">проверяю защищённый контекст…</span>
<span class="badge" id="b-index">читаю список прошивок…</span>
</div>
</header>
<div class="layout">
<main>
<div class="stale" id="stale" hidden>
<span id="stale-text">На сервере уже новая версия прошивальщика — список файлов на этой странице устарел.</span>
<button type="button" class="small" onclick="location.reload()">Обновить страницу</button>
</div>
<div class="notes" style="margin-top:0;border-top:none;padding-top:0">
<h2>Что означают файлы</h2>
<div class="cards">
<div class="card">
<h4><code>-merged.bin</code> — полный образ</h4>
<p>Bootloader, таблица разделов и прошивка в одном файле. Нужен для чистой установки: пишется
по адресу <code>0x0</code>, полностью заменяет содержимое флеша.</p>
</div>
<div class="card">
<h4><code>.bin</code> — только прошивка</h4>
<p>Обновление поверх текущей версии: пишется по адресу <code>0x10000</code>, настройки, ключи
и координаты узла сохраняются.</p>
</div>
<div class="card">
<h4><code>.uf2</code> — для nRF52</h4>
<p>Дважды нажмите кнопку сброса, чтобы плата появилась как USB-диск (например <code>NICENANO</code>),
и скопируйте файл на этот диск. Прошивка установится сама.</p>
</div>
<div class="card">
<h4><code>.zip</code> — для nRF52 через DFU</h4>
<p>Пакет обновления для nRF Connect (Programmer → DFU) или <code>adafruit-nrfutil</code>.
Пригодится, когда диск UF2 недоступен.</p>
</div>
<div class="card">
<h4>Стирание чипа</h4>
<p>Галочка «Стереть флеш полностью» очищает весь чип перед записью: разделы, настройки, ключи
и координаты. После этого узел настраивается с нуля — выбирайте эту опцию при первой прошивке
или при переходе с чужой разметки.</p>
</div>
<div class="card">
<h4>Что нужно</h4>
<p>Chrome или Edge версии 89+, страница по HTTPS, USB-кабель с передачей данных.
После прошивки нажмите «Перезагрузить» и отключите кабель.</p>
</div>
</div>
</div>
<div class="searchbar">
<label class="search-label" for="search">Поиск платы</label>
<div class="search-row">
<span class="search-icon" aria-hidden="true">🔍</span>
<input class="search" id="search" type="search"
placeholder="heltec, tbeam, e22, tdeck, meshadventurer…" autocomplete="off" autofocus>
<button class="search-clear small" id="search-clear" type="button">Сбросить</button>
</div>
<div class="search-hint" id="search-hint">Начните вводить название платы — список отфильтруется</div>
</div>
<div id="sections"></div>
</main>
<aside class="panel">
<h3>Прошивка</h3>
<div class="kv"><span>Устройство</span><span id="v-port">не подключено</span></div>
<div class="kv"><span>Чип</span><span id="v-chip">—</span></div>
<div class="kv"><span>Выбрано</span><span id="v-file">файл не выбран</span></div>
<div class="kv"><span>Адрес записи</span><span id="v-addr">—</span></div>
<div class="kv"><span>Размер</span><span id="v-size">—</span></div>
<div class="row">
<button id="btn-connect" class="primary">Подключить устройство</button>
</div>
<label class="check" style="margin-top:14px">
<span>Скорость</span>
<select id="baud">
<option value="921600" selected>921600</option>
<option value="460800">460800</option>
<option value="115200">115200 (медленно, но надёжно)</option>
</select>
</label>
<label class="check">
<input type="checkbox" id="erase-first">
<span><b>Стереть флеш полностью перед прошивкой.</b> Разделы, настройки и ключи будут удалены.</span>
</label>
<div class="progress"><i id="bar"></i></div>
<div class="progress-label" id="progress-label"></div>
<div class="row">
<button id="btn-flash" class="primary" disabled>Прошить</button>
<button id="btn-erase" class="danger" disabled>Только стереть</button>
</div>
<div class="row">
<button id="btn-reset" class="small" disabled>Перезагрузить</button>
<button id="btn-clear-log" class="small">Очистить журнал</button>
</div>
<h3>Своя прошивка</h3>
<p class="hint">Файл с компьютера прошивается так же, как из списка. Адрес: <code>0x0</code> для полного
образа (<code>-merged.bin</code>), <code>0x10000</code> для обновления (<code>.bin</code>).</p>
<label class="drop" id="drop">
<input type="file" id="own-file" accept=".bin,.uf2,.zip,.hex">
<span id="own-name">Перетащите файл сюда или нажмите, чтобы выбрать</span>
</label>
<label class="check">
<span>Адрес записи</span>
<select id="own-addr">
<option value="0x0" selected>0x0 — полный образ</option>
<option value="0x10000">0x10000 — только прошивка</option>
<option value="0x1000">0x1000 — bootloader</option>
<option value="0x8000">0x8000 — таблица разделов</option>
</select>
</label>
<label class="check">
<span>Чип</span>
<select id="own-chip">
<option value="auto" selected>определить автоматически</option>
<option value="esp32">ESP32</option>
<option value="esp32s3">ESP32-S3</option>
<option value="esp32c3">ESP32-C3</option>
<option value="esp32c6">ESP32-C6</option>
<option value="esp32s2">ESP32-S2</option>
</select>
</label>
<div class="row">
<button id="btn-own-flash" class="primary" disabled>Прошить свой файл</button>
</div>
<h3>Журнал</h3>
<div class="log" id="log"></div>
</aside>
</div>
<footer>
MeshCore-Posadmesh · список прошивок обновляется автоматически из релизов Gitea ·
<a href="/flasher/index.json">index.json</a>
</footer>
</div>
<script type="module" src="app.js?v=20261018"></script>
</body>
</html>