Brevet FR3101974A1 — publié le 20210416

Il est divulgué un procédé d’aide à l’identification de secteurs vierges d’une mémoire non-volatile d’un microcontrôleur, le procédé consiste, à chaque réception (401) d’une commande d’écriture ou d’effacement d’un secteur déterminé de la matrice de cellules de mémoire d’une mémoire non-volatile, à écrire (403) dans une cellule de mémoire déterminée registre du microcontrôleur, associée au secteur déterminé, une information représentative du fait que le secteur a été écrit ou effacé, c’est-à-dire du fait que le secteur en question est écrit ou vierge. Figure 4 Procédé d’aide à l’identification de secteurs vierges d’une mémoire non-volatile d’un microcontrôleur La présente invention se rapporte de manière générale aux mémoires intégrées à des microcontrôleurs. Elle concerne plus particulièrement l’identification des secteurs vierges d’une mémoire non-volatile d’un microcontrôleur. L'invention trouve des applications, en particulier, dans les microcontrôleurs équipés d’une mémoire flash dont la programmation de cellules de mémoire suppose la vérification préalable de leur virginité. Etat de la technique antérieure D’une manière générale, le terme microcontrôleur désigne un circuit intégré qui comprend au moins un processeur, des mémoires (au moins une mémoire volatile et au moins une mémoire non-volatile) et des interfaces d'entrées-sorties adaptées pour permettre sa connexion à d’autres circuits électroniques du système électronique dans lequel il est utilisé. Il s’agit d’un composant autonome, qui peut exécuter un programme contenu dans la mémoire non-volatile dès lors qu'il est mis sous tension, qui peut acquérir des données sous forme numérique ou analogique, et qui peut générer et délivrer des données numériques et/ou des signaux électriques analogiques. Les microcontrôleurs sont aujourd’hui couramment répandus dans tous les systèmes électroniques embarqués, notamment dans les applications automobiles. Ils permettent la réalisation de fonctions spécifiques dans un environnement soumis à des contraintes importantes sur les systèmes à la fois en termes de taille, de consommation d’énergie, et de coût. Dans le domaine de l’automobile, la plupart des systèmes électroniques qui équipent les véhicules automobiles modernes sont contrôlés par de tels microcontrôleurs. C’est par exemple le cas des systèmes de contrôle de l’injection de carburant dans un moteur, des systèmes d’antiblocage des roues ou encore des systèmes embarqués d’analyse d’images radar dans le contexte du véhicule plus autonome. Dans chacun de ces exemples, le microcontrôleur peut réaliser toutes sortes d’opérations pour la commande du système concerné. La mémoire non-volatile qui équipe un microcontrôleur a notamment pour fonction de stocker le programme qui peut être exécuté par ledit microcontrôleur. A ce titre, cette mémoire non-volatile doit pouvoir être programmée et, le cas échéant, reprogrammée, selon l’utilisation spécifique qui est faite du microcontrôleur dans le système au sein duquel il est embarqué. La programmation de la mémoire non volatile d’un microcontrôleur vise une opération par laquelle des données spécifiques (qui correspondent à un programme) sont écrites dans la mémoire non-volatile depuis une interface dédiée de ladite mémoire non-volatile. On parle d’opération d’écriture lorsque les données sont des données utiles à conserver dans la mémoire, sous la forme de valeurs binaires « 0 » et de « 1 », pour donner lieu à des opérations de lecture ultérieures selon les besoins de l’application. L’effacement de tout ou partie de la mémoire est aussi une opération de programmation, d’un type particulier puisqu’il consiste à écrire des « 0 » ou des « 1 », selon le type de technologie utilisée, dans toutes les cellules de mémoire qui sont effacées. Or, pour certaines technologies de mémoire non-volatile couramment employées dans les microcontrôleurs actuels, notamment la technologie des mémoires Flash, l’écriture d’une information quelconque dans la mémoire suppose que l’espace mémoire sur lequel l’information doit être écrite soit un espace mémoire vierge. Au sens de la présente description, un espace mémoire vierge est un espace mémoire qui ne contient aucune donnée utile (information d’utilisateur) déjà écrite, au moment de la réalisation du processus d’écriture. En d’autres termes, soit l’espace mémoire ne contient au moment du lancement du processus d’écriture aucune information utile et il est alors possible d’y écrire directement une information déterminée, soit il contient déjà une information écrite et celle-ci doit d’abord être effacée avant de pouvoir en écrire une nouvelle. Une opération d’écriture comprend donc une opération de vérification de l’état, vierge ou non, des cellules de mémoire concernées par l’opération. En outre, dans une mémoire non-volatile telle que celles utilisées dans les microcontrôleurs, comme par exemple dans une mémoire Flash, les données sont stockées dans une matrice de cellules de mémoire qui est sectorisée. Un secteur (aussi appelé bloc de cellules de mémoire ou bloc-mémoire) désigne un ensemble de cellules de mémoire de la matrice qui sont nécessairement effacées ensemble lorsqu’une opération d’effacement est réalisée. Dit autrement, toute opération d’effacement, en particulier, implique l’effacement de toutes les cellules de mémoire d’un secteur déterminé. Dans certains cas, en revanche, une opération d’écriture peut n’impliquer qu’une seule cellule de mémoire. Néanmoins, une opération d’écriture peut évidemment aussi impliquer plusieurs cellules de mémoire simultanément, et ce quels que soient le ou les secteurs auxquels elles appartiennent. Dans le cas d’une mémoire non-volatile sectorisée, toutefois, des raisons liées à la technologie comme déjà évoquées plus haut, imposent que pour l’écriture de données dans un secteur quel qu’il soit, toutes les cellules de mémoire du secteur en question soient vierges comme à l’origine, ou bien aient été effacées si elles avaient déjà été écrites auparavant. Dans les deux cas, le secteur est vierge et peut être écrit, sur commande, en tout ou partie. C’est pourquoi la gestion, par un microcontrôleur, du stockage de données dans une telle mémoire non-volatile implique de pouvoir identifier régulièrement les secteurs vierges de ladite mémoire non-volatile. Le processus d’identification des secteurs vierges d’une mémoire non-volatile tel qu’il est connu jusqu’ici est long et laborieux. En effet, selon une première approche connue, ce processus implique d’une part l’utilisation d’un code utilisateur (logiciel utilisateur) conçu pour, lorsqu’il est exécuté, réaliser des opérations successives de lecture de toutes les cellules de mémoire de la matrice d’une mémoire non-volatile, et d’autre part l’interprétation du résultat de cette lecture. Dans ce cas, un code utilisateur spécifique, adapté à la technologie de chaque microcontrôleur donné, doit être développé pour réaliser ces opérations. En outre, un tel code implique des risques de bug et/ou des difficultés de configuration. Une seconde approche connue s’appuie sur le fait qu’une telle mémoire non-volatile est gérée par un module de commande intégré à ladite mémoire, qui comprend un module d’interface. Outre le fait que le module d’interface fournit les fonctions basiques de contrôle de la mémoire, telle que l’écriture, la lecture ou l’effacement, il peut aussi fournir une fonction dite de vérification de l’état des cellules de mémoire de secteurs effacés, appelée « Verify Erased Logical Sector Range » dans la littérature. Cette fonction peut être appelée par le code utilisateur pour vérifier l’état vierge ou non des cellules de mémoire des différents secteurs d’une matrice de cellules de mémoire d’une mémoire non-volatile. Quoiqu’il en soit, avec la première comme avec la seconde approche, toutes les cellules de mémoire d’une mémoire non-volatile doivent être scannées (i.e., lues ou vérifiées) afin de déterminer quels sont les secteurs vierges parmi l’ensemble des secteurs d’une matrice de cellule de mémoire. Par conséquent, les opérations requises pour identifier les secteurs vierges d’une mémoire non-volatile s’avèrent particulièrement longues et consommatrices de ressources, car elles impliquent la vérification de l’état vierge ou non au niveau de chaque cellule de mémoire du secteur. En outre, la capacité totale de stockage d’une mémoire donnée ou le découpage particulier des secteurs d’une mémoire donnée (i.e., leur nombre et leur taille) peuvent aussi contribuer à allonger le temps nécessaire à l’identification des secteurs vierges. L'invention vise à atténuer les inconvénients de l’art antérieur précités en proposant un procédé qui permet d’écrire simplement et rapidement dans un registre d’un microcontrôleur des informations permettant de connaître l’état vierge ou non de différents secteurs d’une matrice de cellules de mémoire d’une mémoire non-volatile dudit microcontrôleur. En particulier, l’invention part du constat fait par les inventeurs qu’une cellule de mémoire (i.e., un bit) du registre peut être associé à chaque secteur de la mémoire non-volatile pour refléter l’état du secteur c’est-à-dire le fait qu’il est écrit ou effacé. De plus, avantageusement, l’écriture dans le registre peut être concomitante à chaque opération d’écriture ou d’effacement d’un secteur. Ainsi l’invention comprend donc intrinsèquement la mise à jour dynamique du registre pour refléter l’état réel, vierge ou non, des secteurs à un instant donné. Enfin, la lecture du registre pour identifier les secteurs vierges d’une matrice de cellules de mémoire d’une mémoire non-volatile, est une opération beaucoup plus rapide que les processus pour réaliser une telle identification selon les approches connues qui ont été présentées et discutées ci-dessus. A cet effet, un premier aspect de l’invention propose un procédé de gestion d’une mémoire non-volatile et réinscriptible d’un microcontrôleur, ladite mémoire comprenant une matrice de cellules de mémoire organisée en une pluralité de secteurs comprenant chacun une pluralité de cellules de mémoire, et comprenant en outre un module de commande adapté pour la gestion de ladite matrice de cellules de mémoire étant et comprenant un module d’interface configuré pour recevoir des commandes d’écriture, de lecture ou d’effacement de données dans la mémoire pour interpréter lesdites commandes reçues et pour réaliser des opérations correspondant auxdites commandes reçues sur des cellules de mémoire déterminées de la mémoire non-volatile, ledit procédé comprenant les étapes suivantes, exécutées par le module d’interface en réponse à la réception d’une commande d’écriture de données dans au moins une cellule de mémoire d’un secteur déterminé de la matrice de cellules de mémoire, ou d’une commande d’effacement dudit secteur déterminé : - réalisation de l’opération d’écriture ou de l’opération d’effacement correspondant à la commande d’écriture ou à la commande d’effacement, respectivement ; d’une part, et, - écriture, dans une cellule de mémoire d’un registre du microcontrôleur, associée au secteur déterminé, d’une information représentative de l’état non vierge ou de l’état vierge, respectivement, des cellules de mémoire dudit secteur déterminé, d’autre part. Des modes de mise en œuvre pris isolément ou en combinaison, prévoient en outre que : - la mémoire non-volatile comprend en outre une pluralité de banques de mémoire, chaque banque de mémoire comprenant une matrice de cellules de mémoire locale et un module de commande local configuré pour recevoir des commandes en provenance du module de commande de la mémoire non-volatile et pour réaliser, sur des cellules de mémoire déterminées de la banque de mémoire, des opérations associées auxdites commandes reçues ; - le procédé comprend en outre en réponse à la réception par le module d’interface d’une requête de détection des secteurs vierges de la matrice de cellules de mémoire : - la lecture dans le registre du microcontrôleur des informations représentatives de l’état vierge ou de l’état non vierge des cellules de mémoire des secteurs de la matrice de cellules de mémoire ; et/ou - le procédé comprend la lecture des cellules de mémoire du registre du microcontrôleur qui sont respectivement associées aux secteurs de la mémoire, à l’aide d’un masque binaire. Dans un deuxième aspect, l’invention a également pour objet une mémoire non-volatile adaptée pour stocker des données inscriptibles, lisibles et effaçables par un processeur d’un microcontrôleur, ladite mémoire non-volatile comprenant une matrice de cellules de mémoire et un module de commande, ladite matrice de cellules de mémoire étant organisée en une pluralité de secteurs comprenant chacun une pluralité de cellules de mémoire, ledit module de commande comprenant un module d’interface adapté pour mettre en œuvre toutes les étapes du procédé selon le premier aspect. Des modes de réalisation pris isolément ou en combinaison, prévoient en outre que : - la mémoire non-volatile est une mémoire de type Flash ; et/ou - le module d’interface du module de commande de la mémoire non-volatile est un module de type Flash Standard Interface, FSI. Dans un troisième aspect, l’invention a également pour objet un microcontrôleur comprenant un processeur, au moins une interface d’entrée/sortie et une mémoire non-volatile adaptée pour stocker des données et échanger des données avec le processeur par l’intermédiaire d’un bus informatique, ladite mémoire non-volatile comprenant une matrice de cellules de mémoire et un module de contrôle, ladite matrice de cellules de mémoire comportant une pluralité de secteurs respectivement composés d’une pluralité de cellules de mémoire, ledit module de contrôle comprenant un module d’interface adapté pour mettre en œuvre toutes les étapes du procédé selon le premier aspect. Description des dessins D’autres caractéristiques et avantages de l’invention apparaîtront encore à la lecture de la description qui va suivre. Celle-ci est purement illustrative et doit être lue en regard des dessins annexés sur lesquels : est une représentation schématique d’un microcontrôleur selon un mode de réalisation de l’invention ; est une représentation schématique d’une mémoire non-volatile selon un mode de réalisation de l’invention ; est une représentation schématique d’un registre d’un microcontrôleur selon un mode de réalisation de l’invention ; et, est un diagramme d’étapes d’un mode de mise en œuvre du procédé selon l’invention. Procédé de gestion d’une mémoire non-volatile et réinscriptible (103) d’un microcontrôleur (101), ladite mémoire comprenant une matrice de cellules de mémoire (201) organisée en une pluralité de secteurs comprenant chacun une pluralité de cellules de mémoire, et comprenant en outre un module de commande (202) adapté pour la gestion de ladite matrice de cellules de mémoire étant et comprenant un module d’interface (203) configuré pour recevoir des commandes d’écriture, de lecture ou d’effacement de données dans la mémoire pour interpréter lesdites commandes reçues et pour réaliser des opérations correspondant auxdites commandes reçues sur des cellules de mémoire déterminées de la mémoire non-volatile, ledit procédé comprenant les étapes suivantes, exécutées par le module d’interface en réponse à la réception (401) d’une commande d’écriture de données dans au moins une cellule de mémoire d’un secteur déterminé de la matrice de cellules de mémoire, ou d’une commande d’effacement dudit secteur déterminé : - réalisation de l’opération d’écriture ou de l’opération d’effacement correspondant à la commande d’écriture ou à la commande d’effacement, respectivement ; d’une part, et, - écriture (403), dans une cellule de mémoire d’un registre (205) du microcontrôleur, associée au secteur déterminé, d’une information représentative de l’état non vierge ou de l’état vierge, respectivement, des cellules de mémoire dudit secteur déterminé, d’autre part. Procédé selon la revendication 1, dans lequel la mémoire non-volatile comprend en outre une pluralité de banques de mémoire, chaque banque de mémoire comprenant une matrice de cellules de mémoire locale et un module de commande local configuré pour recevoir des commandes en provenance du module de commande de la mémoire non-volatile et pour réaliser, sur des cellules de mémoire déterminées de la banque de mémoire, des opérations associées auxdites commandes reçues. Procédé selon l'une quelconque des revendications 1 et 2, comprenant en outre en réponse à la réception par le module d’interface d’une requête de détection des secteurs vierges de la matrice de cellules de mémoire : - la lecture dans le registre du microcontrôleur des informations représentatives de l’état vierge ou de l’état non vierge des cellules de mémoire des secteurs de la matrice de cellules de mémoire. Procédé selon la revendication 3, comprenant la lecture des cellules de mémoire du registre du microcontrôleur qui sont respectivement associées aux secteurs de la mémoire, à l’aide d’un masque binaire. Mémoire non-volatile (103) adaptée pour stocker des données inscriptibles, lisibles et effaçables par un processeur (102) d’un microcontrôleur (101), ladite mémoire non-volatile comprenant une matrice de cellules de mémoire (201) et un module de commande (202), ladite matrice de cellules de mémoire étant organisée en une pluralité de secteurs comprenant chacun une pluralité de cellules de mémoire, ledit module de commande comprenant un module d’interface (203) adapté pour mettre en œuvre toutes les étapes du procédé selon l’une quelconque des revendications 1 à 4. Mémoire non-volatile selon la revendication 5, ladite mémoire non-volatile étant une mémoire de type Flash. Mémoire non-volatile selon la revendication 5, dans laquelle le module d’interface du module de commande de la mémoire non-volatile est un module de type Flash Standard Interface, FSI. Microcontrôleur (101) comprenant un processeur (102), au moins une interface d’entrée/sortie (107) et une mémoire non-volatile (103) adaptée pour stocker des données et échanger des données avec le processeur par l’intermédiaire d’un bus informatique, ladite mémoire non-volatile comprenant une matrice de cellules de mémoire et un module de contrôle, ladite matrice de cellules de mémoire comportant une pluralité de secteurs respectivement composés d’une pluralité de cellules de mémoire, ledit module de contrôle comprenant un module d’interface adapté pour mettre en œuvre toutes les étapes du procédé selon l’une quelconque des revendications 1 à 4.