FR3045864A1 - METHOD FOR WRITING DATA TO STORE IN MICROCIRCUIT MEMORY, READING METHOD, AND MICROCIRCUIT MEMORY THEREFOR - Google Patents

METHOD FOR WRITING DATA TO STORE IN MICROCIRCUIT MEMORY, READING METHOD, AND MICROCIRCUIT MEMORY THEREFOR Download PDF

Info

Publication number
FR3045864A1
FR3045864A1 FR1562998A FR1562998A FR3045864A1 FR 3045864 A1 FR3045864 A1 FR 3045864A1 FR 1562998 A FR1562998 A FR 1562998A FR 1562998 A FR1562998 A FR 1562998A FR 3045864 A1 FR3045864 A1 FR 3045864A1
Authority
FR
France
Prior art keywords
memory
length
header
domain
data
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
FR1562998A
Other languages
French (fr)
Other versions
FR3045864B1 (en
Inventor
Olivier Chamley
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Idemia France SAS
Original Assignee
Oberthur Technologies SA
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 Oberthur Technologies SA filed Critical Oberthur Technologies SA
Priority to FR1562998A priority Critical patent/FR3045864B1/en
Publication of FR3045864A1 publication Critical patent/FR3045864A1/en
Application granted granted Critical
Publication of FR3045864B1 publication Critical patent/FR3045864B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Credit Cards Or The Like (AREA)

Abstract

L'invention concerne un procédé d'écriture d'une donnée à stocker dans une mémoire (1) de microcircuit, comprenant une étape de : a) lecture ou d'écriture d'une adresse dans une première zone (Z1) de la mémoire (1), cette adresse repérant une position située dans une deuxième zone (Z2) de la mémoire (1). Selon l'invention, ce procédé comprend de plus les étapes suivantes : b) écriture, à partir de ladite position, d'un en-tête (E) comprenant une indication de longueur représentative d'une longueur d'au moins une partie de la donnée à stocker, et c) écriture de cette partie de la donnée à stocker, dans un domaine (D) de la mémoire (1) contigu dudit en-tête (E), la longueur (L) de ce domaine (D) étant égale à la longueur de cette partie de la donnée à stocker. Un procédé de lecture et une mémoire (1) de microcircuit associés sont également décrits.The invention relates to a method for writing data to be stored in a memory (1) of a microcircuit, comprising a step of: a) reading or writing an address in a first zone (Z1) of the memory (1), this address identifying a position located in a second zone (Z2) of the memory (1). According to the invention, this method further comprises the steps of: b) writing, from said position, a header (E) comprising a length indication representative of a length of at least a portion of the data to be stored, and c) writing of this part of the data to be stored, in a domain (D) of the memory (1) contiguous with said header (E), the length (L) of this domain (D) being equal to the length of this part of the data to be stored. A reading method and a memory (1) associated microcircuit are also described.

Description

Domaine technique auquel se rapporte l'inventionTechnical field to which the invention relates

La présente invention concerne un procédé d’écriture de données dans une mémoire de microcircuit, et un procédé de lecture de données dans une telle mémoire.The present invention relates to a method of writing data in a microcircuit memory, and a method of reading data in such a memory.

Elle concerne plus particulièrement un procédé d’écriture et un procédé de lecture dans une mémoire de microcircuit présentant un espace de stockage réduit. L’invention concerne également une mémoire de microcircuit.It relates more particularly to a writing method and a reading method in a microcircuit memory having a reduced storage space. The invention also relates to a microcircuit memory.

Arriere-plan technologiqueTechnological background

De nombreux dispositifs électroniques sont équipés aujourd’hui d’un élément sécurisé (ou SE, selon l’acronyme anglo-saxon de « Secure Elément »), ou d’une carte à microcircuit.Many electronic devices are equipped today with a secure element (or SE, according to the English acronym of "Secure Element"), or a microcircuit card.

Un tel élément sécurisé, tel qu’une carte du type UICC (selon l’acronyme anglo-saxon de « Universal Integrated Circuit Card »), peut notamment être utilisé pour réaliser des opérations cryptographiques de manière sécurisée, ou, par exemple, pour mémoriser des informations confidentielles telles que des informations d’identification d’un porteur du dispositif électronique.Such a secure element, such as a card of the UICC (Universal Integrated Circuit Card) type, can notably be used to perform cryptographic operations in a secure manner, or, for example, to memorize confidential information such as identification information of a carrier of the electronic device.

De tels éléments sécurisés ou de telles cartes à microcircuit jouent un rôle important notamment dans le fonctionnement de dispositifs électroniques portatifs disposant de moyens de communication avec un réseau de télécommunication ou encore avec des moyens d’identification biométrique.Such secure elements or microcircuit cards play an important role in particular in the operation of portable electronic devices having communication means with a telecommunications network or with biometric identification means.

Le microcircuit d’une telle carte à microcircuit, ou d’un tel élément sécurisé comprend une mémoire destinée à stocker des données, par exemple des données reçues par le microcircuit. Le plus souvent, la longueur d’une telle donnée à stocker n’est pas prédéterminée, et varie d’une donnée à l’autre. Par ailleurs, la mémoire d’un tel microcircuit représente un espace de stockage généralement réduit. Cet espace de stockage peut par exemple comprendre environ 128 kilooctets pour un microcircuit de carte de type UICC.The microcircuit of such a microcircuit card, or such a secure element comprises a memory for storing data, for example data received by the microcircuit. Most often, the length of such data to be stored is not predetermined, and varies from one data to another. Moreover, the memory of such a microcircuit represents a generally reduced storage space. This storage space may for example comprise about 128 kilobytes for a card microcircuit UICC type.

Il est connu, par exemple du document FR 2 759 795, d’utiliser une telle mémoire pour y écrire des données de la manière suivante : - chaque donnée est écrite dans un fichier composé d’une chaîne de domaines élémentaires, chacun de ces domaines élémentaires présentant une longueur fixe, et - l’adresse du premier domaine élémentaire de cette chaîne est écrite dans une table d’allocation de ces domaines élémentaires.It is known, for example from document FR 2 759 795, to use such a memory to write data therein as follows: each data item is written in a file composed of a chain of elementary domains, each of these domains elementary elements having a fixed length, and - the address of the first elementary domain of this chain is written in an allocation table of these elementary domains.

Mais, lorsqu’un tel procédé de stockage est utilisé, une partie importante de la mémoire est rendue non disponible pour l’écriture de nouvelles données, sans pour autant servir au stockage des données précédemment écrites.But, when such a storage method is used, a large part of the memory is made unavailable for writing new data, without being used for storing previously written data.

Objet de l’inventionObject of the invention

Dans ce contexte, la présente invention propose un nouveau procédé d’écriture d’une donnée à stocker dans une mémoire, comprenant une étape de : a) lecture ou d’écriture d’une adresse dans une première zone de la mémoire, cette adresse repérant une position située dans une deuxième zone de la mémoire.In this context, the present invention proposes a new method of writing a data item to be stored in a memory, comprising a step of: a) reading or writing an address in a first area of the memory, this address locating a position in a second area of the memory.

Selon l’invention, ce procédé comprend de plus les étapes suivantes : b) écriture, à partir de ladite position, d’un en-tête comprenant une indication de longueur représentative d’une longueur d’au moins une partie de la donnée à stocker, et c) écriture de cette partie de la donnée à stocker, dans un domaine de la mémoire contigu dudit en-tête, la longueur de ce domaine étant égaie à la longueur de cette partie de la donnée à stocker.According to the invention, this method further comprises the following steps: b) writing, from said position, a header comprising an indication of length representative of a length of at least a portion of the data item; store, and c) write this portion of the data to be stored in a domain of the contiguous memory of said header, the length of this domain being equal to the length of this portion of the data to be stored.

La donnée à stocker est représentée par une suite de bits (éléments binaires), regroupés ici en multiplets, par exemple en octets comprenant chacun huit bits. La longueur de cette donnée désigne par exemple le nombre de multiplets que comprend cette suite de bits.The data to be stored is represented by a series of bits (bits), grouped here in bytes, for example in bytes each comprising eight bits. The length of this datum for example indicates the number of bytes that includes this sequence of bits.

De manière comparable, la longueur du domaine susmentionné peut désigner par exemple le nombre de multiplets qui constituent ce domaine.In a comparable manner, the length of the aforementioned domain may for example designate the number of multiplets that constitute this domain.

La partie de la donnée à stocker écrite dans le domaine de la mémoire contigu dudit en-tête peut en particulier correspondre à l’intégralité de la donnée à stocker.The part of the data to be stored written in the domain of the contiguous memory of said header can in particular correspond to all the data to be stored.

Grâce à l’invention, des données à stocker, ou des parties de données de stocker, pouvant présenter une longueur différente d’une donnée à stocker à l’autre, peuvent être écrites dans cette mémoire sans perte d’espace de stockage, c’est-à-dire en utilisant pour cela une longueur de la mémoire limitée à la longueur de la donnée, ou à la longueur de la partie de donnée, qui y est écrite. Ce procédé d’écriture permet en particulier d’éviter que des bits d’un domaine dans lequel est écrite une partie de la donnée à stocker soient à la fois inutilisés pour le stockage de cette donnée à stocker, et indisponible pour l’écriture d’autres données à stocker.Thanks to the invention, data to be stored, or portions of store data, which can have a length different from one data item to be stored to the other, can be written in this memory without loss of storage space. that is to say using for this purpose a length of memory limited to the length of the data, or the length of the data portion, which is written therein. In particular, this writing method makes it possible to prevent bits of a domain in which part of the data to be stored is written from being unused for the storage of this data to be stored, and unavailable for writing data. other data to be stored.

Par ailleurs, dans ce procédé d’écriture, on peut prévoir qu’une adresse est écrite dans la première zone de la mémoire seulement lorsqu’une donnée à stocker est écrite (au moins en partie) dans la deuxième zone de cette mémoire. Autrement formulé, du fait de la mise en œuvre de ce procédé d’écriture, seule la partie de la deuxième zone de la mémoire effectivement utilisée pour stocker des données est décrite dans la première zone de la mémoire, en termes d’adresses d’écriture. Ainsi, grâce à ce procédé d’écriture, le volume de ladite mémoire utilisé pour écrire puis stocker une ou des données est avantageusement plus petit que lors de l’utilisation d’une solution basée par exemple sur une table d’allocation de fichier ou FAT (selon l’acronyme anglo-saxon de « File Allocation Table ») qui décrirait, en termes d’adresses d’écriture, l’intégralité de zones ou de pages de cette mémoire.Moreover, in this writing method, it can be provided that an address is written in the first area of the memory only when a piece of data to be stored is written (at least in part) in the second area of this memory. Otherwise formulated, because of the implementation of this writing method, only the part of the second zone of the memory actually used for storing data is described in the first area of the memory, in terms of addresses. writing. Thus, thanks to this writing method, the volume of said memory used to write and store one or more data is advantageously smaller than when using a solution based for example on a file allocation table or FAT (English acronym for "File Allocation Table") which describes, in terms of write addresses, the entirety of zones or pages of this memory.

Ce procédé d’écriture est avantageusement plus économe, en termes d’espace de stockage, qu’une solution basée sur une table d’allocation de fichier de type FAT pour laquelle la mémoire est divisée en blocs mémoires de longueur fixe, notamment lorsque les données à stocker présentent en moyenne une longueur inférieure à celle d’un tel bloc mémoire de longueur fixe.This write method is advantageously more economical, in terms of storage space, than a solution based on a FAT type file allocation table for which the memory is divided into memory blocks of fixed length, especially when the data to be stored on average have a length less than that of such a fixed length memory block.

Préférentiellement, ledit en-tête occupe dans la mémoire une longueur déterminée en fonction de la longueur dudit domaine qui lui est contigu.Preferably, said header occupies in the memory a length determined according to the length of said domain which is contiguous thereto.

Ledit en-tête peut en particulier occuper, dans la mémoire, une longueur d’autant plus petite que la longueur dudit domaine qui lui est contigu est petite. L'indication de longueur contenue dans cet en-tête peut correspondre par exemple au nombre de multiplets formant ledit domaine contigu de cet en-tête. Or le nombre multiplets eux-mêmes nécessaires pour coder un nombre donné (ce nombre donné correspondant ici au nombre de multiplets formant ledit domaine) est d'autant plus grand que ce nombre donné est grand. Le nombre de multiplets nécessaires pour écrire l'indication de longueur représentative de la longueur de ce domaine dépend ainsi de la longueur de ce domaine.Said header can in particular occupy, in the memory, a length that is smaller as the length of said domain which is contiguous to it is small. The indication of length contained in this header may correspond, for example, to the number of bytes forming said contiguous domain of this header. But the number multiplets themselves necessary to code a given number (this given number corresponding here to the number of multiplets forming said domain) is even larger than this given number is large. The number of multiplets needed to write the indication of length representative of the length of this domain thus depends on the length of this domain.

Ajuster ainsi la longueur de l'en-tête contenant cette indication de longueur, en fonction de la longueur du domaine contigu de cet en-tête, permet donc d'éviter avantageusement d'écrire un en-tête qui serait nettement plus long que ce qui est nécessaire pour contenir l'indication de longueur représentative de la longueur dudit domaine. L'espace de stockage de la mémoire est ainsi utilisé de manière optimale, sans perte de place. Cette solution nécessite en particulier moins de place mémoire qu'une solution basée sur des en-têtes de longueur fixe. D’autres caractéristiques non limitatives et avantageuses du procédé d’écriture décrit ci-dessus sont les suivantes : - lorsque la longueur dudit domaine contigu est inférieure à un premier seuil prédéterminé, alors, la longueur dudit en-tête correspond à un premier nombre d’octets ; - ledit premier seuil correspond à 250 octets ; - ledit premier nombre d’octets correspond à un octet ; - lorsque la longueur dudit domaine contigu est supérieure audit premier seuil, alors, l’en-tête est écrit à l’étape b) de manière à présenter ledit premier nombre d’octets dans lesquels est écrite une valeur prédéterminée, suivis par un deuxième nombre d’octets dans lesquels est écrite ladite indication de longueur ; - ladite valeur prédéterminée est représentative d’une indication de chaînage indiquant que l’intégralité de la donnée à stocker est écrite dans ledit domaine contigu, ou que la donnée à stocker est écrite sous la forme d’une chaîne de plusieurs blocs mémoires distincts ; - ladite valeur prédéterminée est représentative du fait que l’en-tête comprend un nombre d’octets supérieur audit premier nombre d’octets ; l’indication de chaînage susmentionnée est ainsi écrite d’une manière particulièrement économe en termes d’espace de stockage, puisque ladite valeur prédéterminée est représentative à la fois de cette indication de chaînage, et du fait que l’en-tête comprend un nombre d’octets supérieur audit premier nombre d’octets ; - ladite valeur prédéterminée et ledit deuxième nombre d’octets sont déterminés chacun en fonction de la longueur dudit domaine contigu ; - ladite valeur prédéterminée est comprise entre 251 et 255 ; - ledit deuxième nombre d’octets est supérieur audit premier nombre d’octets ; - ledit deuxième nombre d’octets correspond à deux octets ; - lorsque la mémoire présente, à partir de ladite position, un espace disponible suffisamment long pour y écrire l’intégralité de la donnée à stocker ainsi que l’en-tête correspondant, alors, ladite indication de longueur est représentative de la longueur de l’intégralité de la donnée à stocker, et l’intégralité de la donnée à stocker est écrite dans ledit domaine contigu dudit en-tête, au cours de l’étape c) ; - lorsque la longueur de la donnée à stocker est inférieure à un deuxième seuil, ladite indication de longueur est représentative de la longueur de l’intégralité de la donnée à stocker, et l’intégralité de la donnée à stocker est écrite dans ledit domaine contigu dudit en-tête, au cours de l’étape c) ; - le deuxième seuil est égal au premier seuil ; - lorsque la mémoire présente, à partir de ladite position, un espace disponible de longueur insuffisante pour y écrire l’intégralité de la donnée à stocker ainsi que l’en-tête correspondant, et que la longueur de la donnée à stocker est supérieure audit deuxième seuil, alors, la donnée à stocker est écrite sous la forme d’une chaîne de plusieurs blocs mémoires distincts, un premier bloc mémoire de cette chaîne étant écrit dans la mémoire à partir de la position repérée par ladite adresse, et chaque bloc mémoire de ladite chaîne comprenant un domaine, dans lequel on écrit une partie de la donnée à stocker, ce domaine étant entièrement occupé par cette partie de la donnée à stocker, et un en-tête, dans lequel on écrit une indication de longueur représentative de la longueur dudit domaine contenu dans ce bloc mémoire ; - l’en-tête contenu dans l’un des blocs mémoires de ladite chaîne est écrit au début de ce bloc mémoire ; - ladite chaîne de blocs mémoires est écrite de manière que chaque bloc mémoire de cette chaîne suivi dans cette chaîne par un autre bloc mémoire contient un domaine présentant une longueur supérieure audit deuxième seuil ; - lorsqu’un bloc mémoire de ladite chaîne est suivi dans cette chaîne par un autre bloc mémoire, alors, l’en-tête contenu dans ce bloc mémoire est écrit de manière à contenir une indication de chaînage indiquant que ce bloc mémoire est suivi, dans ladite chaîne, par un autre bloc mémoire ; - lorsqu’un bloc mémoire de ladite chaîne est suivi dans cette chaîne par un autre bloc mémoire, alors, l’en-tête contenu dans ce bloc mémoire est écrit de manière à présenter ledit premier nombre d’octets, dans lesquels est écrite ladite indication de chaînage, sous la forme d’une valeur prédéterminée, suivis par ledit deuxième nombre d’octets dans lesquels est écrite ladite indication de longueur ; - lorsqu’un bloc mémoire de ladite chaîne est suivi dans cette chaîne par un autre bloc mémoire, alors, ce bloc mémoire comprend en outre une adresse de chaînage, distincte de ladite adresse lue ou écrite dans la première zone de la mémoire à l’étape a), et repérant une autre position de la deuxième zone de la mémoire à partir de laquelle on écrit le bloc mémoire suivant de cette chaîne ; - ladite adresse de chaînage est écrite à la fin du bloc mémoire contenant cette adresse de chaînage ; et - ladite mémoire est intégrée dans un élément sécurisé ou une carte à microcircuit. L’invention propose également un procédé de lecture dans une mémoire comprenant des étapes de : a') lecture, dans une première zone de la mémoire, d'une adresse repérant une position située dans une deuxième zone de la mémoire, b’) lecture dans la mémoire, à partir de ladite position, d’un en-tête contenant une indication de longueur, et c’) lecture du contenu d’un domaine de la mémoire contigu dudit en-tête et présentant une longueur égale à ladite indication de longueur.Adjusting the length of the header containing this length indication, as a function of the length of the contiguous domain of this header, therefore advantageously avoids writing a header that would be much longer than this. which is necessary to contain the indication of length representative of the length of said domain. The storage space of the memory is thus used optimally, without loss of space. This solution requires in particular less memory space than a solution based on fixed length headers. Other nonlimiting and advantageous features of the writing method described above are the following: when the length of said contiguous domain is less than a first predetermined threshold, then, the length of said header corresponds to a first number of times. bytes; said first threshold corresponds to 250 bytes; said first number of bytes corresponds to one byte; when the length of said contiguous domain is greater than said first threshold, then, the header is written in step b) so as to present said first number of bytes in which a predetermined value is written, followed by a second number of bytes in which said length indication is written; said predetermined value is representative of a chaining indication indicating that all of the data to be stored is written in said contiguous domain, or that the data to be stored is written in the form of a chain of several distinct memory blocks; said predetermined value is representative of the fact that the header comprises a number of bytes greater than said first number of bytes; the aforementioned chaining indication is thus written in a particularly economical manner in terms of storage space, since said predetermined value is representative of both this chaining indication and the fact that the header comprises a number bytes greater than said first number of bytes; said predetermined value and said second number of bytes are each determined according to the length of said contiguous domain; said predetermined value is between 251 and 255; said second number of bytes is greater than said first number of bytes; said second number of bytes corresponds to two bytes; when the memory has, from said position, an available space long enough to write the entirety of the data to be stored as well as the corresponding header, then, said indication of length is representative of the length of the all of the data to be stored, and all of the data to be stored is written in said contiguous domain of said header, in step c); when the length of the data item to be stored is less than a second threshold, said indication of length is representative of the length of the entirety of the data to be stored, and the entirety of the data to be stored is written in said contiguous domain said header, in step c); the second threshold is equal to the first threshold; when the memory has, from said position, an available space of insufficient length to write all of the data to be stored and the corresponding header, and that the length of the data to be stored is greater than said second threshold, then, the data to be stored is written in the form of a chain of several separate memory blocks, a first memory block of this string being written in the memory from the position indicated by said address, and each memory block of said chain comprising a domain, in which part of the data to be stored is written, this domain being entirely occupied by that part of the data item to be stored, and a header, in which a length indication representative of the length of said domain contained in this memory block; the header contained in one of the memory blocks of said string is written at the beginning of this memory block; said memory block string is written in such a way that each memory block of this string followed in this string by another memory block contains a domain having a length greater than said second threshold; when a memory block of said string is followed in this string by another memory block, then, the header contained in this memory block is written so as to contain a chaining indication indicating that this memory block is followed, in said chain, by another memory block; when a memory block of said string is followed in this string by another memory block, then, the header contained in this memory block is written so as to present said first number of bytes, in which is written said chaining indication, in the form of a predetermined value, followed by said second number of bytes in which said length indication is written; when a memory block of said string is followed in this string by another memory block, then, this memory block furthermore comprises a chaining address, distinct from said address read or written in the first area of the memory at the same time. step a), and identifying another position of the second zone of the memory from which the next memory block of this chain is written; said chaining address is written at the end of the memory block containing this chaining address; and said memory is integrated in a secure element or a microcircuit card. The invention also proposes a method of reading in a memory comprising steps of: a ') reading, in a first zone of the memory, an address locating a position located in a second zone of the memory, b') reading in the memory, from said position, a header containing an indication of length, and c ') reading the contents of a domain of the contiguous memory of said header and having a length equal to said indication of length.

On peut prévoir en outre, au cours de ce procédé, que l’étape b’) comprend la lecture d’un premier nombre d’octets dudit en-tête, et que, lorsqu’une valeur lue dans ce premier nombre d’octets est inférieure à un premier seuil prédéterminé, alors, ladite indication de longueur est égale à ladite valeur lue dans ce premier nombre d’octets.It can further be provided during this process that step b ') comprises reading a first number of bytes of said header, and that when a value read in this first number of bytes is less than a first predetermined threshold, then, said length indication is equal to said read value in that first number of bytes.

On peut prévoir aussi, au cours de ce procédé, que lorsque ladite valeur lue dans le premier nombre d’octets de l’en-tête est supérieure audit premier seuil, alors, l’étape b’) comprend en outre la lecture, dans un deuxième nombre d’octets situés dans la mémoire à la suite dudit premier nombre d’octets, de ladite indication de longueur ; D’autres caractéristiques non limitatives et avantageuses de ce procédé de lecture sont les suivantes : - ledit premier seuil correspond à 250 octets ; - ledit premier nombre d’octets correspond à un octet ; - ledit deuxième nombre est supérieur audit premier nombre ; et - ledit deuxième nombre d’octets correspond à deux octets ;It can also be provided during this process that when said value read in the first number of bytes of the header is greater than said first threshold, then step b ') further comprises reading, in a second number of bytes located in the memory following said first number of bytes of said length indication; Other nonlimiting and advantageous features of this reading method are the following: said first threshold corresponds to 250 bytes; said first number of bytes corresponds to one byte; said second number is greater than said first number; and said second number of bytes corresponds to two bytes;

Préférentiellement, il est prévu en outre, au cours de ce procédé de lecture, lorsque ledit en-tête lu à l’étape b’) contient une indication de chaînage représentative du fait que le domaine contigu de cet en-tête est chaîné avec un autre domaine de la mémoire, de d’) lire, à la suite dudit domaine, une adresse de chaînage, distincte de ladite adresse lue dans la première zone de la mémoire à l’étape a’), cette adresse de chaînage repérant une autre position de la deuxième zone de la mémoire, puis de bb’) lire, à partir de ladite autre position, un en-tête comprenant une indication de longueur, puis de cc’) lire le contenu d’un domaine de la mémoire contigu dudit en-tête lu à l’étape bb’), ce domaine présentant une longueur égale à ladite indication de longueur.Preferably, it is furthermore provided, during this reading method, when said header read in step b ') contains a representative chaining indication because the contiguous domain of this header is chained with a another domain of the memory, d ') read, following said domain, a chaining address, distinct from said address read in the first area of the memory in step a'), this chaining address spotting another position of the second area of the memory, then bb ') read, from said other position, a header comprising an indication of length, then cc') read the contents of a domain of the contiguous memory of said header read in step bb '), this domain having a length equal to said length indication.

Ladite indication de chaînage peut en particulier être traduite par ladite valeur lue à l’étape b’) dans le premier nombre d’octets dudit en-tête.Said indication of chaining can in particular be translated by said value read in step b ') in the first number of bytes of said header.

On peut prévoir aussi au cours de ce procédé de lecture de : dd’) lorsque l’en-tête lu à l’étape bb’) contient une indication de chaînage représentative du fait que le domaine contigu de cet en-tête est chaîné avec un autre domaine de la mémoire : - lire, à la suite du domaine lu à l’étape cc’), une adresse de chaînage, repérant une autre position de la deuxième zone de la mémoire, puis de - réitérer l’exécution des étapes bb’), cc’) et dd’).It is also possible during this method of reading: dd ') when the header read in step bb') contains a representative chaining indication because the contiguous domain of this header is chained with another domain of the memory: - read, after the domain read in step cc '), a chaining address, identifying another position of the second area of the memory, and then - reiterate the execution of the steps bb '), cc') and dd ').

On peut prévoir aussi que la mémoire est intégrée dans un élément sécurisé ou une carte à microcircuit. L’invention propose aussi un procédé comprenant : - l’écriture d’une donnée à stocker, selon un procédé d’écriture tel que décrit ci-dessus, et - la lecture de la donnée ainsi écrite, selon un procédé de lecture tel que décrit ci-dessus. L’invention propose aussi une mémoire comprenant une première zone et une deuxième zone, la première zone de la mémoire contenant au moins une adresse repérant une position située dans la deuxième zone de la mémoire, la mémoire comprenant en outre : - à partir de ladite position, un en-tête contenant une indication de longueur, ainsi qu’ - un domaine contigu dudit en-tête, de longueur correspondant à l’indication de longueur contenue dans cet en-tête, ce domaine étant entièrement occupé par une donnée qu’il contient.It can also be provided that the memory is integrated in a secure element or a microcircuit card. The invention also proposes a method comprising: - the writing of a data item to be stored, according to a writing method as described above, and - the reading of the data thus written, according to a reading method such that described above. The invention also proposes a memory comprising a first zone and a second zone, the first zone of the memory containing at least one address identifying a position located in the second zone of the memory, the memory further comprising: - from said position, a header containing an indication of length, as well as a contiguous domain of said header, of length corresponding to the length indication contained in this header, this domain being entirely occupied by a datum that it contains.

Description detaillee d’un exemple de réalisationDetailed description of an example of realization

La description qui va suivre en regard des dessins annexés, donnés à titre d’exemples non limitatifs, fera bien comprendre en quoi consiste l’invention et comment elle peut être réalisée.The following description with reference to the accompanying drawings, given by way of non-limiting examples, will make it clear what the invention consists of and how it can be achieved.

Sur les dessins annexés : - les figures 1 A, 1B et 1C représentent de manière schématique trois types différents de blocs mémoires écrits au cours d’un procédé mettant en oeuvre les enseignements de l’invention ; et - la figure 2 représente schématiquement une mémoire dans laquelle des données ont été écrites au cours d’un procédé mettant en oeuvre les enseignements de l’invention.In the accompanying drawings: FIGS. 1A, 1B and 1C schematically represent three different types of memory blocks written during a process implementing the teachings of the invention; and FIG. 2 diagrammatically represents a memory in which data has been written during a method implementing the teachings of the invention.

Le procédé d’écriture mettant en œuvre les enseignements de l’invention, qui sera décrit plus bas, est mis en œuvre dans une mémoire, ici la mémoire d’un élément sécurisé ou d’une carte à microcircuit, destiné à équiper un dispositif électronique.The writing method implementing the teachings of the invention, which will be described below, is implemented in a memory, here the memory of a secure element or a microcircuit card, intended to equip a device. electronic.

Le dispositif électronique destiné à recevoir cet élément sécurisé ou cette carte à microcircuit peut en particulier être un dispositif électronique portatif disposant de moyens de communication avec un réseau de télécommunication, tel qu’un téléphone portatif, un ordinateur portatif, une tablette électronique à écran tactile, ou encore une montre connectée.The electronic device intended to receive this secure element or this microcircuit card may in particular be a portable electronic device having means of communication with a telecommunication network, such as a portable telephone, a laptop, a touch screen electronic tablet. , or a connected watch.

Cet élément sécurisé peut correspondre, par exemple, à une carte du type UICC, telle que décrite dans la norme ETSI TS 102 221. En particulier, cette carte à microcircuit peut correspondre à une carte à circuit intégré embarquée, du type eUlCC (selon l’acronyme anglo-saxon de « embedded Universal Integrated Circuit Card »), telle que décrite dans la norme ETSI TS 103 383, destinée à être installée dans ce dispositif électronique soit à demeure (en y étant soudée), soit de manière amovible.This secure element may correspond, for example, to a card of the UICC type, as described in the ETSI TS 102 221 standard. In particular, this microcircuit card may correspond to an on-board integrated circuit card, of the eUlCC type (according to FIG. English acronym for "Embedded Universal Integrated Circuit Card", as described in ETSI TS 103 383, intended to be installed in this electronic device either permanently (by being welded therein) or removably.

Cet élément sécurisé peut également correspondre à un élément sécurisé du type eSE (selon l’acronyme anglo-saxon de « embedded Secure Elément »), destiné à être soudé directement dans le dispositif électronique qu’il équipe, et correspondant aux spécifications de la technologie « GlobalPlatform » (marque déposée). Cet élément sécurisé, du type eSE, peut par exemple être réalisé conformément à la version 2.2.1 des spécifications pour carte de la technologie « GlobalPlatform ».This secure element can also correspond to a secure element of the type eSE (according to the English acronym of "embedded Secure Element"), intended to be soldered directly into the electronic device that it equips, and corresponding to the specifications of the technology. "GlobalPlatform" (registered trademark). This secure element, of the eSE type, can for example be produced in accordance with version 2.2.1 of the "GlobalPlatform" technology card specifications.

Cet élément sécurisé peut également être réalisée sous la forme d’une carte de type micro-SD sécurisée.This secure element can also be made in the form of a secure micro-SD type card.

Cet élément sécurisé présente préférentiellement un niveau de sécurité conforme aux critères communs EAL (pour "Evaluation Assurance Level"), correspondant à la norme ISO 15408, avec un niveau supérieur ou égal à 4, ou à la norme FIPS (pour "Fédéral Information Processing Standard") 140-2.This secure element preferably has a security level in accordance with the common criteria EAL (for "Evaluation Assurance Level"), corresponding to the ISO 15408 standard, with a level greater than or equal to 4, or to the FIPS (for "Federal Information Processing Standard ") 140-2.

Cet élément sécurisé ou cette carte à microcircuit peut en particulier être utilisé, au sein de ce dispositif électronique, pour réaliser des opérations cryptographiques de manière sécurisée, ou pour mémoriser des informations confidentielles telles que des informations d’identification d’un porteur du dispositif électronique, un profil électronique de cet utilisateur, ou encore pour mémoriser des messages reçus par le dispositif électronique.This secure element or microcircuit card can in particular be used, within this electronic device, to perform cryptographic operations in a secure manner, or to store confidential information such as identification information of a carrier of the electronic device , an electronic profile of this user, or to store messages received by the electronic device.

Cet élément sécurisé ou cette carte à microcircuit comprend un microcircuit équipé d’une mémoire 1 (représentée figure 2) destinée à stocker des données, la longueur d’une telle donnée étant susceptible de varier d’une donnée à l’autre.This secure element or microcircuit card comprises a microcircuit equipped with a memory 1 (shown in Figure 2) for storing data, the length of such a data being likely to vary from one data to another.

Cette mémoire 1 présente ici un espace de stockage réduit, dont la capacité de stockage est par exemple inférieure à 512 kilooctets.This memory 1 here has a reduced storage space, whose storage capacity is for example less than 512 kilobytes.

La capacité de cet espace de stockage peut aussi par exemple, être comprise entre 64 kilooctets et 1 mégaoctet.The capacity of this storage space may also for example be between 64 kilobytes and 1 megabyte.

Cette mémoire 1 est ici une mémoire non-volatile, par exemple une mémoire non volatile réinscriptible, telle qu’une mémoire de type Flash.This memory 1 is here a non-volatile memory, for example a rewritable non-volatile memory, such as a Flash type memory.

Le microcircuit comprend également un processeur, par exemple un microprocesseur, permettant de réaliser des opérations logiques. Ce processeur est relié à la mémoire (1), et peut commander des opérations d’écriture ou de lecture dans cette mémoire (1).The microcircuit also comprises a processor, for example a microprocessor, for performing logical operations. This processor is connected to the memory (1), and can control write or read operations in this memory (1).

Le microcircuit comprend également des moyens de communication, par exemple sous la forme de contacts électriques associés à un module de communication du microcircuit, ce module de communication permettant, si nécessaire, de mettre en forme des signaux électriques reçus au niveau de ces contacts électriques avant de les transmettre au processeur.The microcircuit also comprises communication means, for example in the form of electrical contacts associated with a microcircuit communication module, this communication module making it possible, if necessary, to format electrical signals received at these front electrical contacts. to transmit them to the processor.

Cet élément sécurisé ou cette carte à microcircuit peut en particulier être conforme à la norme ISO/IEC 7816 ou ISO/IEC 14443 et être ainsi apte à réceptionner (grâce à ses moyens de communication) et traiter des requêtes ou commandes de type ARDU (selon l’acronyme anglo-saxon de « Application Protocol Data Unit »).This secure element or microcircuit card can in particular be in accordance with ISO / IEC 7816 or ISO / IEC 14443 and thus be able to receive (through its means of communication) and process ARDU requests or commands (according to the English acronym for "Application Protocol Data Unit").

Le microcircuit peut également être adapté à communiquer avec un capteur biométrique permettant d’acquérir des données biométriques relatives à un utilisateur du microcircuit. Le microcircuit peut également être adapté à communiquer avec des moyens d’authentification d’un tel utilisateur, tel qu’un clavier de saisie d’un code d’authentification.The microcircuit can also be adapted to communicate with a biometric sensor for acquiring biometric data relating to a user of the microcircuit. The microcircuit may also be adapted to communicate with authentication means of such a user, such as a keypad for entering an authentication code.

Les données écrites dans cette mémoire 1, au moyen du procédé d’écriture qui sera décrit ci-dessous, peuvent correspondre notamment : - à un message électronique tel qu’un email reçu par le dispositif électronique équipé de ce microcircuit, - à une notification reçue par ce dispositif électronique en provenance d’un service externe de messagerie, ou encore - à des données stockées de manière temporaire dans cette mémoire 1 à l’occasion d’opérations cryptographiques portant sur ces données et réalisées par le microcircuit.The data written in this memory 1, by means of the writing method which will be described below, can correspond in particular to: - an electronic message such as an email received by the electronic device equipped with this microcircuit, - a notification received by this electronic device from an external mail service, or - data stored temporarily in this memory 1 during cryptographic operations on these data and performed by the microcircuit.

Ces données peuvent notamment être reçues par le microcircuit grâce aux moyens de communication mentionnés ci-dessus, ou encore être transmises au microcircuit par le capteur biométrique ou les moyens d’authentification précités.This data can in particular be received by the microcircuit through the communication means mentioned above, or be transmitted to the microcircuit by the biometric sensor or the aforementioned authentication means.

Ces données peuvent correspondre à un fichier informatique. Ces données peuvent aussi correspondre à un « objet », en particulier lorsque le microcircuit fonctionne au moyen d’un système d’exploitation, par exemple du type Java Card, permettant l’utilisation d’un langage orienté objet.This data may correspond to a computer file. This data can also correspond to an "object", in particular when the microcircuit operates using an operating system, for example of the Java Card type, allowing the use of an object-oriented language.

Ces données peuvent correspondre aussi au résultat d’une comparaison entre des données biométriques ou de données d’authentifications reçues par microcircuit, et des données (biométriques ou d’authentification) contenues dans le microcircuit.This data can also correspond to the result of a comparison between biometric data or authentication data received by microcircuit, and data (biometric or authentication) contained in the microcircuit.

Le procédé d’écriture mis en œuvre par le processeur du microcircuit présenté ci-dessus est décrit maintenant.The writing method implemented by the microcircuit processor presented above is described now.

Ce procédé comprend une étape a) de lecture ou d’écriture d’une adresse dans une première zone Z1 de la mémoire 1, cette adresse repérant une position dans une deuxième zone Z2 de la mémoire 1.This method comprises a step a) of reading or writing an address in a first zone Z1 of the memory 1, this address identifying a position in a second zone Z2 of the memory 1.

Selon une caractéristique particulièrement remarquable, ce procédé d’écriture comprend ensuite les étapes suivantes : b) écriture à partir de ladite position d’un en-tête E comprenant une indication de longueur représentative d’une longueur d’au moins une partie de la donnée à stocker, et c) écriture de cette partie de la donnée à stocker, dans un domaine D de la mémoire 1 contigu dudit en-tête E, la longueur L de ce domaine D étant égale à la longueur de cette partie de la donnée à stocker.According to a particularly remarkable characteristic, this writing method then comprises the following steps: b) writing from said position of a header E comprising an indication of length representative of a length of at least a part of the data to be stored, and c) writing of this part of the data item to be stored, in a domain D of the contiguous memory 1 of said header E, the length L of this domain D being equal to the length of this part of the data item to store.

La première zone Z1 de la mémoire 1 correspond par exemple à un tableau de pointeurs comprenant plusieurs emplacements A1, A2, ..., AN pouvant contenir chacun une adresse repérant une position dans la deuxième zone Z2 de cette mémoire 1 (ou, autrement formulé, un pointeur pointant vers cette position).The first zone Z1 of the memory 1 corresponds, for example, to a table of pointers comprising several locations A1, A2,..., AN which may each contain an address locating a position in the second zone Z2 of this memory 1 (or, otherwise formulated , a pointer pointing to this position).

La deuxième zone Z2 de la mémoire 1 correspond à une partie de cette mémoire 1 utilisée pour écrire les données à stocker en elles-mêmes.The second zone Z2 of the memory 1 corresponds to a part of this memory 1 used to write the data to be stored in themselves.

Le domaine D contigu de cet en-tête E est situé ici à la suite de cet entête E, dans la mémoire 1. En variante, ce domaine pourrait plutôt précéder cet en-tête, dans la mémoire.The contiguous domain D of this header E is located here after this header E, in the memory 1. As a variant, this domain could rather precede this header in the memory.

Dans le procédé d’écriture décrit ici, l’étape a) comprend plus précisément les sous-étapes suivantes, mises en œuvre par le processeur du microcircuit : i- sélection d’un des emplacements A1, A2, ...AN de la première zone Z1 de la mémoire, ii- lecture ou écriture, dans l’emplacement sélectionné à la sous-étape i, de l’adresse repérant la position à partir de laquelle il est prévu d’écrire l’en-tête E, et iii- test du fait que la mémoire 1 présente, à partir de cette position, un espace disponible de longueur suffisante pour y écrire l’intégralité de la donnée à stocker ainsi que l’en-tête E correspondant.In the writing method described here, step a) more precisely comprises the following substeps, implemented by the microcircuit processor: i- selection of one of the slots A1, A2, ... AN of the first zone Z1 of the memory, ii- read or write, in the location selected in substep i, the address identifying the position from which it is intended to write the header E, and iii- test because the memory 1 has, from this position, an available space of sufficient length to write all the data to be stored and the corresponding E header.

Un espace de la mémoire 1 est considéré ici comme disponible pour y écrire lorsqu’aucune donné, adresse ou en-tête n’y a été écrite précédemment, ou lorsqu’une autorisation a été donnée de remplacer une ou des données contenues dans cet espace par d’autres données.A memory space 1 is considered here as available to write to it when no data, address or header has been written previously, or when an authorization has been given to replace one or more data contained in this space by other data.

Le processeur est en mesure de déterminer qu’un espace de la mémoire situé au niveau d’une adresse est disponible, car : - d’une part, une adresse limite de la mémoire, au-delà de laquelle aucune donnée n’a précédemment été écrite, est enregistrée dans le microcircuit, et - d’autre part, parce qu’un espace de la mémoire disponible présente, au début de cet espace, un en-tête contenant une valeur spécifique indiquant que cet espace est disponible ; cette valeur spécifique correspond ici, en l’occurrence, à 254 ou à 255.The processor is able to determine that a memory space located at an address is available because: on the one hand, a limit address of the memory, beyond which no data has previously has been written, is stored in the microcircuit, and - secondly, because a space of available memory has, at the beginning of this space, a header containing a specific value indicating that this space is available; this specific value here corresponds, in this case, to 254 or 255.

En fonction du résultat de la sous-étape iii, on distingue ici trois cas différents.Depending on the result of sub-step iii, three different cases are distinguished here.

Premier cas : la sous-étape iii montre que la mémoire 1 présente, à partir de ladite position, un espace disponible de longueur suffisante pour y écrire l’intégralité de la donnée à stocker ainsi que l’en-tête E correspondant. L’adresse contenue dans l’emplacement de la première zone Z1 de la mémoire sélectionné à l’étape i est alors conservée sans changement dans cet emplacement, et, au cours de l’étape c) suivante, l’intégralité de la donnée à stocker sera écrite dans le domaine D contigu de l’en-tête E.First case: the sub-step iii shows that the memory 1 has, from said position, an available space of sufficient length to write all the data to be stored and the corresponding E header. The address contained in the location of the first zone Z1 of the memory selected in step i is then kept unchanged in this location, and, in the following step c), all the data to store will be written in the contiguous D domain of the E header.

Deuxième cas : la sous-étape iii montre que la mémoire 1 présente, à partir de ladite position, un espace disponible de longueur insuffisante pour y écrire l’intégralité de la donnée à stocker ainsi que l’en-tête E correspondant, et, en outre, la longueur de la donnée à stocker est inférieure à un deuxième seuil. L’adresse contenue dans l’emplacement de la première zone Z1 de la mémoire sélectionné à l’étape i est alors est remplacée, dans cet emplacement, par une adresse d’une autre position de la deuxième zone Z2 de la mémoire 1, telle que la mémoire 1 présente, à partir de cette autre position, un espace disponible de longueur suffisante pour y écrire l’intégralité de la donnée à stocker ainsi que l’en-tête E correspondant. Au cours de l’étape c) suivante, l’intégralité de la donnée à stocker sera écrite dans le domaine D contigu de l’en-tête E, cet entête E étant écrit à partir de ladite autre position.Second case: the sub-step iii shows that the memory 1 has, from said position, an available space of insufficient length to write all the data to be stored and the corresponding header E, and, in addition, the length of the data to be stored is less than a second threshold. The address contained in the location of the first zone Z1 of the memory selected in step i is then replaced, in this location, by an address of another position of the second zone Z2 of the memory 1, such as that the memory 1 has, from this other position, an available space of sufficient length to write all the data to be stored and the corresponding header E. During the next step c), all the data to be stored will be written in the contiguous domain D of the header E, this header E being written from said other position.

Troisième cas : la sous-étape iii montre que la mémoire 1 présente, à partir de ladite position, un espace disponible de longueur insuffisante pour y écrire l’intégralité de la donnée à stocker ainsi que l’en-tête E correspondant, et, en outre, la longueur de la donnée à stocker est supérieure à ce deuxième seuil. L’adresse contenue dans l’emplacement de la première zone Z1 de la mémoire sélectionné à l’étape i est alors conservée sans changement dans cet emplacement, et, la donnée à stocker sera écrite sous la forme d’une chaîne de plusieurs blocs mémoires distincts, comme cela sera décrit en détail plus bas.Third case: the sub-step iii shows that the memory 1 has, from said position, an available space of insufficient length to write all the data to be stored and the corresponding header E, and, in addition, the length of the data to be stored is greater than this second threshold. The address contained in the location of the first zone Z1 of the memory selected in step i is then kept unchanged in this location, and the data to be stored will be written in the form of a chain of several memory blocks. as will be described in detail below.

Le deuxième seuil correspond ici à une longueur de 64 octets.The second threshold here corresponds to a length of 64 bytes.

Les dispositions décrites ci-dessus permettent de favoriser une écriture de la donnée à stocker sous la forme d’un seul bloc mémoire, lorsque cela est possible. Ces dispositions sont avantageuses car une écriture sous la forme d’un seul bloc mémoire est plus économe en termes d’espace de stockage qu’une écriture sous la forme d’une chaîne de plusieurs blocs mémoires, cette dernière nécessitant l’écriture de données supplémentaires relatives au chaînage de ces différents blocs mémoires (comme on le verra plus bas).The arrangements described above make it possible to promote a writing of the data to be stored in the form of a single memory block, when this is possible. These provisions are advantageous because a write in the form of a single memory block is more economical in terms of storage space than a writing in the form of a chain of several memory blocks, the latter requiring the writing of data. additional information relating to the chaining of these different memory blocks (as will be seen below).

En variante, d’autres dispositions que celles décrites ci-dessus pourraient être mises en œuvre pour favoriser une écriture de la donnée à stocker sous la forme d’un seul bloc mémoire plutôt que sous la forme d’une chaîne de plusieurs blocs mémoires.As a variant, other arrangements than those described above could be implemented to favor a writing of the data to be stored in the form of a single memory block rather than in the form of a chain of several memory blocks.

Dans le premier cas et le deuxième cas définis ci-dessus : - au cours de l’étape b), l’en-tête E est écrite de manière que ladite indication de longueur contenue dans cet en-tête E soit plus précisément représentative de la longueur de l’intégralité de la donnée à stocker, et - au cours de l’étape c), l’intégralité de la donnée à stocker est écrite dans le domaine D contigu de l’en-tête E, la longueur L de ce domaine D étant alors égale à la longueur de la donnée à stocker.In the first case and the second case defined above: during step b), the header E is written in such a way that said indication of length contained in this header E is more precisely representative of the length of all the data to be stored, and - during step c), all the data to be stored is written in the contiguous domain D of the header E, the length L of this domain D then being equal to the length of the data to be stored.

La longueur de la mémoire 1 réservée au stockage de cette donnée à stocker est ainsi adaptée à la longueur de cette donnée à stocker, ce qui est avantageusement économe en termes d’espace de stockage.The length of the memory 1 reserved for storing this data to be stored is thus adapted to the length of this data to be stored, which is advantageously thrifty in terms of storage space.

Dans ce premier cas et ce deuxième cas, la donnée à stocker est donc écrite, dans la deuxième zone Z2 de la mémoire 1, sous la forme d’un seul bloc mémoire Bl, ce bloc mémoire Bl comprenant l’en-tête E mentionné ci-dessus, suivi du domaine D contenant ladite donnée à stocker.In this first case and this second case, the data to be stored is thus written in the second zone Z2 of the memory 1, in the form of a single memory block B1, this memory block B1 comprising the mentioned header E above, followed by the domain D containing said data to be stored.

Un tel bloc mémoire est représenté schématiquement sur les figures 1A et 1B.Such a memory block is shown schematically in FIGS. 1A and 1B.

Au cours de ce procédé, l’en-tête E est écrit à l’étape b) de manière à occuper dans la mémoire 1 une longueur LE déterminée en fonction de la longueur L du domaine D qui lui est contigu, et dans lequel est écrite la donnée à stocker.During this process, the header E is written in step b) so as to occupy in the memory 1 a length LE determined according to the length L of the domain D which is contiguous to it, and in which is written data to store.

Plus précisément, la longueur LE de l’en-tête E est ici d’autant plus petite que la longueur L de ce domaine D est petite.More precisely, the length LE of the header E is all the smaller here because the length L of this domain D is small.

Plus particulièrement, lorsque la longueur dudit domaine contigu est inférieure à un premier seuil prédéterminé, alors, la longueur dudit en-tête correspond à un premier nombre d’octets. Ce premier seuil correspond ici à 250 octets et ce premier nombre d’octets correspond à un octet. Autrement formulé, ici, lorsque la longueur L du domaine D est comprise entre 1 et 250 octets, alors, l’en-tête E contient un seul octet OC, et le processeur commande l’écriture, dans cet octet OC de l’indication de longueur représentative de la longueur L de ce domaine D (la longueur LE de l’en-tête E correspond alors à 1 octet), comme représenté figure 1 A.More particularly, when the length of said contiguous domain is less than a first predetermined threshold, then, the length of said header corresponds to a first number of bytes. This first threshold here corresponds to 250 bytes and this first number of bytes corresponds to one byte. Otherwise formulated, here, when the length L of the domain D is between 1 and 250 bytes, then, the header E contains a single byte OC, and the processor controls the writing, in this octet OC of the indication of length representative of the length L of this domain D (the length LE of the header E then corresponds to 1 byte), as represented in FIG. 1 A.

Lorsque la longueur dudit domaine D contigu est supérieure à ce premier seuil, alors, l’en-tête est écrit à l’étape b) de manière à présenter ledit premier nombre d’octets dans lesquels est écrite une valeur prédéterminée, suivis par un deuxième nombre d’octets dans lesquels est écrite ladite indication de longueur. Le deuxième nombre d’octets correspond ici à deux octets.When the length of said contiguous domain D is greater than this first threshold, then, the header is written in step b) so as to have said first number of bytes in which a predetermined value is written, followed by a second number of bytes in which said length indication is written. The second number of bytes here corresponds to two bytes.

La longueur L de ce domaine D est inférieure à une longueur maximale Lmax autorisée, égale ici à 65535 octets.The length L of this domain D is less than a maximum length Lmax allowed, here equal to 65535 bytes.

Ainsi, lorsque la longueur L de ce domaine D est comprise entre 251 et 65535 octets, l’en-tête E contient alors, ici, trois octets OC1, OC2, OC3 (la longueur LE de l’en-tête E correspond alors à 3 octets), comme représenté figure 1 B.Thus, when the length L of this domain D is between 251 and 65535 bytes, the header E then contains, here, three octets OC1, OC2, OC3 (the length LE of the header E then corresponds to 3 bytes), as shown in Figure 1 B.

La valeur prédéterminée écrite dans le premier nombre d’octets de l’entête E est, dans le premier cas décrit ci-dessus, représentative du fait que le domaine D contigu de cet en-tête E n’est pas chaîné, dans la mémoire, avec un autre domaine. Cette valeur prédéterminée traduit ainsi une indication de chaînage qui indique ici que le bloc mémoire Bl dans lequel est écrite la donnée à stocker n’est pas un bloc mémoire qui ferait partie d’une chaîne de blocs mémoires et qui serait suivi dans cette chaîne par un autre bloc mémoire.The predetermined value written in the first number of octets of the header E is, in the first case described above, representative of the fact that the contiguous domain D of this header E is not chained, in the memory , with another domain. This predetermined value thus reflects a chaining indication which indicates here that the memory block B1 in which the data to be stored is written is not a memory block which would be part of a chain of memory blocks and which would be followed in this chain by another memory block.

Cette valeur prédéterminée est également représentative du fait que cet en-tête E comprend un nombre d’octets supérieur audit premier nombre d’octets, en l’occurrence égal à la somme du premier et du deuxième nombre d’octets. Cette valeur prédéterminée traduit aussi, dans ce premier cas, que la longueur du domaine D contigu de cette en-tête E est supérieure à 250 octets.This predetermined value is also representative of the fact that this header E comprises a number of bytes greater than said first number of bytes, in this case equal to the sum of the first and second number of bytes. This predetermined value also reflects, in this first case, that the length of the contiguous domain D of this header E is greater than 250 bytes.

Ici, ladite valeur prédéterminée est égale, dans ce premier cas, à 251. L’indication de longueur représentative de la longueur L du domaine D est écrite dans le deuxième octet OC2 et le troisième octet OC3 de cet en-tête E.Here, said predetermined value is equal, in this first case, to 251. The indication of length representative of the length L of the domain D is written in the second byte OC2 and the third byte OC3 of this header E.

Grâce à ces modalités d’écriture de l’en-tête E, non seulement la longueur LE de l’en-tête E est d’autant plus petite que la longueur L du domaine D est petite, mais, en outre, l’en-tête E contient une indication de sa propre longueur LE. Cette indication de la longueur LE de l’en-tête E est particulièrement utile pour une lecture ultérieure de cet en-tête E (permettant ensuite une lecture de la donnée à stocker écrite dans le domaine D contigu de l’en-tête). Par ailleurs, cette indication de la longueur LE de l’en-tête E est écrite d’une manière particulièrement économe en termes d’espace occupé dans la mémoire.Thanks to these write modes of the header E, not only is the length LE of the header E smaller as the length L of the domain D is small, but, in addition, the header E contains an indication of its own length LE. This indication of the length LE of the header E is particularly useful for a subsequent reading of this header E (which then makes it possible to read the data to be stored written in the contiguous domain D of the header). Furthermore, this indication of the length LE of the header E is written in a particularly economical manner in terms of occupied space in the memory.

On peut prévoir, en variante, que la longueur maximale Lmax autorisée pour un tel domaine D est supérieure à 65535 octets.As an alternative, the maximum length Lmax allowed for such a domain D may be greater than 65535 bytes.

La valeur de cette longueur maximale Lmax peut par exemple être augmentée en augmentant ledit deuxième nombre d’octets.The value of this maximum length Lmax can for example be increased by increasing said second number of bytes.

Par exemple, lorsque ce deuxième nombre d’octets correspond à trois octets, cette longueur maximale Lmax devient égale à 224-1 =16777215 octets.For example, when this second number of bytes corresponds to three bytes, this maximum length Lmax becomes equal to 224-1 = 16777215 bytes.

On peut prévoir également que la valeur prédéterminée mentionnée ci-dessus, ainsi que ledit deuxième nombre d’octets, soient déterminés chacun en fonction de la longueur L du domaine D, lorsque cette longueur est supérieure audit premier seuil.It can also be provided that the predetermined value mentioned above, as well as said second number of bytes, are each determined according to the length L of the domain D, when this length is greater than said first threshold.

Par exemple : - lorsque la longueur L du domaine D est comprise entre 250 octets et 65535 octets, alors, ladite valeur prédéterminée est choisie égale à 251, et le deuxième nombre d’octets est choisi égal à deux octets, et - lorsque la longueur L du domaine D est comprise entre 65536 octets et 16777215 octets, alors, ladite valeur prédéterminée est choisie égale à 253, et le deuxième nombre d’octets est choisi égal à trois octets.For example: when the length L of the domain D is between 250 bytes and 65535 bytes, then, said predetermined value is chosen equal to 251, and the second number of bytes is chosen equal to two bytes, and when the length L of the domain D is between 65536 bytes and 16777215 bytes, then, said predetermined value is chosen equal to 253, and the second number of bytes is chosen equal to three bytes.

Dans le troisième cas défini ci-dessus, on rappelle que la donnée à stocker est écrite dans la mémoire sous la forme d’une chaîne CH de plusieurs blocs mémoires Bl distincts. Un exemple d’une telle chaîne CH de blocs mémoires est représenté figure 2.In the third case defined above, it is recalled that the data to be stored is written in the memory in the form of a CH chain of several separate memory blocks B1. An example of such a CH chain of memory blocks is shown in FIG.

Chacun des blocs mémoires Bl de la chaîne CH comprend un domaine D dans lequel est écrite une partie de la donnée à stocker, de manière que les contenus respectifs de chacun de ces domaines D, mis à la suite les uns des autres, forment exactement ladite donnée à stocker.Each of the memory blocks B1 of the CH chain comprises a domain D in which a part of the data to be stored is written, so that the respective contents of each of these domains D, placed one after the other, form exactly data to store.

Chacun de ces domaines D est entièrement occupé par la partie de la donnée à stocker contenue dans ce domaine. La longueur L de chacun de ces domaines D est donc égale à la longueur de la partie de donnée écrite dans ce domaine D.Each of these domains D is entirely occupied by the part of the data to be stored contained in this domain. The length L of each of these domains D is therefore equal to the length of the piece of data written in this domain D.

La somme des longueurs L respectives des différents domaines D contenus dans cette chaîne CH de blocs mémoires Bi est ainsi égale à la longueur de la donnée à stocker. L'espace utilisé dans la mémoire 1 pour écrire l'ensemble de la donnée à stocker est alors avantageusement minimisé.The sum of the respective lengths L of the different domains D contained in this CH chain of memory blocks Bi is thus equal to the length of the data to be stored. The space used in the memory 1 to write all the data to be stored is then advantageously minimized.

La structure des blocs mémoires BI de cette chaîne CH est décrite plus en détail ci-dessous.The structure of the memory blocks BI of this CH chain is described in more detail below.

Chaque bloc mémoire BI de cette chaîne CH qui est suivi dans cette chaîne par un autre bloc mémoire, c’est-à-dire chaque bloc mémoire BI de cette chaîne CH sauf le dernier, comprend, comme illustré figure 1C et figure 2 : - un en-tête E, suivi par - un domaine D dans lequel est écrit une partie de la donnée à stocker, suivi ici par - un élément de chaînage AC.Each memory block BI of this CH chain which is followed in this chain by another memory block, that is to say each memory block BI of this CH except the last chain, comprises, as illustrated in FIG. 1C and FIG. 2: a header E, followed by - a domain D in which is written a part of the data to be stored, here followed by - a chaining element AC.

Cet en-tête E contient une indication de la longueur du domaine D qui lui est contigu, ainsi qu’une indication de chaînage indiquant que ce bloc mémoire est suivi, dans ladite chaîne, par un autre bloc mémoire.This header E contains an indication of the length of the domain D which is contiguous to it, as well as a hint indication that this memory block is followed in said string by another memory block.

Plus précisément, dans ce cas (bloc mémoire chaîné), l’entête E est écrit à présenter : - ledit premier nombre d’octets, correspondant ici à 1 octet, dans lesquels est écrite ladite indication de chaînage, sous la forme d’une valeur prédéterminée, suivis par - ledit deuxième nombre d’octets, correspondant ici à deux octets, dans lesquels est écrite ladite indication de longueur.More precisely, in this case (chained memory block), the header E is written to present: said first number of bytes, here corresponding to 1 byte, in which said indication of chaining is written, in the form of a predetermined value, followed by - said second number of bytes, here two bytes, in which said length indication is written.

Cette indication de chaînage est écrite ici sous la forme d’une valeur prédéterminée, par exemple égale à 252. Cette valeur prédéterminée est représentative non seulement du fait que ce bloc mémoire est suivi, dans ladite chaîne, par un autre bloc mémoire, mais aussi du fait que cet en-tête comprend un nombre d’octets supérieur au premier nombre d’octets, en l’occurrence égal à la somme du premier et du deuxième nombre d’octets.This indication of chaining is written here in the form of a predetermined value, for example equal to 252. This predetermined value is representative not only of the fact that this memory block is followed, in said chain, by another memory block, but also since this header comprises a number of bytes greater than the first number of bytes, in this case equal to the sum of the first and the second number of bytes.

Ici, l’en-tête E de ce bloc mémoire comprend ainsi trois octets OC1, OC2 et OC3, l’indication de chaînage étant écrite, sous la forme de ladite valeur prédéterminée, dans le premier OC1 de ces trois octets OC1, OC2, OC3. L’indication de longueur, représentative de la longueur L du domaine D contenu dans ce bloc mémoire Bl, est écrite dans le deuxième OC2 et le troisième octet OC3 de cet en-tête E.Here, the header E of this memory block thus comprises three octets OC1, OC2 and OC3, the chaining indication being written, in the form of said predetermined value, in the first OC1 of these three octets OC1, OC2, OC3. The length indication, representative of the length L of the domain D contained in this memory block B1, is written in the second OC2 and the third octet OC3 of this header E.

Pour chaque bloc mémoire Bl de cette chaîne CH sauf le dernier, la longueur L du domaine D contenu dans ce bloc mémoire est supérieure au deuxième seuil mentionné précédemment.For each memory block B1 of this CH except the last, the length L of the domain D contained in this memory block is greater than the second threshold mentioned above.

Par ailleurs, la longueur L de ce domaine D est inférieure à la longueur maximale Lmax autorisée, dont on rappelle qu’elle correspond ici à 65535 octets. La valeur de cette longueur maximale autorisée pourrait toutefois être augmentée, comme expliqué précédemment. On peut prévoir aussi, pour un tel bloc mémoire chaîné, de déterminer ladite valeur prédéterminée et ledit deuxième nombre d’octets en fonction de la longueur L du domaine D contenu dans ce bloc, de manière comparable à ce qui a été expliqué ci-dessus dans le cas d’un bloc mémoire non chaîné. L’élément de chaînage AC comprend une adresse de chaînage repérant une position de la deuxième zone Z2 de la mémoire 1 à partir de laquelle le bloc mémoire suivant de cette chaîne CH est écrit. Cette adresse de chaînage est distincte de l’adresse lue ou écrite dans la première zone Z1 de la mémoire 1 à l’étape a). Cet élément de chaînage AC comprend ici quatre octets, utilisés pour écrire cette adresse de chaînage.Furthermore, the length L of this domain D is less than the maximum length Lmax allowed, which is recalled that it corresponds here to 65535 bytes. The value of this maximum allowed length could, however, be increased as previously explained. For such a linked memory block, provision can also be made for determining said predetermined value and said second number of bytes as a function of the length L of the domain D contained in this block, in a manner comparable to that explained above. in the case of a non-chained memory block. The chaining element AC comprises a chaining address identifying a position of the second zone Z2 of the memory 1 from which the next memory block of this CH chain is written. This chaining address is distinct from the address read or written in the first zone Z1 of the memory 1 in step a). This chaining element AC here comprises four bytes, used to write this chaining address.

En variante, cet élément de chaînage pourrait par exemple comprendre deux octets seulement, en particulier lorsque la mémoire présente une taille réduite (inférieure à 64 Ko) si bien que les adresses de cette mémoire peuvent être codées sur un nombre de bits égal ou inférieur à 16.As a variant, this chaining element could for example comprise only two bytes, in particular when the memory has a reduced size (less than 64 Kb), so that the addresses of this memory can be coded on a number of bits equal to or less than 16.

Le dernier bloc mémoire Bl de cette chaîne CH de blocs mémoires comprend seulement un en-tête E, suivi d’un domaine D dans lequel est écrite une dernière partie de la donnée à stocker.The last memory block B1 of this CH chain of memory blocks comprises only a header E, followed by a domain D in which a last part of the data to be stored is written.

Ce dernier bloc mémoire est écrit de manière comparable à ce qui a été décrit précédemment pour un bloc mémoire non chaîné.This last memory block is written in a manner comparable to that described above for a non-chained memory block.

Au cours de ce procédé d’écriture, cette chaîne CH de blocs mémoires Bl est écrite selon la séquence suivante : - un premier bloc mémoire Bl de cette chaîne CH est écrit dans la mémoire 1, au cours des étapes b) et c) mentionnées précédemment ; ce premier bloc mémoire Bl est écrit à partir de ladite position repérée par l’adresse lue ou écrite dans la première zone Z1 de la mémoire à l’étape a), et occupe l’espace disponible dans la mémoire 1 à partir de cette position ; puis - le processeur commande successivement l’écriture, à la suite les uns des autres, des blocs mémoires Bl de cette chaîne CH, jusqu’à ce que la donnée à stocker ait été entièrement écrite dans la mémoire 1.During this writing process, this CH chain of memory blocks B1 is written according to the following sequence: a first memory block B1 of this chain CH is written in the memory 1, during the steps b) and c) mentioned above. previously; this first memory block B1 is written from said position indicated by the address read or written in the first zone Z1 of the memory in step a), and occupies the space available in the memory 1 from this position ; then - the processor successively controls the writing, after each other, of the memory blocks B1 of this CH chain, until the data to be stored has been entirely written in the memory 1.

Pour chaque bloc mémoire Bl de cette chaîne CH, le processeur sélectionne, préalablement à l’écriture de ce bloc mémoire Bl, une adresse à partir de laquelle sera écrit ce bloc. Pour cela, le processeur recherche, dans l’ensemble des espaces disponibles de la mémoire, celui : - présentant la longueur la plus proche de la longueur du bloc mémoire Bl à écrire, longueur dont on rappelle qu’elle est supérieure audit deuxième seuil, sauf éventuellement pour le dernier bloc mémoire Bl de la chaîne CH, et - préférentiellement, présentant une longueur supérieure à celle de ce bloc mémoire Bl à écrire.For each memory block B1 of this CH chain, the processor selects, prior to the writing of this memory block B1, an address from which this block will be written. For this, the processor searches, in the set of available spaces of the memory, that: - presenting the length closest to the length of the memory block B1 to write, length which is recalled that it is greater than said second threshold, except possibly for the last memory block B1 of the CH chain, and preferentially, having a length greater than that of this memory block B1 to be written.

Pour chaque bloc mémoire Bl de cette chaîne CH sauf le premier, une fois cette adresse d’écriture ainsi sélectionnée, elle est écrite dans l’élément de chaînage AC du bloc mémoire précédent de cette chaîne CH de blocs mémoires.For each memory block B1 of this CH except the first one, once this write address has been selected, it is written in the chaining element AC of the previous memory block of this CH chain of memory blocks.

Ici, quelle que soit la longueur L du domaine D qu’il contient, chaque bloc mémoire Bl de cette chaîne CH sauf le dernier contient donc, en plus du contenu du domaine D, 7 octets qui ne sont pas utilisés directement pour l’écriture de la donnée à stocker, à savoir les trois octets OC1, OC2 et OC3 de l’en-tête E, et les quatre octets utilisés pour écrire l’adresse de chaînage. La donnée à stocker occupe donc dans la mémoire 1 un espace plus petit lorsqu’elle est écrite sous la forme d’une chaîne CH comprenant quelques blocs mémoires Bl longs que lorsqu’elle est écrite sous la forme d’une chaîne comprenant de nombreux blocs mémoires courts.Here, regardless of the length L of the domain D that it contains, each memory block B1 of this CH except the last string therefore contains, in addition to the content of the domain D, 7 bytes which are not used directly for writing. of the data to be stored, namely the three bytes OC1, OC2 and OC3 of the header E, and the four bytes used to write the chaining address. The data to be stored thus occupies in the memory 1 a smaller space when it is written in the form of a CH chain comprising some long memory blocks B1 than when it is written in the form of a chain comprising many blocks short memories.

La disposition décrite ci-dessus, qui favorise l’écriture de la donnée à stocker sous la forme d’une chaîne CH comprenant quelques blocs mémoires Bl longs, plutôt que sous la forme d’une chaîne comprenant de nombreux blocs mémoires courts est donc particulièrement intéressante.The arrangement described above, which favors the writing of the data to be stored in the form of a CH chain comprising a few long memory blocks B1, rather than in the form of a chain comprising numerous short memory blocks, is therefore particularly interesting.

On notera par ailleurs que les différentes informations relatives au chaînage des blocs mémoires Bl de cette chaîne CH (c’est-à-dire ici l’indication de chaînage et l’adresse de chaînage contenues dans un tel bloc mémoire) sont ici contenues dans ces blocs mémoires eux-mêmes, et non dans le tableau de pointeurs de la première zone Z1 de la mémoire 1. Grâce à cette disposition, cette chaîne CH de blocs mémoires Bl est écrite dans la deuxième zone Z2 de la mémoire 1 sans nécessiter pour cela d’aller-retour entre le tableau de pointeurs de la première zone Z1 de la mémoire 1, et la deuxième zone Z2 de la mémoire destinée à l’écriture des données à stocker en elles-mêmes. Cela rend ce procédé d’écriture avantageusement rapide.Note also that the various information relating to the chaining of the memory blocks B1 of this CH chain (that is to say here the indication of chaining and the chaining address contained in such a memory block) are here contained in these memory blocks themselves, and not in the pointer table of the first zone Z1 of the memory 1. With this arrangement, this chain CH of memory blocks B1 is written in the second zone Z2 of the memory 1 without requiring that of round-trip between the table of pointers of the first zone Z1 of the memory 1, and the second zone Z2 of the memory intended for writing the data to be stored in themselves. This makes this writing method advantageously fast.

Cette dernière disposition rend en outre la lecture d’une donnée stockée dans la mémoire 1 sous forme d’une telle chaîne de blocs mémoires avantageusement rapide, puisque, de manière comparable, une telle lecture peut être réalisée sans aller-retour entre le tableau de pointeurs de la première zone Z1 de la mémoire 1, et la deuxième zone Z2 dans laquelle est stockée cette donnée. D’autre part, les données à stocker présentent ici majoritairement une longueur réduite, et sont donc majoritairement susceptibles d’être écrites dans la mémoire sous la forme d’un seul bloc mémoire. Dans ce contexte, il est intéressant, pour les données à stocker nécessitant une écriture sous la forme d’une chaîne de plusieurs blocs mémoires, d’écrire comme ici les différentes informations relatives au chaînage des blocs mémoires Bl de cette chaîne CH dans ces blocs mémoires eux-mêmes plutôt que dans le tableau de pointeurs de la première zone Z1 de la mémoire 1. Cela permet en effet d’utiliser un tableau de pointeurs dont chaque emplacement est prévu pour contenir une adresse de la mémoire, au lieu de devoir utiliser un tableau de pointeurs dont chaque emplacement serait prévu pour contenir une adresse de la mémoire ainsi que des informations de chaînage (alors que la majorité des données à stocker sont écrites sous la forme d’un seul bloc mémoire).This last provision also makes the reading of a piece of data stored in the memory 1 in the form of such a memory block chain advantageously fast, since, in a comparable manner, such a reading can be made without going back and forth between the table of pointers of the first zone Z1 of the memory 1, and the second zone Z2 in which this data is stored. On the other hand, the data to be stored present here mainly a reduced length, and are therefore mainly likely to be written in the memory in the form of a single memory block. In this context, it is interesting for the data to be stored requiring writing in the form of a chain of several memory blocks, to write as here the various information relating to the chaining of the memory blocks B1 of this CH chain in these blocks. memories themselves rather than in the table of pointers of the first zone Z1 of the memory 1. This makes it possible to use a table of pointers whose each location is intended to contain an address of the memory, instead of having to use an array of pointers each slot of which would be provided to contain a memory address as well as chaining information (while the majority of the data to be stored is written as a single memory block).

Toutefois, en variante, pour les données à stocker écrites sous la forme d’une chaîne de plusieurs blocs mémoires, les informations relatives au chaînage de ces blocs mémoires pourraient être écrites dans la première zone de la mémoire (en particulier dans un tableau de pointeurs contenu dans cette première zone de la mémoire), au lieu d’être comme ici écrites dans ces blocs mémoires eux-mêmes.However, as a variant, for the data to be stored written in the form of a chain of several memory blocks, the information relating to the chaining of these memory blocks could be written in the first area of the memory (in particular in a table of pointers contained in this first area of memory), instead of being as here written in these memory blocks themselves.

La figure 2 montre schématiquement le contenu de la mémoire 1, dans laquelle trois données à stocker ont été écrites au moyen du procédé d’écriture décrit ci-dessus. La première zone Z1 de la mémoire 1 contient un tableau de pointeurs comportant plusieurs emplacements A1, A2, A3, ..., AN, comme expliqué précédemment.FIG. 2 schematically shows the contents of the memory 1, in which three data to be stored have been written by means of the writing method described above. The first zone Z1 of the memory 1 contains a table of pointers comprising several locations A1, A2, A3,..., AN, as explained previously.

Un premier emplacement A1 de ce tableau de pointeurs contient une adresse repérant, dans la deuxième zone Z2 de la mémoire 1, une première position correspondant au début d’un premier bloc mémoire BI1 (c’est-à-dire par exemple une position correspondant, dans la mémoire 1, au premier octet de ce bloc mémoire BI1). Une première donnée à stocker est écrite intégralement dans ce premier bloc mémoire BI1. L’en-tête E de ce premier bloc mémoire BI1 contient, comme expliqué précédemment, une indication de la longueur L du domaine D contenu dans ce premier bloc BI1. Cette indication est représentée schématiquement par la référence « L » (contenue dans cet en-tête), sur la figure 2.A first location A1 of this table of pointers contains an address locating, in the second zone Z2 of the memory 1, a first position corresponding to the beginning of a first memory block BI1 (that is to say for example a corresponding position in memory 1, the first byte of this memory block BI1). A first datum to be stored is written entirely in this first memory block BI1. The header E of this first memory block BI1 contains, as explained above, an indication of the length L of the domain D contained in this first block BI1. This indication is schematically represented by the reference "L" (contained in this header), in FIG.

Un deuxième emplacement A2 de ce tableau de pointeurs contient une adresse repérant, dans la deuxième zone Z2 de la mémoire 1, une deuxième position correspondant au début d’un deuxième bloc mémoire BI2. Une deuxième donnée à stocker est écrite intégralement dans ce deuxième bloc mémoire BI2. L’en-tête E de ce deuxième bloc mémoire BI2 contient, comme expliqué précédemment, une indication de la longueur L du domaine D contenu dans ce deuxième bloc BI2, ainsi qu’une indication de chaînage représentative du fait que ce bloc mémoire n’est pas chaîné. Ces deux indications sont représentées schématiquement par la référence « L » (contenue dans cet en-tête), sur la figure 2.A second location A2 of this pointer table contains an address identifying, in the second zone Z2 of the memory 1, a second position corresponding to the beginning of a second memory block BI2. A second data item to be stored is written entirely in this second memory block BI2. The header E of this second memory block BI2 contains, as previously explained, an indication of the length L of the domain D contained in this second block BI2, as well as a chaining indication representative of the fact that this memory block is not chained. These two indications are schematically represented by the reference "L" (contained in this header), in FIG.

Un troisième emplacement A3 de ce tableau de pointeurs contient une adresse repérant, dans la deuxième zone Z2 de la mémoire 1, une troisième position correspondant au début d’une chaîne CH de trois blocs mémoires BI3, BI32 et BI33 dans laquelle est écrite une troisième donnée à stocker.A third location A3 of this table of pointers contains an address locating, in the second zone Z2 of the memory 1, a third position corresponding to the beginning of a chain CH of three memory blocks BI3, BI32 and BI33 in which a third is written. data to store.

Plus précisément, comme on peut le voir figure 2, l’adresse contenue dans ce troisième emplacement A3 repère le début du premier bloc mémoire BI3 de cette chaîne CH. L’adresse de chaînage ADC1 contenue le premier bloc mémoire BI3 de cette chaîne CH (contenue plus précisément dans l’élément de chaînage AC qui termine ce premier bloc mémoire BI3) repère quant à elle le début du deuxième bloc mémoire BI32 de cette chaîne CH de blocs mémoires. L’adresse de chaînage ADC2 contenue dans le deuxième bloc mémoire BI32 de cette chaîne CH (contenue plus précisément dans l’élément de chaînage AC qui termine ce deuxième bloc mémoire BI32) repère le début du troisième bloc mémoire BI33 de cette chaîne CH de blocs mémoires. Comme ce troisième bloc mémoire BI33 est le dernier bloc mémoire de la chaîne CH, il contient seulement un en-tête E suivi d’un domaine D dans lequel est écrite une partie de la troisième donnée à stocker.More precisely, as can be seen in FIG. 2, the address contained in this third location A3 marks the beginning of the first memory block BI3 of this CH chain. The chaining address ADC1 contained the first memory block BI3 of this chain CH (more precisely contained in the chaining element AC which ends this first memory block BI3) locates the beginning of the second memory block BI32 of this CH chain. memory blocks. The chaining address ADC2 contained in the second memory block BI32 of this CH chain (more precisely contained in the chaining element AC which ends this second memory block BI32) marks the beginning of the third memory block BI33 of this CH block chain. memories. Since this third memory block BI33 is the last memory block of the CH chain, it contains only a header E followed by a domain D in which a part of the third data to be stored is written.

Les en-têtes E des premier et deuxième blocs mémoires BI31, BI32 de cette chaîne CH de blocs mémoires contiennent chacun, comme expliqué précédemment, une indication de la longueur L du domaine D contenu dans ce bloc, ainsi qu’une indication de chaînage représentative du fait que ce bloc mémoire est suivi par un autre bloc mémoire, dans cette chaîne CH. Ces deux indications sont représentées schématiquement par la référence « L* » (contenue dans chacun de ces en-têtes), sur la figure 2.The headers E of the first and second memory blocks BI31, BI32 of this CH chain of memory blocks each contain, as explained above, an indication of the length L of the domain D contained in this block, as well as a representative chaining indication. since this memory block is followed by another memory block, in this chain CH. These two indications are schematically represented by the reference "L *" (contained in each of these headers), in FIG.

Des données écrites dans la mémoire 1, au moyen du procédé d’écriture décrit ci-dessus, peuvent être restituées (après avoir été stockées dans cette mémoire) au moyen d’un procédé de lecture mettant en œuvre les enseignements de l’invention, tel que le procédé de lecture décrit ci-dessous.Data written in the memory 1, by means of the writing method described above, can be restored (after having been stored in this memory) by means of a reading method implementing the teachings of the invention, as the reading method described below.

Ce procédé de lecture est mis en œuvre par le processeur du microcircuit.This reading method is implemented by the microcircuit processor.

Au cours de ce procédé de lecture, une donnée à restituer est tout d’abord sélectionnée, en sélectionnant l’un des emplacements A1, A2, A3, ...,AN du tableau de pointeur que comprend la première zone Z1 de la mémoire 1.During this reading process, a data item to be restored is firstly selected, by selecting one of the locations A1, A2, A3,..., AN of the pointer table that comprises the first zone Z1 of the memory 1.

Une adresse contenue dans cet emplacement est ensuite lue, lors d’une étape a’). Cette adresse repère une position située dans la deuxième zone Z2 de cette mémoire 1.An address contained in this location is then read, during a step a '). This address locates a position located in the second zone Z2 of this memory 1.

Ce procédé de lecture comprend ensuite une étape b’) au cours de laquelle un en-tête E contenant une indication de longueur est lu à partir de la position repérée par l’adresse lue à l’étape a’).This reading method then comprises a step b ') during which a header E containing a length indication is read from the position indicated by the address read in step a').

Cet en-tête E est susceptible de contenir une indication de chaînage.This header E may contain an indication of chaining.

Cette indication de chaînage éventuelle est indicative : - soit du fait que la donnée à restituer est contenue, au sein de la mémoire 1, sous la forme d’une chaîne CH de plusieurs blocs mémoires Bl distincts, et que cet en-tête appartient à un bloc mémoire qui est suivi, dans cette chaîne CH par un autre bloc mémoire, - soit du fait que la donnée à restituer ne s’étend pas, dans la mémoire 1, au-delà d’un domaine D contigu de cet en-tête E, ce domaine présentant une longueur L égale à ladite indication de longueur lue à l’étape b’).This indication of possible chaining is indicative: either because the data to be restored is contained, within the memory 1, in the form of a CH chain of several distinct memory blocks B1, and that this header belongs to a memory block which is followed in this chain CH by another memory block, or because the data to be restored does not extend, in the memory 1, beyond a contiguous domain D of this memory head E, this domain having a length L equal to said length indication read in step b ').

Cette indication de chaînage peut par exemple être contenue dans un premier octet OC1 de l’en-tête E, l’indication de longueur susmentionnée étant contenue dans des octets suivants OC2, OC3 de cet en-tête E (voir figure 1B et 1C).This chaining indication may, for example, be contained in a first octet OC1 of the header E, the aforementioned length indication being contained in the following bytes OC2, OC3 of this header E (see FIG. 1B and 1C). .

Au cours de ce procédé de lecture, il est considéré par ailleurs, lorsque l’en-tête E contient seulement l’indication de longueur mentionnée ci-dessus (c’est-à-dire lorsque cet en-tête E ne contient pas une telle indication de chaînage) que ladite donnée à restituer ne s’étend pas, dans la mémoire 1, au-delà du domaine D contigu de cet en-tête E et qui présente une longueur L égale à ladite indication de longueur lue à l’étape b’).During this reading process, it is furthermore considered, when the header E contains only the indication of length mentioned above (that is to say when this header E does not contain a such indication of chaining) that said datum to be restored does not extend, in the memory 1, beyond the contiguous domain D of this header E and which has a length L equal to said length indication read from FIG. step b ').

En pratique, le processeur lit le premier octet OC, OC1 de l’en-tête E et, si cet octet vaut 251 ou 252, lit les octets suivants OC2, OC3 qui sont dans ce cas indicatifs de la longueur du domaine D.In practice, the processor reads the first byte OC, OC1 of the header E and, if this byte is 251 or 252, reads the following bytes OC2, OC3 which are in this case indicative of the length of the domain D.

Ce procédé de lecture se poursuit par une étape c’), au cours de laquelle le contenu de ce domaine D est lu.This reading process continues with a step c '), during which the content of this domain D is read.

Lorsque l’étape b’) a montré que la donnée à restituer ne s’étend pas au-delà de ce domaine D (valeur du premier octet OC, OC1 différente de 252), le procédé de lecture se termine, la donnée à restituer ayant été entièrement lue.When step b ') has shown that the data to be restored does not extend beyond this domain D (value of the first byte OC, OC1 other than 252), the reading process ends, the data to be restored having been fully read.

Lorsque l’étape b’) a montré que la donnée à restituer est contenue au sein de la mémoire 1, sous la forme d’une chaîne CH de plusieurs blocs mémoires Bl distincts (valeur du premier octet OC1 égale à 252), ce processus de lecture se poursuit par la lecture de l’ensemble des blocs mémoires de cette chaîne CH.When step b ') has shown that the data to be restored is contained in the memory 1, in the form of a CH chain of several distinct memory blocks B1 (value of the first octet OC1 equal to 252), this process reading continues to read all the memory blocks of this CH chain.

Plus précisément, ce procédé de lecture comprend alors, après l’étape c’), une étape d’) comportant la lecture, dans la mémoire 1, à la suite du bloc D dont le contenu a été lu à l’étape c’), d’une adresse de chaînage. Cette adresse de chaînage est distincte de l’adresse qui a été lue dans la première zone Z1 de la mémoire 1 à l’étape a’).More precisely, this reading method then comprises, after step c '), a step d') comprising reading, in the memory 1, following the block D whose content was read in step c ' ), a chaining address. This chaining address is distinct from the address that was read in the first zone Z1 of the memory 1 in step a ').

Le premier bloc mémoire Bl de cette chaîne CH comprend l’en-tête lu à l’étape b’), le domaine D contigu de cet en-tête E, et un élément de chaînage AC, contigu de ce domaine D, et contenant l’adresse de chaînage mentionnée ci-dessus. Cet élément de chaînage peut par exemple comprendre 4 octets dans lesquels est écrite cette adresse de chaînage.The first memory block B1 of this chain CH comprises the header read in step b '), the contiguous domain D of this header E, and a chaining element AC, contiguous to this domain D, and containing the chaining address mentioned above. This element of chaining can for example comprise 4 bytes in which this chaining address is written.

Le procédé de lecture se poursuit ensuite par la lecture du bloc mémoire Bl suivant de cette chaîne CH de blocs mémoires, à partir de l’adresse de chaînage lue à l’étape d’), puis, s’il y a lieu, des autres blocs mémoires de cette chaîne CH.The reading method is then continued by reading the following memory block B1 of this CH chain of memory blocks, from the chaining address read in step d '), and then, if necessary, other memory blocks of this CH chain.

La lecture de chacun de ces blocs mémoires est réalisée de manière similaire, au cours des étapes suivantes : bb’) lecture, à partir de position repérée par l’adresse de chaînage lue dans le bloc mémoire précédent, d’un en-tête E comprenant une indication de longueur, cc’) lecture du contenu d’un domaine D de la mémoire 1 contigu de l’entête E lu à l’étape bb’), ce domaine D présentant une longueur égale à ladite indication de longueur, et dd’) lorsque l’en-tête E lu à l’étape bb’) contient une indication de chaînage représentative du fait que le domaine D contigu de cet en-tête E est chaîné avec un autre domaine de la mémoire 1, c’est-à-dire lorsque ce bloc mémoire Bl est suivi, dans cette chaîne CH, par un autre bloc mémoire : - lecture, à la suite du domaine D lu à l’étape cc’), d’une adresse de chaînage repérant la position du bloc mémoire suivant (dans la deuxième zone Z2 de la mémoire 1), puis - exécution à nouveau des étapes bb’), cc’) et dd’).The reading of each of these memory blocks is similarly carried out during the following steps: bb ') reading, from the position indicated by the chaining address read in the previous memory block, a header E including a length indication, cc ') reading the contents of a domain D of the contiguous memory 1 of the header E read in step bb'), this domain D having a length equal to said length indication, and dd ') when the header E read in step bb') contains a representative chaining indication because the contiguous domain D of this header E is chained to another domain of the memory 1, c ' that is to say when this memory block B1 is followed, in this chain CH, by another memory block: - reading, following the domain D read in step c1 '), a chaining address identifying the position of the next memory block (in the second zone Z2 of the memory 1), then - execution new steps bb), cc ') and dd').

Ce procédé de lecture se termine par la lecture du dernier bloc mémoire Bl de cette chaîne CH de blocs mémoires, pour lequel ladite indication de chaînage soit est absente de l’en-tête E contenu dans ce bloc mémoire, soit indique que ce bloc mémoire n’est pas chaîné (c’est-à-dire qu’il n’est pas suivi, dans cette chaîne CH de blocs mémoires, par un autre bloc mémoire).This reading process ends with the reading of the last memory block B1 of this chain CH of memory blocks, for which said indication of chaining is either absent from the header E contained in this memory block, or indicates that this memory block is not chained (that is, it is not followed, in this chain CH of memory blocks, by another memory block).

La donnée à restituer ainsi obtenue est formée de l’ensemble des contenus de ces domaines D, lus successivement dans les blocs mémoires de cette chaîne et mis les uns à la suite des autres.The data to be restored thus obtained is formed of all the contents of these domains D, read successively in the memory blocks of this chain and put one after the other.

Claims (23)

REVENDICATIONS 1. Procédé d’écriture d’une donnée à stocker dans une mémoire (1), comprenant une étape de : a) lecture ou d’écriture d’une adresse dans une première zone (Z1) de la mémoire (1), cette adresse repérant une position située dans une deuxième zone (Z2) de la mémoire (1), caractérisé en ce que ce procédé comprend de plus les étapes suivantes : b) écriture, à partir de ladite position, d’un en-tête (E) comprenant une indication de longueur représentative d’une longueur d’au moins une partie de la donnée à stocker, et c) écriture de cette partie de la donnée à stocker, dans un domaine (D) de la mémoire (1) contigu dudit en-tête (E), la longueur (L) de ce domaine (D) étant égale à la longueur de cette partie de la donnée à stocker.1. A method of writing data to be stored in a memory (1), comprising a step of: a) reading or writing an address in a first zone (Z1) of the memory (1), this address locating a position located in a second zone (Z2) of the memory (1), characterized in that this method further comprises the following steps: b) writing, from said position, a header (E ) comprising a length indication representative of a length of at least a portion of the data item to be stored, and c) writing of that portion of the data item to be stored, in a domain (D) of the contiguous memory (1) header (E), the length (L) of this domain (D) being equal to the length of this part of the data to be stored. 2. Procédé d’écriture selon la revendication 1, dans lequel ledit en-tête (E) a dans la mémoire (1) une longueur (LE) déterminée en fonction de la longueur (L) dudit domaine contigu.The write method according to claim 1, wherein said header (E) has in the memory (1) a length (LE) determined according to the length (L) of said contiguous domain. 3. Procédé d’écriture selon la revendication 2, dans lequel, lorsque la longueur (L) dudit domaine contigu est inférieure à un premier seuil prédéterminé, alors, la longueur (LE) dudit en-tête (E) correspond à un premier nombre d’octets.The write method according to claim 2, wherein, when the length (L) of said contiguous domain is less than a first predetermined threshold, then, the length (LE) of said header (E) corresponds to a first number. bytes. 4. Procédé d’écriture selon l’une des revendications 2 et 3, dans lequel, lorsque la longueur (L) dudit domaine contigu est supérieure audit premier seuil, alors, l’en-tête (E) est écrit à l’étape b) de manière à présenter : - ledit premier nombre d’octets, dans lesquels est écrite une valeur prédéterminée, suivis par - un deuxième nombre d’octets dans lesquels est écrite ladite indication de longueur.The method of writing according to one of claims 2 and 3, wherein, when the length (L) of said contiguous domain is greater than said first threshold, then the header (E) is written at step b) so as to have: - said first number of bytes, in which a predetermined value is written, followed by - a second number of bytes in which said length indication is written. 5. Procédé d’écriture selon la revendication 4, dans lequel ladite valeur prédéterminée est représentative d’une indication de chaînage, indiquant que l’intégralité de la donnée à stocker est écrite dans ledit domaine (D) contigu, ou que la donnée à stocker est écrite sous la forme d’une chaîne (CH) de plusieurs blocs mémoires (BI3, BI32, BI33) distincts.A method of writing according to claim 4, wherein said predetermined value is representative of a chaining indication, indicating that all of the data to be stored is written in said contiguous domain (D), or that the data to be store is written as a string (CH) of several separate memory blocks (BI3, BI32, BI33). 6. Procédé d’écriture selon l’une des revendications 4 et 5, dans lequel ladite valeur prédéterminée est représentative du fait que l’en-tête comprend un nombre d’octets supérieur audit premier nombre d’octets.The method of writing according to one of claims 4 and 5, wherein said predetermined value is representative that the header comprises a number of bytes greater than said first number of bytes. 7. Procédé d’écriture selon l’une des revendications 4 à 6, dans lequel ladite valeur prédéterminée et ledit deuxième nombre d’octets sont déterminés chacun en fonction de la longueur (L) dudit domaine (D) contigu.7. Writing method according to one of claims 4 to 6, wherein said predetermined value and said second number of bytes are each determined according to the length (L) of said domain (D) contiguous. 8. Procédé d’écriture selon l’une des revendications 1 à 7, dans lequel, lorsque la mémoire (1) présente, à partir de ladite position, un espace disponible suffisamment long pour y écrire l’intégralité de la donnée à stocker ainsi que l’entête (E) correspondant, alors, ladite indication de longueur est représentative de la longueur de l’intégralité de la donnée à stocker, et l’intégralité de la donnée à stocker est écrite dans ledit domaine (D) contigu dudit en-tête (E), au cours de l’étape c).8. Writing method according to one of claims 1 to 7, wherein, when the memory (1) has, from said position, a space available long enough to write all the data to be stored and that the corresponding header (E), then, said indication of length is representative of the length of all the data to be stored, and the entirety of the data to be stored is written in said domain (D) contiguous of said in head (E), during step c). 9. Procédé d’écriture selon l’une des revendications 1 à 8, dans lequel, lorsque la longueur de la donnée à stocker est inférieure à un deuxième seuil, ladite indication de longueur est représentative de la longueur de l’intégralité de la donnée à stocker, et l’intégralité de la donnée à stocker est écrite dans ledit domaine (D) contigu dudit en-tête (E), au cours de l’étape c).9. Writing method according to one of claims 1 to 8, wherein, when the length of the data to be stored is less than a second threshold, said length indication is representative of the length of the entire data. to store, and all the data to be stored is written in said domain (D) contiguous said header (E), during step c). 10. Procédé d’écriture selon l’une des revendications 1 à 9, dans lequel : - lorsque la mémoire présente, à partir de ladite position, un espace disponible de longueur insuffisante pour y écrire l’intégralité de la donnée à stocker ainsi que l’en-tête (E) correspondant, - et que la longueur de la donnée à stocker est supérieure audit deuxième seuil, alors, la donnée à stocker est écrite sous la forme d’une chaîne (CH) de plusieurs blocs mémoires (BI3, BI32, BI33) distincts, un premier bloc mémoire (BI3) de cette chaîne (CH) étant écrit dans la mémoire (1) à partir de la position repérée par ladite adresse, et chaque bloc mémoire (BI3, BI32, BI33) de ladite chaîne (CH) comprenant : - un domaine (D), dans lequel on écrit une partie de la donnée à stocker, ce domaine étant entièrement occupé par cette partie de la donnée à stocker, et - un en-tête (E), dans lequel on écrit une indication de longueur représentative de la longueur (L) dudit domaine (D) contenu dans ce bloc mémoire.10. Writing method according to one of claims 1 to 9, wherein: - when the memory has, from said position, an available space of insufficient length to write all the data to be stored as well as the corresponding header (E), and that the length of the data to be stored is greater than said second threshold, then the data to be stored is written in the form of a chain (CH) of several memory blocks (BI3 , BI32, BI33), a first memory block (BI3) of this string (CH) being written in the memory (1) from the position indicated by said address, and each memory block (BI3, BI32, BI33) of said chain (CH) comprising: - a domain (D), in which a part of the data to be stored is written, this domain being entirely occupied by that part of the data to be stored, and - a header (E), in which an indication of length representative of the length (L) of the it domain (D) contained in this memory block. 11. Procédé d’écriture selon la revendication 10, dans lequel, ladite chaîne (CH) de blocs mémoires (BI3, BI32, BI33) est écrite de manière que chaque bloc mémoire (BI3, BI32) de cette chaîne (CH) suivi dans cette chaîne par un autre bloc mémoire (BI32, BI33) contient un domaine (D) présentant une longueur supérieure audit deuxième seuil.The writing method according to claim 10, wherein said memory block chain (CH) (BI3, BI32, BI33) is written in such a way that each memory block (BI3, BI32) of that string (CH) followed in this chain by another memory block (BI32, BI33) contains a domain (D) having a length greater than said second threshold. 12. Procédé d’écriture selon l’une des revendications 10 et 11, dans lequel, lorsqu’un bloc mémoire (BI3, BI32) de ladite chaîne (CH) est suivi dans cette chaîne par un autre bloc mémoire (BI32, BI33), alors, l’en-tête (E) contenu dans ce bloc mémoire est écrit de manière à contenir une indication de chaînage indiquant que ce bloc mémoire est suivi, dans ladite chaîne, par un autre bloc mémoire.12. Writing method according to one of claims 10 and 11, wherein, when a memory block (BI3, BI32) of said chain (CH) is followed in this chain by another memory block (BI32, BI33). then, the header (E) contained in this memory block is written to contain a chaining indication indicating that this memory block is followed in said string by another memory block. 13. Procédé d’écriture selon la revendication 12, dans lequel, lorsqu’un bloc mémoire (BI3, BI32) de ladite chaîne (CH) est suivi dans cette chaîne par un autre bloc mémoire (BI32, BI33), alors, l’en-tête (E) contenu dans ce bloc mémoire est écrit de manière à présenter : - ledit premier nombre d’octets, dans lesquels est écrite ladite indication de chaînage, sous la forme d’une valeur prédéterminée, suivis par - ledit deuxième nombre d’octets dans lesquels est écrite ladite indication de longueur.13. Writing method according to claim 12, wherein, when a memory block (BI3, BI32) of said chain (CH) is followed in this chain by another memory block (BI32, BI33), then, the header (E) contained in this memory block is written to present: - said first number of bytes, in which said indication of chaining is written, in the form of a predetermined value, followed by - said second number bytes in which said length indication is written. 14. Procédé d’écriture selon l’une des revendications 10 à 13, dans lequel, lorsqu’un bloc mémoire (BI3, BI32) de ladite chaîne (CH) est suivi dans cette chaîne par un autre bloc mémoire (BI32, BI33), alors, ce bloc mémoire (BI3, BI32) comprend en outre une adresse de chaînage (ADC1, ADC2), distincte de ladite adresse lue ou écrite dans la première zone (Z1) de la mémoire (1) à l’étape a), et repérant une autre position de la deuxième zone (Z2) de la mémoire (1) à partir de laquelle on écrit le bloc mémoire (BI32, BI33) suivant de cette chaîne (CH).14. Writing method according to one of claims 10 to 13, wherein, when a memory block (BI3, BI32) of said chain (CH) is followed in this chain by another memory block (BI32, BI33) then, this memory block (BI3, BI32) further comprises a chaining address (ADC1, ADC2), distinct from said address read or written in the first zone (Z1) of the memory (1) in step a) , and locating another position of the second zone (Z2) of the memory (1) from which the next memory block (BI32, BI33) of this chain (CH) is written. 15. Procédé d’écriture selon l’une des revendications 1 à 14, dans lequel la mémoire (1 ) est intégrée dans un élément sécurisé ou une carte à microcircuit.15. Writing method according to one of claims 1 to 14, wherein the memory (1) is integrated in a secure element or a microcircuit card. 16. Procédé de lecture dans une mémoire (1), comprenant une étape de a') lecture, dans une première zone (Z1) de la mémoire (1), d'une adresse repérant une position située dans une deuxième zone (Z2) de la mémoire (1), caractérisé en ce que ce procédé comprend de plus les étapes suivantes : b’) lecture dans la mémoire (1 ), à partir de ladite position, d’un en-tête (E) contenant une indication de longueur, et c’) lecture du contenu d’un domaine (D) de la mémoire (1) contigu dudit en-tête (E) et présentant une longueur égale à ladite indication de longueur.16. A method of reading in a memory (1), comprising a step of a ') reading, in a first zone (Z1) of the memory (1), an address locating a position located in a second zone (Z2) of the memory (1), characterized in that this method further comprises the following steps: b ') reading in the memory (1), from said position, of a header (E) containing an indication of length, and c ') reading the contents of a domain (D) from the memory (1) contiguous to said header (E) and having a length equal to said length indication. 17. Procédé de lecture selon la revendication 16, dans lequel - l’étape b’) comprend la lecture d’un premier nombre d’octets dudit entête (E), - et dans lequel, lorsqu’une valeur lue dans ce premier nombre d’octets est inférieure à un premier seuil prédéterminé, alors, ladite indication de longueur est égale à ladite valeur lue dans ce premier nombre d’octets.17. The reading method according to claim 16, wherein - step b 'comprises reading a first number of octets of said header (E), and in which, when a value read in this first number bytes is less than a first predetermined threshold, then, said length indication is equal to said value read in that first number of bytes. 18. Procédé de lecture selon la revendication 17, dans lequel, lorsque ladite valeur lue dans le premier nombre d’octets de l’en-tête (E) est supérieure audit premier seuil, alors, l’étape b’) comprend en outre la lecture, dans un deuxième nombre d’octets situés dans la mémoire à la suite dudit premier nombre d’octets, de ladite indication de longueur.18. The reading method according to claim 17, wherein, when said value read in the first number of bytes of the header (E) is greater than said first threshold, then step b ') further comprises reading, in a second number of bytes located in the memory following said first number of bytes, said length indication. 19. Procédé de lecture selon l’une des revendications 16 à 19, dans lequel il est prévu en outre, lorsque ledit en-tête (E) lu à l’étape b’) contient une indication de chaînage représentative du fait que le domaine (D) contigu de cet en-tête (E) est chaîné avec un autre domaine de la mémoire (1), de d’) lire, à la suite dudit domaine (D), une adresse de chaînage, distincte de ladite adresse lue dans la première zone (Z1) de la mémoire (1) à l’étape a’), cette adresse de chaînage (ADC1, ADC2) repérant une autre position de la deuxième zone (Z2) de la mémoire (1), puis de bb’) lire, à partir de ladite autre position, un en-tête (E) comprenant une indication de longueur, puis de cc’) lire le contenu d’un domaine (D) de la mémoire (1) contigu dudit entête (E) lu à l’étape bb’), ce domaine (D) présentant une longueur égale à ladite indication de longueur.19. The reading method according to one of claims 16 to 19, wherein it is further provided, when said header (E) read in step b ') contains a representative chaining indication that the domain (D) contiguous of this header (E) is chained with another domain of the memory (1), d ') read, following said domain (D), a chaining address, distinct from said address read in the first zone (Z1) of the memory (1) in step a '), this chaining address (ADC1, ADC2) identifying another position of the second zone (Z2) of the memory (1), then of bb ') reading, from said other position, a header (E) comprising an indication of length, and then cc') reading the contents of a domain (D) from the memory (1) contiguous to said header ( E) read in step bb '), this domain (D) having a length equal to said length indication. 20. Procédé de lecture selon la revendication 19, dans lequel il est prévu en outre, de dcT) lorsque l’en-tête (E) lu à l’étape bb’) contient une indication de chaînage représentative du fait que le domaine (D) contigu de cet en-tête (E) est chaîné avec un autre domaine de la mémoire (1) : - lire, à la suite du domaine (D) lu à l’étape cc’), une adresse de chaînage (ADC1, ADC2), repérant une autre position de la deuxième zone (Z2) de la mémoire (1), puis de - réitérer l’exécution des étapes bb’), cc’) et dd’).The reading method according to claim 19, wherein there is further provided dcT) when the header (E) read in step bb ') contains a representative chaining indication because the domain ( D) contiguous of this header (E) is chained with another domain of the memory (1): - read, following the domain (D) read in step cc '), a chaining address (ADC1 , ADC2), identifying another position of the second area (Z2) of the memory (1), and then - repeating the execution of the steps bb '), cc') and dd '). 21. Procédé de lecture selon l’une des revendications 16 à 20, dans lequel la mémoire (1) est intégrée dans un élément sécurisé ou une carte à microcircuit.21. Reading method according to one of claims 16 to 20, wherein the memory (1) is integrated in a secure element or a microcircuit card. 22. Procédé comprenant : - récriture d’une donnée à stocker, selon un procédé d’écriture conforme à l’une des revendications 1 à 15, et - la lecture de la donnée ainsi écrite, selon un procédé de lecture conforme à l’une des revendications 16 à 21.22. A method comprising: - rewriting data to be stored, according to a writing method according to one of claims 1 to 15, and - reading the data thus written, according to a reading method according to the one of claims 16 to 21. 23. Mémoire (1) comprenant une première zone (Z1) et une deuxième zone (Z2), la première zone (Z1) de la mémoire (1) contenant au moins une adresse repérant une position située dans la deuxième zone (Z2) de la mémoire (1), caractérisée en ce que la mémoire (1) comprend en outre : - à partir de ladite position, un en-tête (E) contenant une indication de longueur, ainsi qu’ - un domaine (D) contigu dudit en-tête (E), de longueur (L) correspondant à l’indication de longueur contenue dans cet en-tête, ce domaine (D) étant entièrement occupé par une donnée qu’il contient.23. Memory (1) comprising a first zone (Z1) and a second zone (Z2), the first zone (Z1) of the memory (1) containing at least one address identifying a position located in the second zone (Z2) of the memory (1), characterized in that the memory (1) further comprises: - from said position, a header (E) containing an indication of length, as well as - a domain (D) contiguous of said header (E), of length (L) corresponding to the length indication contained in this header, this domain (D) being entirely occupied by a datum that it contains.
FR1562998A 2015-12-21 2015-12-21 METHOD FOR WRITING DATA TO STORE IN MICROCIRCUIT MEMORY, READING METHOD, AND MICROCIRCUIT MEMORY THEREFOR Active FR3045864B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR1562998A FR3045864B1 (en) 2015-12-21 2015-12-21 METHOD FOR WRITING DATA TO STORE IN MICROCIRCUIT MEMORY, READING METHOD, AND MICROCIRCUIT MEMORY THEREFOR

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1562998 2015-12-21
FR1562998A FR3045864B1 (en) 2015-12-21 2015-12-21 METHOD FOR WRITING DATA TO STORE IN MICROCIRCUIT MEMORY, READING METHOD, AND MICROCIRCUIT MEMORY THEREFOR

Publications (2)

Publication Number Publication Date
FR3045864A1 true FR3045864A1 (en) 2017-06-23
FR3045864B1 FR3045864B1 (en) 2018-02-02

Family

ID=55948892

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1562998A Active FR3045864B1 (en) 2015-12-21 2015-12-21 METHOD FOR WRITING DATA TO STORE IN MICROCIRCUIT MEMORY, READING METHOD, AND MICROCIRCUIT MEMORY THEREFOR

Country Status (1)

Country Link
FR (1) FR3045864B1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742793A (en) * 1991-12-18 1998-04-21 Intel Corporation Method and apparatus for dynamic memory management by association of free memory blocks using a binary tree organized in an address and size dependent manner
FR2759795A1 (en) * 1997-02-14 1998-08-21 Francois Charles Oberthur Fidu METHOD FOR STORING DATA IN A WRITTEN CARD MEMORY
US20060069847A1 (en) * 2004-09-30 2006-03-30 Lloyd Robert F Corruption tolerant method and system for deploying and modifying data in flash memory
WO2010010163A1 (en) * 2008-07-25 2010-01-28 Em Microelectronic-Marin Sa Processor circuit with shared memory and buffer system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742793A (en) * 1991-12-18 1998-04-21 Intel Corporation Method and apparatus for dynamic memory management by association of free memory blocks using a binary tree organized in an address and size dependent manner
FR2759795A1 (en) * 1997-02-14 1998-08-21 Francois Charles Oberthur Fidu METHOD FOR STORING DATA IN A WRITTEN CARD MEMORY
US20060069847A1 (en) * 2004-09-30 2006-03-30 Lloyd Robert F Corruption tolerant method and system for deploying and modifying data in flash memory
WO2010010163A1 (en) * 2008-07-25 2010-01-28 Em Microelectronic-Marin Sa Processor circuit with shared memory and buffer system

Also Published As

Publication number Publication date
FR3045864B1 (en) 2018-02-02

Similar Documents

Publication Publication Date Title
FR2703167A1 (en) Data transmission system using electronic apparatuses having several transmission protocols
FR2938358A1 (en) SECURE MEMORY INTERFACE
EP1072024A1 (en) Method for switching applications on a multiple application chip card
FR2633749A1 (en) MICROPROCESSOR SYSTEM WITH ELECTRICALLY DELEGATED PROGRAMMABLE DEAD MEMORY HAVING WRITE ERROR PREVENTION FUNCTION AND MEMORY CIRCUIT
FR2824215A1 (en) Communications information network message transmission having messages received/identified and processed forming resultant digital words modifying message with resultant word/transmitting along node/path.
EP1849054A1 (en) Data storage device
EP3391228B1 (en) Method for writing in a non-volatile memory of an electronic entity, and related electronic entity
FR3045864A1 (en) METHOD FOR WRITING DATA TO STORE IN MICROCIRCUIT MEMORY, READING METHOD, AND MICROCIRCUIT MEMORY THEREFOR
EP1436792B1 (en) Authentication protocol with memory integrity verification
FR2835628A1 (en) MANAGEMENT OF THE UPDATE OF INFORMATION ENCODED IN MEMORY
FR2941344A1 (en) IMPROVED PROCESS FOR MINIMESS PROCESSING (SMS) AND WIRELESS COMMUNICATION APPARATUS FOR SUCH PROCESSING
EP1182878A1 (en) Communication system, transmitter, receiver, method using a data storage descriptor
WO2009007403A2 (en) Method of sending an executable code to a reception device and method of executing this code
EP2195793A1 (en) Method for generating masks in a communicating object and corresponding communicating object
WO2020065185A1 (en) Cryptographic method of secure comparison of two secret data x and y
FR2842623A1 (en) METHOD FOR TRANSLATING A MESSAGE FROM A FIRST LANGUAGE LANGUAGE INTO A SECOND LANGUAGE LANGUAGE
FR3012655A1 (en) FLASH MEMORY COUNTER
EP2736275B1 (en) Electronic module for making a message accessible to a target operating system
WO2018172669A1 (en) Method and device for managing the storage of digital documents
EP3360034A1 (en) Dynamically distributed backup method and system
WO2002104052A2 (en) Method for detection of saturation of files or applications in a mobile communication device
CN111506553B (en) Function setting method and device for database
CN116489249A (en) Message processing method and device
US20070116044A1 (en) Capture buffer, a network analyser, a network analyser card and a method of capturing network data
FR2899986A1 (en) Electronic controller configuring method for motor vehicle, involves storing diffused address in address field associated to pre-stored identifiers when diffused identifiers correspond to one of pre-stored identifiers

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20170623

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 5

CA Change of address

Effective date: 20200826

CJ Change in legal form

Effective date: 20200826

PLFP Fee payment

Year of fee payment: 6

PLFP Fee payment

Year of fee payment: 7

PLFP Fee payment

Year of fee payment: 8

PLFP Fee payment

Year of fee payment: 9