IMA2a4 2022/2023 P1 : Différence entre versions
Ligne 21 : | Ligne 21 : | ||
==Cahier des charges== | ==Cahier des charges== | ||
− | + | En plus de la programmation USB de type « mémoire de masse » vous devrez implanter les dispositifs suivants : | |
− | + | * une table pour repérer les pages hors services ; | |
− | + | * un dispositif de correction d’erreur dans les blocs (vous utiliserez l’algorithme de hamming avec un nombre de bits adapté à la fois au taux d’erreurs de la mémoire et à la fois au nombres d’octets disponibles pour stocker ces bits de correction d’erreur) ; | |
− | + | * un dispositif de réduction d’usure comptant le nombre de réinitialisation des pages et permettant de déplacer des blocs souvent modifiés vers d’autres adresses. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | Il est fortement recommandé de simuler tous ces dispositifs sur un PC pour tester tous les éléments avant implantation dans le microcontrôleur. | ||
+ | Du coté matériel vous pourrez vous aider des schémas de clefs sur le Wiki des PeiP. Il est cependant conseillé de passer d’un ATMega16u2 à un ATMega32u4 pour disposer de plus d’E/S et de bus. En effet pour implanter les tables nécessaires au fonctionnement des dispositifs décrits ci-dessus, il est conseillé d’ajouter une mémoire SPI plutôt que d’essayer d’implanter les tables sur la mémoire flash principale. | ||
+ | Implantez aussi des points d’accès USB sur votre clef pour pouvoir obtenir des informations sur la gestion des blocs sur la clef : | ||
+ | * lister les pages hors service ; | ||
+ | * récupérer le nombre d’écritures pour des blocs donnés ; | ||
+ | * récupérer le nombre d’erreurs pour des blocs donnés. | ||
+ | Ecrivez aussi le programme PC permettant de récupérer ces informations pour afficher des statistiques sur la clef. | ||
==Cahier des spécifications== | ==Cahier des spécifications== | ||
==Diagramme de Gantt prévisionnel== | ==Diagramme de Gantt prévisionnel== | ||
− | |||
= <div class="mcwiki-header" style="border-radius: 10px; padding: 20px; font-weight: bold; text-align: center; font-size: 80%; background: #9FE7FF; vertical-align: top ; width: 100%;">Liens externes</div> = | = <div class="mcwiki-header" style="border-radius: 10px; padding: 20px; font-weight: bold; text-align: center; font-size: 80%; background: #9FE7FF; vertical-align: top ; width: 100%;">Liens externes</div> = |
Version du 8 décembre 2022 à 08:55
Sommaire
Présentation générale
Objectifs
Conception, réalisation et programmation d’une clef USB réaliste.
Contexte
En bureau d’études PeiP systèmes embarqués [[1]] nous faisons réaliser des clefs USB aux élèves depuis 3 ans. Mais ces clefs sont très limitées en capacité, les mémoires utilisées, faciles à adresser, ne dépassant pas les quelques Mo. Le but de ce projet est de concevoir une clef USB de l’ordre de quelques Go avec une gestion de mémoire réaliste pour une durée de vie de la clef raisonnable.
Les mémoires flash de grande taille sont :
- généralement à accès parallèle et non série (comme les mémoires SPI utilisées en BE PeiP) ;
- sans aucun mécanisme de gestion de l’usure (comme les mémoires utilisées en BE PeiP) ;
- de type NAND, à savoir que l’on ne peut que transformer des 1 en 0, si l’on souhaite revenir sur des 1, il faut réinitialiser toute une page avec que des 1.
Mais surtout ces mémoires sont imparfaites :
- des erreurs peuvent se produire dans certains blocs (quelques bits mais pas si rarement que cela) ;
- des pages complètes peuvent ne plus pouvoir être réinitialisées (selon les mémoires les pages peuvent être réinitialisées 3000 à 10000 fois suivant les modéles).
Cahier des charges
En plus de la programmation USB de type « mémoire de masse » vous devrez implanter les dispositifs suivants :
- une table pour repérer les pages hors services ;
- un dispositif de correction d’erreur dans les blocs (vous utiliserez l’algorithme de hamming avec un nombre de bits adapté à la fois au taux d’erreurs de la mémoire et à la fois au nombres d’octets disponibles pour stocker ces bits de correction d’erreur) ;
- un dispositif de réduction d’usure comptant le nombre de réinitialisation des pages et permettant de déplacer des blocs souvent modifiés vers d’autres adresses.
Il est fortement recommandé de simuler tous ces dispositifs sur un PC pour tester tous les éléments avant implantation dans le microcontrôleur.
Du coté matériel vous pourrez vous aider des schémas de clefs sur le Wiki des PeiP. Il est cependant conseillé de passer d’un ATMega16u2 à un ATMega32u4 pour disposer de plus d’E/S et de bus. En effet pour implanter les tables nécessaires au fonctionnement des dispositifs décrits ci-dessus, il est conseillé d’ajouter une mémoire SPI plutôt que d’essayer d’implanter les tables sur la mémoire flash principale.
Implantez aussi des points d’accès USB sur votre clef pour pouvoir obtenir des informations sur la gestion des blocs sur la clef :
- lister les pages hors service ;
- récupérer le nombre d’écritures pour des blocs donnés ;
- récupérer le nombre d’erreurs pour des blocs donnés.
Ecrivez aussi le programme PC permettant de récupérer ces informations pour afficher des statistiques sur la clef.
Cahier des spécifications
Diagramme de Gantt prévisionnel
Liens externes
Lien GitLab :
Présentation projet final :
Rapport final :