De controller en zijn firmware: DDM, APC, geheugen, beveiliging
Elke beheerde transceiver bevat een kleine computer. De microcontroller (MCU) meet, regelt, rapporteert en is, vanuit het oogpunt van de programmer, vooral het geheugen dat u leest en schrijft. Of een module een gewone EEPROM heeft of een MCU die zich als EEPROM voordoet, bepaalt hoe deze kan worden gecodeerd, waarom sommige schrijfacties na een stroomcyclus verdwijnen en waarom wachtwoorden überhaupt bestaan. Deze pagina beschrijft wat de controller doet en hoe het ontwerp ervan zich op de werkbank toont.
Wat de MCU doet
| Taak | Details | Zichtbaar als |
|---|---|---|
| Meting | meet temperatuur (thermistor of sensor op de chip), Vcc, laserbias, monitor-PD-stroom (Tx) en fotostroom van de ontvanger (Rx) via een 10–12-bit ADC meerdere malen per seconde; past fabriekskalibratie toe | DDM-waarden — Parameters |
| APC — automatische vermogensregeling | vergelijkt de monitor-PD-stroom met de fabrieksdoelwaarde en past de bias-DAC van de driver aan | constant Tx-vermogen, stijgende bias — Tx-bias en veroudering |
| Temperatuurcompensatie | opzoektabellen passen de modulatiestroom en bij PAM4 de DSP-instellingen aan over de temperatuur | stabiele extinctieverhouding |
| TEC-regeling | PID-lus houdt de lasertemperatuur in gekoelde modules vast; golflengtevergrendeling geeft terugkoppeling bij DWDM | monitors voor lasertemperatuur en TEC-stroom |
| Drempels en vlaggen | vergelijkt elke monitor met alarm-/waarschuwingsdrempels, stelt vastgehouden vlaggen in en stuurt IntL | Drempels en alarmen |
| Lage-snelheidspinnen | leest TX_DISABLE, RS0/RS1, LPMode, ResetL; stuurt TX_FAULT, RX_LOS aan (of gate de hardwaresignalen) | pin-gedrag |
| Two-wire-slave | antwoordt op A0h/A2h (SFP) of A0h met pagina's/banken (QSFP, CMIS) | de geheugenkaart — Two-wire-interface |
| Toestandsmachines | CMIS-module- en datapadtoestanden; applicatieselectie; squelch | CMIS |
| Beveiliging en fabrikantfuncties | wachtwoorden, tegen schrijven beveiligde regio's, opslagopdrachten, ontgrendeling door de fabrikant, authenticatiesignaturen | Typen schrijfbeveiliging |
| CDB / firmware-update | ontvangt en flasht nieuwe firmware-images op CMIS-modules | firmwareversiebytes |
Gebruikelijke onderdelen: 8-bit MCU's (8051-klasse) met enkele kB flash in goedkope SFP/SFP+-modules; 32-bit Cortex-M-klasse in 100G+- en CMIS-modules; sommige fabrikanten gebruiken een speciale transceiver-controller-ASIC die ADC's, DAC's en de two-wire-slave integreert.
Twee manieren om het geheugen op te bouwen
| Ontwerp | Hoe de kaart wordt opgeslagen | Gevolgen voor het programmeren |
|---|---|---|
| Afzonderlijke EEPROM (bijv. AT24C02-klasse) voor A0h, MCU voor A2h | A0h-identiteit is een echte seriële EEPROM waarmee host en programmer rechtstreeks communiceren; de MCU behandelt alleen diagnostiek | A0h-schrijfopdrachten zijn gewone EEPROM-schrijfopdrachten — houd rekening met t_WR en paginagrootte; een hardware-WP-pin kan ze blokkeren (Typen schrijfbeveiliging 1–3) |
| Door MCU geëmuleerde kaart | de MCU beantwoordt elk two-wire-verzoek vanuit RAM en spiegelt wijzigingen naar zijn interne flash/EEPROM — of niet | schrijfacties gaan waar de firmware beslist: geaccepteerd, genegeerd, met wachtwoord afgeschermd, alleen opgeslagen na een opslagopdracht, of bij de volgende start overschreven vanuit de eigen kopie van de firmware (typen 4–5) |
| Hybride | EEPROM voor het fabrikantblok, MCU voor pagina's en wachtwoorden | gemengde regels per bytebereik |
Een geëmuleerde kaart verklaart de meeste mysteries op de werkbank: FFh van een pagina die de firmware niet implementeert, schrijfacties die "slagen" en worden teruggedraaid, bytes die in het ene bereik alleen-lezen zijn en in het volgende vrij, klokstretchen terwijl de MCU bezig is met meten (EEPROM-lees- en schrijffouten).
Opstarten en het t_init-venster
Bij het inschakelen laadt de MCU kalibratie en identiteit uit zijn niet-vluchtige opslag, start de ADC, brengt de APC naar zijn doelwaarde en schakelt pas daarna de two-wire-slave in en wist data-not-ready. Dit zijn de 300 ms (SFP) tot 2 s (QSFP/CMIS) die de specificaties toestaan voordat een host antwoorden mag verwachten, en het verklaart waarom een uitlezing direct na het plaatsen rommel teruggeeft (Wat de host doet).
Kalibratie bevindt zich hier
De ruwe ADC-waarden betekenen niets zonder de constanten die de fabriek op een teststation heeft gemeten: monitor-PD-stroom tegenover werkelijk uitgezonden vermogen, fotostroom van de ontvanger tegenover ingangsvermogen bij de golflengte van de module, thermistorcurve, schaal van de bias-DAC. Bij intern gekalibreerde modules past de firmware deze toe en rapporteert fysieke eenheden; bij extern gekalibreerde modules worden de constanten naar A2h 56–91 geschreven zodat de host ze toepast (Kalibratie). Het overschrijven van het fabrikantgebied waar sommige firmwares deze constanten bewaren, veroorzaakt absurde DDM of een defecte APC-lus — de klassieke manier waarop een onzorgvuldige schrijfopdracht een module "brickt" (Productie en testen).
Hoe beveiliging wordt geïmplementeerd
| Mechanisme | Implementatie | Op de werkbank |
|---|---|---|
| Wachtwoord | firmware vergelijkt de 4 bytes die naar het wachtwoordgebied zijn geschreven (SFP A2h 123–126, QSFP 123–126, CMIS 122–125) met een opgeslagen waarde; ontgrendelt schrijfacties voor de sessie | WRITE FAIL totdat de juiste waarde is ingevoerd — Wachtwoorden |
| Tegen schrijven beveiligde regio's | firmware negeert schrijfacties naar bereiken die zij als alleen-lezen beschouwt (checksums, drempels, kalibratie, fabrikantgebied) | bytes worden ongewijzigd teruggelezen, geen fout |
| Hardware-WP-pin op een afzonderlijke EEPROM | de pin is in de module hoog verbonden of wordt door de MCU aangestuurd | vereist dat de programmerboard deze aanstuurt |
| Opslagopdracht | schrijfacties komen in RAM terecht; een fabrikantspecifieke reeks schrijft ze naar flash | wordt na een stroomcyclus teruggedraaid tenzij de reeks wordt verzonden |
| Firmware-spiegel | bij het opstarten schrijft de firmware de kaart vanuit zijn eigen image opnieuw | wijzigingen verdwijnen bij elke stroomcyclus — alleen de tool van de fabrikant kan het image wijzigen |
| Authenticatie | de firmware berekent een handtekening (hash van serienummer, fabrikantgegevens en een geheim) in fabrikantbytes; de host controleert deze | identiteitsbewerkingen doorstaan checksums, maar de host weigert nog steeds — Fabrikantvergrendeling |
Hoe elk type wordt herkend en geprogrammeerd: Typen schrijfbeveiliging, EEPROM-hercodering.
Firmware-updates
CMIS-modules kunnen firmware via de two-wire-bus ontvangen met CDB-opdrachten (start download, schrijfblokken, voltooien, uitvoeren, commit), vaak met twee imagebanken zodat een mislukte update terugvalt. SFF-8472/8636-modules hebben geen standaardmechanisme; fabrikanten gebruiken eigen reeksen via fabrikantbytes. Firmware-oplossingen verhelpen CMIS-interoperabiliteitsproblemen (CMIS-problemen), en firmwareversiebytes (CMIS lower page 39–40, page 01h 128–129) zijn het waard om samen met de identiteit vast te leggen.
Storingsmodi van de controller
| Symptoom | Waarschijnlijke oorzaak |
|---|---|
| Module onzichtbaar op de bus, optiek verder in orde | MCU start niet op: beschadigde firmware, brown-out, beschadigd kristal |
| DDM-waarden bevroren of absurd | ADC- of kalibratiecorruptie; firmware hangt |
| Tx-vermogen drijft, hoewel APC dit moet vasthouden | storing in monitor-PD of ADC, APC uitgeschakeld |
| Willekeurige NACK's, trage uitlezingen | MCU overbelast (meten), klokstretchlimieten overschreden door een snelle programmer |
| Werkt, maar elke schrijfopdracht wordt teruggedraaid | firmware-spiegel volgens ontwerp — geen storing |
| Module defect na een schrijfopdracht | firmwareconfiguratie of kalibratiegebied overschreven |
In CodingBox
CodingBox behandelt de module zoals de firmware deze presenteert: de app detecteert het kaarttype, past bekende wachtwoorden en programmeerscripts toe voor ontwerpen met opslagopdracht en spiegeling, herberekent checksums, bewaart vóór elke schrijfopdracht een back-up en laat u deze herstellen uit de codedatabase als een controller slecht reageert. De EEPROM editor markeert bereiken die de specificatie definieert als alleen-lezen of fabrikantspecifiek, zodat u weet wanneer u in het private gebied van de firmware schrijft.