Panoramica dell'architettura del firmware del pennino scanner sui B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2 e Y6: bootloader, decoder OID, pipeline MP3, OTA e gestione dell'alimentazione.

Pubblicato il: dic 10, 2025 - 213 Visualizzazioni

Architettura del Firmware del Penna Scanner Spiegata: Dal Boot al Decode MP3

Pubblico:Questo articolo è rivolto a ingegneri firmware, product manager OEM e acquirenti tecnici che necessitano di comprendere l'architettura del firmware della penna di lettura sulle piattaforme B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2 e Y6, coprendo il bootloader, il driver del sensore, la pipeline del decodificatore OID, lo stack MP3, il flusso di aggiornamento OTA e la gestione dell'alimentazione.

Il firmware della penna di lettura è un piccolo sistema embedded con vincoli real-time sorprendentemente rigidi. La penna deve svegliarsi da uno stato di sonno profondo, agganciarsi a un pattern di punti OID, eseguire la correzione errori Reed-Solomon, recuperare un frame MP3 e riprodurre l'audio entro 95 e 180 millisecondi. Raggiungere questa latenza in modo affidabile con un BOM da 3,8 a 14,5 $ richiede un'attenta partizione del firmware. Di seguito esaminiamo ogni livello dal bootloader al DAC audio, evidenziando le esatte differenze tra i nostri 11 modelli attivi.

1. Il Bootloader: 16 KB che decide tutto il resto

Ogni penna di lettura viene spedita con un bootloader a due stadi. Lo stadio 1 è una regione mask-ROM da 16 KB sul MCU principale che viene eseguito per primo e valida la firma sullo stadio 2. Lo stadio 2 è il firmware applicativo da 256 KB memorizzato nella flash SPI. La firma è ECDSA-P256 con una root key di fabbrica; i clienti OEM ricevono una sottochiave per marchio in modo che il firmware di un marchio non possa essere caricato sull'hardware di un altro marchio. Il controllo firma richiede 380 ms su B1 / B2 / F8 / P2 e 240 ms su K7 / KF1 / L5 / Q6 / Q8 / T2 / Y6.

Il tempo di boot da accensione a "pronto per leggere" è di 1,2 secondi su B1 / B2 / F8 / P2, 0,8 secondi su K7 / KF1 / Q6 / Y6 e 0,6 secondi su L5 / Q8 / T2. Il percorso di boot è: stadio 1 (controllo firma) -> stadio 2 (init RTOS) -> init driver sensore -> init codec audio -> idle. Non eseguiamo alcuno stack di rete all'avvio. Non c'è Wi-Fi né Bluetooth in nessuno degli 11 modelli, il che mantiene la superficie del firmware minima.

Le versioni firmware attuali sono 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. Queste versioni sono stabili sul campo e sono state spedite in 86 rilasci firmware dal 2023.

2. Il Sistema Operativo Real-Time: FreeRTOS con uno Scheduler Personalizzato

Tutto il firmware della penna di lettura gira su FreeRTOS 10.4 con uno scheduler tickless personalizzato. Ci sono quattro task persistenti: (1) task sensore a 200 Hz con priorità 5, che esegue il polling del sensore di immagine CMOS e inserisce i frame in un ring buffer da 12 frame; (2) task decodificatore a 30 Hz con priorità 4, che preleva i frame, esegue binarizzazione, rilevamento griglia, decodifica Reed-Solomon e ricerca nel dizionario; (3) task audio a 1 kHz con priorità 6, che gestisce la pipeline di decodifica MP3 e alimenta il DAC; (4) task idle con priorità 0, che gestisce le transizioni di stato di alimentazione.

Le priorità dei task sono invertite intenzionalmente affinché il task audio possa eseguire preemption su tutto. Un buffer audio bloccato causa un glitch udibile; un decodificatore bloccato ritarda semplicemente il riconoscimento di qualche millisecondo. Il task decodificatore viene eseguito solo quando il task sensore segnala che un frame è disponibile. Il task idle si sveglia su un interrupt hardware dal sensore touch.

Tra gli 11 modelli, la configurazione RTOS differisce in due punti: il tickless idle è disabilitato su B1, B2, F8 e P2 per risparmiare 4 KB di spazio codice; è abilitato su K7, KF1, L5, Q6, Q8, T2 e Y6. La seconda differenza è la dimensione del buffer audio: 24 KB su B1 / B2 / F8 / P2 e 64 KB su L5 / Q8 / T2. Buffer più grandi riducono gli underrun audio su L5 perché pilota un amplificatore da 1 W che assorbe più corrente istantanea.

Modello RTOS tickless Buffer audio Tempo di avvio Dimensione codice
B1 / B2 No 24 KB 1,2 s 612 KB
F8 / P2 No 24 KB 1,2 s 588 KB
K7 / KF1 Sì 32 KB 0,8 s 720 KB
Q6 / Y6 Sì 32 KB 0,8 s 740 KB
L5 / Q8 / T2 Sì 64 KB 0,6 s 980 KB

3. Il Modulo Decodificatore OID: 48 KB di C a Punto Fisso

Il decodificatore OID è il codice più critico per le prestazioni sulla penna. È scritto in C a punto fisso (nessuna virgola mobile) e viene compilato in circa 48 KB di codice ARM Thumb-2 sui core Cortex-M4 usati in B1, B2, F8, K7, KF1, P2, Q6 e Y6, e in 52 KB sui core Cortex-M7 usati in L5, Q8 e T2.

Il modulo decodificatore contiene sette subroutine: binarizza, rileva-griglia, correzione-prospettica, decodifica-RS, hash, ricerca-dizionario e recupera-offset-audio. Ogni viene eseguita in una fetta di tempo deterministica. Sul Cortex-M4 a 168 MHz, binarizza richiede 8 ms per una finestra 32x32; rileva-griglia 12 ms; decodifica-RS 18 ms; hash più ricerca 14 ms; totale 52 ms. Sul Cortex-M7 a 240 MHz, questi numeri scendono a 5 ms, 7 ms, 11 ms, 8 ms; totale 31 ms. I modelli L5 / Q8 / T2 spediscono la build M7, che è ciò che permette di raggiungere il numero di latenza end-to-end di 95 ms.

La tabella di ricerca del dizionario viene costruita al momento della compilazione del firmware dal manifest dei contenuti. Per un libro bilingue di 32 pagine con 600 file audio, la tabella è di circa 8,4 KB. Per un'enciclopedia di 96 pagine con 4.200 file audio, la tabella è di 58,8 KB. La tabella è memorizzata nella stessa flash SPI degli asset audio e viene caricata pigra nella RAM secondo necessità.

Consiglio per l'acquirente:Se il vostro libro contiene più di 4.000 file audio unici, non usate le penne B1, B2, F8, P2 o K7. La tabella di ricerca del dizionario supera 56 KB e i 64 KB di RAM su quelle piattaforme non possono contenere il working set, il che attiva riletture dalla flash e aggiunge 30-60 ms di latenza. Restate su L5, Q8, T2 o Y6 per programmi ad alta densità di contenuti.

4. La Pipeline MP3: Decodificatore Helix e Alimentazione DMA

Una volta che la ricerca nel dizionario restituisce un offset e una lunghezza audio, il firmware passa alla pipeline MP3. La pipeline utilizza il decodificatore MP3 Helix, un'implementazione a punto fisso di RealNetworks che occupa 28 KB di spazio codice e gira su ogni modello. Il decodificatore emette PCM a 16 bit 44,1 kHz, che viene inviato al DAC on-chip via DMA.

Il DMA è configurato per trasferimento double-buffered con un buffer di 512 campioni su B1 / B2 / F8 / P2 / K7 / KF1 e un buffer di 1024 campioni su L5 / Q8 / T2 / Y6. Il buffer DMA più grande sulle penne più grandi riduce la possibilità di un buffer underrun quando il task decodificatore esegue preemption sul task audio. La protezione da underrun è integrata: se il buffer DMA scende sotto il 25%, il firmware abbassa momentaneamente la priorità di decodifica MP3 di uno per dare più tempo CPU al task audio.

Le frequenze di campionamento audio supportate sono 8, 16, 22,05, 32, 44,1 e 48 kHz. Le bit rate da 32 kbps mono a 320 kbps stereo vengono decodificate. In pratica forniamo contenuti a 128 kbps stereo per narrazione di alta qualità e 64 kbps mono per effetti sonori. Un libro di 32 pagine con 600 file audio a 128 kbps occupa in media 0,9-1,1 GB di audio; compressi nella flash SPI, si attestano intorno a 380-460 MB dopo la codifica Helix. I 4 MB di flash su B1 / B2 / F8 / P2 sono riservati solo all'immagine firmware; gli asset audio risiedono su un chip flash separato da 4 GB o 8 GB su K7 / KF1 / Q6 / Y6, o su un chip da 16 GB su L5 / Q8 / T2.

Per ulteriori dettagli sulla codifica audio, vedere l'articolo codec audio della penna di lettura e compressione MP3. Per il lato OID, vedere come funziona la tecnologia della penna di lettura OID.

5. Gestione dell'Alimentazione: Cinque Stati, Un Obiettivo

Le penne di lettura sono alimentate a batteria e spedite in 47 paesi, molti con elettricità intermittente. Il firmware definisce cinque stati di alimentazione. (1) Spedizione: sonno profondo a 8 uA, batteria preservata per 18 mesi. (2) Spento: sonno profondo a 12 uA, l'interruttore on-off è elettronico non meccanico su ogni modello tranne T2. (3) Standby: 1,2 mA, polling sensore a 5 Hz per rilevamento touch, pronto in 8 ms. (4) Attivo: 60-180 mA a seconda del percorso audio. (5) Ricarica: 380 mA di picco, ingresso USB-C 5 V su ogni modello tranne P2 (micro-USB) e T2 (USB-C più jack DC).

La transizione tra Standby e Attivo è attivata da un interrupt touch da un sensore capacitivo incorporato nella punta della penna. L'interrupt si attiva quando l'utente entra in contatto con la pagina; il task sensore sveglia le pipeline del decodificatore e dell'audio. Il tempo end-to-end di sveglia-e-decodifica su L5, Q8 e T2 è di 95 ms; su B1, B2, F8, K7, KF1, P2, Q6 e Y6 è di 120-180 ms.

L'autonomia della batteria è il numero in evidenza su ogni scheda tecnica: B1 5,0 h, B2 5,5 h, F8 4,5 h, K7 / KF1 6,0 h, L5 8,5 h, P2 4,0 h, Q6 6,5 h, Q8 7,0 h, T2 14 h, Y6 11 h. Questi sono misurati al 50% del volume, ciclo di lavoro del 12% (uso tipico del bambino), con polling continuo del sensore. L'uso nel mondo reale varia; la sicurezza della batteria lithium polymer della penna di letturaL'articolo tratta la chimica delle celle sottostante e il profilo di ricarica.

6. Aggiornamenti OTA: Solo USB per Progettazione

Non includiamo intenzionalmente Wi-Fi o Bluetooth su nessuna penna di lettura. Il motivo è duplice: costo BOM e privacy dei dati dei minori. Senza radio, la penna non può trasmettere dati di utilizzo, il che semplifica la conformità a COPPA, GDPR-K e PIPL. Gli aggiornamenti sono quindi solo USB su ogni modello. L'utente collega la penna a un computer, esegue l'applicazione di aggiornamento desktop da 12 MB e la nuova immagine del firmware viene inviata in 35-60 secondi.

Per i clienti OEM, forniamo un'applicazione di aggiornamento brandizzabile costruita con Electron. L'app verifica la firma del firmware, mostra l'avanzamento e cancella la cache del dizionario. Per i programmi B2B di 3.000+ unità, offriamo anche uno strumento di flashing da piano di fabbrica che programma 12 penne in parallelo tramite hub USB, completando un lotto di 12 unità in 7 minuti.

L'OTA tramite USB mantiene il BOM economico (nessun chipset Wi-Fi, nessuna antenna, nessuno schermo RF) e l'impronta di certificazione ridotta (nessun FCC ID, nessun test radio RED). Per ulteriori informazioni sulle implicazioni di certificazione, consulta il aggiornamento certificazione penna di lettura dopo cambio prodotto guida all'acquisto e il manuale strategia aggiornamento software penna di lettura playbook.

7. Pipeline di Build: Dal Manifest al Binary Firmato

La pipeline di build del firmware riceve tre input: (1) il manifest del contenuto, un CSV che elenca ogni percorso file audio, lingua target e coordinata della pagina; (2) la configurazione brand OEM, un file JSON con la chiave del brand, il certificato di firma e le stringhe UI; (3) la versione base del firmware, attualmente uno degli 11 rami versionati sopra. La pipeline viene eseguita nel nostro sistema CI e produce un binary firmware firmato in 4 ore per un tipico libro di 32 pagine.

Le fasi della pipeline sono: (1) normalizzazione audio a -16 LUFS; (2) codifica MP3 a 128 kbps stereo o 64 kbps mono; (3) generazione tabella dizionario; (4) generazione parità Reed-Solomon; (5) linking del firmware con la configurazione brand; (6) firma ECDSA; (7) hash e pacchettizzazione. Le fasi 1-4 richiedono 90 minuti per una libreria audio di 1 GB. I passaggi 5-7 richiedono 15 minuti. Totale: circa 105 minuti di clock reale per un tipico libro personalizzato.

Per i clienti OEM ad alto volume, la pipeline di build è disponibile come API self-service. Un libro di 32 pagine con 600 file audio restituisce un binary firmware firmato in circa 95 minuti tramite l'API. Abbiamo eseguito 86 rilasci di firmware dal 2023 sulla base installata di 47.000+ penne.

Reading Pen Firmware Build Pipeline (Custom OEM Book)

8. Gestione Errori e Recupero

Il firmware della penna di lettura è costruito per essere recuperabile. Il bootloader a due stadi con firma ECDSA significa che un'immagine dell'applicazione corrotta viene rilevata all'avvio e la penna torna al recupero dello stadio 2. La modalità di recupero è un'immagine minima di 4 KB che può riflashare l'applicazione tramite USB. Su 47.000+ penne spedite, la modalità di recupero è stata attivata nello 0,07% dei casi, quasi sempre a causa di perdita di alimentazione USB durante un aggiornamento.

Il firmware implementa anche un watchdog timer di 4 secondi. Se qualsiasi task non riesce a inviare heartbeat, il watchdog resetta il core Cortex-M. I task del sensore, del decoder e dell'audio inviano tutti heartbeat alla loro cadenza naturale; il task idle non è controllato perché gli è permesso di dormire indefinitamente.

L'affidabilità sul campo, misurata sulla base installata, è del 99,4% su 24 mesi per B1, B2, F8, K7, KF1, P2, Q6 e Y6, e del 99,6% per L5, Q8 e T2. Lo spread di 0,2 punti è attribuibile alla base di codice più grande e alla temperatura operativa più alta dell'amplificatore da 1 W nella famiglia L5. Per la metodologia QA, consulta il standard test di invecchiamento penna di lettura guida all'acquisto e il manuale risoluzione problemi penna di lettura.

9. Strategia di Localizzazione: 12 Lingue, Una Codebase

Spediamo 12 versioni linguistiche del firmware: inglese, spagnolo, francese, tedesco, italiano, portoghese, arabo, ebraico, russo, cinese semplificato, cinese tradizionale e giapponese. La localizzazione non è solo stringhe UI; include il layout della tastiera su schermo, la velocità audio predefinita, il mirror UI da destra a sinistra per arabo ed ebraico e il formato calendario/data.

Le stringhe UI risiedono in una regione separata di 96 KB della flash SPI; cambiare lingua è un selettore di un singolo byte. Non è necessario riflashare per cambiare lingua in fabbrica. I clienti OEM tipicamente spediscono da 3 a 5 varianti linguistiche per programma. La pipeline di build accetta un manifest linguistico e produce un binary firmato per lingua da un singolo source tree.

Per ulteriori informazioni su contenuto e strategia di localizzazione, consulta la guida workflow di creazione contenuti penna di letturala guida e laguida personalizzazione lingua vocaleguida all'acquisto.

10. I Compromessi di Ingegneria che Dovresti Conoscere

Se stai valutando l'architettura del firmware della penna di lettura per un nuovo programma, tre compromessi sono importanti. (1) Decoder ASIC vs FPGA: l'ASIC è più economico ma bloccato a un formato OID; l'FPGA costa 18-30 centesimi in più per unità e supporta aggiornamenti di formato futuri. (2) Tickless idle: risparmia 4 KB di spazio di codice e riduce la corrente in standby da 1,2 mA a 0,6 mA, ma aggiunge 12 KB di codice; abilitato su K7, KF1, L5, Q6, Q8, T2, Y6 e disabilitato su B1, B2, F8, P2 per mantenere basso il costo BOM. (3) Dimensione buffer audio: 24 KB sulle penne più piccole va bene per contenuto mono a 64 kbps ma è stretto per stereo a 128 kbps; 64 KB su L5, Q8, T2 dà margine per effetti sonori stereo e music bed.

Per un programma OEM da 3.000 a 5.000 unità, la raccomandazione standard è L5 o Q8 con tickless idle, decoder ASIC, buffer audio da 64 KB e UI brand-custom. Per un programma da 30.000+ unità dove ogni centesimo conta, la raccomandazione è K7 o Q6 con configurazione ottimizzata per costi. Per programmi guidati da gare d'appalto dove un distretto scolastico di 12.000 unità è il cliente, T2 con la batteria più grande e 14 ore di autonomia vince.

Richiedi un Preventivo — Ottieni una Risposta Rapida dalla Fabbrica

Per riferimento visivo, ecco il layout di priorità dei task firmware per la famiglia L5/Q8/T2 che gira su Cortex-M7 a 240 MHz. L'audio è la priorità più alta perché gli underrun sono udibili; il decoder è medio perché gli slittamenti sono impercettibili; idle è il più basso.

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

FAQ

Letture Correlate

Richiedi un Preventivo — Ottieni una Risposta Rapida dalla Fabbrica

Frequently Asked Questions

Quale RTOS esegue il firmware del pennino di lettura?
Tutto il firmware dei pennini di lettura funziona su FreeRTOS 10.4 con uno scheduler tickless personalizzato. Il tickless idle è attivo su K7, KF1, L5, Q6, Q8, T2 e Y6 per ridurre la corrente di standby da 1,2 mA a 0,6 mA, e disattivato su B1, B2, F8 e P2 per risparmiare 4 KB di spazio di codice e abbassare il costo BOM.
Quanto è veloce la decodifica end-to-end sui pennini più recenti?
La latenza end-to-end dal contatto del sensore al primo audio è di 95 ms su L5, Q8 e T2 con core Cortex-M7 che eseguono il decoder OID in 31 ms più la pipeline audio. B1, B2, F8, K7, KF1, P2, Q6 e Y6 utilizzano core Cortex-M4 con tempo di decodifica totale di 52 ms più audio, generando una latenza da 120 a 180 ms.
Come vengono distribuiti gli aggiornamenti del firmware?
Gli aggiornamenti avvengono esclusivamente tramite USB su ogni modello di pennino di lettura. Non è presente Wi-Fi o Bluetooth per progettazione per mantenere basso il costo BOM e garantire la conformità sulla privacy dei dati dei minori. Un aggiornatore desktop carica un'immagine firmware firmata da 12 MB in 35-60 secondi, con un hub da 12 pennini disponibile per il flashing batch OEM a 7 minuti per batch di 12 unità.
Qual è la differenza tra le implementazioni dei decoder ASIC e FPGA?
I decoder ASIC sono utilizzati su B1, B2, F8, K7, KF1, P2, Q6 e Y6 a costo unitario inferiore e minor consumo energetico, ma richiedono una revisione hardware se il formato OID cambia. I decoder FPGA su L5, Q8 e T2 costano 18-30 centesimi in più per unità ma supportano aggiornamenti del formato futuri solo tramite firmware tramite riconfigurazione della block RAM.
Quante lingue supporta il firmware?
Sono incluse dodici lingue: inglese, spagnolo, francese, tedesco, italiano, portoghese, arabo, ebraico, russo, cinese semplificato, cinese tradizionale e giapponese. Le stringhe dell'interfaccia utente risiedono in una regione di 96 KB di memoria flash SPI e vengono commutate tramite un selettore a singolo byte senza dover riflashare l'immagine dell'applicazione.
Il tuo carrello
La tua esperienza su questo sito migliorerà consentendo i cookie. Cookie Policy
Chat on WhatsApp