Brevet FR3044125A1 (20170526)
REVENDICATIONS1. Procédé de test d'une application appartenant à une couche supérieure d'un pilote d'une mémoire flash non volatile de type NAND, ladite mémoire flash comprenant un ensemble de blocs auxquels l'application accède en lecture ou en écriture ou en effacement, chaque bloc comportant une pluralité de pages, ledit test visant à vérifier le comportement de l'application vis-à-vis de l'apparition d'un mauvais bloc, physiquement altéré, lors d'une tentative d'accès en lecture ou en écriture ou en effacement sur ledit bloc, le procédé comprenant l'établissement d'une liste simulée de mauvais blocs, destinée à être considérés comme des mauvais blocs par le pilote de la mémoire flash, et la mise en oeuvre d'un algorithme, ledit algorithme comprenant le renvoi d'une erreur à destination de l'application lorsque ladite application cherche à accéder en lecture ou en écriture ou en effacement à un bloc de la mémoire flash appartenant à la liste simulée de mauvais blocs.\n<CLM>\1\tProcédé selon la revendication précédente, dans lequel l'algorithme est intégré au pilote de la mémoire flash.\n<CLM>\1\tProcédé selon l'une quelconque des revendications précédentes, dans lequel la liste simulée de mauvais blocs comprend, pour chaque mauvais bloc simulé de ladite liste simulée de mauvais blocs, une mention selon laquelle ledit mauvais bloc simulé est un mauvais bloc simulé en lecture et/ou un mauvais bloc simulé en écriture et/ou un mauvais bloc simulé en effacement.\n<CLM>\1\tProcédé selon la revendication précédente, dans lequel l'algorithme comprend les étapes conditionnelles suivantes, lors d'une tentative de l'application d'accéder en lecture à une page d'un bloc : - si ledit bloc se trouve dans la liste simulée de mauvais blocs (BB) avec la mention mauvais bloc simulé en effacement (BBE), et s'il y a déjà eu une tentative d'effacement (ET) avec retour d'erreur, alors aucune lecture de la page n'est effectuée et une erreur est renvoyée à l'application (NOR) ; - si ledit bloc se trouve dans la liste simulée de mauvais blocs (BB) avec la mention mauvais bloc simulé en écriture (BBW), et s'il y a déjà eu une tentative d'écriture (WT) avec retour d'erreur, alors aucune lecture de la page n'est effectuée et une erreur est renvoyée à l'application (NOR) ; - si ledit bloc se trouve dans la liste simulée de mauvais blocs (BB) avec la mention mauvais bloc simulé en écriture (BBW), et s'il n'y a pas encore eu de tentative d'écriture dans ledit bloc, alors une lecture normale de la page est effectuée (R) ; - si ledit bloc se trouve dans la liste simulée de mauvais blocs (BB) avec la mention mauvais bloc simulé en effacement (BBE), et s'il n'y a pas encore eu de 3044125 10 tentative d'effacement dudit bloc, alors une lecture normale de la page est effectuée (R).\n<CLM>\1\tProcédé selon l'une quelconque des revendications 3 à 4, dans lequel l'algorithme comprend les étapes conditionnelles suivantes, lors d'une tentative de 5 l'application d'accéder en écriture à une page d'un bloc : - si ledit bloc se trouve dans la liste simulée de mauvais blocs (BB) avec la mention mauvais bloc simulé en effacement (BBE), et s'il y a déjà eu une tentative d'effacement (ET) avec retour d'erreur, alors aucune écriture dans la page n'est effectuée et une erreur est renvoyée à l'application (NOW) ; 10 - si ledit bloc se trouve dans la liste simulée de mauvais blocs (BB) avec la mention mauvais bloc simulé en écriture (BBW), alors aucune écriture dans la page n'est effectuée et une erreur est renvoyée à l'application (NOW) ; - si ledit bloc se trouve dans la liste simulée de mauvais blocs (BB) avec la mention mauvais bloc simulé en effacement (BBE), et s'il n'y a pas encore eu de 15 tentative d'effacement dudit bloc, alors une écriture normale dans la page est effectuée (W).\n<CLM>\1\tProcédé selon l'une quelconque des revendications 3 à 5, dans lequel l'algorithme comprend les étapes conditionnelles suivantes, lors d'une tentative de l'application d'accéder en effacement à un bloc : 20 - si ledit bloc se trouve dans la liste simulée de mauvais blocs (BB) avec la mention mauvais bloc simulé en effacement (BBE), alors un effacement du bloc est effectué et une erreur est renvoyée à l'application (E) ; - si ledit bloc se trouve dans la liste simulée de mauvais blocs (BB) avec la mention mauvais bloc simulé en écriture (BBW), et s'il y a déjà eu une tentative 25 d'écriture (WT) dans le bloc avec retour d'erreur, alors un effacement du bloc est effectué et une erreur est renvoyée à l'application (E) ; - si ledit bloc se trouve dans la liste simulée de mauvais blocs (BB) avec la mention mauvais bloc simulé en écriture (BBW), et s'il n'y a pas encore eu de tentative d'écriture dans ledit bloc, alors un effacement du bloc est effectué et 30 aucune erreur n'est renvoyée à l'application (E').\n<CLM>\1\tProcédé selon l'une quelconque des revendications précédentes, chaque bloc comprenant une zone réservée comportant une balise apte à indiquer que ledit bloc est un mauvais bloc, dans lequel l'algorithme mis en oeuvre comprend la lecture et l'écriture réelle de la dite balise. 35\n<CLM>\1\tProcédé selon l'une quelconque des revendications précédentes, dans lequel ladite application testée est un algorithme de nivellement d'usure de la mémoire flash. 3044125 11\n<CLM>\1\tProcédé selon l'une quelconque des revendications 1 à 7, dans lequel ladite application est un algorithme de gestion des mauvais blocs de la mémoire flash.