We nemen de leespen firmware-architectuur door op de B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2 en Y6: bootloader, OID-decoder, MP3-pijplijn, OTA en energiebeheer.

Geplaatst op: dec. 10, 2025 - 214 Weergaven

Architectuur van Leespen Firmware Uitgelegd: Van Opstarten naar MP3 Decodering

Doelgroep: Dit artikel is gericht op firmware-ingenieurs, OEM-productmanagers en technische inkopers die de firmware-architectuur van leespennen moeten begrijpen op de B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2 en Y6 platforms, met dekking van de bootloader, sensorstuurprogramma, OID-decoderpiplijn, MP3-stack, OTA-updateproces en stroombeheer.

Leespen-firmware is een klein embedded systeem met verrassend strikte real-time beperkingen. De pen moet ontwaken uit een diepe slaaptoestand, vergrendelen op een OID-puntenpatroon, Reed-Solomon foutcorrectie uitvoeren, een MP3-frame ophalen en audio afspelen binnen 95 tot 180 milliseconden. Het betrouwbaar behalen van die latentie op een $3,8 tot $14,5 BOM vereist zorgvuldige firmware-partitionering. Hieronder doorlopen we elke laag van de bootloader tot de audio-DAC, en we benoemen de exacte verschillen tussen onze 11 actieve modellen.

1. De Bootloader: 16 KB Die Alles Bepaalt

Elke leespen wordt geleverd met een tweefasige bootloader. Fase 1 is een 16 KB mask-ROM gebied op de hoofd-MCU die eerst draait en de handtekening op fase 2 valideert. Fase 2 is de 256 KB applicatiefirmware opgeslagen in SPI-flash. De handtekening is ECDSA-P256 met een fabrieksroot-sleutel; OEM-klanten krijgen een merkspecifieke subsleutel zodat firmware van het ene merk niet op de hardware van een ander merk kan worden geladen. De handtekeningcontrole duurt 380 ms op B1 / B2 / F8 / P2 en 240 ms op K7 / KF1 / L5 / Q6 / Q8 / T2 / Y6.

Opstarttijd van inschakelen tot "klaar om te lezen" is 1,2 seconden op B1 / B2 / F8 / P2, 0,8 seconden op K7 / KF1 / Q6 / Y6, en 0,6 seconden op L5 / Q8 / T2. Het opstartpad is: fase 1 (handtekeningcontrole) -> fase 2 (RTOS-init) -> sensorstuurprogramma-init -> audiocodec-init -> inactief. We draaien geen netwerkstack bij het opstarten. Er is geen Wi-Fi of Bluetooth in een van de 11 modellen, wat de firmware-voetafdruk minimaal houdt.

De huidige firmwareversies zijn B1 / B2 2.4.7; F8 3.1.2; K7 / KF1 1.9.5; L5 4.2.0; P2 2.0.3; Q6 / Q8 3.3.1; T2 / Y6 2.6.4. Deze versies zijn stabiel in het veld en zijn geleverd via 86 firmware-releases sinds 2023.

2. Het Real-Time Besturingssysteem: FreeRTOS met een Aangepaste Scheduler

Alle leespen-firmware draait op FreeRTOS 10.4 met een aangepaste tickless scheduler. Er zijn vier persistente taken: (1) sensortaak op 200 Hz prioriteit 5, die de CMOS-beeldsensor polt en frames in een 12-frames ringbuffer pushes; (2) decodertaak op 30 Hz prioriteit 4, die frames ophaalt, binarisatie, roosterdetectie, Reed-Solomon decodering en woordenboekopzoeking uitvoert; (3) audiotaak op 1 kHz prioriteit 6, die de MP3-decodepiplijn beheert en de DAC voedt; (4) inactieve taak op prioriteit 0, die stroomstaattransities afhandelt.

Taakprioriteiten zijn expres omgekeerd zodat de audiotaak alles voorrang geeft. Een vastgelopen audiobuffer veroorzaakt een hoorbare glitch; een vastgelopen decode vertraagt alleen herkenning met enkele milliseconden. De decodertaak draait alleen wanneer de sensortaak aangeeft dat een frame beschikbaar is. De inactieve taak ontwaakt op een hardware-interrupt van de aanraaksensor.

Over de 11 modellen verschilt de RTOS-configuratie op twee punten: tickless idle is uitgeschakeld op B1, B2, F8 en P2 om 4 KB codecode te besparen; het is ingeschakeld op K7, KF1, L5, Q6, Q8, T2 en Y6. Het tweede verschil is de audiobuffergrootte: 24 KB op B1 / B2 / F8 / P2 en 64 KB op L5 / Q8 / T2. Grotere buffers verminderen audio-underruns op de L5 omdat deze een 1 W versterker aanstuurt die meer momentane stroom verbruikt.

Model RTOS tickless Audiobuffer Opstarttijd Codegrootte
B1 / B2 Nee 24 KB 1,2 s 612 KB
F8 / P2 Nee 24 KB 1,2 s 588 KB
K7 / KF1 Ja 32 KB 0,8 s 720 KB
Q6 / Y6 Ja 32 KB 0,8 s 740 KB
L5 / Q8 / T2 Ja 64 KB 0,6 s 980 KB

3. Het OID Decoder Module: 48 KB Fixed-Point C

De OID-decoder is de meest prestatie-kritische code op de pen. Het is geschreven in fixed-point C (geen floating point) en compileert naar roughly 48 KB ARM Thumb-2 code op de Cortex-M4-cores gebruikt in B1, B2, F8, K7, KF1, P2, Q6 en Y6, en naar 52 KB op de Cortex-M7-cores gebruikt in L5, Q8 en T2.

Het decoder module bevat zeven subroutines: binariseer, roosterdetectie, perspectiefcorrectie, RS-decodeer, hash, woordenboekopzoeking en audio-offset-ophalen. Elke draait in een deterministische tijdSlice. Op de Cortex-M4 op 168 MHz kost binarisatie 8 ms voor een 32x32 venster; roosterdetectie 12 ms; RS-decodering 18 ms; hash plus opzoeking 14 ms; totaal 52 ms. Op de Cortex-M7 op 240 MHz dalen die cijfers naar 5 ms, 7 ms, 11 ms, 8 ms; totaal 31 ms. De L5 / Q8 / T2 modellen leveren de M7-build, wat hen de 95 ms end-to-end latentie geeft.

De woordenboekopzoektabel wordt gebouwd tijdens firmware-compilatie uit het content-manifest. Voor een 32-pagina's tweetalig boek met 600 audiobestanden is de tabel ongeveer 8,4 KB. Voor een 96-pagina's encyclopedie met 4.200 audiobestanden is de tabel 58,8 KB. De tabel wordt opgeslagen in dezelfde SPI-flash als de audio-activa en wordt lui geladen in RAM als dat nodig is.

Koperstip: Als uw boektitel meer dan 4.000 unieke audiobestanden heeft, gebruik dan geen B1, B2, F8, P2 of K7 pennen. De woordenboekopzoektabel overschrijdt 56 KB en de 64 KB RAM op die platforms kan de werkingset niet bevatten, wat flash-herlezingen triggert en 30 tot 60 ms latentie toevoegt. Blijf bij L5, Q8, T2 of Y6 voor programma's met hoge inhoudsdichtheid.

4. De MP3-Piplijn: Helix Decoder en DMA-Voeding

Zodra de woordenboekopzoeking een audio-offset en lengte retourneert, draagt de firmware over naar de MP3-piplijn. De piplijn gebruikt de Helix MP3-decoder, een fixed-point implementatie van RealNetworks die 28 KB codecode inneemt en draait op elk model. De decoder output 16-bit 44,1 kHz PCM, wat via DMA naar de on-chip DAC wordt gevoed.

DMA is geconfigureerd voor dubbelgebufferde overdracht met een 512-sample buffer op B1 / B2 / F8 / P2 / K7 / KF1 en een 1024-sample buffer op L5 / Q8 / T2 / Y6. De grotere DMA-buffer op de grotere pennen vermindert de kans op een buffer underrun wanneer de decodertaak voorrang geeft aan de audiotaak. Underrun-bescherming is ingebouwd: als de DMA-buffer onder 25% zakt, verlaagt de firmware tijdelijk de MP3-decodeprioriteit met één om de audiotaak meer CPU-tijd te geven.

Ondersteunde audio sample rates zijn 8, 16, 22,05, 32, 44,1 en 48 kHz. Bitrates van 32 kbps mono tot 320 kbps stereo worden gedecodeerd. In de praktijk leveren we content op 128 kbps stereo voor hoogwaardige narratie en 64 kbps mono voor geluidseffecten. Een 32-pagina's boek met 600 audiobestanden op 128 kbps gemiddeld 0,9 tot 1,1 GB audio; gecomprimeerd in de SPI-flash landt dat rond 380 tot 460 MB na Helix-codering. De 4 MB flash op B1 / B2 / F8 / P2 is gereserveerd voor de firmware-image alleen; audio-activa leven op een aparte 4 GB of 8 GB flash-chip op K7 / KF1 / Q6 / Y6, of op een 16 GB-chip op L5 / Q8 / T2.

Voor meer detail over de audio-encoding kant, zie het artikel over leespen audiocodec en MP3-compressie Voor de OID-kant, zie hoe OID leespen technologie werkt.

5. Stroombeheer: Vijf Staten, Één Doel

Leespennen zijn batterijgevoed en worden naar 47 landen verzonden, veel met intermitterende elektriciteit. De firmware definieert vijf stroomstaten. (1) Verzending: diepe slaap op 8 µA, batterij behouden voor 18 maanden. (2) Uit: diepe slaap op 12 µA, de aan-uit schakelaar is elektronisch niet mechanisch op elk model behalve T2. (3) Stand-by: 1,2 mA, sensor polling op 5 Hz voor aanraakdetectie, klaar in 8 ms. (4) Actief: 60 tot 180 mA afhankelijk van audiopath. (5) Opladen: 380 mA piek, USB-C 5 V input op elk model behalve P2 (micro-USB) en T2 (USB-C plus DC-jack).

De overgang tussen Stand-by en Actief wordt getriggerd door een aanraakinterrupt van een capacitieve sensor ingebed in de penpunt. De interrupt vuurt wanneer de gebruiker contact maakt met de pagina; de sensortaak ontwaakt de decoder en audio-piplijnen. De end-to-end ontwaak-en-decode tijd op L5, Q8 en T2 is 95 ms; op B1, B2, F8, K7, KF1, P2, Q6 en Y6 is het 120 tot 180 ms.

Batterijlevensduur is het headline nummer op elk specificatieblad: B1 5,0 uur, B2 5,5 uur, F8 4,5 uur, K7 / KF1 6,0 uur, L5 8,5 uur, P2 4,0 uur, Q6 6,5 uur, Q8 7,0 uur, T2 14 uur, Y6 11 uur. Deze zijn gemeten bij 50% volume, 12% duty cycle (typisch kinder gebruik), met continue sensor polling. Real-world gebruik varieert; het artikel over leespen batterij lithium-polymeer veiligheid artikel behandelt de onderliggende celchemie en het laadprofiel.

6. OTA-updates: standaard uitsluitend USB

We nemen bewust geen Wi-Fi of Bluetooth op in een leespen. De reden is tweeledig: BOM-kosten en privacy van kindergegevens. Zonder radio kan de pen geen gebruiksgegevens verzenden, waardoor de naleving van COPPA, GDPR-K en PIPL eenvoudig is. Updates zijn daarom USB-only op elk model. De gebruiker sluit de pen aan op een computer, voert een 12 MB desktop-updatertoepassing uit en de nieuwe firmware-image wordt in 35 tot 60 seconden gepusht.

Voor OEM-klanten bieden we een merkbare updatertoepassing gebouwd met Electron. De app verifieert de firmwarehandtekening, toont de voortgang en wist de dictionarycache. Voor B2B-programma's van 3.000+ eenheden bieden we ook een factory-floor flashtool die 12 pennen parallel over een USB-hub programmeert, waarbij een batch van 12 eenheden in 7 minuten wordt voltooid.

OTA via USB houdt de BOM laag (geen Wi-Fi-chipset, geen antenne, geen RF-afscherming) en de certificeringsvoetafdruk klein (geen FCC-ID, geen RED-radiotest). Zie voor meer over de certificatie-implicaties de leespen-certificatie-update na productwijziging koopgids en de leespen-software-updatestrategie playbook.

7. Build-pijplijn: van manifest naar ondertekend binair bestand

De firmware-build-pijplijn gebruikt drie inputs: (1) het contentmanifest, een CSV met elk audiobestandspad, doeltaal en pagina-coördinaat; (2) de OEM-merkconfig, een JSON-bestand met de merksleutel, handtekeningscertificaat en UI-strings; (3) de firmware-basiversie, momenteel een van de 11 versieerde branches hierboven. De pijplijn draait in ons CI-systeem en produceert een ondertekend firmware-binair bestand in 4 uur voor een typisch 32-pagina-boek.

De pijplijnfasen zijn: (1) audionormalisatie naar -16 LUFS; (2) MP3-encoding op 128 kbps stereo of 64 kbps mono; (3) dictionarytabelgeneratie; (4) Reed-Solomon-pariteitsgeneratie; (5) firmware-koppeling met de merkconfig; (6) ECDSA-handtekening; (7) hash en verpakking. Fasen 1 tot 4 duren 90 minuten voor een 1 GB audiobibliotheek. Stappen 5 tot 7 duren 15 minuten. Totaal: ongeveer 105 minuten kloksnelheid voor een typisch aangepast boek.

Voor OEM-klanten met hoog volume is de build-pijplijn beschikbaar als self-service API. Een 32-pagina-boek met 600 audiobestanden retourneert een ondertekend firmware-binair bestand in roughly 95 minuten via de API. We hebben 86 firmware-releases uitgevoerd sinds 2023 over de geïnstalleerde basis van 47.000+ pennen.

Reading Pen Firmware Build Pipeline (Custom OEM Book)

8. Fouthantering en herstel

Leespen-firmware is gebouwd om herstelbaar te zijn. De bootloader met twee fasen met ECDSA-handtekening betekent dat een beschadigde applicatie-image wordt gedetecteerd bij het opstarten en de pen terugvalt naar fase 2 herstel. Herstelmodus is een minimaal 4 KB image dat de applicatie over USB opnieuw kan flashen. Over 47.000+ verzonden pennen is herstelmodus geactiveerd in 0,07% van de gevallen, bijna altijd door USB-stroomuitval tijdens een update.

De firmware implementeert ook een watchdog-timer op 4 seconden. Als een taak er niet in slaagt om een heartbeat te sturen, reset de watchdog de Cortex-M-core. De sensor-, decoder- en audiotaken sturen allemaal een heartbeat op hun natuurlijke cadans; de ideltaak wordt niet bewaakt omdat het oneindig slapen is toegestaan.

Veld betrouwbaarheid, gemeten over de geïnstalleerde basis, is 99,4% over 24 maanden voor B1, B2, F8, K7, KF1, P2, Q6 en Y6, en 99,6% voor L5, Q8 en T2. Het verschil van 0,2 punten is toe te schrijven aan de grotere codebase en de hogere bedrijfstemperatuur van de 1 W-versterker in de L5-familie. Zie voor QA-methodologie de leespen-verouderingstestnormen koopgids en de leespen-probleemoplossingsplaybook.

9. Localisatiestrategie: 12 talen, één codebase

We leveren 12 taalversies van de firmware: Engels, Spaans, Frans, Duits, Italiaans, Portugees, Arabisch, Hebreeuws, Russisch, Vereenvoudigd Chinees, Traditioneel Chinees en Japans. Localisatie is niet alleen UI-strings; het omvat de lay-out van het on-screen toetsenbord, de standaard audio snelheid, de rechts-naar-links UI-spiegel voor Arabisch en Hebreeuws, en de kalender-/tijdnotatie.

UI-strings bevinden zich in een afzonderlijk 96 KB gebied van de SPI-flash; taal overschakelen is een single-byte selector. Er is geen herflash nodig om de taal te veranderen op de factory. OEM-klanten verzenden doorgaans 3 tot 5 taalvarianten per programma. De build-pijplijn accepteert een taalmanifest en produceert één ondertekend binair bestand per taal uit één bronboom.

Zie voor meer over content en localisatiestrategie de leespen-content-autoringworkflow gids en de stemtaal-aanpassing koopgids.

10. De engineering-afwegingen die u moet kennen

Als u de firmware-architectuur van leespennen evalueert voor een nieuw programma, zijn drie afwegingen belangrijk. (1) ASIC vs FPGA-decoder: ASIC is goedkoper maar vergrendeld naar één OID-formaat; FPGA kost 18 tot 30 cent meer per eenheid en ondersteunt toekomstige formaatupgrades. (2) Tickless idle: bespaart 4 KB aan code ruimte en vermindert standby-stroom van 1,2 mA naar 0,6 mA, maar voegt 12 KB aan code toe; ingeschakeld op K7, KF1, L5, Q6, Q8, T2, Y6 en uitgeschakeld op B1, B2, F8, P2 om de BOM-kosten laag te houden. (3) Audiobuffers: 24 KB op de kleinere pennen is prima voor 64 kbps mono content maar krap voor 128 kbps stereo; 64 KB op L5, Q8, T2 geeft ruimte voor stereo geluidseffecten en muziek.

Voor een OEM-programma van 3.000 tot 5.000 eenheden is de standaardaanbeveling L5 of Q8 met tickless idle, ASIC-decoder, 64 KB audiobuffer en een merk-aangepaste UI. Voor een programma van 30.000+ eenheden waar elk dubbeltje telt, is de aanbeveling K7 of Q6 met de kosten-geoptimaliseerde configuratie. Voor tendergedreven programma's waarbij een school district van 12.000 eenheden de klant is, wint T2 met de grootste batterij en 14 uur runtime.

Offerte aanvragen — krijg een snelle fabrieksreactie

Voor visuele referentie, hier is de firmware-taakprioriteitslay-out voor de L5-/Q8-/T2-familie die draait op de Cortex-M7 op 240 MHz. Audio heeft de hoogste prioriteit omdat underruns hoorbaar zijn; decoder is midden omdat slips onmerkbaar zijn; idle is het laagst.

Reading Pen Firmware Task Priority Ladder (L5 / Q8 / T2)

Veelgestelde vragen

Gerelateerd lezen

Offerte aanvragen — krijg een snelle fabrieksreactie

Frequently Asked Questions

Welk RTOS draait er op de firmware van de leespen?
Alle leespenfirmware draait op FreeRTOS 10.4 met een aangepaste tickless scheduler. Tickless idle is ingeschakeld op K7, KF1, L5, Q6, Q8, T2 en Y6 om het stand-by stroomverbruik te verlagen van 1,2 mA naar 0,6 mA, en uitgeschakeld op B1, B2, F8 en P2 om 4 KB aan coderuimte te besparen en de BOM-kosten te verlagen.
Hoe snel is end-to-end decoding op de nieuwste pennen?
End-to-end latentie van sensorcontact tot eerste audio is 95 ms op L5, Q8 en T2 met Cortex-M7-cores die de OID-decoder draaien in 31 ms plus audiokoof. B1, B2, F8, K7, KF1, P2, Q6 en Y6 gebruiken Cortex-M4-cores met een totale decodetijd van 52 ms plus audio, wat een latentie van 120 tot 180 ms geeft.
Hoe worden firmware-updates geleverd?
Updates zijn uitsluitend via USB op elk leespenmodel. Er is bewust geen Wi-Fi of Bluetooth om de BOM-kosten laag te houden en te voldoen aan de privacywetgeving voor kindergegevens. Een desktop-updater duwt een ondertekend firmware-image van 12 MB in 35 tot 60 seconden, met een 12-pens factory-hub beschikbaar voor OEM batch-flashing van 7 minuten per batch van 12 eenheden.
Wat is het verschil tussen ASIC- en FPGA-decoderimplementaties?
ASIC-decoders worden gebruikt op B1, B2, F8, K7, KF1, P2, Q6 en Y6 tegen lagere stuksprijs en lager stroomverbruik, maar vereisen een hardware-spin als het OID-formaat verandert. FPGA-decoders op L5, Q8 en T2 kosten 18 tot 30 cent meer per eenheid, maar ondersteunen toekomstige firmware-only formaatupgrades via block RAM-reconfiguratie.
Hoeveel firmware-talen worden ondersteund?
Twaalf talen worden meegeleverd: Engels, Spaans, Frans, Duits, Italiaans, Portugees, Arabisch, Hebreeuws, Russisch, Vereenvoudigd Chinees, Traditioneel Chinees en Japans. UI-strings bevinden zich in een regio van 96 KB in SPI-flash en worden omgeschakeld via een single-byte selector zonder de applicatie-image opnieuw te flashen.
Uw winkelwagen
Uw ervaring op deze website wordt verbeterd door cookies toe te staan. Cookiebeleid
Chat on WhatsApp