FR 3138709 A1 20240209 FR 2208087 A 20220804 Dispositif à mémoire FLASH La présente description concerne un dispositif à mémoire FLASH (100) comprenant : - une mémoire FLASH (104) comprenant une matrice de cellules mémoires (208) non volatiles et une mémoire volatile (206) ; - une interface de mémoire FLASH (106) agencée à l’extérieur de la mémoire FLASH (104) ; - un premier bus de communication (214) reliant l’interface de mémoire FLASH (106) et la matrice de cellules mémoires (208) ; et - un deuxième bus de communication (114) reliant l’interface de mémoire FLASH (106) et la mémoire volatile (206). Figure pour l'abrégé : Fig. 2 Dispositif à mémoire FLASH La présente description concerne de façon générale les dispositifs à mémoire FLASH et leurs procédés de fonctionnement. Les mémoires FLASH sont des mémoires de masse à semi-conducteurs réinscriptibles. Elles comprennent en général une matrice de cellules mémoires. Les mémoires FLASH peuvent être implémentées dans une multitude de dispositifs, comme notamment les cartes mémoires, les ordinateurs, les téléphones intelligents ou encore les véhicules. Les mémoires FLASH comprennent des programmes de fonctionnement, qui peuvent nécessiter des modifications. Il existe un besoin de disposer de dispositifs comprenant une ou des mémoires FLASH dont les programmes de fonctionnement peuvent être modifiés. Un mode de réalisation pallie tout ou partie des inconvénients des mémoires FLASH connus. Un mode de réalisation prévoit un dispositif à mémoire FLASH comprenant : - une mémoire FLASH comprenant une matrice de cellules mémoires non volatiles et une mémoire RAM ; - une interface de mémoire FLASH agencée à l’extérieur de la mémoire FLASH ; - un premier bus de communication reliant l’interface de mémoire FLASH et la matrice de cellules mémoires ; et - un deuxième bus de communication reliant l’interface de mémoire FLASH et la mémoire RAM. Un mode de réalisation prévoit un procédé pour accéder, dans un dispositif à mémoire FLASH, à la mémoire FLASH en utilisant une interface de mémoire FLASH agencée à l’extérieur de la mémoire FLASH, la mémoire FLASH comprenant une matrice de cellules mémoires non volatiles et une mémoire RAM, le procédé comprenant : - accéder à des données stockées dans la matrice de cellules mémoires par l’intermédiaire d’un premier bus de communication reliant l’interface de mémoire FLASH et la matrice de cellules mémoires ; et - accéder à des données stockées dans la mémoire RAM par l’intermédiaire d’un deuxième bus de communication reliant l’interface de mémoire FLASH et la mémoire RAM. Selon un mode de réalisation, la matrice de cellules mémoires est configurée pour stocker au moins une valeur de configuration de mémoire RAM et un correctif de programme, le procédé comprenant : obtenir, par l’interface de mémoire FLASH par l’intermédiaire du premier bus, entre une mise sous tension et une procédure de démarrage du dispositif, ladite valeur de configuration de mémoire RAM et, en fonction de ladite valeur de configuration de mémoire RAM, obtenir un correctif de programme depuis la mémoire FLASH et le charger dans la mémoire RAM de la mémoire FLASH à travers le deuxième bus de communication. Selon un mode de réalisation, le dispositif à mémoire FLASH comprend en outre un module de couplage reliant des lignes de sortie d’une unité de traitement, externe au dispositif à mémoire FLASH, à des lignes d’accès de ladite mémoire RAM de la mémoire FLASH. Selon un mode de réalisation, la mémoire FLASH comprend en outre une mémoire non volatile comprenant un programme de contrôle d’un contrôleur d’écriture/programmation et/ou comprenant des paramètres de réglage de la matrice de cellules mémoires ; le contrôleur d’écriture/programmation étant configuré pour mettre en oeuvre des étapes de programmation, d’effacement et de vérification de données de la mémoire. Selon un mode de réalisation, le module de couplage relie en outre des lignes de sortie de l’unité de traitement à des lignes d’accès de la mémoire non volatile. Selon un mode de réalisation, l’interface de mémoire FLASH comprend une interface d’écriture/lecture de données à écrire vers la matrice de cellules mémoires de la mémoire FLASH, ou à lire depuis la matrice de cellules mémoires de la mémoire FLASH. Selon un mode de réalisation, le deuxième bus de communication est un bus synchrone. Selon un mode de réalisation, la mémoire FLASH comprend en outre au moins un registre mémorisant une valeur de configuration de la mémoire FLASH et/ou mémorisant des paramètres de réglages de la matrice de cellules de mémoire. Selon un mode de réalisation, le module de couplage relie en outre des lignes de sortie de l’unité de traitement à des lignes d’accès dudit registre. Selon un mode de réalisation, la valeur de configuration de mémoire RAM et le correctif de programme sont stockés dans une zone de contrôle de la mémoire FLASH dont l’accès est protégé. Selon un mode de réalisation, l’interface de mémoire FLASH comprend une machine à état fini configurée pour gérer l’obtention du correctif de programme ainsi que sa restitution au bus de communication. Selon un mode de réalisation, l’interface de mémoire FLASH comprend un module de translation d’adresses virtuelles en adresses physiques. Selon un mode de réalisation, le module de couplage est une matrice d’adressage de bus. Un autre mode de réalisation prévoit un dispositif à mémoire FLASH comprenant : - une mémoire FLASH comprenant : une matrice de cellules mémoires non volatiles et une mémoire RAM ; dans laquelle la matrice de cellules mémoires non volatiles est configurée pour stocker au moins une valeur de configuration de mémoire RAM et un correctif de programme ; - une interface de mémoire FLASH agencée à l’extérieur de la mémoire FLASH ; - un bus de communication entre l’interface de mémoire FLASH et au moins une partie de la mémoire FLASH ; l’interface de mémoire FLASH étant configurée pour : obtenir, entre une mise sous tension et une procédure de démarrage du dispositif, ladite valeur de configuration de mémoire RAM ; et en fonction de la valeur de configuration de mémoire RAM, obtenir ledit correctif de programme depuis la mémoire FLASH et le charger dans ladite mémoire RAM via le bus de communication. Un autre mode de réalisation prévoit un procédé de démarrage d’une mémoire FLASH comprenant, une mémoire RAM, et une matrice de cellules mémoires non volatiles configurée pour stocker au moins une valeur de configuration de mémoire RAM et un correctif de programme, le procédé comprenant : obtenir, par une interface de mémoire FLASH agencée à l’extérieur de la mémoire FLASH, entre une mise sous tension et une procédure de démarrage du dispositif, ladite valeur de configuration de mémoire RAM et, en fonction de ladite valeur de configuration de mémoire RAM, obtenir un correctif de programme depuis la mémoire FLASH et le charger dans la mémoire RAM de la mémoire FLASH à travers un bus de communication entre l’interface de mémoire FLASH et au moins une partie de la mémoire FLASH. Selon un mode de réalisation, l’interface de mémoire FLASH comprend un module de translation d’adresses virtuelles en adresses physiques de la mémoire FLASH. Selon un mode de réalisation, l’interface de mémoire FLASH comprend une interface d’écriture/lecture de données à écrire vers la matrice de cellules mémoires de la mémoire FLASH, ou à lire depuis la matrice de cellules mémoires de la mémoire FLASH. Selon un mode de réalisation, le bus de communication est un bus synchrone. Selon un mode de réalisation, la mémoire FLASH comprend en outre une mémoire non volatile comprenant un programme de contrôle d’un contrôleur d’écriture/programmation, le contrôleur d’écriture/programmation étant configuré pour mettre en oeuvre des étapes de programmation, d’effacement et de vérification de données de la mémoire. Selon un mode de réalisation, la mémoire FLASH comprend en outre au moins un registre mémorisant une valeur de configuration de la mémoire FLASH. Selon un mode de réalisation, la valeur de configuration de mémoire RAM et le correctif de programme sont stockés dans une zone de contrôle de la mémoire FLASH dont l’accès est protégé. Selon un mode de réalisation, l’interface de mémoire FLASH comprend une machine à état fini configurée pour gérer l’obtention du correctif de programme, ainsi que sa restitution au bus de communication. Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : la représente, de manière schématique, un exemple de dispositif à mémoire FLASH selon un mode de réalisation de la présente description ; la représente, de manière schématique, une mémoire FLASH et une interface de mémoire FLASH de la selon un mode de réalisation de la présente description ; la représente, de manière schématique, la mémoire FLASH et l’interface de mémoire FLASH de la selon un autre mode de réalisation de la présente description ; la représente un procédé de démarrage de la mémoire FLASH de la ou 3 ; la représente un exemple de mise en oeuvre d’une étape du procédé de la ; la représente, de manière schématique, un exemple de dispositif à mémoire FLASH selon un autre mode de réalisation de la présente description ; et la représente, sous forme de blocs, un exemple de mise en oeuvre d’un procédé d’accès à la mémoire FLASH du dispositif de la ; la représente, sous forme de blocs, un exemple de mise en oeuvre d’un procédé de lecture de la mémoire FLASH du dispositif de la ; la représente, sous forme de chronogramme, un exemple de mise en oeuvre d’un procédé d’écriture de la mémoire FLASH du dispositif de la ; et la représente, sous forme de chronogramme, un exemple de mise en oeuvre d’un procédé de lecture de la mémoire FLASH du dispositif de la . De mêmes éléments ont été désignés par de mêmes références dans les différentes figures. En particulier, les éléments structurels et/ou fonctionnels communs aux différents modes de réalisation peuvent présenter les mêmes références et peuvent disposer de propriétés structurelles, dimensionnelles et matérielles identiques. Par souci de clarté, seuls les étapes et éléments utiles à la compréhension des modes de réalisation décrits ont été représentés et sont détaillés. Sauf précision contraire, lorsque l'on fait référence à deux éléments connectés entre eux, cela signifie directement connectés sans éléments intermédiaires autres que des conducteurs, et lorsque l'on fait référence à deux éléments reliés (en anglais "coupled") entre eux, cela signifie que ces deux éléments peuvent être connectés ou être reliés par l'intermédiaire d'un ou plusieurs autres éléments. Dans la description qui suit, lorsque l'on fait référence à des qualificatifs de position absolue, tels que les termes "avant", "arrière", "haut", "bas", "gauche", "droite", etc., ou relative, tels que les termes "dessus", "dessous", "supérieur", "inférieur", etc., ou à des qualificatifs d'orientation, tels que les termes "horizontal", "vertical", etc., il est fait référence sauf précision contraire à l'orientation des figures. Sauf précision contraire, les expressions "environ", "approximativement", "sensiblement", et "de l'ordre de" signifient à 10 % près, de préférence à 5 % près. La représente un exemple de dispositif 100 à mémoire FLASH, comprenant une mémoire FLASH 104 (FLASH MEMORY) en communication avec une interface de mémoire FLASH 106 (FLASH INTERFACE), et configuré pour écrire ou lire des données dans et depuis la mémoire FLASH 104. L’interface de mémoire FLASH 106 est configurée, par exemple, pour assurer notamment la gestion de l’écriture et la lecture de données vers et depuis la mémoire FLASH 104. Le dispositif 100 comprend en outre, par exemple, une unité de traitement 110 (CPU) comprenant un ou plusieurs processeurs sous contrôle d’instructions stockées dans une mémoire d’instructions 112 (INSTR MEM). La mémoire d’instruction 112 est par exemple de type à accès aléatoire (en anglais Random Access Memory, RAM). L’unité de traitement 110 et la mémoire 112 communiquent, par exemple, via un bus système 140. La mémoire FLASH 104 est, par exemple, reliée au bus système 140 par l’intermédiaire de l’interface de mémoire FLASH 106 et par l’intermédiaire d’un bus de communication 114 reliant l’interface de mémoire FLASH 106 à la mémoire FLASH 104. Dans un exemple, le dispositif 100 comprend en outre une interface d’entrée/sortie 108 (I/O interface) reliée au bus système 140. La représente, de manière schématique, la mémoire FLASH 104 et l’interface de mémoire FLASH 106 de la plus en détail selon un autre mode de réalisation de la présente description. Selon l’exemple de la , la mémoire FLASH 104 comprend, par exemple, une matrice 208 de cellules mémoires non volatiles. La mémoire FLASH 104 comprend en outre, par exemple, une mémoire volatile 206 (RAM), par exemple de type RAM. La matrice 208 de cellules mémoires non volatiles est par exemple configurée pour stocker une valeur de configuration de mémoire RAM 202 (CONFIGURATION BITS), cette valeur étant composée, par exemple, d’un ou plusieurs bits. La valeur de configuration de mémoire RAM 202, qui peut être sous forme d’un ou plusieurs bits, indique si oui ou non un correctif de programme 204 (PATCH) de la mémoire FLASH est disponible pour être appliqué. Ce correctif 204 est, par exemple, stocké dans la matrice 208 de cellules mémoires non volatiles. Le correctif de programme 204 est par exemple un code correcteur d’un programme de fonctionnement de la mémoire FLASH 104. Le programme de fonctionnement de la mémoire FLASH 104 est, par exemple, stocké dans une mémoire non volatile 212 (ROM) de la mémoire FLASH 104. La mémoire non volatile 104 comprend, par exemple, également des paramètres de réglage de la matrice de cellules mémoires 208. Le correctif 204 permet, par exemple, de modifier l’exécution du programme de fonctionnement de la mémoire FLASH 104. Selon un exemple, le correctif 204 est stocké sur plusieurs lignes ou colonnes de la matrice de cellules mémoires. Dans un exemple non illustré, la valeur de configuration 202 et/ou le correctif de programme 204 sont stockés dans un ou plusieurs registres non volatiles de la mémoire FLASH 104 hors de la matrice de cellule mémoire 208. Le bus de communication 114 permet la communication de données entre l’interface de mémoire FLASH 106 et au moins une partie de la mémoire FLASH 104. Selon un exemple, le bus de communication 114 est configuré pour pouvoir communiquer avec la mémoire RAM 206. Selon un exemple, le bus de communication 114 est un bus synchrone, ce qui permet une facilité de mise en oeuvre. Selon un autre mode de réalisation, le bus de communication 114 est de type asynchrone. Le bus comprend, par exemple, des signaux de sélection (SEL) et/ou des signaux permettant d’activer l’écriture de données (WEN) dans la mémoire FLASH 104 et/ou des signaux (ADD) contenant une adresse physique de la mémoire FLASH 104 et/ou des signaux d’entrée et de sortie de données (DIN/DOUT) et/ou des signaux d’horloge (HCLK). L’interface de mémoire FLASH 106 est, par exemple, agencée à l’extérieur de la mémoire FLASH 104. Dans ce cas, cela permet de concevoir l’interface de mémoire 106 et la mémoire FLASH 104 de façon différenciée. L’interface de mémoire FLASH 106 fait par exemple partie d’un système sur puce (System On Chip en anglais, SOC). Selon l’exemple de la , l’interface de mémoire FLASH comprend, par exemple, un module de translation d’adresses virtuelles 232 (ADDRESS TRANSLATION MODULE) en adresses physiques de la mémoire FLASH 104 et/ou une interface 238 d’écriture/lecture (W/R) de données à écrire vers la matrice 208 de cellules mémoires de la mémoire FLASH 104 et à lire depuis la matrice 208 de cellules mémoires de la mémoire FLASH 104. Selon l’exemple de la , un bus de communication général 214 met, par exemple, en oeuvre la communication entre l’interface FLASH 106 et la mémoire FLASH 104 de données à écrire, par l’interface d’écriture/lecture 238, dans la matrice 208 de cellules mémoires non volatiles de la mémoire FLASH 106 et/ou de données lues, par l’interface d’écriture/lecture 238, dans la matrice 208 de cellules mémoire non volatiles de la mémoire FLASH 106. Selon un exemple, l’interface de mémoire FLASH 106 est configurée pour récupérer le correctif de programme 204 depuis la mémoire FLASH 104. Selon un exemple, la récupération du correctif 204 est obtenue après que l’interface de mémoire FLASH ait lue et interprété la valeur de configuration 202 stocké dans la mémoire FLASH 104. L’interface de mémoire FLASH 106 est, par exemple, configurée en outre pour charger, dans la mémoire RAM 206 de la mémoire FLASH 104, le correctif 204 via le bus de communication 114. Selon un exemple, l’interface de mémoire FLASH est configurée pour obtenir la valeur de configuration de mémoire RAM 202 entre une mise sous tension (POWER UP en anglais) et une procédure de démarrage du dispositif 100 (BOOT en anglais), et avant le démarrage de ladite mémoire FLASH. Cela permet d’appliquer le correctif 204 avant que la mémoire FLASH 104 ne démarre son programme de fonctionnement. Selon l’exemple de la , la valeur de configuration 202 et le correctif 204 sont, par exemple, stockés dans une zone de contrôle 210 de la mémoire FLASH qui est une zone réservée pour stocker des paramètres de configuration et dont l’accès est protégé, l’accès n’étant permis par exemple qu’aux profils ayant des droits administrateurs. La représente, de manière schématique, la mémoire FLASH 104 et l’interface de mémoire FLASH 106 de la selon un autre mode de réalisation de la présente description. Dans l’exemple de la , la matrice de cellules mémoires, le correctif de programme, la valeur de configuration, les mémoires RAM et ROM ainsi que la zone de contrôle de la mémoire FLASH, sont par exemple similaires à ceux décrits en relation avec la . Dans l’exemple de la , l’interface FLASH est par exemple similaire à celle décrite en relation avec la , sauf que l’interface de mémoire FLASH comprend en plus une machine d’état fini 330 (FSM). Dans l’exemple de la , les bus de communication 114 et 214 sont, par exemple, similaires à ceux de la . Dans l’exemple de la , un compteur de position 322 (COUNTER ROWS) est agencé dans la matrice de cellule mémoire 208. Dans un exemple non illustré, le compteur de position 322 de la matrice de cellules mémoires 208 est agencé en dehors de la matrice de cellules mémoires 208. Le compteur de position 322 suit, par exemple, la dernière position d’une colonne de cellules mémoires de la matrice de cellules mémoires 208 qui a été rafraichie, notamment celle qui a été rafraichie en dernier. Le compteur de position 322 est utilisé, par exemple, par un contrôleur d’écriture/programmation 320 (PEC) configuré pour mettre en oeuvre un programme de contrôle mémorisé dans la mémoire non volatile 212 ROM de la mémoire FLASH 104. Le programme de contrôle comprend, par exemple, des étapes de programmation, d’effacement et de vérification de données de mémoire, comme un algorithme de programmation/effacement des cellules mémoires de la matrice 208. L’algorithme détermine, par exemple, la façon la plus rapide et la plus qualitative de programmer et/ou effacer les cellules mémoires de la matrice 208. Des étapes de vérification sont en outre, par exemple, mis en oeuvre par cet algorithme. Dans un exemple, le programme de contrôle compose en tout ou partie le programme de fonctionnement de la mémoire FLASH 104. Selon l’exemple de la , la mémoire FLASH comprend en outre des registres 324 (REGS) mémorisant des valeurs de configuration de la mémoire FLASH 104 et/ou mémorisant des paramètres de réglages de la matrice de cellules de mémoire 208. Les registres 324 peuvent comprendre en outre, par exemple, des informations de redondance. Les registres 324 sont, par exemple, formés notamment avec des bascules de type T. Selon l’exemple de la , la machine à état fini 330 (FSM) de l’interface de mémoire FLASH 106 est configurée pour gérer l’obtention du correctif de programme 204 à partir de la mémoire FLASH 104, ainsi que sa restitution à la mémoire RAM 206 par l’intermédiaire du bus de communication 114. Cela permet, par exemple, de récupérer le correctif 204, sans utiliser de logiciel de la mémoire FLASH qui ne serait opérationnel qu’après la procédure de démarrage du dispositif 100. Cela permet en outre de fournir le correctif 204, également sans utiliser de logiciel de la mémoire FLASH qui ne serait opérationnel qu’après démarrage du dispositif 100, à la mémoire RAM 206 de la mémoire FLASH 104, et ce avant la procédure de démarrage du dispositif 100. La représente un procédé de démarrage de la mémoire FLASH de la ou 3. Ce procédé est mis en oeuvre, par exemple, par l’interface de mémoire FLASH 106. Dans une étape 402 (AFTER POWER UP AND BEFORE BOOT READ A DEDICATED FLASH CONFIGURATION BIT), l’interface de mémoire FLASH 106 vient, par exemple, lire la valeur de configuration 202 de la mémoire FLASH. Cette étape 402 a lieu après la mise sous tension mais avant la procédure de démarrage du dispositif 100 et de la mémoire FLASH 104. Cette étape peut être mise en oeuvre par exemple par la machine d’état fini 330. Dans une étape 404 (IS PATCH AVAILABLE?), l’interface de mémoire FLASH 106 détermine, en fonction de la valeur de configuration 202 si le correctif 204 est disponible dans la mémoire FLASH avant son processus de démarrage. Si oui (branche Y), alors une étape 406 (DUMP PATCH FROM FLASH MACRO) est réalisée. Si non (branche N), alors le procédé se termine, par exemple, par une étape de fin de procédé 410 (END). Lors de l’étape 406, tout ou partie du correctif 204 est récupéré par l’interface de mémoire FLASH 106, par exemple, par l’intermédiaire de la machine d’état fini 330. Le correctif 204 est alors, par exemple, stocké au sein de l’interface de mémoire FLASH 106. Dans la suite de l’étape 406 (LOAD PATCH IN RAM), le correctif 204 est restitué au bus de communication 114, par exemple, avec la machine d’état fini 330. Le bus de communication 114 communique ensuite le correctif 204 à la mémoire RAM 206 de la mémoire FLASH 104. Le correctif 204 peut alors être mis en oeuvre par la mémoire FLASH 104 pour corriger ou remplacer le programme de contrôle stocké dans la mémoire non volatile 212 avant que ne démarre sa procédure de démarrage. La représente un exemple de mise en oeuvre de l’étape 406 du procédé de la . Dans une étape 506 (SET FIRST LINE OF THE PATCH), le correctif 204 est parcouru, par exemple, au niveau d’une partie du correctif 204 correspondant à sa première ligne. Dans une étape suivante 508 (DUMP PATCH LINE FROM FLASH MACRO), par exemple, la partie du correctif 204 récupérée à l’étape 506 est récupérée par l’interface de mémoire FLASH 106. Dans une étape suivante 510 (LOAD PATCH IN RAM), la partie du correctif 204, récupérée à l’étape 508, est délivrée au bus de communication 114 et stockée dans la mémoire RAM 206. Dans une étape 514 (END OF PATCH ?), l’interface de mémoire FLASH détermine si la lecture du correctif 204 est terminée (branche Y) ou s’il existe d’autres parties du correctif 204 à lire (branche N). Dans le cas de la branche Y, l’étape 410 est réalisée. Dans le cas de la branche N, une étape 512 (INCREMENT FLASH LINE) est implémentée. Dans cette étape 512, une autre partie du correctif 204 est lue, par exemple en incrémentant les repères correspondant aux lignes du correctif 204. Après l’étape 512, les étapes 508, 510 et 514 sont implémentées de nouveau jusqu’à atteindre la lecture, par exemple, de l’ensemble du correctif 204. La représente, de manière schématique, un exemple de dispositif à mémoire FLASH 600 selon un autre mode de réalisation de la présente description. Dans l’exemple de la , le dispositif à mémoire FLASH 600 est similaire, par exemple, à celui des figures 1, 2 et 3. En particulier, plusieurs éléments du dispositif 600 sont les mêmes que des éléments du dispositif 100 des figures 1, 2 et 3, et ces éléments sont référencés par des mêmes références et ne seront pas décrits à nouveau en détail. Le dispositif à mémoire FLASH 600 comprend en outre un module de couplage 606 reliant des lignes de sortie de l’unité de traitement 110 à des lignes d’accès de l’interface de mémoire FLASH 106. La liaison assurée par le module de couplage 6060 permet par exemples l’accès, par l’unité de traitement 110, à la mémoire RAM 206 par l’intermédiaire de l’interface de mémoire FLASH 106. Dans un exemple, le module de couplage 606 comprend une matrice d’adressage de bus, qui prend en entrée un bus, par exemple de type AHB (Advanced High-performance Bus), comprenant les lignes de sortie de l’unité de traitement 110. Le module de couplage 606 comprend par exemple, en sortie, un bus de sortie 604, par exemple de type AHB, relié au deuxième bus 114, par exemple par l’intermédiaire de l’interface de mémoire FLASH 106. Le module de couplage 606 est, par exemple, codée en dur (hard-coded en anglais). Dans un exemple, le module de couplage 606 relie, par exemple, des lignes de sortie de l’unité de traitement 110 à des lignes d’accès de la mémoire non volatile 212, par exemple par l’intermédiaire de l’interface de mémoire FLASH 106 et du deuxième bus 114. Dans un autre exemple, le module de couplage 606 relie, par exemple, des lignes de sortie de l’unité de traitement 110 à des lignes d’accès du registre 324, par exemple par l’intermédiaire de l’interface de mémoire FLASH 106 et du deuxième bus 114. La représente, de manière schématique, un exemple de mise en oeuvre d’un procédé d’accès à la mémoire FLASH du dispositif de la . Dans une étape 702 (ADDRESS VALIDATION), l’unité de traitement 110 lance, par exemple, une requête, ou des requêtes, vers une adresse de la mémoire FLASH 104 qui est retranscrite, par l’intermédiaire du module de couplage 606 et par le module de translation d’adresses virtuelles 232, en une adresse correspondant au registre 324 et/ou la mémoire RAM 206 et/ou la mémoire ROM 212. En sortie du module de couplage 606, la requête est portée par le bus 604 jusqu’à l’interface de mémoire FLASH 106. La requête comporte, par exemple, des signaux de commandes connus selon le protocole du bus AHB : hsel, htrans, hready, hprot ou haddr. L’adresse demandée est par exemple analysée par l’interface de mémoire FLASH 106 pour validation. Si l’adresse correspond à l’adresse d’une des mémoires 206 ou 212 ou au registre 324 alors l’adresse est validée. Dans une étape 704 (STORE ADDRESS PHASE IN REGISTERS), lorsque l’adresse est validée, elle est stockée dans un ou des registres de l’interface de mémoire FLASH 106. Un signal d’horloge hclk est utilisé, par exemple, pour le stockage de l’adresse dans les registres. Dans une étape 706 (ACCESS TO RAM, ROM, REG), une instruction pour mettre la mémoire FLASH en mode de test (testmode) est envoyée, par exemple, à la mémoire FLASH 104. Ensuite, la requête pour l’accès aux mémoires 206, 212 ou au registre 324 de la mémoire FLASH 104 est mise en oeuvre, par exemple, par l’intermédiaire du bus 114, avec par exemple les signaux de commandes connues : sel, wen, dataout et/ou addr, et en utilisant l’adresse stockée à l’étape 704 dans l’interface de mémoire FLASH 106, et traduite, par exemple, par le module de translation d’adresses virtuelles 232. La représente, sous forme de blocs, un exemple de mise en oeuvre d’un procédé de lecture de la mémoire FLASH du dispositif de la . Dans une étape 808 (RETRIEVE DATA FROM RAM, ROM, REG TO FLASH INTERFACE), les données issues de la mémoire 206 ou 212 ou du registre 324 sont envoyées, par exemple, via le bus 114, par exemple via un bus de données datain du bus 114, vers l’interface de mémoire FLASH 106. Dans une étape 810 (SEND RETRIEVED DATA TO GPU), les données obtenues sont redirigées, par exemple, via le bus 604, par exemple via un bus de données rdata du bus 604, vers l’unité de traitement 110. Les procédés de la et 8 permettent que l’accès aux données de la mémoire FLASH, par exemple lors de modes de tests, soit facilité et que la mémoire FLASH soit aisément réparée et/ou réglée. La représente, sous forme de chronogramme, un exemple de mise en oeuvre d’un procédé d’écriture de la mémoire FLASH du dispositif de la . La illustre en particulier un exemple d’un accès à la mémoire RAM un ensemble de signaux générés de façon interne par l’interface de mémoire FLASH 106 sur la base des signaux présents sur le bus 604 : - un signal de sélection du bus HSELr_RAM ; - un signal d’adresse HADDRr ; - un signal de transmission HTRANSr indiquant le type de transfert courant, dans lequel, par exemple : ‘00’ indique pas de transfert en cours : IDLE ; ‘01’ indique un transfert en cours : BUSY ; ‘10’ indique un transfert d’une donnée ou de la première donnée d’une salve de données (en anglais "data burst") : NONSEQ ; et ‘11’ indique un transfert d’une donnée dans une salve de données : SEQ ; - un signal de validation d’écriture HWRITEr ; - un signal de taille d’accès HSIZEr ; - un signal HREADYOUTr indiquant qu’un transfert est terminé sur le bus et un signal HREADYr indiquant que le transfert précédent est terminé ; - un bus de donnée d’écriture HWDATAr ; - un bus de donnée de lecture HRDATAr ; et - un signal de réponse HRESPr. De plus, la illustre un ensemble de signaux transmis sur le bus 114 à la mémoire FLASH : - un signal d’horloge HCLK ; - un signal de sélection du bus SEL_REGS ; - un signal d’adresse ADDREGS ; - un siqnal de validation d’écriture WEN_REGS ; - un signal de donnée de sortie DOUTREGS ; et - un signal de donnée d’entrée DINREGS. Avant un temps t1, qui correspond à un front montant du signal de sélection HSELr_RAM et à un front montant du signal d’horloge HCLK, le bus 604 est inactif. Par exemple, les signaux sur le bus 604 ont par exemple, les valeurs suivantes pendant que le bus 604 est inactif du point de vue écriture (toutes les valeurs numériques dans la sont par exemple exprimées en hexadécimal) : HSELr_RAM=niveau bas, HADDRr=0000, HTRANSr=0, HWRITEr=niveau bas, HSIZEEr=0, HREADTOUTr=niveau haut, HREADYr=niveau haut, HWDATAr=00000000, HRDATAr=000000000, HRESPr=niveau bas. De façon similaire, avant le temps t1, le bus 114 est également inactif du point de vue écriture, et les signaux fournis par l’interface de mémoire FLASH au bus 114 vers la mémoire FLASH sont par exemple : SEL_REGS=niveau bas, ADDREGS=FFF, WEN_REGS=niveau haut, DOUTREGS=0001, DINREGS=3F80. Entre le temps t1 et un temps t2, qui correspond à une phase d’adresse, une instruction d’écriture est reçue par le bus 604. L’opération d’écriture comprend une phase d’adresse pendant un premier cycle d’horloge HCLK entre le temps t1 et le temps t2, et une phase de données pendant un deuxième cycle d’horloge entre le temps t2 et un temps t3. Pendant la phase d’adresse, le bus 114 reste inactif, et les signaux suivants sont par exemple modifiés suite aux signaux présents sur le bus 604 : HSELr_RAM=niveau haut, HADDRr=0004, HTRANSr=2, HWRITEr=niveau haut, HSIZEEr=1. Ces signaux correspondent, dans cet exemple, à une écriture sur 16 bits vers une adresse virtuelle dont les bits de poids faible sont 0004. Quand le signal HSELr_RAM passe au niveau haut, cela permet, par exemple, de sélectionner l’adresse correspondant à la mémoire RAM 206 de la mémoire FLASH 104. Par exemple, l’interface de mémoire FLASH détecte que le signal HSEL est activé sur le bus 604, et que l’adresse HADDR sur le bus 604 correspond à l’adresse des registres de la mémoire RAM 206, et active donc le signal de sélection HSELr_RAM. L’interface de mémoire FLASH 106, par exemple, décode l’adresse fournie par l’unité de contrôle 110 et la stocke à la valeur HADDRr, par exemple ici 0004. Quand HTRANSr=2, cela permet de calculer l’adresse des registres de la mémoire RAM 206 pendant la phase de données. Quand HWRITEr est au niveau haut, cela implique que l’opération est une écriture vers un registre désigné par l’adresse virtuelle. Lorsque HSIZEr est égal à 0, la taille de la donnée à écrire est égale par exemple à 8 bits. Lorsque HSIZEEr est égal à 1, la taille de la donnée à écrire est égale par exemple à 16 bits. Lorsque HSIZEEr est égal à 2, la taille de la donnée à écrire est égale par exemple à 32 bits. La phase de données est déclenchée par un front montant du signal d’horloge HCLK au temps t2. Entre le temps t2 et le temps t3, le bus 604 redevient par exemple inactif et les signaux suivants sont modifiés par exemple comme suit : HSELr_RAM=niveau bas, HADDRr=1FEC, HTRANSr=0, HWRITEr=niveau bas. Le signal HSIZEr n’est, par exemple, pas valide pendant la phase de données. Entre le temps t2 et le temps t3, le signal SEL_REGS est mis à un niveau haut, ce qui permet de sélectionner les registres dans lesquels les données sont écrites. Entre le temps t2 et le temps t3, le signal ADDREGS passe à la valeur de l’adresse physique de la mémoire RAM 206, par exemple 082. En effet, le module de translation d’adresses virtuelles 232 de l’interface de mémoire FLASH 106 est par exemple configuré pour traduire l’adresse virtuelle 0004 connue de l’unité de contrôle 110 en adresse physique 082 dans la mémoire RAM 206. Le signal WEN_REGS est par exemple mis au niveau bas, ce qui active, par exemple, l’écriture. Entre le temps t2 et le temps t3, le signal DINREGS, qui contient les données issues de HWDATAr à écrire, par exemple ici 0002, sont écrites, par exemple, en réduisant le nombre de bits présenté sur le bus 604 à uniquement les 16 bits de poids faible. Après le temps t3, les bus 604 et 114 deviennent par exemple inactifs. Les signaux suivants sont par exemple modifiés comme suit : HADDRr=0000, HSIZEEr=0, HWDATAr=00000000, SEL_REGS=niveau bas, ADDREGS=FFF, WEN_REGS=niveau haut, DINREGS=3F80. Le fait que les signaux ADDREGS et DINREGS soient, dans l’exemple donné, respectivement à la valeur FFF et 3F80 avant t2 et après t3, est indépendant du processus d’écriture des données. La représente, sous forme de chronogramme, un exemple de mise en oeuvre d’un procédé de lecture de la mémoire FLASH du dispositif de la . La illustre en particulier les mêmes signaux que ceux illustrés dans la , mais pour le cas d’une opération de lecture. Avant un temps t5, qui correspond à un front montant du signal d’horloge HCLK et du signal HSELr_RAM, les signaux du bus 604, ont par exemple, les valeurs suivantes : HSELr_RAM=niveau bas, HADDRr=0000, HTRANSr=0, HWRITEr=niveau bas, HSIZEr=0, HREADTOUTr=niveau haut, HREADYr=niveau haut, HWDATAr=00000000, HRDATAr=000000000, HRESPr=niveau bas. Avant le temps t5, les signaux sur le bus 114 vers l’interface de mémoire FLASH sont par exemple mis aux niveaux suivants : SEL_REGS=niveau bas, ADDREGS=FFF, WEN_REGS=niveau haut, DOUTREGS=0001, DINREGS=3F80. Entre le temps t5 et un temps t6, qui correspond à un front montant du signal d’horloge HCLK par exemple décalé d’un cycle d’horloge par rapport à t5, les valeurs suivantes sont modifiées par exemple : HSELr_RAM=niveau haut, HADDRr=0004, HTRANSr=2, HSIZEr=1, SEL_REGS=niveau haut, ADDREGS=082, WEN_REGS=niveau haut, DINREGS=0000. Cela permet de traduire l’adresse de la mémoire RAM 206 demandée par l’unité de contrôle 110 en l’adresse physique à lire des registres de la mémoire RAM 206 de la mémoire FLASH 104, ici l’adresse physique 082. Entre le temps t6 et un temps t7, qui correspond à un front montant du signal d’horloge HCLK par exemple décalé d’un cycle d’horloge par rapport à t6, les signaux suivants sont modifiés par exemple : HADDRr=0000, HTRANSr=0, HSIZEr=0, HWDATAr=00000002, HRDATAr=00000002, SEL_REGS=niveau bas, ADDREGS=FFF, DOUTREGS=0002, DINREGS=3F80. Cela permet de lire les données, par exemple ici 0002, stockées dans les registres de la mémoire RAM 206 de la mémoire FLASH 104 à l’aide du bus 114, via le signal DOUTREGS, et de les envoyer sur le bus 604 où elles sont par exemple contenues dans le signal HRDATAr. Dans l’exemple de la , les données issues de DOUTREGS =0002 sont envoyées vers HRDATAr, qui devient 00020002. Dans cet exemple, les données 0002 codées sur 16 bits dans DOUTREGS sont recopiées sur les 16 bits de poids forts et les 16 bits de poids faible de HRDATAr. La personne du métier pourrait, dans un autre exemple, laisser les données de DOUTREGS soit sur les bits de poids fort, soit sur les bits de poids faible. Après le temps t7, les signaux suivants sont modifiés par exemple : HRDATAr=00000000, HWDATAr=00000000. Le fait que les signaux ADDREGS et DINREGS soient, dans l’exemple donné, respectivement à la valeur FFF et 3F80 avant t5 et après t6, est indépendant du processus de lecture des données. Divers modes de réalisation et variantes ont été décrits. La personne du métier comprendra que certaines caractéristiques de ces divers modes de réalisation et variantes pourraient être combinées, et d’autres variantes apparaîtront à la personne du métier. Notamment, bien que les exemples mentionnent la mise en oeuvre d’une valeur de configuration 202 pour la mémoire FLASH 104, la personne du métier pourra mettre en oeuvre plusieurs valeurs de configuration, par exemple sous la forme de plusieurs bits de configuration. Le type du bus 604 est, par exemple, du type AHB. Dans ce cas, les instructions correspondantes peuvent être codées différemment que celles décrites dans les exemples des figures 9 et 10. Les adresses des registres, mémoires RAM et ROM de la mémoire FLASH sont, par exemple, différentes de celles données en exemple dans les figures 9 et 10. Enfin, la mise en oeuvre pratique des modes de réalisation et variantes décrits est à la portée de la personne du métier à partir des indications fonctionnelles données ci-dessus. Dispositif à mémoire FLASH (100) comprenant : - une mémoire FLASH (104) comprenant une matrice de cellules mémoires (208) non volatiles et une mémoire volatile (206) ; - une interface de mémoire FLASH (106) agencée à l’extérieur de la mémoire FLASH (104) ; - un premier bus de communication (214) reliant l’interface de mémoire FLASH (106) et la matrice de cellules mémoires (208) ; et - un deuxième bus de communication (114) reliant l’interface de mémoire FLASH (106) et la mémoire volatile (206). Procédé pour accéder, dans un dispositif à mémoire FLASH (100), à la mémoire FLASH (104) en utilisant une interface de mémoire FLASH (106) agencée à l’extérieur de la mémoire FLASH (104), la mémoire FLASH comprenant une matrice de cellules mémoires (208) non volatiles et une mémoire volatile (206), le procédé comprenant : - accéder à des données stockées dans la matrice de cellules mémoires (208) par l’intermédiaire d’un premier bus de communication reliant l’interface de mémoire FLASH (106) et la matrice de cellules mémoires (208) ; et - accéder à des données stockées dans la mémoire volatile (206) par l’intermédiaire d’un deuxième bus de communication (114) reliant l’interface de mémoire FLASH (106) et la mémoire volatile (206). Procédé de démarrage d’une mémoire FLASH, comprenant accéder à la mémoire FLASH selon le procédé de la revendication 2, dans lequel la matrice de cellules mémoires (208) est configurée pour stocker au moins une valeur de configuration de mémoire volatile (206) et un correctif (204) de programme, le procédé comprenant : obtenir, par l’interface de mémoire FLASH (106) par l’intermédiaire du premier bus, entre une mise sous tension et une procédure de démarrage du dispositif (100), ladite valeur de configuration de mémoire volatile (206) et, en fonction de ladite valeur de configuration de mémoire volatile (206), obtenir un correctif (204) de programme depuis la mémoire FLASH (104) et le charger dans la mémoire volatile (206) de la mémoire FLASH (104) à travers le deuxième bus de communication (114). Dispositif selon la revendication 1, le dispositif à mémoire FLASH comprenant en outre un module de couplage (606) reliant des lignes de sortie d’une unité de traitement (110), externe au dispositif à mémoire FLASH (100), à des lignes d’accès de ladite mémoire volatile (206) de la mémoire FLASH (104). Dispositif selon l’une quelconque des revendications 1 ou 4, dans lequel la mémoire FLASH (104) comprend en outre une mémoire non volatile (212) comprenant un programme de contrôle d’un contrôleur d’écriture/programmation (320) et/ou comprenant des paramètres de réglage de la matrice de cellules mémoires (208); le contrôleur d’écriture/programmation (320) étant configuré pour mettre en oeuvre des étapes de programmation, d’effacement et de vérification de données de la mémoire. Dispositif selon la revendication 5 dans sa dépendance à la revendication 4, dans lequel le module de couplage (606) relie en outre des lignes de sortie de l’unité de traitement (110) à des lignes d’accès de la mémoire non volatile (212). Dispositif selon l’une quelconque des revendications 1 ou 4 à 6, dans lequel l’interface de mémoire FLASH (106) comprend une interface d’écriture/lecture (238) de données à écrire vers la matrice de cellules mémoires de la mémoire FLASH, ou à lire depuis la matrice de cellules mémoires de la mémoire FLASH (104). Dispositif selon l’une quelconque des revendications 1 ou 4 à 7, dans lequel le deuxième bus de communication (114) est un bus synchrone. Dispositif selon l’une quelconque des revendications 1 ou 4 à 8, dans lequel la mémoire FLASH (104) comprend en outre au moins un registre (324) mémorisant une valeur de configuration de la mémoire FLASH (104) et/ou mémorisant des paramètres de réglages de la matrice de cellules de mémoire (208). Dispositif selon la revendication 9 dans sa dépendance à la revendication 4, dans lequel le module de couplage (606) relie en outre des lignes de sortie de l’unité de traitement (110) à des lignes d’accès dudit registre (324). Dispositif selon l’une quelconque des revendications 1 ou 4 à 10, dans lequel la valeur de configuration de mémoire volatile (206) et le correctif (204) de programme sont stockés dans une zone de contrôle (210) de la mémoire FLASH (104) dont l’accès est protégé. Dispositif selon l’une quelconque des revendications 1 ou 4 à 11, dans lequel l’interface de mémoire FLASH (106) comprend une machine à état fini (330) configurée pour gérer l’obtention du correctif (204) de programme ainsi que sa restitution au bus de communication (114). Dispositif selon l’une quelconque des revendications 1 ou 4 à 12, dans lequel l’interface de mémoire FLASH (106) comprend un module de translation d’adresses (232) virtuelles en adresses physiques. Dispositif selon l’une quelconque des revendications 4, ou 5 à 13 dans sa dépendance à la revendication 4, dans lequel le module de couplage (606) est une matrice d’adressage de bus.