291 lines
20 KiB
HTML
291 lines
20 KiB
HTML
<!doctype html>
|
||
<html><head><meta charset="utf-8">
|
||
<style>
|
||
html,body{margin:0;background:#fff}
|
||
svg{display:block;font-family:Inter,"DejaVu Sans",sans-serif}
|
||
.t{fill:#1b2430}
|
||
.m{fill:#5b6675}
|
||
.h1{font-size:34px;font-weight:700}
|
||
.h2{font-size:24px;font-weight:700}
|
||
.h3{font-size:19px;font-weight:700}
|
||
.b{font-size:16px}
|
||
.s{font-size:14.5px}
|
||
.xs{font-size:13px}
|
||
.box{fill:#fff;stroke:#9aa6b5;stroke-width:1.5}
|
||
.mod{fill:#eef3fb;stroke:#4a6fa5;stroke-width:1.8}
|
||
.mcu{fill:#f4f0fb;stroke:#6b4fa5;stroke-width:1.8}
|
||
.f9p{fill:#eef8f1;stroke:#3d8a5a;stroke-width:1.8}
|
||
.k1{fill:#fff7ec;stroke:#c27a1a;stroke-width:1.8}
|
||
.srv{fill:#fff;stroke:#7d8a9a;stroke-width:1.5}
|
||
.dn{stroke:#1f5fa8;stroke-width:3;fill:none}
|
||
.up{stroke:#d0700f;stroke-width:3;fill:none}
|
||
.no{stroke:#9aa6b5;stroke-width:2.5;fill:none;stroke-dasharray:7 6}
|
||
.exp{stroke:#8a4fbf;stroke-width:2.5;fill:none;stroke-dasharray:2 5;stroke-linecap:round}
|
||
.at{stroke:#2d3a4a;stroke-width:3;fill:none}
|
||
.gr{stroke:#8a96a6;stroke-width:3;fill:none}
|
||
</style></head><body>
|
||
<svg width="2000" height="1530" viewBox="0 0 2000 1530" xmlns="http://www.w3.org/2000/svg">
|
||
<defs>
|
||
<marker id="aDn" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z" fill="#1f5fa8"/></marker>
|
||
<marker id="aUp" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z" fill="#d0700f"/></marker>
|
||
<marker id="aAt" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z" fill="#2d3a4a"/></marker>
|
||
<marker id="aGr" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z" fill="#7d8a9a"/></marker>
|
||
<marker id="aEx" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z" fill="#8a4fbf"/></marker>
|
||
</defs>
|
||
|
||
<!-- ======= Título ======= -->
|
||
<text x="40" y="52" class="t h1">FOTA por 4G — cómo llega el firmware a cada versión de la EinarBoard</text>
|
||
<text x="40" y="86" class="m b">22-oct-2026 · Helgen / Drogheda · sin hardware nuevo en V5.6, V5.7 ni v6 · propuesta D-22-6 · detalle: hardware/fota-4g-factibilidad</text>
|
||
|
||
<!-- ======= Banda del servidor ======= -->
|
||
<rect x="40" y="108" width="1920" height="196" rx="14" fill="#f3f6fa" stroke="#c9d3df"/>
|
||
<text x="62" y="138" class="t h3">Servidor de Helgen (HelgenSRV)</text>
|
||
|
||
<rect x="62" y="156" width="250" height="96" rx="10" class="srv"/>
|
||
<text x="78" y="184" class="t h3">Llave de firma</text>
|
||
<text x="78" y="208" class="t s">Ed25519, fuera del repo</text>
|
||
<text x="78" y="230" class="t s">y del servidor (la guarda Leo)</text>
|
||
|
||
<rect x="352" y="156" width="300" height="96" rx="10" class="srv"/>
|
||
<text x="368" y="184" class="t h3">Imagen firmada</text>
|
||
<text x="368" y="208" class="t s">manifiesto: versión · tarjeta · ranura</text>
|
||
<text x="368" y="230" class="t s">tamaño · SHA-256 · firma</text>
|
||
|
||
<rect x="692" y="156" width="350" height="96" rx="10" class="srv"/>
|
||
<text x="708" y="184" class="t h3">Campañas en htracker</text>
|
||
<text x="708" y="208" class="t s">banco → 1 por sitio → 10 % → todas</text>
|
||
<text x="708" y="230" class="t s">lee $PHLG · manda CONFIRMAR</text>
|
||
|
||
<rect x="1082" y="156" width="410" height="96" rx="10" class="srv" style="stroke:#1f5fa8;stroke-width:2"/>
|
||
<text x="1098" y="184" class="t h3">Caster de Helgen + inyector</text>
|
||
<text x="1098" y="208" class="t s">relevo de la base RTK + marcos RTCM 4xxx</text>
|
||
<text x="1098" y="230" class="t s">con pedazos · ≤ 1 KB/s · solo a las unidades objetivo</text>
|
||
|
||
<rect x="1532" y="156" width="404" height="96" rx="10" class="srv" style="stroke:#1f5fa8;stroke-width:2"/>
|
||
<text x="1548" y="184" class="t h3">Servidor HTTPS de imágenes</text>
|
||
<text x="1548" y="208" class="t s">TLS · descarga por rangos</text>
|
||
<text x="1548" y="230" class="t s">(solo la v6)</text>
|
||
|
||
<path d="M312,204 L346,204" class="at" marker-end="url(#aAt)"/>
|
||
<path d="M652,204 L686,204" class="at" marker-end="url(#aAt)"/>
|
||
<path d="M1042,204 L1076,204" class="at" marker-end="url(#aAt)"/>
|
||
<path d="M867,156 L867,146 L1734,146 L1734,150" class="at" marker-end="url(#aAt)"/>
|
||
|
||
<!-- ======= Flechas servidor ↔ columnas ======= -->
|
||
<!-- Col A -->
|
||
<path d="M330,304 L330,382" class="gr" marker-end="url(#aGr)"/>
|
||
<text x="342" y="338" class="m s">NTRIP: la corrección</text>
|
||
<text x="342" y="356" class="m s">solo llega al F9P</text>
|
||
<path d="M130,382 L130,304" class="up" marker-end="url(#aUp)"/>
|
||
<text x="142" y="338" class="t s" style="fill:#a8560a">UDP: NMEA</text>
|
||
<text x="142" y="356" class="t s" style="fill:#a8560a">+ $PHLG</text>
|
||
<!-- Col B -->
|
||
<path d="M1180,304 L1180,382" class="dn" marker-end="url(#aDn)"/>
|
||
<text x="1192" y="330" class="t s" style="fill:#174a85">NTRIP: corrección + marcos 4xxx</text>
|
||
<text x="1192" y="348" class="t s" style="fill:#174a85">(pedazos de la imagen, CONFIRMAR)</text>
|
||
<path d="M760,382 L760,304" class="up" marker-end="url(#aUp)"/>
|
||
<text x="772" y="330" class="t s" style="fill:#a8560a">UDP: NMEA + $PHLG</text>
|
||
<text x="772" y="348" class="t s" style="fill:#a8560a">(versión · ranura · tengo/total · estado)</text>
|
||
<!-- Col C -->
|
||
<path d="M1800,304 L1800,382" class="dn" marker-end="url(#aDn)"/>
|
||
<text x="1812" y="330" class="t s" style="fill:#174a85">HTTPS:</text>
|
||
<text x="1812" y="348" class="t s" style="fill:#174a85">imagen</text>
|
||
<path d="M1470,382 L1470,304" class="up" marker-end="url(#aUp)"/>
|
||
<text x="1482" y="330" class="t s" style="fill:#a8560a">UDP: NMEA + $PHLG</text>
|
||
<text x="1482" y="348" class="t s" style="fill:#a8560a">confirmación por HTTPS</text>
|
||
|
||
<!-- ======= Columna A: V3 / V4 / V5.5 ======= -->
|
||
<rect x="40" y="384" width="560" height="726" rx="14" fill="#fff" stroke="#d6dbe2" stroke-width="1.5"/>
|
||
<text x="60" y="420" class="t h2">V3 · V4 · V5.5</text>
|
||
<text x="590" y="420" class="m b" text-anchor="end">33 unidades</text>
|
||
<rect x="60" y="436" width="520" height="40" rx="8" fill="#fdecec" stroke="#c62828"/>
|
||
<text x="76" y="462" class="b" style="fill:#a01d1d;font-weight:700">✗ Por 4G no: no hay RX del módem al MCU</text>
|
||
|
||
<rect x="180" y="506" width="280" height="62" rx="10" class="mod"/>
|
||
<text x="320" y="532" class="t h3" text-anchor="middle">4G NTRIP Master</text>
|
||
<text x="320" y="554" class="m s" text-anchor="middle">XBee · Telit + app ArduSimple</text>
|
||
|
||
<!-- DOUT al F9P -->
|
||
<path d="M400,568 L400,632" class="dn" marker-end="url(#aDn)"/>
|
||
<text x="410" y="600" class="m xs">DOUT</text>
|
||
<rect x="300" y="636" width="240" height="64" rx="10" class="f9p"/>
|
||
<text x="420" y="662" class="t h3" text-anchor="middle">ZED-F9P · RX2</text>
|
||
<text x="420" y="684" class="m s" text-anchor="middle">usa la corrección</text>
|
||
<!-- sin conexión al MCU -->
|
||
<path d="M400,604 L240,604 L240,766" class="no" marker-end="url(#aGr)"/>
|
||
<circle cx="240" cy="690" r="15" fill="#fff" stroke="#c62828" stroke-width="2.5"/>
|
||
<path d="M231,681 L249,699 M249,681 L231,699" stroke="#c62828" stroke-width="3"/>
|
||
<text x="232" y="726" class="xs" style="fill:#a01d1d" text-anchor="end">V5.5: PC7 NC</text>
|
||
<text x="232" y="744" class="xs" style="fill:#a01d1d" text-anchor="end">Blackpill: sin PC7</text>
|
||
<!-- subida Modo B -->
|
||
<path d="M90,768 L90,588 L210,588 L210,572" class="up" marker-end="url(#aUp)"/>
|
||
<text x="100" y="640" class="xs" style="fill:#a8560a">Modo B</text>
|
||
<text x="100" y="656" class="xs" style="fill:#a8560a">(subida sí)</text>
|
||
<!-- experimento -->
|
||
<path d="M500,700 L500,766" class="exp" marker-end="url(#aEx)"/>
|
||
<text x="510" y="740" class="xs" style="fill:#6d3a9c">F0-d</text>
|
||
|
||
<rect x="60" y="770" width="520" height="70" rx="10" class="mcu"/>
|
||
<text x="320" y="798" class="t h3" text-anchor="middle">STM32F411</text>
|
||
<text x="320" y="822" class="m s" text-anchor="middle">Blackpill (V3/V4) · RET6 soldado (V5.5)</text>
|
||
|
||
<text x="60" y="880" class="t h3">Cómo sí</text>
|
||
<text x="60" y="908" class="t b">① USB (DFU en J11) en cada visita — lo de hoy</text>
|
||
<text x="60" y="934" class="t b">② Reemplazarlas por V5.6 / V5.7 si siguen en</text>
|
||
<text x="84" y="956" class="t b">servicio después del primer trimestre</text>
|
||
<text x="60" y="982" class="t b">③ Experimento F0-d: el F9P reporta el tipo de</text>
|
||
<text x="84" y="1004" class="t b">cada marco (UBX-RXM-RTCM → PA3), ≈ 75 B/s;</text>
|
||
<text x="84" y="1026" class="t b">igual requiere 1 visita para el bootloader</text>
|
||
<text x="60" y="1052" class="t b">④ Cable DOUT → PC7 en la V5.5: no (vibración)</text>
|
||
|
||
<!-- ======= Columna B: V5.6 / V5.7 ======= -->
|
||
<rect x="630" y="384" width="760" height="726" rx="14" fill="#fff" stroke="#3d8a5a" stroke-width="2"/>
|
||
<text x="650" y="420" class="t h2">V5.6 · V5.7</text>
|
||
<text x="1370" y="420" class="m b" text-anchor="end">108 + 322 (piloto 5 + 5)</text>
|
||
<rect x="650" y="436" width="720" height="40" rx="8" fill="#e8f5ec" stroke="#3d8a5a"/>
|
||
<text x="666" y="462" class="b" style="fill:#1e6b3a;font-weight:700">✓ Sin hardware nuevo · falta firmware y el caster con inyector</text>
|
||
|
||
<rect x="900" y="506" width="300" height="62" rx="10" class="mod"/>
|
||
<text x="1050" y="532" class="t h3" text-anchor="middle">4G NTRIP Master</text>
|
||
<text x="1050" y="554" class="m s" text-anchor="middle">zócalo XBee · MODEM_EN PC3 · RST PC1</text>
|
||
|
||
<!-- DOUT_4G -->
|
||
<path d="M1110,568 L1110,604" class="dn"/>
|
||
<text x="1120" y="592" class="m xs">DOUT_4G · 115200</text>
|
||
<path d="M1110,604 L1270,604 L1270,632" class="dn" marker-end="url(#aDn)"/>
|
||
<rect x="1160" y="636" width="214" height="64" rx="10" class="f9p"/>
|
||
<text x="1267" y="662" class="t h3" text-anchor="middle">ZED-F9P · RX2</text>
|
||
<text x="1267" y="684" class="m s" text-anchor="middle">descarta los 4xxx</text>
|
||
<path d="M1110,604 L1110,628" class="dn" marker-end="url(#aDn)"/>
|
||
<rect x="1040" y="632" width="104" height="34" rx="7" class="box"/>
|
||
<text x="1092" y="655" class="t s" text-anchor="middle">R111 1 k</text>
|
||
<path d="M1092,666 L1092,690" class="dn" marker-end="url(#aDn)"/>
|
||
<rect x="978" y="694" width="232" height="38" rx="7" class="box" style="stroke:#1f5fa8;stroke-width:2"/>
|
||
<text x="1094" y="719" class="t s" text-anchor="middle" style="font-weight:700">PC7 · USART6_RX (DMA)</text>
|
||
<path d="M1094,732 L1094,766" class="dn" marker-end="url(#aDn)"/>
|
||
|
||
<rect x="900" y="770" width="470" height="70" rx="10" class="mcu"/>
|
||
<text x="1135" y="798" class="t h3" text-anchor="middle">STM32F411RET6</text>
|
||
<text x="1135" y="822" class="m s" text-anchor="middle">arma los marcos 4xxx · verifica · escribe la ranura B</text>
|
||
|
||
<!-- subida: MCU → K1 → DIN -->
|
||
<path d="M900,805 L864,805" class="up" marker-end="url(#aUp)"/>
|
||
<text x="868" y="796" class="xs" style="fill:#a8560a" text-anchor="start">PA9</text>
|
||
<rect x="650" y="770" width="210" height="70" rx="10" class="k1"/>
|
||
<text x="755" y="796" class="t h3" text-anchor="middle">K1 (PB5)</text>
|
||
<text x="755" y="818" class="m xs" text-anchor="middle">NO = MCU, Modo B ($PHLG)</text>
|
||
<text x="755" y="834" class="m xs" text-anchor="middle">NC = F9P directo si el MCU cae</text>
|
||
<path d="M755,770 L755,592 L940,592 L940,572" class="up" marker-end="url(#aUp)"/>
|
||
<text x="766" y="584" class="xs" style="fill:#a8560a">DIN_4G</text>
|
||
|
||
<text x="650" y="880" class="t h3">Ya está en la tarjeta</text>
|
||
<text x="650" y="904" class="t b">Toma RTCM en PC7 (R111) · Modo B por K1 · control del módem ·</text>
|
||
<text x="650" y="926" class="t b">respaldo LTC4040 para escribir la flash</text>
|
||
<text x="650" y="958" class="t h3">Falta</text>
|
||
<text x="650" y="982" class="t b">Bootloader A/B + receptor en el firmware (FOTA 1–2) ·</text>
|
||
<text x="650" y="1004" class="t b">caster con inyector y campañas (FOTA 3) · matriz de banco (FOTA 4)</text>
|
||
<text x="650" y="1036" class="t h3">Por validar en banco (F0)</text>
|
||
<text x="650" y="1060" class="t b">a: el marco 4xxx sale por DOUT · b: RTK fijo con carrusel · c: $$$AS+R? por Modo B</text>
|
||
<text x="650" y="1092" class="m s">De regalo: parámetros del módem ($$$AS+X, con regreso automático) y config. del F9P a distancia.</text>
|
||
|
||
<!-- ======= Columna C: v6 ======= -->
|
||
<rect x="1420" y="384" width="540" height="726" rx="14" fill="#fff" stroke="#3d8a5a" stroke-width="2"/>
|
||
<text x="1440" y="420" class="t h2">v6</text>
|
||
<text x="1940" y="420" class="m b" text-anchor="end">130 + reemplazos (piloto 20)</text>
|
||
<rect x="1440" y="436" width="500" height="40" rx="8" fill="#e8f5ec" stroke="#3d8a5a"/>
|
||
<text x="1456" y="462" class="b" style="fill:#1e6b3a;font-weight:700">✓ Sin hardware nuevo · va dentro de FW-3</text>
|
||
|
||
<rect x="1550" y="506" width="300" height="62" rx="10" class="mod"/>
|
||
<text x="1700" y="532" class="t h3" text-anchor="middle">A7670SA (soldado)</text>
|
||
<text x="1700" y="554" class="m s" text-anchor="middle">HTTP(S) · sistema de archivos · CFOTA</text>
|
||
|
||
<path d="M1610,766 L1610,572" class="at" marker-end="url(#aAt)"/>
|
||
<rect x="1448" y="608" width="226" height="30" rx="6" fill="#fff" stroke="#2d3a4a"/>
|
||
<text x="1561" y="628" class="t xs" text-anchor="middle">AT: PC6 → R148 0 Ω → U23 → RXD</text>
|
||
<path d="M1790,568 L1790,766" class="dn" marker-end="url(#aDn)"/>
|
||
<rect x="1702" y="680" width="238" height="30" rx="6" fill="#fff" stroke="#1f5fa8"/>
|
||
<text x="1821" y="700" class="xs" style="fill:#174a85" text-anchor="middle">TXD → U24 → R106 → PC7</text>
|
||
|
||
<rect x="1440" y="770" width="500" height="70" rx="10" class="mcu"/>
|
||
<text x="1690" y="798" class="t h3" text-anchor="middle">STM32F411RET6</text>
|
||
<text x="1690" y="822" class="m s" text-anchor="middle">HTTPACTION / HTTPREAD → ranura B · RTCM al F9P por USART2</text>
|
||
|
||
<text x="1440" y="880" class="t h3">Ya está en la tarjeta</text>
|
||
<text x="1440" y="906" class="t b">UART completo con el módem (K1 DNP) ·</text>
|
||
<text x="1440" y="928" class="t b">PWRKEY PC8 · PWR_EN PC10 · RST PC11 · LTC4040</text>
|
||
<text x="1440" y="962" class="t h3">Falta</text>
|
||
<text x="1440" y="988" class="t b">FOTA dentro de FW-3 (socket NTRIP no transparente</text>
|
||
<text x="1440" y="1010" class="t b">para dejar libre el canal AT) · servidor HTTPS</text>
|
||
<text x="1440" y="1040" class="b" style="fill:#a01d1d;font-weight:700">Sin K1: si el MCU cae, nada reporta →</text>
|
||
<text x="1440" y="1062" class="b" style="fill:#a01d1d;font-weight:700">el bootloader regresa solo, sin esperar al servidor</text>
|
||
|
||
<g transform="translate(0,30)">
|
||
<!-- ======= Banda común: bootloader y mapa de flash ======= -->
|
||
<rect x="40" y="1100" width="1920" height="372" rx="14" fill="#f7f5fb" stroke="#d9d0ea"/>
|
||
<text x="62" y="1134" class="t h3">Común a V5.6, V5.7 y v6 — bootloader A/B y mapa de flash del STM32F411 (512 KB)</text>
|
||
|
||
<!-- barra de flash: 1000 px = 512 KB -->
|
||
<g transform="translate(62,1160)">
|
||
<rect x="0" y="0" width="62.5" height="58" fill="#6b4fa5"/>
|
||
<rect x="62.5" y="0" width="31.25" height="58" fill="#9c86c9"/>
|
||
<rect x="93.75" y="0" width="31.25" height="58" fill="#c3b6e0"/>
|
||
<rect x="125" y="0" width="375" height="58" fill="#e4f0e8" stroke="#3d8a5a" stroke-width="1.5"/>
|
||
<rect x="125" y="0" width="187.5" height="58" fill="#b9dcc5"/>
|
||
<rect x="500" y="0" width="500" height="58" fill="#e7eef8" stroke="#1f5fa8" stroke-width="1.5"/>
|
||
<rect x="0" y="0" width="1000" height="58" fill="none" stroke="#4b3a73" stroke-width="2"/>
|
||
<text x="31" y="35" class="xs" style="fill:#fff;font-weight:700" text-anchor="middle">boot</text>
|
||
<text x="312" y="27" class="t s" text-anchor="middle" style="font-weight:700">Ranura A · 192 KB · sectores 4–5</text>
|
||
<text x="312" y="47" class="m xs" text-anchor="middle">corre hoy (0.6.2 = 96 KB, en verde)</text>
|
||
<text x="750" y="27" class="t s" text-anchor="middle" style="font-weight:700">Ranura B · 256 KB · sectores 6–7</text>
|
||
<text x="750" y="47" class="m xs" text-anchor="middle">aquí se escribe la imagen nueva</text>
|
||
<rect x="0" y="84" width="14" height="14" fill="#6b4fa5"/><text x="22" y="96" class="t xs">sect. 0–1 · 32 KB · bootloader (nunca por aire)</text>
|
||
<rect x="0" y="106" width="14" height="14" fill="#9c86c9"/><text x="22" y="118" class="t xs">sect. 2 · 16 KB · metadatos (ranura activa, prueba)</text>
|
||
<rect x="0" y="128" width="14" height="14" fill="#c3b6e0"/><text x="22" y="140" class="t xs">sect. 3 · 16 KB · EEPROM (hoy en el último sector)</text>
|
||
<text x="420" y="96" class="t xs">Dos builds por versión (build.flash_offset): el servidor manda</text>
|
||
<text x="420" y="114" class="t xs">el de la ranura que no corre. Cambiar de imagen = escribir un</text>
|
||
<text x="420" y="132" class="t xs">registro de metadatos; regresar es inmediato. Borrar 128 KB detiene</text>
|
||
<text x="420" y="150" class="t xs">el núcleo ≈ 1–2 s: K1 suelto (la NMEA sigue), borrado al inicio,</text>
|
||
<text x="420" y="168" class="t xs">nunca con batería baja.</text>
|
||
</g>
|
||
|
||
<!-- máquina de estados -->
|
||
<g>
|
||
<rect x="1110" y="1156" width="250" height="62" rx="10" class="box"/>
|
||
<text x="1235" y="1182" class="t s" text-anchor="middle" style="font-weight:700">1 · Descarga</text>
|
||
<text x="1235" y="1204" class="m xs" text-anchor="middle">a la ranura libre, por pedazos</text>
|
||
<path d="M1360,1187 L1384,1187" class="at" marker-end="url(#aAt)"/>
|
||
<rect x="1390" y="1156" width="270" height="62" rx="10" class="box"/>
|
||
<text x="1525" y="1182" class="t s" text-anchor="middle" style="font-weight:700">2 · Verifica</text>
|
||
<text x="1525" y="1204" class="m xs" text-anchor="middle">SHA-256 + Ed25519 + tarjeta</text>
|
||
<path d="M1660,1187 L1684,1187" class="at" marker-end="url(#aAt)"/>
|
||
<rect x="1690" y="1156" width="248" height="62" rx="10" class="box"/>
|
||
<text x="1814" y="1182" class="t s" text-anchor="middle" style="font-weight:700">3 · Arranca en prueba</text>
|
||
<text x="1814" y="1204" class="m xs" text-anchor="middle">contador en BKP12R–13R</text>
|
||
<path d="M1814,1218 L1814,1238 L1310,1238 L1310,1254" class="at" marker-end="url(#aAt)"/>
|
||
<rect x="1110" y="1258" width="400" height="62" rx="10" fill="#fff" stroke="#2d3a4a" stroke-width="2"/>
|
||
<text x="1310" y="1284" class="t s" text-anchor="middle" style="font-weight:700">¿CONFIRMAR del servidor en 30 min?</text>
|
||
<text x="1310" y="1306" class="m xs" text-anchor="middle">(la unidad sana: NMEA 1 Hz + $PHLG con la versión nueva)</text>
|
||
<path d="M1510,1278 L1544,1278" class="at" marker-end="url(#aAt)"/>
|
||
<rect x="1550" y="1258" width="170" height="40" rx="8" fill="#e8f5ec" stroke="#3d8a5a"/>
|
||
<text x="1635" y="1284" class="s" style="fill:#1e6b3a;font-weight:700" text-anchor="middle">sí → confirmada</text>
|
||
<path d="M1510,1306 L1544,1318" class="at" marker-end="url(#aAt)"/>
|
||
<rect x="1550" y="1306" width="388" height="40" rx="8" fill="#fdecec" stroke="#c62828"/>
|
||
<text x="1744" y="1332" class="s" style="fill:#a01d1d;font-weight:700" text-anchor="middle">no, o 3 reinicios → regresa a la anterior</text>
|
||
</g>
|
||
|
||
<text x="62" y="1384" class="t b"><tspan style="font-weight:700">Siempre:</tspan> DFU por USB en J11 (memoria de sistema del STM32, no se borra) → en el peor caso una visita, nunca una unidad inservible.</text>
|
||
<text x="62" y="1412" class="t b"><tspan style="font-weight:700">Nunca por aire:</tspan> firmware del F9P · app del 4G NTRIP Master (643 KB) · el propio bootloader.</text>
|
||
<text x="62" y="1440" class="t b"><tspan style="font-weight:700">Compuerta (D-22-6):</tspan> la imagen de fábrica de las 108 / 322 y de las 130 v6 lleva bootloader + receptor, y no se graba sin FOTA 4 aprobada en banco.</text>
|
||
|
||
<!-- leyenda -->
|
||
<g transform="translate(1110,1372)">
|
||
<path d="M0,8 L40,8" class="dn"/><text x="48" y="13" class="t xs">bajada (imagen)</text>
|
||
<path d="M170,8 L210,8" class="up"/><text x="218" y="13" class="t xs">subida (estado)</text>
|
||
<path d="M340,8 L380,8" class="at"/><text x="388" y="13" class="t xs">comandos AT / flujo</text>
|
||
<path d="M0,38 L40,38" class="no"/><text x="48" y="43" class="t xs">no existe</text>
|
||
<path d="M170,38 L210,38" class="exp"/><text x="218" y="43" class="t xs">experimento</text>
|
||
</g>
|
||
</g>
|
||
</svg>
|
||
</body></html>
|