IT201800002895A1 - Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento - Google Patents

Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento Download PDF

Info

Publication number
IT201800002895A1
IT201800002895A1 IT102018000002895A IT201800002895A IT201800002895A1 IT 201800002895 A1 IT201800002895 A1 IT 201800002895A1 IT 102018000002895 A IT102018000002895 A IT 102018000002895A IT 201800002895 A IT201800002895 A IT 201800002895A IT 201800002895 A1 IT201800002895 A1 IT 201800002895A1
Authority
IT
Italy
Prior art keywords
data
configuration data
signature
configuration
processing system
Prior art date
Application number
IT102018000002895A
Other languages
English (en)
Inventor
Roberto Colombo
Om Ranjan
Original Assignee
Stmicroelectronics Application Gmbh
St Microelectronics Pvt Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Stmicroelectronics Application Gmbh, St Microelectronics Pvt Ltd filed Critical Stmicroelectronics Application Gmbh
Priority to IT102018000002895A priority Critical patent/IT201800002895A1/it
Priority to US16/273,704 priority patent/US11048525B2/en
Priority to EP19156613.2A priority patent/EP3531289B1/en
Publication of IT201800002895A1 publication Critical patent/IT201800002895A1/it
Priority to US17/341,054 priority patent/US11822934B2/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Power Engineering (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Human Computer Interaction (AREA)
  • Storage Device Security (AREA)
  • Hardware Redundancy (AREA)

Description

DESCRIZIONE dell’invenzione industriale dal titolo:
“Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento”
TESTO DELLA DESCRIZIONE
Campo Tecnico
Le forme di attuazione della presente descrizione sono relative ai sistemi di elaborazione, come i microcontrollori, che hanno associata una memoria nella quale sono memorizzati dati di configurazione.
Sfondo
La Figura 1 rappresenta un tipico sistema elettronico, come il sistema elettronico di un veicolo, comprendente una pluralità di sistemi di elaborazione 10, come sistemi embedded o circuiti integrati, per es., una FPGA (Field Programmable Gate Array), un DSP (Digital Signal Processor) o un microcontrollore (per es., dedicato al mercato automotive).
Per esempio, nella Figura 1 sono rappresentati tre sistemi di elaborazione 101, 102 e 103 connessi attraverso un sistema di comunicazione 20 adatto. Per esempio, il sistema di comunicazione può comprendere un bus di controllo del veicolo, come un bus CAN (Controller Area Network), ed eventualmente un bus multimediale, come un bus MOST (Media Oriented Systems Transport), connesso al bus di controllo del veicolo attraverso un gateway. Tipicamente, i sistemi di elaborazione 10 sono situati in differenti posizioni del veicolo e possono comprendere, per es., una Unità di Controllo del Motore (ECU, “Engine Control Unit”), una Unità di Controllo della Trasmissione (TCU, “Transmission Control Unit”), un Sistema Frenante Antiblocco (ABS, “Anti-lock Braking System”), moduli di controllo della carrozzeria (BCM, “Body Control Module”), e/o un sistema audio multimediale e/o di navigazione.
Future generazioni di sistemi di elaborazione, in particolare microcontrollori dedicati alle applicazioni automotive, presenteranno un notevole aumento della complessità, dovuto principalmente al numero crescente di funzionalità (come nuovi protocolli, nuove caratteristiche, ecc.) ed ai vincoli stringenti per quanto concerne le condizioni operative del sistema (come un consumo di potenza più basso, maggiore velocità e potenza di calcolo, ecc.).
La Figura 2 rappresenta uno schema a blocchi di un esempio di un sistema di elaborazione 10 digitale, come un microcontrollore, che può essere usato come uno qualsiasi dei sistemi di elaborazione 10 della Figura 1.
Nell’esempio considerato, il sistema di elaborazione 10a comprende almeno una unità di elaborazione 102, come un microprocessore, di solito l’Unità di Elaborazione Centrale (CPU, “Central Processing Unit”), programmata attraverso istruzioni software. Di solito, il software eseguito dall’unità di elaborazione 102 è memorizzato in una memoria di programma 104a, come una memoria non volatile, quale una memoria Flash o una EEPROM. Generalmente, la memoria 104a può essere integrata con l’unità di elaborazione 102 in un singolo circuito integrato, oppure la memoria 104a può essere sotto forma di un circuito integrato separato e può essere connessa all’unità di elaborazione 102, per es. tramite le piste di una scheda a circuito stampato. Così, in generale la memoria 104a contiene il firmware per l’unità di elaborazione 102, in cui il termine firmware comprende sia il software di un microprocessore sia i dati di programmazione di un circuito logico programmabile, come una FPGA.
Nell’esempio considerato, l’unità di elaborazione 102 può avere associate una o più risorse 106, come:
- una o più interfacce di comunicazione, come interfacce UART (Universal Asynchronous Receiver/ Transmitter), Bus SPI (Serial Peripheral Interface), I<2>C (Inter-Integrated Circuit), bus CAN (Controller Area Network), Ethernet e/o di debug; e/o
- uno o più convertitori analogico/digitali e/o digitale/analogici; e/o
- uno o più componenti digitali dedicati, come contatori e/o time hardware, o un coprocessore crittografico; e/o
- uno o più componenti analogici, come comparatori, sensori, come un sensore di temperatura, ecc.; e/o
- uno o più componenti a segnali misti, come un dispositivo di pilotaggio PWM (Pulse-Width Modulation).
Di conseguenza, il sistema di elaborazione 10 digitale può supportare differenti funzionalità. Per esempio, il comportamento dell’unità di elaborazione 102 è determinato dal firmware memorizzato nella memoria 104a, per es., le istruzioni software che devono essere eseguite da un microprocessore 102 di un microcontrollore 10. Così, installando un firmware differente, lo stesso hardware (microcontrollore) può essere usato per applicazioni differenti. Spesso, il comportamento del sistema di elaborazione 10 può anche essere variato in base a dati di configurazione CD. Per esempio, questi dati di configurazione CD possono essere scritti in specifiche aree della memoria di programma non volatile 104a e possono essere recuperate quando il sistema di elaborazione 10a è acceso. In alternativa o in aggiunta, i dati di configurazione CD possono essere memorizzati in una memoria non volatile 104b aggiuntiva, come una memoria programmabile una sola volta (OTP, “One-Time Programmable”), per es. implementata con fusibili. Per esempio, la memoria di programma 104a può essere usata nel caso in cui i blocchi rappresentati nella Figura 2 siano integrati in un circuito integrato comune. Per contro, una memoria non volatile 104b aggiuntiva può essere usata nel caso in cui la memoria di programma 104a sia una memoria esterna, e soltanto gli altri blocchi siano integrati in un circuito integrato comune. Di conseguenza, generalmente, i dati di configurazione CD sono memorizzati in una memoria non volatile (104a e/o 104b) del circuito integrato che comprende i blocchi che richiedono dati di configurazione, come l’unità di elaborazione 102 e/o una o più delle risorse hardware 106.
Per esempio, tali dati di configurazione CD sono spesso dati di calibrazione usati per garantire che il comportamento dell’hardware sia uniforme, compensando con ciò possibili tolleranze dei processi di produzione. Per esempio, questo si applica spesso alla calibrazione dei componenti analogici del sistema di elaborazione, come un sensore di temperatura, un convertitore analogico/digitale, un riferimento di tensione, ecc. Per esempio, un livello di soglia di monitor della tensione di un comparatore analogico potrebbe essere “trimmerato” al valore esatto voluto regolando alcuni livelli con dati di configurazione/calibrazione, che sono scritti dal produttore dell’hardware dei sistemi di elaborazione, per es. il produttore del microcontrollore.
Inoltre, i dati di configurazione CD possono anche essere usati per personalizzare il comportamento dell’hardware, per es., delle risorse hardware 106, secondo differenti necessità applicative. Per esempio, una volta che il firmware del sistema di elaborazione 10 è stato memorizzato nel sistema di elaborazione 10, alcuni dati di configurazione possono essere scritti al fine di disattivare l’interfaccia di debug, che potrebbe essere usata per es. per scaricare il firmware del sistema di elaborazione 10.
Il sistema di elaborazione può anche essere configurato per permettere che una prima parte dei dati di configurazione CD sia scritta dal produttore dell’hardware del sistema di elaborazione (per es., il produttore di un circuito integrato), e che una seconda parte dei dati di configurazione CD sia scritta dallo sviluppatore del firmware del sistema di elaborazione 10.
Tipicamente, i dati di configurazione CD programmati sono letti durante una fase di reset, che inizia di solito non appena il sistema di elaborazione 10 è acceso. Specificamente, come rappresentato nella Figura 2, il sistema di elaborazione 10 può comprendere a questo scopo un modulo di configurazione 108 configurato per leggere i dati di configurazione CD dalla memoria non volatile 104a e/o 104b, e per distribuire questi dati di configurazione CD nel sistema di elaborazione 10.
Sintesi
In considerazione di quanto precede, uno scopo delle varie forme di attuazione della presente descrizione è di fornire soluzioni per monitorare il funzionamento corretto dei blocchi coinvolti durante la configurazione del sistema di elaborazione.
Secondo una o più forme di attuazione, uno o più degli scopi precedenti sono raggiunti per mezzo di un sistema di elaborazione avente le caratteristiche esposte specificamente nelle rivendicazioni che seguono. Le forme di attuazione concernono inoltre un relativo circuito integrato, dispositivo e procedimento.
Le rivendicazioni sono parte integrante dell’insegnamento tecnico della descrizione qui fornita.
Come menzionato in precedenza, varie forme di attuazione della presente descrizione sono relative a un sistema di elaborazione. In varie forme di attuazione, il sistema di elaborazione comprende almeno un blocco hardware, una memoria non volatile, un modulo di configurazione hardware e una pluralità di client dei dati di configurazione.
Specificamente, in varie forme di attuazione, ciascun client dei dati di configurazione comprende un registro, in cui a ciascun client dei dati di configurazione è associato un rispettivo indirizzo, e in cui ciascun client dei dati di configurazione è configurato per ricevere dati di configurazione indirizzati al rispettivo indirizzo e per memorizzare i dati di configurazione ricevuti nel registro. Il blocco (i blocchi) hardware è connesso (sono connessi) ai client dei dati di configurazione e cambia (cambiano) funzionamento in funzione dei dati di configurazione memorizzati nei registri dei client dei dati di configurazione.
In varie forme di attuazione, i rispettivi dati di configurazione sono memorizzati nella memoria non volatile. Specificamente, i dati di configurazione sono memorizzati sotto forma di pacchetti di dati comprendenti un campo di attributo che identifica l’indirizzo di uno dei client dei dati di configurazione e i rispettivi dati di configurazione. In varie forme di attuazione, il modulo di configurazione hardware è così configurato per leggere in sequenza i pacchetti di dati dalla memoria non volatile e per trasmettere i rispettivi dati di configurazione letti dalla memoria non volatile al rispettivo client dei dati di configurazione.
In varie forme di attuazione, la memoria non volatile ha anche memorizzati dati di firma, in cui il modulo di configurazione hardware è configurato per leggere anche i dati di firma dalla memoria non volatile.
Specificamente, in varie forme di attuazione, il sistema di elaborazione comprende inoltre un circuito di calcolo delle firme configurato per calcolare ulteriori dati di firma in funzione dei rispettivi dati di configurazione trasmessi ai client dei dati di configurazione e/o memorizzati nei registri dei client dei dati di configurazione. Per esempio, a questo scopo, una volta che ha ricevuto i dati di configurazione, ciascun client dei dati di configurazione può trasmettere i rispettivi dati di configurazione al circuito di calcolo delle firme. In aggiunta o in alternativa, il circuito di calcolo delle firme può monitorare i dati trasmessi tra il modulo di configurazione hardware e i client dei dati di configurazione, per es. nel caso in cui sia usato un bus comune.
I dati di firma e gli ulteriori dati di firma sono forniti a un circuito di verifica della firma. Specificamente, in varie forme di attuazione, il circuito di verifica della firma confronta i dati di firma letti dalla memoria non volatile con i dati di firma calcolati dal circuito di calcolo delle firme e genera un segnale di errore quando i dati di firma non corrispondono. Per esempio, il circuito di calcolo delle firme può calcolare i dati di firma con una funzione di hashing, come MD5 o Secure Hash Algorithm, per es. SHA-1 o SHA-256, oppure può calcolare i dati di firma codificando e/o crittografando i dati di configurazione, per es. usando l’Advanced Encryption Standard o il Data Encryption Standard, e selezionando un sottoinsieme dei dati codificati/crittografati.
In varie forme di attuazione, i dati di firma possono essere memorizzati insieme ai dati di configurazione nella memoria non volatile sotto forma di uno o più pacchetti di dati. Più specificamente, in varie forme di attuazione, il circuito di calcolo delle firme stesso ha associato almeno un client dei dati di configurazione. In questo caso, i dati di firma possono così essere memorizzati nella memoria non volatile sotto forma di dati di configurazione comprendenti uno o più pacchetti di dati che comprendono un campo di attributo che identifica l’indirizzo del (dei) client dei dati di configurazione associato (associati) al circuito di calcolo delle firme.
In generale, la memoria non volatile può comprendere anche una pluralità di insiemi di dati di configurazione, in cui rispettivi dati di firma sono memorizzati per ciascun insieme di dati di configurazione, e in cui il circuito di calcolo delle firme è configurato per calcolare rispettivi dati di firma per i dati di configurazione di ciascun insieme di dati di configurazione trasmessi ai client dei dati di configurazione e/o memorizzati nei registri dei client dei dati di configurazione.
Breve descrizione delle figure
Forme di attuazione della presente descrizione saranno ora descritte con riferimento ai disegni annessi, che sono forniti puramente a titolo di esempio non limitativo, e nei quali:
- la Figura 1 rappresenta un tipico sistema elettronico;
- la Figura 2 rappresenta un sistema di elaborazione comprendente un modulo di configurazione;
- la Figura 3 rappresenta una prima forma di attuazione di un sistema di elaborazione comprendente una memoria non volatile avente memorizzati dati di configurazione, un modulo di configurazione e client dei dati di configurazione;
- la Figura 4 rappresenta una forma di attuazione del sistema di elaborazione della Figura 3;
- le Figure 5a e 5b rappresentano forme di attuazione per calcolare dati di firma in funzione dei dati di configurazione trasmessi ai client dei dati di configurazione della Figura 3;
- le Figure 6a e 6b rappresentano forme di attuazione per leggere dati di firma precalcolati dalla memoria non volatile della Figura 3;
- la Figura 7 rappresenta una forma di attuazione di un sistema di elaborazione configurato per confrontare i dati di firma calcolati delle Figure 5a e 5b con i dati di firma precalcolati delle Figure 6a e 6b;
- la Figura 8 rappresenta una forma di attuazione di un client dei dati di configurazione;
- la Figura 9 è un diagramma di flusso che illustra un procedimento per fare funzionare un sistema di elaborazione secondo la presente descrizione; e
- la Figura 10 rappresenta una forma di attuazione di un sistema di elaborazione che prende in considerazione i dati del ciclo di vita durante la verifica della firma.
Descrizione Dettagliata
Nella descrizione che segue, sono illustrati numerosi dettagli specifici, allo scopo di fornire una comprensione approfondita delle forme di attuazione. Le forme di attuazione possono essere attuate senza uno o più dei dettagli specifici o con altri procedimenti, componenti, materiali, ecc. In altri casi, operazioni, materiali o strutture ben note non sono illustrate o descritte in dettaglio in modo tale che certi aspetti delle forme di attuazione non saranno resi poco chiari.
Un riferimento a “una forma di attuazione” in tutta questa descrizione intende indicare che una particolare configurazione, struttura, o caratteristica descritta con riferimento alla forma di attuazione è compresa in almeno una forma di attuazione. Così, le frasi come “in una forma di attuazione” che compaiono in vari punti della presente descrizione non fanno necessariamente riferimento tutte alla stessa forma di attuazione. Inoltre, particolari conformazioni, strutture o caratteristiche possono essere combinate in un modo adeguato qualsiasi in una o più forme di attuazione.
I riferimenti usati qui sono forniti semplicemente per convenienza e quindi non definiscono l’ambito di protezione o l’ambito delle forme di attuazione.
Nelle Figure da 3 a 10 che seguono, le parti, gli elementi o i componenti che sono già stati descritti con riferimento alle Figure 1 e 4 sono indicati con gli stessi riferimenti usati precedentemente in tali Figure; la descrizione di tali elementi descritti precedentemente non sarà ripetuta in seguito al fine di non rendere troppo pesante la presente descrizione dettagliata.
Come descritto in precedenza, l’hardware del sistema di elaborazione 10a può essere configurabile per mezzo di un insieme di dati di configurazione, cioè parametri che sono memorizzati (per es., in modo permanente) nella memoria non volatile.
Per esempio, la Figura 3 rappresenta una possibile forma di attuazione per distribuire tali dati di configurazione CD nel sistema di elaborazione 10a come descritto, per es., con riferimento alla Figura 2. Di conseguenza, la descrizione della Figura 2 si applica nella sua interezza anche al sistema di elaborazione 10a della Figura 3.
Nella forma di attuazione considerata, uno o più dati di configurazione CD sono memorizzati in una o più memorie non volatili 104 (cioè, memorie 104a e/o 104b). In varie forme di attuazione, questi dati di configurazione CD sono memorizzati in aree di memoria riservate, per es. sotto forma di una pluralità di locazioni di memoria consecutive.
Di conseguenza, nella forma di attuazione considerata, il modulo di configurazione 108 accede alle aree di memoria riservate che contengono i dati di configurazione CD, legge i dati di configurazione CD e trasmette i dati di configurazione CD a un rispettivo blocco 110 all’interno del sistema di elaborazione 10a. In generale, il blocco 110 può corrispondere a un qualsiasi blocco del sistema di elaborazione 10a che richiede dati di configurazione e può corrispondere all’unità di elaborazione 102, a una risorsa hardware 106, o perfino a una memoria (per es., la memoria 104a). Per esempio, il blocco 110 può essere un’interfaccia di debug del sistema di elaborazione 10a, che è abilitata o disabilitata in base ai dati di configurazione CD. Similmente, i dati di configurazione CD possono essere usati per configurare aree protette di scrittura e/o di lettura di una memoria.
Nella forma di attuazione, ciascun blocco 110 ha associato un rispettivo client dei dati di configurazione 112. Per esempio, nella Figura 3 sono rappresentati tre blocchi 110a, 110b e 110c e tre client dei dati di configurazione 112a, 112b e 112c. In generale, ciascun client dei dati di configurazione 112 può essere associato in modo univoco a un singolo blocco hardware 110, e può essere provvisto di dati di configurazione soltanto per il blocco hardware 110 associato, per es. una specifica risorsa hardware 106, o può essere associato a una pluralità di blocchi hardware 110, per es. una pluralità di risorse hardware 106. In generale, i client dei dati di configurazione 112a, 112b e 112c possono anche essere integrati nei rispettivi blocchi 110a, 110b e 110c.
Di conseguenza, nella forma di attuazione considerata, il modulo di configurazione 108 può determinare, per ciascun blocco 110 target da configurare, i rispettivi dati di configurazione (selezionati tra i dati di configurazione CD) e può trasmettere i dati di configurazione associati al blocco 110 target al client dei dati di configurazione 112 associato al blocco 110 target. Similmente, mentre legge i dati di configurazione CD dalla memoria 104, il modulo di configurazione 108 può determinare il blocco (i blocchi) target per le informazioni di configurazione corrente e può inviare i dati di configurazione correnti al (ai) client dei dati di configurazione associato (associati) al rispettivo blocco (ai rispettivi blocchi) target. Generalmente, può essere usata una comunicazione qualsiasi per trasmettere i dati di configurazione al client dei dati di configurazione 112, comprendendo comunicazioni sia seriali sia parallele. Per esempio, il modulo di configurazione 108 e i client dei dati di configurazione 112 possono essere connessi tramite un bus 114, e ciascuno dei client dei dati di configurazione 112 può avere associato un rispettivo indirizzo target.
Di conseguenza, ciascun client dei dati di configurazione 112 è configurato per ricevere i dati di configurazione dal modulo 108, per memorizzarli nel registro interno, per es. per memorizzarli in uno o più latch o flip-flop interni. I dati memorizzati nel registro possono quindi essere usati per generare uno o più segnali, che influenzano il comportamento di uno o più blocchi hardware 110.
La Figura 4 rappresenta a questo riguardo una possibile forma di attuazione della comunicazione tra il modulo di configurazione 108 e i client dei dati di configurazione 112.
Specificamente, anche in questo caso, il sistema di elaborazione 10a comprende un modulo di configurazione 108 configurato per leggere i dati di configurazione CD da una o più memorie non volatili 104 (per es., le memorie 104a e/o 104b) e una pluralità di client dei dati di configurazione 112 configurati per ricevere rispettivi dati di configurazione dal modulo 108 e per distribuirli tra una pluralità di blocchi 110 (non rappresentati) che richiedono dati di configurazione. Per esempio, come menzionato in precedenza, ciascun client dei dati di configurazione 112 può essere associato in modo univoco a un rispettivo blocco 110. Per esempio, nella forma di attuazione considerata, il sistema di elaborazione 10a comprende di nuovo tre client dei dati di configurazione 112a, 112b e 112c.
Nella forma di attuazione considerata, il modulo di configurazione 108 comprende un modulo di lettura dei dati 1080 configurato per leggere i dati di configurazione CD dalla memoria 104 e un modulo di smistamento 1082 configurato per trasmettere i dati di configurazione ai client dei dati di configurazione 112.
In generale, può essere usata una qualsiasi comunicazione per la comunicazione tra il modulo di smistamento 1082 e i client dei dati di configurazione 112.
Per esempio, in varie forme di attuazione, la comunicazione tra il modulo di smistamento 1082 e i client dei dati di configurazione 112 è basata su trame (“frame”) di dati secondo un dato formato, chiamato in seguito Formato di Configurazione di Dispositivo (DCF “Device Configuration Format”). Per esempio, in varie forme di attuazione, ciascuna trama di dati comprende due campi: il carico utile o payload (cioè, i dati reali), chiamato carico utile di Formato DCF, e possibili attributi di dati aggiuntivi usati per identificare il ricevitore dei dati, chiamati attributi di Formato DCF, in cui il ricevitore è uno dei client dei dati di configurazione 112 che rappresenta un client di DCF. Per esempio, gli attributi di dati possono consistere di 16 o 32 bit, in cui un dato numero di bit specifica l’indirizzo di uno dei client dei dati di configurazione 112, e il carico utile può consistere di 16 o 32 bit. Per esempio, in varie forme di attuazione, il modulo di lettura dei dati 1080 è configurato per leggere blocchi di 64 bit dalla memoria 104, in cui i primi 32 bit contengono gli attributi di dati (includendo l’indirizzo di un client dei dati di configurazione) e i secondi 32 bit contengono i dati di configurazione da trasmettere all’indirizzo specificato negli attributi di dati.
Nella forma di attuazione considerata, ciascun client dei dati di configurazione/client di DCF 112 è un modulo hardware, comprendente di solito un circuito combinatorio configurato per memorizzare i dati ricevuti in un registro interno implementato, per es., con dei flip-flop/latch, permettendo con ciò di distribuire, attraverso uno o più segnali interni generati in funzione dei dati memorizzati nel registro interno, i dati di configurazione ricevuti a varie parti del blocco (dei blocchi) hardware 110 associato (associati). Per esempio, come menzionato in precedenza, ciascun client dei dati di configurazione 112 può avere associato un indirizzo univoco (cioè, univoco all’interno di ciascun sistema di elaborazione 10a) e analizza i dati trasmessi dal modulo di smistamento 1082 al fine di determinare se gli attributi di dati aggiuntivi (attributi in Formato DCF) contengono l’indirizzo associato al client dei dati di configurazione 112.
Per esempio, come menzionato in precedenza, i dati di configurazione CD possono anche comprendere dati di configurazione di sicurezza usati per attivare o disattivare date funzioni di sicurezza del sistema di elaborazione 10a, come:
- l’accesso esterno a un’interfaccia di debug;
- l’accesso (in lettura e/o scrittura) a date locazioni di memoria, ecc.
In questo caso, un primo client dei dati di configurazione 112 può memorizzare dati di configurazione CD, che segnalano a una memoria del sistema di elaborazione 10a, come la memoria 104, se abilitare o disabilitare una protezione di scrittura e/o di lettura associata a uno o più blocchi di memoria della memoria. Similmente, un secondo client dei dati di configurazione 112 può memorizzare dati di configurazione usati per generare un segnale che controlla l’accesso a un’interfaccia di debug. Specificamente, i blocchi 110 associati non usano direttamente i dati di configurazione CD memorizzati nella memoria non volatile 104, ma i dati di configurazione memorizzati nel rispettivo client dei dati di configurazione 112.
In varie forme di attuazione, il modulo 108 può anche comprendere un modulo di controllo di stato 1084 configurato per gestire le varie fasi di configurazione del sistema di elaborazione 10a. Per esempio, in varie forme di attuazione, una volta che il sistema di elaborazione 10a è acceso, un modulo di reset 116 del sistema di elaborazione 10a può generare un segnale di reset RESET, che è usato per effettuare un reset dei vari componenti del sistema di elaborazione 10a. Per esempio, il segnale di reset RESET può corrispondere a un impulso di reset di un dato numero di cicli di clock, fornito ai blocchi 110 del sistema di elaborazione 10a. Per esempio, nella forma di attuazione considerata, il segnale di reset RESET può essere usato dai client dei dati di configurazione 112 al fine di impostare il registro interno a un dato valore di reset. Similmente, in risposta a un reset, il modulo di controllo di stato 1084 può attivare la fase di configurazione. Specificamente, durante la fase di configurazione, il modulo di lettura dei dati 1080 può leggere i dati di configurazione CD dalla memoria 104 e il modulo di smistamento 1082 può inviare i dati di configurazione CD ai vari client dei dati di configurazione 112, sovrascrivendo con ciò i valori di reset.
Di conseguenza, come menzionato in precedenza, i dati di configurazione CD possono essere memorizzati come pacchetti di dati/trame di DCF in una o più memorie riservate di almeno una memoria non volatile 104. Generalmente, i dati di configurazione programmati nella memoria non volatile 104 possono non includere necessariamente dati di configurazione CD per tutti i client dei dati di configurazione 112, ma soltanto i dati di configurazione CD che sono differenti dai valori di reset/default.
Per esempio, come menzionato in precedenza, i dati di configurazione CD possono comprendere vari sottoinsiemi di dati di configurazione:
- un primo gruppo di dati di configurazione (per es., dati di calibrazione) scritti dal produttore del sistema di elaborazione 10a, per es. il produttore del chip; e
- un secondo gruppo di dati di configurazione scritti durante uno stadio successivo, come dati di configurazione scritti dallo sviluppatore del firmware e/o da un integratore del sistema, come il produttore di una Unità di Controllo del Motore (ECU).
In generale, questi gruppi di dati di configurazione possono essere scritti in aree differenti della memoria (delle memorie) 104, permettendo con ciò che questi gruppi possano essere configurati indipendentemente. Per contro, in varie forme di attuazione, è usata una singola memoria non volatile 104 e i pacchetti di dati/trame di DCF possono essere memorizzati consecutivamente uno dopo l’altro. Per esempio, il produttore del sistema di elaborazione 10a può memorizzare un primo insieme di dati di configurazione CD nella memoria non volatile e uno sviluppatore del software può memorizzare un secondo insieme di dati di configurazione nella memoria non volatile aggiungendo in seguito i nuovi dati di configurazione al primo insieme di dati di configurazione. Similmente, anche lo sviluppatore del sistema, per es. il produttore di una ECU, può impostare un terzo insieme di dati di configurazione aggiungendo in seguito ulteriori dati di configurazione al secondo insieme di dati di configurazione.
Nella forma di attuazione considerata, il modulo di configurazione 108 legge questi pacchetti di dati/trame di DCF dalla memoria non volatile 104 durante la fase di reset, per es. come controllato dal modulo di controllo di stato 1084. Specificamente, in varie forme di attuazione, il modulo di configurazione 108, in particolare il modulo di lettura dei dati 1080, inizia l’operazione di lettura da un indirizzo di partenza della memoria 104 (che può essere fissato o programmabile) e continua l’operazione di lettura finché l’ultimo pacchetto di dati/trama di DCF è stata letta dalla memoria non volatile 104. Generalmente, il modulo di lettura dei dati 1080 può anche accedere a una pluralità di memorie non volatili 104, o generalmente a una pluralità di aree di memoria che possono appartenere a una o più memorie non volatili 104. Per esempio, una prima area di memoria può essere programmabile soltanto dal produttore dell’unità di elaborazione 10a e una seconda area di memoria può essere programmabile dallo sviluppatore del software e/o del sistema.
Nella forma di attuazione considerata, ciascun pacchetto di dati/ciascuna trama di DCF letta dalla memoria non volatile 104 è fornita al modulo di smistamento 1082, che inoltra i dati di configurazione CD inclusi nel pacchetto di dati/nella trama di DCF, in particolare il carico utile, a un rispettivo client dei dati di configurazione 112. Specificamente, nella forma di attuazione considerata, il modulo di smistamento 1082 è configurato per generare un segnale di dati DATA che ha un dato numero di bit (corrispondenti ai bit del carico utile) che contengono i dati di configurazione da trasmettere a un dato client dei dati di configurazione 112 e ulteriori segnali di controllo per selezionare il client dei dati di configurazione 112 target. Per esempio, nella forma di attuazione considerata, il modulo di smistamento 1082 genera anche un segnale di indirizzo ADR che contiene l’indirizzo del client dei dati di configurazione 112 target e opzionalmente un segnale di selezione di chip CS (“Chip Select”) usato per segnalare che il segnale di indirizzo ADR e il segnale di dati DATA sono validi. Per esempio, in varie forme di attuazione, il segnale di indirizzo ADR (e il segnale di chip select CS) possono essere forniti a un decodificatore 124 configurato per attivare uno dei client dei dati di configurazione 112 in funzione del segnale di indirizzo ADR. Per esempio, nella forma di attuazione considerata, il decodificatore 124 può impostare un segnale di chip select CSa al fine di indicare che il client dei dati di configurazione 112a dovrebbe leggere il segnale di dati DATA quando il segnale di indirizzo ADR corrisponde a un indirizzo assegnato al client dei dati di configurazione 112a (e il segnale di chip select CS è impostato). Similmente, il decodificatore 124 può impostare un segnale di chip select CSb al fine di indicare che il client dei dati di configurazione 112b dovrebbe leggere il segnale di dati DATA quando il segnale di indirizzo ADR corrisponde a un indirizzo assegnato al client dei dati di configurazione 112b (e il segnale di chip select CS è impostato), ecc.
Così, il modulo di configurazione 108 leggerà in sequenza i pacchetti di dati di configurazione e trasmetterà i rispettivi dati di configurazione al client dei dati di configurazione 112 associato. Di conseguenza, i dati di configurazione CD possono essere memorizzati durante le varie fasi di produzione e di sviluppo come una sequenza di pacchetti di dati/trame di DCF consecutive. Per esempio, questo implica che, nel caso in cui l’uno o più memorie non volatili 104 contengano due o più pacchetti di dati/trame di DCF, che sono indirizzate allo stesso client dei dati di configurazione 112, il modulo di dati di configurazione 108 trasmetterà in sequenza i rispettivi dati di configurazione di questi due o più pacchetti di dati/trame di DCF allo stesso client dei dati di configurazione 112, e il client dei dati di configurazione 112 sovrascriverà i valori precedenti, cioè, il client dei dati di configurazione 112 fornirà soltanto gli ultimi dati di configurazione che sono stati ricevuti.
Generalmente, a causa del fatto che i dati di configurazione CD memorizzati nell’una o più memorie non volatili 104 possono anche essere usati per controllare le varie caratteristiche di sicurezza del sistema di elaborazione 10a, è vantaggioso che i dati di configurazione CD programmati non possano più essere modificati. Per esempio, in varie forme di attuazione, ciascuna memoria non volatile 104 può essere configurata per impedire accessi in scrittura a locazioni di memoria già programmate dell’area (delle aree) di memoria che può (possono) comprendere dati di configurazione, cioè, l’area (le aree) di memoria non volatile in cui possono essere memorizzati i dati di configurazione non possono essere cancellate o riprogrammate, assicurando con ciò che dati di configurazione CD già memorizzati nell’una o più memorie non volatili 104 non possano essere modificati all’interno della memoria non volatile 104.
Generalmente, l’uso di trame di DCF plurali indirizzate allo stesso client dei dati di configurazione 112 può essere utile al fine di permettere una ricalibrazione del sistema di elaborazione, per es. aggiungendo in seguito una trama di DCF con nuovi dati di calibrazione ai dati di configurazione CD già esistenti nella memoria non volatile 104. In effetti, in questo modo, i vari dati di calibrazione saranno letti durante la fase di reset, ma il rispettivo client dei dati di configurazione 112 userà soltanto i dati di calibrazione programmati per ultimi. Per contro, ciò può essere piuttosto pericoloso quando funzioni di sicurezza e/o protezione già attivate potrebbero essere disattivate aggiungendo semplicemente in seguito rispettivi dati di configurazione CD nella memoria non volatile 104.
Di conseguenza, in varie forme di attuazione, ciascun client dei dati di configurazione 112 può essere configurato per permettere o impedire una sovrascrittura di dati di configurazione precedenti. Per esempio, possibili soluzioni per controllare le operazioni di scrittura in un client dei dati di configurazione 112 sono descritte nella domanda di brevetto italiano 102018000001633, che è incorporata qui tramite citazione a questo scopo.
Così, il dispositivo descritto con riferimento alla Figura 4 fornisce una soluzione efficiente per distribuire dati di configurazione CD all’interno di un sistema di elaborazione 10a, permettendo anche che i dati di configurazione CD possano essere impostati da differenti entità (produttore, sviluppatore del software, ecc.) senza dovere sovrascrivere i dati di configurazione precedenti nella memoria non volatile 104. Inoltre, anche la riconfigurazione di dati di configurazione scritti precedentemente può essere limitata all’interno di ciascun client dei dati di configurazione 112.
Tuttavia, il dispositivo non tiene conto che i dati di configurazione forniti dalla memoria 104 possono non corrispondere ai dati di configurazione memorizzati nella memoria 104.
Per esempio, la memoria 104 può fornire dati scorretti a causa di errori nei dati contenuti nella memoria, per es. a causa di una corruzione dei dati di configurazione CD, o a causa di una modifica intenzionale dei dati memorizzati nella memoria 104. Una possibile soluzione a questo problema è l’uso di una memoria con codice di correzione degli errori (ECC, “Error-Correcting Code”). Per esempio, in questo caso, la memoria 104 comprende un circuito di rilevazione e/o correzione degli errori 1040 (si veda la Figura 4), che rileva ed eventualmente corregge anche modifiche nei dati letti dalla memoria.
Tuttavia, la memoria 104 stessa può non funzionare correttamente e può non fornire affatto dati di configurazione o può saltare uno o più dati di configurazione. Per esempio, questo può accadere quando la comunicazione tra il modulo di lettura dei dati 1080 e la memoria 104 non funziona correttamente. Per esempio, come menzionato in precedenza, il modulo di lettura di dati 1080 può inviare un segnale di indirizzo alla memoria 104 e la memoria 104 può restituire il segnale di dati rispettivo che contiene i dati memorizzati all’indirizzo fornito. Per cui, una modifica del bus di indirizzi (sia intenzionale, come nel caso di un attacco, o non intenzionale, come nel caso di un malfunzionamento) può avere come risultato, per es., una lettura di dati differenti e/o un salto della lettura di alcuni dati di configurazione. Similmente, anche il bus di dati tra la memoria 104 e il modulo di lettura di dati 1080 può non funzionare correttamente. Tuttavia, tali malfunzionamenti possono non essere rilevati da un circuito di rilevazione e/o di correzione degli errori 1040, nella misura in cui i dati letti dalla memoria per un dato indirizzo (scorretto) sono in effetti corretti e soltanto la comunicazione dei dati e/o del segnale di indirizzo è affetta da un malfunzionamento.
Tuttavia, nel caso in cui alcuni dati di configurazione CD non siano letti correttamente o siano saltati, ci potrebbero essere conseguenze per la disponibilità (il dispositivo potrebbe non funzionare in modo appropriato), la qualità (un comportamento erroneo potrebbe compromettere la qualità complessiva), la protezione (un comportamento erroneo potrebbe tradursi in una minaccia per la protezione) e/o la sicurezza (alcune funzioni di sicurezza possono essere disattivate).
In seguito, saranno così descritte forme di attuazione atte a verificare se i dati trasmessi ai client dei dati di configurazione 112 corrispondono in effetti ai dati scritti inizialmente nella memoria non volatile 104.
La Figura 5a rappresenta una prima forma di attuazione di un sistema di elaborazione 10a modificato, che corrisponde sostanzialmente all’architettura descritta con riferimento alla Figura 3. Di conseguenza, la rispettiva descrizione e l’esempio di forma di attuazione descritta in dettaglio della Figura 4 si applicano anche in questo caso.
Specificamente, con riferimento alla Figura 3, la memoria 104 non contiene soltanto i dati di configurazione CD, ma anche una rispettiva firma HASH calcolata in funzione dei dati di configurazione CD.
In generale, il termine “firma” indica che i rispettivi dati di firma sono calcolati in funzione dei dati di configurazione. Per esempio, a questo scopo può essere usata una funzione di hashing, come MD5 o Secure Hash Algorithm (SHA), per es. SHA-1 o SHA-256. Generalmente, i dati di configurazione possono anche essere codificati e/o crittografati, per es. usando l’AES (Advanced Encryption Standard) o il DES (Data Encryption Standard), e un sottoinsieme dei dati crittografati, per es. l’ultimo pacchetto di dati, può essere usato come un campo di firma.
Come menzionato in precedenza, i dati di configurazione possono comprendere una pluralità di insiemi di dati di configurazione. In questo caso, ciascun insieme di dati di configurazione comprende una rispettiva firma. Generalmente, la firma del primo insieme di dati di configurazione è calcolata in funzione dei rispettivi dati di configurazione. Per contro, la firma degli insiemi di dati di configurazione successivi può essere calcolata:
- esclusivamente in funzione del rispettivo insieme di dati di configurazione, cioè la firma è indipendente dagli insiemi precedenti di dati di configurazione; o
- prendendo in considerazione anche i dati di configurazione precedenti, per es. calcolando una firma per i dati di configurazione di tutti gli insiemi precedenti di dati di configurazione.
Preferibilmente, la prima soluzione è usata al fine di rendere indipendenti gli insiemi di dati di configurazione gli uni dagli altri. Tuttavia, anche la seconda soluzione può essere implementata in modo abbastanza semplice quando è usato un procedimento di calcolo della firma che può usare semplicemente la firma dell’insieme precedente di dati di configurazione come valore di partenza per il calcolo della nuova firma. Per esempio, il rispettivo valore di firma può essere fornito dal produttore del sistema di elaborazione allo sviluppatore del software successivo, ecc.
Nella forma di attuazione considerata, il sistema di elaborazione 10a comprende inoltre un circuito di calcolo delle firme 130 configurato per ricalcolare direttamente la firma in funzione dei dati di configurazione letti dalla memoria 104.
Specificamente, nella forma di attuazione rappresentata nella Figura 5a, il circuito di calcolo delle firme 130 riceve in ingresso i dati di configurazione che sono stati memorizzati nei registri interni dei client dei dati 112, cioè ciascun client dei dati di configurazione 112 fornisce i dati di configurazione ricevuti non solo al blocco (ai blocchi) hardware 110 associato (associati), ma anche al circuito di calcolo delle firme 130. A causa della trasmissione sequenziale dei pacchetti di dati di configurazione ai client dei dati di configurazione 112, ciascun client dei dati di configurazione 112 può così segnalare sequenzialmente che sono arrivati nuovi dati e il circuito di calcolo delle firme 130 può leggere i dati di configurazione dal client dei dati di configurazione che ha ricevuto attualmente dati di configurazione, ricalcolando con ciò una firma HASH’ in funzione dei dati di configurazione ricevuti dai client dei dati di configurazione 112.
Per contro, la Figura 5b rappresenta una forma di attuazione, nella quale il circuito di calcolo delle firme 130 riceve in ingresso i dati trasmessi al client dei dati di configurazione, per es. il circuito di calcolo delle firme 130 monitora i dati trasmessi sul canale di comunicazione 114, per es. il segnale di dati DATA della Figura 4. Così, ipotizzando che anche i client dei dati di configurazione ricevano i dati di configurazione trasmessi, anche in questo caso, il circuito di calcolo delle firme può ricalcolare una firma HASH’ in funzione dei dati di configurazione trasmessi ai client dei dati di configurazione 112.
Così, conoscendo la firma originale HASH memorizzata nella memoria 104 e ricalcolando una firma HASH’ in funzione dei dati di configurazione forniti ai client dei dati di configurazione, il sistema di elaborazione 10a può verificare se entrambe le firme corrispondono.
Generalmente, la soluzione della Figura 5a è preferibile, nella misura in cui in effetti i dati memorizzati nei client dei dati di configurazione 112 sono verificati, permettendo con ciò una verifica di tutti i componenti intermedi dalla memoria 104 fino ai client dei dati di configurazione 112. Tuttavia, in questo caso, il circuito di calcolo delle firme 130 deve essere connesso a tutti i client dei dati di configurazione 112 rendendo la soluzione più complessa della soluzione della Figura 5b, che deve monitorare semplicemente il canale di comunicazione 114, assicurando ancora nel contempo che i dati di configurazione letti dalla memoria 104 siano in effetti corretti.
La Figura 6a rappresenta una prima forma di attuazione per verificare entrambe le firme HASH e HASH’.
Specificamente, nella forma di attuazione considerata, il modulo di configurazione 108 è configurato per leggere la firma HASH dalla memoria 104 e per fornire la firma HASH direttamente a un circuito di verifica della firma 132 configurato per confrontare la firma HASH con la firma ricalcolata HASH’.
Per contro, la Figura 6b rappresenta una forma di attuazione, nella quale la firma HASH è memorizzata come uno o più dei pacchetti di dati di configurazione (in particolare, l’ultimo di un rispettivo insieme di dati di configurazione). Inoltre, uno o più dei client dei dati di configurazione 112, per es. il client 112c, rappresentano dei client dei dati di configurazione del circuito di verifica della firma 132. Così, memorizzando nel campo di attributo dei pacchetti di dati di configurazione l’indirizzo del rispettivo (dei rispettivi) client dei dati di configurazione 112, il modulo di configurazione 108 leggerà la firma HASH come un normale pacchetto di dati di configurazione e trasmetterà la firma HASH tramite il canale di comunicazione 114 al (ai) client dei dati di configurazione associato (associati) al circuito di verifica della firma 132.
Di conseguenza, in entrambi i casi, il circuito di verifica della firma 132 riceve in ingresso la firma HASH memorizzata nella memoria 104 e la firma HASH’ ricalcolata dal circuito di calcolo delle firme 130 (si vedano anche le Figure 5a e 5b). Il circuito 132 può così verificare se entrambe le firme corrispondono e può generare un segnale di errore ERR quando le firme non corrispondono.
Per esempio, la Figura 7 rappresenta una forma di attuazione della verifica delle firme basata sull’architettura rappresentata nella Figura 4.
Specificamente, come menzionato in precedenza, il sistema di elaborazione 10a deve trattare una firma HASH di dati di configurazione attesa e una firma HASH’ di dati di configurazione calcolata al run-time. Per esempio, nella Figura 7 è rappresentata di nuovo una memoria 104, che comprende eventualmente un circuito di rilevazione e/o di correzione degli errori 1040, che riceve in ingresso un segnale di indirizzo MEM_A e fornisce in uscita un segnale di dati MEM_D che comprende i dati rispettivi. Specificamente, come prima, la memoria 104 comprende uno o più insiemi di dati di configurazione CD e, per ciascun insieme di dati di configurazione CD, un rispettivo campo di firma. Per esempio, nella forma di attuazione considerata, ciascun insieme di dati di configurazione CD comprende un pacchetto di inizio START_RECORD_DCF. Il pacchetto di inizio START_RECORD_DCF opzionale è seguito da uno o più pacchetti di dati di configurazione DCF_x, DCF_y, DCF_z, ecc. che comprendono i dati di configurazione da trasmettere ai client dei dati di configurazione 112 uno o più pacchetti di firma HASH_DCF che comprendono la firma HASH. Preferibilmente, tutti questi pacchetti seguono il formato di DCF descritto in precedenza. Come descritto in precedenza, la firma HASH è precalcolata e memorizzata nella memoria 104 insieme ai dati di configurazione (tipicamente durante lo stadio di produzione del sistema di elaborazione e/o la fase di sviluppo del software).
Di conseguenza, il modulo di lettura dei dati 1080 del modulo di configurazione 108 può leggere i dati di configurazione includendo le registrazioni (“record”) START_RECORD_DCF, DCF_x, DCF_y, DCF_z, HASH_DCF dalla memoria 104 fornendo un segnale di indirizzo MEM_A adatto. Per esempio, il modulo di lettura dei dati 1080 può iniziare la lettura dall’indirizzo di partenza del primo record (cioè, START_RECORD_DCF o DCF_x in base a se è usato un record di partenza) e può continuare la lettura finché è rilevato il record della firma HASH_DCF (per es., in assenza di un record di partenza START_RECORD_DCF).
Durante la lettura dei record dei dati di configurazione, il modulo di lettura dei dati 1080 fornisce i rispettivi pacchetti di dati di configurazione (DCF_x, DCF_y, DCF_z, ecc.) al modulo di smistamento 1082 che trasmette i dati di configurazione ai client dei dati di configurazione 112, per es. usando il segnale di indirizzo ADR, il segnale di dati DATA e il segnale di chip select CS descritti in precedenza.
Nella forma di attuazione considerata, il sistema di elaborazione 10a comprende inoltre un circuito di calcolo delle firme 130 configurato per acquisire i dati di configurazione inviati ai/ricevuti dai client dei dati di configurazione 112 e calcola al run-time la firma HASH’ in funzione dei dati trasferiti.
Per esempio, a questo scopo, il circuito di calcolo delle firme 130 può monitorare il segnale di dati DATA e/o può leggere i dati di configurazione CD’ memorizzati nei client dei dati di configurazione 112. Come menzionato in precedenza, quest’ultima soluzione è preferibile al fine di verificare anche il funzionamento dei client dei dati di configurazione 112 stessi. Per contro, quella precedente può essere meno complessa. Specificamente, le soluzioni precedenti possono anche essere adatte quando i client dei dati di configurazione 112 stessi comprendono meccanismi di rilevazione dei guasti.
Per esempio, la Figura 8 rappresenta una forma di attuazione di un client dei dati di configurazione 112 con un meccanismo di rilevazione dei guasti.
Specificamente, il client dei dati di configurazione comprende un registro 118, per es. sotto forma di flip-flop o di latch, configurato per memorizzare i dati ricevuti tramite il segnale di dati DATA. Per esempio, nella forma di attuazione considerata, i dati forniti tramite il segnale di dati DATA sono memorizzati nel registro 118 quando è impostato un rispettivo segnale di chip select CSi.
Nella forma di attuazione considerata, i dati ricevuti non contengono soltanto dati di configurazione, ma anche dati di rilevazione degli errori, come uno o più bit di parità. Di conseguenza, nella forma di attuazione considerata, il registro 118 fornisce rispettivi dati di configurazione CD’ e dati di rilevazione degli errori PD. Per esempio, come descritto in precedenza, i dati di configurazione CD’ sono forniti a uno o più blocchi 110 del sistema di elaborazione 10a e opzionalmente anche al circuito di calcolo delle firme 130. Tuttavia, nella forma di attuazione considerata, i dati di configurazione CD’ e i dati di rilevazione degli errori PD sono forniti anche a un circuito di rilevazione degli errori 120 configurato per ricalcolare i dati di errore in funzione dei dati di configurazione CD’ e per verificare se i dati di errore ricalcolati corrispondono ai dati di rilevazione degli errori PD. Per esempio, nella Figura 8, il circuito 120 può generare un segnale di errore ERRP quando i dati di errore non corrispondono.
Di conseguenza, in una tale architettura, ciascun client dei dati di configurazione può verificare anche se i dati di configurazione CD’ trasmessi sono validi.
In generale, il circuito di calcolo delle firme 130 può così calcolare la firma HASH’ in sequenza mentre i dati di configurazione sono trasmessi ai client dei dati di configurazione 112. Una volta che tutti i dati di configurazione CD sono stati trasmessi ai client dei dati di configurazione 112, il modulo di lettura dei dati 112 leggerà così anche il pacchetto (i pacchetti) di firma HASH_DCF che comprende (comprendono) la firma HASH. Specificamente, nella forma di attuazione considerata, la firma HASH è memorizzata in un registro 1090 all’interno del modulo di configurazione 108.
Di conseguenza, nella forma di attuazione considerata, il circuito di calcolo delle firme 130 e il registro 1090 forniscono le firme HASH e HASH’ a un circuito di verifica della firma 132, che confronta le firme HASH e HASH’ e genera un segnale di errore ERR quando le firme HASH e HASH’ non corrispondono.
Come menzionato in precedenza, l’uno o più pacchetti di firma HASH_DCF possono anche essere trasmessi a uno o più dei client dei dati di configurazione 112, che forniscono poi a loro volta la firma HASH, che rappresenta in questo caso dati di configurazione CD’ per il circuito di verifica della firma 132, al circuito di verifica della firma 132.
Nelle forme di attuazione considerate, le due firme HASH e HASH’ sono confrontate direttamente in un hardware, cioè dal circuito 132. In aggiunta o in alternativa, i valori di firma HASH e HASH’ possono anche essere forniti all’unità di elaborazione 102, permettendo con ciò una verifica software dei valori. A questo scopo, i valori di firma possono essere memorizzati in uno o più registri indirizzabili dall’unità di elaborazione 102, cosiddetti registri con funzioni speciali.
La Figura 9 rappresenta un procedimento per il funzionamento di un sistema di elaborazione 10a come descritto in precedenza.
Specificamente, dopo una fase di inizio 2000, un insieme di dati di configurazione CD è determinato in una fase 2002 in base alle necessità delle applicazioni, includendo per es. dati di calibrazione e/o dati di configurazione di sicurezza. Inoltre, nella fase 2002 è calcolata la rispettiva firma HASH e il rispettivo insieme di dati di configurazione CD che comprende la firma HASH è memorizzato nella memoria non volatile 104 del sistema di elaborazione 10a.
In una fase 2004 seguente, il sistema di elaborazione 10a è acceso. Di conseguenza, il sistema di elaborazione 10a ricalcolerà tramite il circuito 130 la firma HASH’ in base ai dati trasmessi ai client dei dati di configurazione 112 e il circuito 132 confronterà la firma HASH’ con la firma HASH, generando eventualmente il segnale di errore ERR (per es., impostando alto il segnale di errore ERR).
Di conseguenza, monitorando il segnale di errore ERR in una fase 2006, il procedimento può rilevare un comportamento scorretto durante la lettura dei dati di configurazione CD.
Per esempio, nel caso in cui sia rilevato un errore (uscita “Y” della fase di verifica 2006), uno o più operazioni possono essere eseguite in una fase 2008 e il procedimento termina in una fase di arresto 2010. Le operazioni nella fase 2008 possono comprendere, per es., una riprogrammazione dei dati di configurazione, un’attivazione di una funzione di test della memoria 104 e/o gli altri blocchi del sistema, un reset dell’intero microcontrollore, ecc.
Al contrario, nel caso in cui non sia rilevato alcun errore (uscita “N” della fase di verifica 2006), il procedimento termina direttamente nella fase 2010.
In varie forme di attuazione, il circuito di verifica della firma 132 può anche prendere in considerazione lo stadio di ciclo di vita del sistema di elaborazione 10a.
Per esempio, la Figura 10 rappresenta l’esempio di forma di attuazione della Figura 7, in cui è stato aggiunto un blocco di addizione che fornisce i dati di ciclo di vita LCD. Specificamente, i dati di ciclo di vita LCD indicano il ciclo di vita del prodotto. Il ciclo di vita è una firma permanente scritta in una memoria non volatile, che determina lo stadio del sistema di elaborazione 10a durante il suo tempo di vita. Per esempio, il ciclo di vita può essere codificato con una sequenza di bit. Nella forma di attuazione considerata, questa sequenza di bit è memorizzata in una memoria non volatile 126 separata, preferibilmente una memoria programmabile una sola volta. In generale, i dati di ciclo di vita LCD possono anche essere memorizzati in locazioni di memoria riservate della memoria 104.
Per esempio, in varie forme di attuazione, la sequenza di bit LCD memorizzata nella memoria 126 può indicare uno degli stadi seguenti:
- “produzione” (LC1), quando il sistema di elaborazione 10a, per es. un microcontrollore, è nella fabbrica di chip;
- “consegna al cliente” (LC2), quando il sistema di elaborazione 10a è stato spedito al cliente di 1° livello (per es., un produttore di un’unità di controllo del motore);
- “produzione OEM” (LC3), quando il dispositivo è stato spedito a un cliente di livello successivo (per es., un produttore di automobili);
- “in campo” (LC4), quando il dispositivo è installato nel prodotto finale (per es., in un’automobile venduta sul mercato);
- “analisi dei guasti” (LC5), quando il dispositivo è rispedito al produttore del sistema di elaborazione 10a o allo sviluppatore del software a scopi diagnostici.
In varie forme di attuazione, i dati del ciclo di vita LCD sono scritti in modo tale che, una volta che è stato raggiunto un certo stadio, non sia possibile farlo ritornare a uno stadio precedente, cioè, il ciclo di vita può soltanto avanzare. Per esempio, questo può essere implementato con una codifica one-hot nella quale un fusibile è bruciato ogni volta che è stato raggiunto un dato stadio. Per esempio, l’avanzamento del ciclo di vita al prossimo stadio può essere fatto dall’entità che è in possesso del dispositivo nello stadio del ciclo di vita corrente (per es., il produttore del chip farà avanzare il ciclo di vita quando è spedito allo stadio di consegna al cliente; il cliente di 1° livello farà avanzare il ciclo di vita quando è spedito allo stadio di produzione OEM, ecc.).
Di conseguenza, in questo caso, il circuito di verifica della firma 132 può essere attivato o disattivato selettivamente in funzione dei dati del ciclo di vita LCD. Per esempio, il confronto hardware all’interno del circuito 132 può essere attivato soltanto quando il ciclo di vita indicato dai dati di ciclo di vita LCD è impostato allo stadio di “produzione OEM” (LC3) o “in campo” (LC4), perché negli altri stadi il segnale di errore ERR può impedire la testabilità del sistema di elaborazione 10a.
Le soluzioni descritte in precedenza hanno così il vantaggio che il sistema di elaborazione 10a è atto a verificare che i dati di configurazione CD memorizzati nella memoria 104 (che, come menzionato in precedenza, può comprendere insiemi plurali, programmati eventualmente sia dal produttore sia dal cliente) siano letti correttamente quando il sistema di elaborazione 10a è acceso.
Per esempio, come menzionato in precedenza, possono essere trasmessi dati di configurazione scorretti o alcuni dati di configurazione possono non essere affatto trasmessi a causa di guasti al run-time che modificano il bus di indirizzi MEM_A. Nelle soluzioni descritte, tali guasti degli indirizzi possono così essere rilevati senza dovere usare protocolli di scambi di dati complessi, come una correzione degli errori da estremo a estremo (e2eECC, “endto-end error correction”) tra la memoria non volatile 104 e i client dei dati di configurazione.
Naturalmente, fermi restando i principi di fondo dell’invenzione, i dettagli di costruzione e le forme di attuazione possono variare, anche in modo apprezzabile, rispetto a quanto è stato descritto e illustrato qui, puramente a titolo di esempio, senza uscire con ciò dall’ambito della presente invenzione, come definito dalle rivendicazioni che seguono.

Claims (11)

  1. RIVENDICAZIONI 1. Sistema di elaborazione (10a) comprendente: - una pluralità di client dei dati di configurazione (112), ciascun client dei dati di configurazione (112) comprendendo un registro (118), in cui a ciascun client dei dati di configurazione (112) è associato un rispettivo indirizzo (ADR), e in cui ciascun client dei dati di configurazione (112) è configurato per ricevere dati di configurazione (DATA) indirizzati al rispettivo indirizzo (ADR) e per memorizzare detti dati di configurazione ricevuti (DATA) in detto registro (118); e - almeno un blocco hardware (110) configurato per cambiare funzionamento in funzione dei dati di configurazione (CD’) memorizzati nei registri (118) di detta pluralità di client dei dati di configurazione (112); - una memoria non volatile (104) comprendente dati di configurazione (CD) per detta pluralità di client dei dati di configurazione (112), in cui detti dati di configurazione (CD) sono memorizzati sotto forma di pacchetti di dati (DCF_x, DCF_y, DCF_z) che comprendono un campo di attributo che identifica l’indirizzo (ADR) di uno di detta pluralità di client dei dati di configurazione (112) e i rispettivi dati di configurazione; e - un modulo di configurazione hardware (108) configurato per leggere in sequenza (1080) detti pacchetti di dati da detta memoria non volatile (104) e per trasmettere i rispettivi dati di configurazione (DATA) letti da detta memoria non volatile (104) al rispettivo client dei dati di configurazione (112); in cui detta memoria non volatile (104) comprende primi dati di firma (HASH), in cui detto modulo di configurazione hardware (108) è configurato per leggere detti primi dati di firma (HASH) da detta memoria non volatile (104), e in cui detto sistema di elaborazione (10a) comprende inoltre: - un circuito di calcolo delle firme (130) configurato per calcolare secondi dati di firma (HASH’) in funzione dei rispettivi dati di configurazione (DATA) trasmessi a detti client dei dati di configurazione (112) e/o memorizzati nei registri (118) di detti client dei dati di configurazione (112); e - un circuito di verifica della firma (132) configurato per: - confrontare detti primi dati di firma (HASH) letti da detta memoria non volatile (104) con detti secondi dati di firma (HASH’) calcolati da detto circuito di calcolo delle firme (130), e - generare un segnale di errore (ERR) quando detti primi dati di firma (HASH) letti da detta memoria non volatile (104) e detti secondi dati di firma (HASH’) calcolati da detto circuito di calcolo delle firme (130) non corrispondono.
  2. 2. Sistema di elaborazione (10a) secondo la Rivendicazione 1, in cui detti primi dati di firma (HASH) sono memorizzati insieme a detti dati di configurazione (CD) in detta memoria non volatile (104) sotto forma di uno o più pacchetti di dati (HASH_DCF).
  3. 3. Sistema di elaborazione (10a) secondo la Rivendicazione 1 o la Rivendicazione 2, in cui detto circuito di calcolo delle firme (130) ha associato almeno un client dei dati di configurazione (112) e in cui detti primi dati di firma (HASH) sono memorizzati in detta memoria non volatile (104) sotto forma di dati di configurazione comprendenti uno o più pacchetti di dati (HASH_DCF) che comprendono un campo di attributo che identifica l’indirizzo (ADR) di detto almeno un client dei dati di configurazione (112) associato a detto circuito di calcolo delle firme (130).
  4. 4. Sistema di elaborazione (10a) secondo una qualsiasi delle rivendicazioni precedenti, in cui detta memoria non volatile (104) comprende una pluralità di insiemi di dati di configurazione (CD), in cui rispettivi primi dati di firma (HASH) sono memorizzati per ciascun insieme di dati di configurazione (CD), e in cui detto circuito di calcolo delle firme (130) è configurato per calcolare rispettivi secondi dati di firma (HASH’) per i dati di configurazione di ciascun insieme di dati di configurazione (CD) trasmessi a detti client dei dati di configurazione (112) e/o memorizzati nei registri (118) di detti client dei dati di configurazione (112).
  5. 5. Sistema di elaborazione (10a) secondo una qualsiasi delle rivendicazioni precedenti, in cui ciascun client dei dati di configurazione (112) è configurato per trasmettere, quando riceve dati di configurazione (DATA) indirizzati al rispettivo indirizzo (ADR), detti dati di configurazione ricevuti (DATA) a detto circuito di calcolo delle firme (130).
  6. 6. Sistema di elaborazione (10a) secondo una qualsiasi delle rivendicazioni precedenti, in cui detto modulo di configurazione hardware (108) e detti client dei dati di configurazione (112) sono connessi attraverso un bus di dati (DATA) comune, e in cui detto circuito di calcolo delle firme (130) è configurato per monitorare i dati trasmessi su detto bus di dati (DATA) comune.
  7. 7. Sistema di elaborazione (10a) secondo una qualsiasi delle rivendicazioni precedenti, in cui detto circuito di calcolo delle firme (130) è configurato per: - calcolare detti secondi dati di firma con una funzione di hashing, come MD5 o Secure Hash Algorithm, per es. SHA-1 o SHA-256; o - calcolare detti secondi dati di firma codificando e/o crittografando detti dati di configurazione, per es. usando l’Advanced Encryption Standard o il Data Encryption Standard, e selezionando un sottoinsieme dei dati codificati/crittografati.
  8. 8. Sistema di elaborazione (10a) secondo la Rivendicazione 7, in cui detto circuito di verifica della firma (132) è configurato per generare detto segnale di errore (ERR) prendendo in considerazione dati di ciclo di vita (LCD) memorizzati in una memoria programmabile una sola volta (126) di detto sistema di elaborazione (10a).
  9. 9. Circuito integrato, come un microcontrollore, comprendente un sistema di elaborazione (10a) secondo una qualsiasi delle Rivendicazioni da 1 a 8.
  10. 10. Dispositivo, come un veicolo, comprendente una pluralità di sistemi di elaborazione (10a) secondo una qualsiasi delle Rivendicazioni da 1 a 8.
  11. 11. Procedimento per fare funzionare un sistema di elaborazione (10a) secondo una qualsiasi delle Rivendicazioni da 1 a 8, comprendente le fasi di: - memorizzare (2002) dati di configurazione (CD) e primi dati di firma (HASH) nella memoria non volatile (104) di detto sistema di elaborazione (10a); - avviare (2004) detto sistema di elaborazione (10a); e - monitorare (2006) il segnale di errore (ERR) generato da detto circuito di verifica della firma (132).
IT102018000002895A 2018-02-21 2018-02-21 Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento IT201800002895A1 (it)

Priority Applications (4)

Application Number Priority Date Filing Date Title
IT102018000002895A IT201800002895A1 (it) 2018-02-21 2018-02-21 Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento
US16/273,704 US11048525B2 (en) 2018-02-21 2019-02-12 Processing system, related integrated circuit, device and method
EP19156613.2A EP3531289B1 (en) 2018-02-21 2019-02-12 Processing system, related integrated circuit, device and method
US17/341,054 US11822934B2 (en) 2018-02-21 2021-06-07 Processing system, related integrated circuit, device and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT102018000002895A IT201800002895A1 (it) 2018-02-21 2018-02-21 Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento

Publications (1)

Publication Number Publication Date
IT201800002895A1 true IT201800002895A1 (it) 2019-08-21

Family

ID=62089981

Family Applications (1)

Application Number Title Priority Date Filing Date
IT102018000002895A IT201800002895A1 (it) 2018-02-21 2018-02-21 Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento

Country Status (3)

Country Link
US (2) US11048525B2 (it)
EP (1) EP3531289B1 (it)
IT (1) IT201800002895A1 (it)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10855529B2 (en) * 2018-11-26 2020-12-01 Stmicroelectronics Application Gmbh Processing system, related integrated circuit, device and method
IT202200002093A1 (it) 2022-02-07 2023-08-07 St Microelectronics Srl Sistema di elaborazione, relativo circuito integrato e procedimento
US20230409341A1 (en) 2022-06-21 2023-12-21 Stmicroelectronics Application Gmbh Processing system, related integrated circuit, device and method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7225373B1 (en) * 2003-12-18 2007-05-29 Xilinx, Inc. Data transfer validation system
US20090063865A1 (en) * 2007-08-31 2009-03-05 Berenbaum Alan D Configurable Signature for Authenticating Data or Program Code

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2675602B1 (fr) 1991-04-16 1995-04-14 Hewlett Packard Co Procede et dispositif de protection d'un systeme informatique.
US5835925A (en) * 1996-03-13 1998-11-10 Cray Research, Inc. Using external registers to extend memory reference capabilities of a microprocessor
US9092595B2 (en) * 1997-10-08 2015-07-28 Pact Xpp Technologies Ag Multiprocessor having associated RAM units
US6466972B1 (en) * 1999-03-31 2002-10-15 International Business Machines Corporation Server based configuration of network computers via machine classes
US6732219B1 (en) * 2001-02-23 2004-05-04 Hewlett-Packard Development Company, L.P. Dynamic allocation of devices to host controllers
US7007203B2 (en) * 2002-08-02 2006-02-28 Motorola, Inc. Error checking in a reconfigurable logic signal processor (RLSP)
DE60313810T2 (de) * 2003-03-03 2008-01-24 Snap-on Technologies, Inc., Lincolnshire Verfahren zur bereitstellung eines softwaremoduls für eine kraftfahrzeug-steuereinheit und computerprogramm zur ausführung des verfahrens
US7257623B2 (en) * 2003-05-28 2007-08-14 Oracle International Corporation Method and apparatus for ensuring an allowable client configuration for an application
JP4990505B2 (ja) * 2005-04-04 2012-08-01 株式会社日立製作所 記憶制御装置及びストレージシステム
US8966018B2 (en) * 2006-05-19 2015-02-24 Trapeze Networks, Inc. Automated network device configuration and network deployment
JP2008234030A (ja) * 2007-03-16 2008-10-02 Hitachi Ltd コピーシステム及びコピー方法
US7876677B2 (en) * 2007-05-22 2011-01-25 Apple Inc. Transmission control protocol queue sorting
US9652210B2 (en) * 2007-08-28 2017-05-16 Red Hat, Inc. Provisioning a device with multiple bit-size versions of a software component
US20100058327A1 (en) * 2008-08-28 2010-03-04 Dehaan Michael Paul Methods and systems for providing customized actions related to software provisioning
WO2010031698A2 (de) * 2008-09-22 2010-03-25 Bundesdruckerei Gmbh Verfahren zur speicherung von daten, computerprogrammprodukt, id-token und computersystem
EP2366144B1 (en) * 2008-10-15 2015-09-30 Hyperion Core, Inc. Sequential processor comprising an alu array
US8417926B2 (en) * 2009-03-31 2013-04-09 Red Hat, Inc. Systems and methods for providing configuration management services from a provisioning server
US8022724B1 (en) * 2009-11-25 2011-09-20 Xilinx, Inc. Method and integrated circuit for secure reconfiguration of programmable logic
US8495183B2 (en) * 2011-01-27 2013-07-23 Wyse Technology Inc. State-based provisioning of a client having a windows-based embedded image
US8943236B1 (en) * 2011-06-21 2015-01-27 Netlogic Microsystems, Inc. Packet scheduling using a programmable weighted fair queuing scheduler that employs deficit round robin
US20130185482A1 (en) * 2012-01-18 2013-07-18 Samsung Electronics Co., Ltd. Memory system using a storage having firmware with a plurality of features
US9182978B2 (en) * 2012-03-05 2015-11-10 Microsoft Technology Licensing, Llc Application configuration using binary large objects
US9367298B1 (en) * 2012-03-28 2016-06-14 Juniper Networks, Inc. Batch configuration mode for configuring network devices
US9542350B1 (en) * 2012-04-13 2017-01-10 Google Inc. Authenticating shared interconnect fabrics
CA2882349A1 (en) * 2012-08-15 2014-02-20 Hewlett-Packard Development Company, L.P. Encrypted data store for records
EP2851885B1 (de) * 2012-09-04 2016-11-09 Vodafone Holding GmbH System zum Identifizieren von Nutzern in Fahrzeugen
US9128798B2 (en) * 2012-10-17 2015-09-08 Movimento Group Module updating device
US9891934B2 (en) * 2013-02-12 2018-02-13 Nxp Usa, Inc. Configuration controller for and a method of controlling a configuration of a circuitry
US10044799B2 (en) * 2013-05-28 2018-08-07 International Business Machines Corporation Implementing synchronization of state information betweeen instances of an application as well as between different applications in an efficient, scalable manner
US10140109B2 (en) * 2014-02-25 2018-11-27 Ford Global Technologies, Llc Silent in-vehicle software updates
US9558052B2 (en) * 2014-03-18 2017-01-31 Stmicroelectronics International N.V. Safe scheduler for finite state deterministic application
US20150331043A1 (en) * 2014-05-15 2015-11-19 Manoj R. Sastry System-on-chip secure debug
US9735968B2 (en) * 2014-10-20 2017-08-15 Microsoft Technology Licensing, Llc Trust service for a client device
US9455902B2 (en) * 2014-10-31 2016-09-27 Aruba Networks, Inc. IGMP/MLD leave upon client disassociation or user idle timer expiry
US10001999B2 (en) * 2015-03-13 2018-06-19 Cavium, Inc. System and method for configuring a plurality of registers with soft error detection and low wiring complexity
US9826449B2 (en) * 2015-04-29 2017-11-21 Aruba Networks, Inc. Wireless client traffic continuity across controller failover and load-balancing
DE102015209116A1 (de) * 2015-05-19 2016-11-24 Robert Bosch Gmbh Verfahren und Aktualisierungsgateway zum Aktualisieren eines eingebetteten Steuergerätes
US9612822B2 (en) * 2015-07-30 2017-04-04 Adtran, Inc. Telecommunications node configuration management
US9916151B2 (en) * 2015-08-25 2018-03-13 Ford Global Technologies, Llc Multiple-stage secure vehicle software updating
JP2017045311A (ja) * 2015-08-27 2017-03-02 株式会社東芝 メモリシステム
US9805802B2 (en) * 2015-09-14 2017-10-31 Samsung Electronics Co., Ltd. Memory device, memory module, and memory system
US10521618B1 (en) * 2015-10-20 2019-12-31 Marvell International Ltd. Methods and apparatus for secure root key provisioning
DE102016104530A1 (de) * 2016-03-11 2017-09-14 Huf Hülsbeck & Fürst Gmbh & Co. Kg Verfahren zur Kontrolle des Zugriffs auf Fahrzeuge
US11036520B1 (en) * 2016-05-09 2021-06-15 Coupa Software Incorporated System and method of setting a configuration to achieve an outcome
US10403333B2 (en) * 2016-07-15 2019-09-03 Advanced Micro Devices, Inc. Memory controller with flexible address decoding
EP3279796B1 (en) * 2016-08-02 2020-07-15 NXP USA, Inc. Resource access management component and method therefor
EP3316137A1 (en) * 2016-10-27 2018-05-02 NXP USA, Inc. Register error detection system
US10120829B2 (en) * 2016-11-23 2018-11-06 Infineon Technologies Austria Ag Bus device with programmable address
EP3337119B1 (en) * 2016-12-13 2019-09-11 Nxp B.V. Updating and distributing secret keys in a distributed network
EP3337120B1 (en) * 2016-12-14 2021-04-21 Nxp B.V. Network message authentication and verification
US10825266B2 (en) * 2017-01-10 2020-11-03 Cummins Inc. Wireless ECU configuration updating
US10404833B1 (en) * 2017-03-22 2019-09-03 Intuit, Inc. Cloud-based dynamic software configuration for global mobile applications
US10754829B2 (en) * 2017-04-04 2020-08-25 Oracle International Corporation Virtual configuration systems and methods
US10963001B1 (en) * 2017-04-18 2021-03-30 Amazon Technologies, Inc. Client configurable hardware logic and corresponding hardware clock metadata
IT201700050166A1 (it) * 2017-05-09 2018-11-09 St Microelectronics Srl Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento
US10824503B2 (en) * 2017-11-14 2020-11-03 Micron Technology, Inc. Systems and methods for performing a write pattern in memory devices
US10595352B2 (en) * 2017-11-29 2020-03-17 GM Global Technology Operations LLC Establishing a secure short-range wireless communications connection at a vehicle
US10445250B2 (en) * 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
IT201800001633A1 (it) 2018-01-22 2019-07-22 Stmicroelectronics Application Gmbh Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento
US10181948B1 (en) * 2018-01-25 2019-01-15 Fortress Cyber Security, LLC Secure storage of hashes within a distributed ledger
US20190378355A1 (en) * 2018-06-12 2019-12-12 GM Global Technology Operations LLC Remote vehicle electronics configuration
US10855529B2 (en) * 2018-11-26 2020-12-01 Stmicroelectronics Application Gmbh Processing system, related integrated circuit, device and method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7225373B1 (en) * 2003-12-18 2007-05-29 Xilinx, Inc. Data transfer validation system
US20090063865A1 (en) * 2007-08-31 2009-03-05 Berenbaum Alan D Configurable Signature for Authenticating Data or Program Code

Also Published As

Publication number Publication date
US11048525B2 (en) 2021-06-29
US11822934B2 (en) 2023-11-21
EP3531289A1 (en) 2019-08-28
EP3531289B1 (en) 2020-11-04
US20210294534A1 (en) 2021-09-23
US20190258493A1 (en) 2019-08-22

Similar Documents

Publication Publication Date Title
US10855529B2 (en) Processing system, related integrated circuit, device and method
US11822934B2 (en) Processing system, related integrated circuit, device and method
IT201900005020A1 (it) Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento
US10845999B2 (en) Processing system, related integrated circuit, device and method
US11474752B2 (en) Processing system including one-time programmable memory with original life cycle data, related integrated circuit, device and method
US11210161B2 (en) Processing system, related integrated circuit, device and method
IT201800005506A1 (it) Sistema di elaborazione, relativo circuito integrato e procedimento
JP2013214303A (ja) 車両用機器制御データの読み取り方法、同データの書き込み方法、および車両用機器のデータの保存装置
EP4141677A1 (en) Processing system, related integrated circuit, device and method
US10922015B2 (en) Processing system, related integrated circuit, device and method
US10949570B2 (en) Processing system, related integrated circuit and method
IT201800003233A1 (it) Sistema di elaborazione, relativo circuito integrato e procedimento
US11915008B2 (en) Processing system, related integrated circuit, device and method
US11281514B2 (en) Processing system, related integrated circuit, device and method
US20230409341A1 (en) Processing system, related integrated circuit, device and method