Table des matières:
- Étape 1: Quelques Types De Mémoires
- Étape 2: Mémoire série FRAM SPI
- Étape 3: Cycles FRAM série
- Étape 4: Code Pilotant La Mémoire FRAM
- Étape 5: Mémoire Parralèle
- Étape 6: Cycles Mémoire Parralèle
- Étape 7: Code Pilotant La Mémoire Parralèle
- Étape 8: Soutenez Pour Mémoires
Vidéo: Extension Mémoire Pour BeagleBone Black : 8 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
Je vous présente dans cet instructable un de mes projet qui consistait à piloter des mémoires de différents types afin de pouvoir tester leur fonctionnement dans des conditions spatiales (enceinte radiative) et de trouver le taux d'erreurs engendré par cet environnement pour chaque type de mémoire Vous pouvez également utiliser les données de ce projet pour étendre la mémoire de votre BeagleBone, créer une clé USB ou simplement pour étudier leur fonctionnement.
Étape 1: Quelques Types De Mémoires
Voici une liste exhaustive des différents types de mémoires utilisés dans ce projet avec leurs avantages et inconvénients:
Premier type de mémoire: la mémoire SRAM
La mémoire vive statique (ou Static Random Access Memory) est un type de mémoire vive utilisant des bascules pour mémoriser les données. Contrairement à la mémoire dynamique, son contenu n'a pas besoin d'être rafraîchit temporairement. Elle reste cependant volatile: elle ne peut se passer d'alimentation sous peine de voir ses informations effacées irrémédiablement !
Avantages: - la SRAM est rapide (temps d' 6 à 25 ns) - accès peu surveillé (4€/Mo). d'ajouter à notre carte mémoire un moyen de l'alimenter en permanence. Le moyen trouvé est d'ajouter un super condensateur Cellergy pouvant alimenter la mémoire pendant une journée.
Deuxième type de mémoire: la mémoire MRAM
La mémoire vive statique magnétique (Magnetic Random Access Memory) stocke les données sans avoir besoin d'être alimentée. Le changement d'état se fait en changeant l'orientation polaire des électrons (par effet tunnel notamment). Elle est très efficace aux radiations et aux hautes températures. Avantages:- la non-volatilité des informations. - inusabilité, puis ce qu'aucun mouvement électrique n'est engagé (endurance de 10^16 cycles lecture /écriture !). - la consommation électrique est théoriquement moindre puisqu'il n'y a pas de perte thermique due à la résistance des matériaux aux mouvements des électrons. - temps d'accès de 10 nanosecondes. - les débits sont de l'ordre du gigabit par seconde. - une excellente résistance aux radiations, omniprésentes dans un milieu spatial. Inconvénients: - signaler (~35€/Mo) car encore en phase de développement (commercialisation de masse du produit prévu en 2018 !) mais on peut s'en acheter chez Digikey commercialisé sous la marque Everspin.
Troisième type de mémoire: la mémoire FRAM
La mémoireFRAM (Ferroelectric Random Access Memory) est un type de mémoire d'ordinateur non volatile encore à l'état de recherche et de développement.
Elle est similaire à la mémoire DRAM à laquelle on a ajouté une couche ferro-électrique pour obtenir la non-volonté. En mai 2011, Texas Instruments lance le premier microcontrôleur à mémoire FRAM.
Leur utilisation est destinée au SSD (Solid State Drive), comme pour les autres mémoires non volatiles, les données n'ont pas besoin d'énergie pour être conservées. Avantages: - une plus faible consommation d'électricité. - une plus grande rapidité de lecture et d'écriture (temps d'accès de 100 nanosecondes contre 1 microseconde pour la mémoire flash). - la possibilité d'être effacée et réécrite un bien plus grand nombre de fois (endurance de 10^14 cycles lectures/écritures). Inconvénients: - des capacités de stockage plus limitées - un coût de fabrication plus élevé, ~30€/Mo
Les deux grandes familles de mémoires: Série (photo 1) et parallèle (photo 2)
Série: les mémoires séries ont pour avantage de permettre un gain de place et de garder la même configuration les modèles d'où leur facilité d'intégration. Cependant, ces mémoires ne sont pas très rapides car la trame entière (type d'opération, adresse, données…) doit être reçue avant d'enregistrer ou accéder à la donnée. Typiquement la vitesse d'accès allant de 5 à 20MHz sur au mieux accès aux bits de données que tous les (1/(20*10⁶))sec soit 50 ns par bits (50ns*8= 400ns pour 8 bits). Ce type de mémoire est utilisé lorsque le temps d'accès aux données à peu d'importance comme lors du chargement d'un BIOS dans certaines cartes de type FPGA.
Parallèle: Les mémoires parallèles sont très utilisées dans tous les domaines allant de la RAM pour ordinateur à la clé USB. Ce type de mémoire est beaucoup plus rapide que la mémoire SPI car en un coup d'horloge il permet d'accéder aux informations, nous sommes donc capables de récupérer en quelques ms tout le contenu de la mémoire de 1Mo. L'inconvénient est sa difficulté à regrouper les nombreuses broches qui diffèrent d'un modèle à l'autre et la taille du boîtier est plus grande.
Pour accéder à plusieurs en mémoire en même temps, nous devons jouer sur les broches de puce enable (CE) des mémoires afin d'indiquer à laquelle nous voulons accéder (voir schéma). Le schéma est valable pour les deux types de mémoires seul change le moyen d'accès aux données et adresses.
Étape 2: Mémoire série FRAM SPI
Câblage de la BeagleBone à la mémoire:Reliés au 3.3V: VDD, HOLD, WP A la masse: VSS MISO relié à SO MOSI relié à SI CS relié à CS
NB: L'avantage de ce type de mémoire SPI est que, peu importe le modèle ou la marque du fabricant de semi-conducteurs, la configuration du boîtier reste la même ce qui n'est pas le cas des autres types de mémoires comme les mémoires parallèles. De plus les datasheet de ces différents mémoires disent que toutes fonctionnent de la même manière. Ainsi il est possible de commuter des mémoires de différents modèles sans avoir à programmer de nouveaux algorithmes.
Les broches HOLD et WP sont reliées au 3.3V: si cela empêche l'utilisateur d'utiliser ces fonctionnalités, cela permet de faciliter la programmation. Cependant ces fonctionnalités auraient été utiles si l'on avait plusieurs mémoires SPI à piloter !
Afin de piloter la mémoire il faut d'abord étudier sa fiche technique disponible à l'adresse suivante:
This fiche technique indique les différents cycles nécessaires pour lire et écrire dans la mémoire et ainsi réaliser un programme permettant de les piloter.
Étape 3: Cycles FRAM série
Ecriture:
Avant d'écrire dans la mémoire il faut envoyer une trame d'accès à L'écriture (WREN) 0000 0110 (0x06h) (Voir figure 5)Analyse de la trame d'écriture demandée par MOSI de la Beaglebone à SI (Voir figure 9)
- 8 premiers bits, Op-code de l'écriture (READ): 0000 0011 (0x03h) - 16 bits adresse, même si cette mémoire n'en utilise que 11 car il s'agit d'une mémoire de 16Kb ((2 ^11)*8bits) il faut envoyer 16 bits car cela permettra de pouvoir aussi piloter des mémoires 64Kb. - 8 bits de données. Conférence:
Analyse de la trame de lecture appliquée par MOSI de la Beaglebone à SI: (Voir figure 10) - 8 premiers bits, Op-code de la lecture (WRITE): 0000 0010 (0x02h) - 16 bits adresse Analyse de la trame de lecture transmis par SO à MISO de la Beaglebone: - 8 bits de données
Étape 4: Code Pilotant La Mémoire FRAM
Pour compiler ce programme en langage C: $ gcc programme_spi.c –o spiPour utiliser ce programme: $./spi add1 add2 data mode
Add1 (MSB) et Add2 (LSB) correspondant chacun à 8 bits de donnée, data correspond à 8 bits de données à écrire (mettre 0 si lecture) Mode correspond à l’écriture (= 2) ou la lecture (= 1).
Exemple d'utilisation:./spi 150 14 210 2 écrit à l'adresse 16 bits 150 14 (0x96h, 0x0Eh) la donnée 210 (0xD2).
./spi 150 14 0 1 lit à l'adresse150 14 (0x96h, 0x0Eh)
Étape 5: Mémoire Parralèle
Pour ce projet j'ai utilisé la mémoire SRAM ALLIANCE AS6C1008 128Kb * 8 bits (voir schéma)
Configuration du boitier: 17 Adresses: A0-A16 8 Data: D0-D7 2 Chip Enable: CE#-CE2 2 Write et Output Enable: WE#-OE# 2 VCC (3.3V), VSS (GND) 1 non connecté: NC
NB: La disposition des épingles varie grandement d'un modèle à un autre ainsi que les temps de lecture / écriture
Pour le câblage à la BeagleBone voir schéma (Un réel plaisir à débugger où lorsque l'on à mal câblé !)
Attention:Vous vous demandez sans doute pourquoi j'ai sauté certaines GPIO dans les lignes d'adresses et data, c'est tout simplement que ces GPIO sont payés à l'EMMC présent sur la BBB et que malgré mes recherches je n'ai jamais réussi à utiliser correctement (me faisant perdre au passage 2 semaines car je pensais la mémoire défectueuse alors que certains GPIO ne fonctionnaient simplement pas !)
Afin de piloter la mémoire il faut d'abord étudier sa fiche technique disponible à l'adressesuivante:
This fiche technique indique les différents cycles nécessaires pour lire et écrire dans la mémoire et ainsi réaliser notre programme. Afin d'écrire dans la mémoire il faut respecter le cycle imposé par les constructeurs, qui sont tous les mêmes pour chacun des mémoires utilisés. Ainsi n'importe quelle mémoire 64Kb peut fonctionner avec notre programme (si correctement câblé:)) s'adaptera à toutes les mémoires. Ainsi les temps d'écriture et les lectures minimales annoncées par les constructeurs ne seront jamais reçues par la mémoire la plus lente. La durée des cycles est définie dans le code. Le seul moyen d'aller d'atteindre la vitesse maximale et de programmer les cycles pour une mémoire en particulier avec les temps minimaux. Le cycle d'écriture revient à modifier l'état des GPIOs. La base du code est celle qui permet de faire clignoter une LED en ajoutant des temporisations précises correspondant aux durées des cycles imposés par le constructeur. En effet l'action de faire clignoter une LED correspond à la création de cycles d'état haut et bas pour les GPIOs.
Le cycle de lecture quant à lui consiste en la récupération de l’état des GPIO, comme pour détecter l’état d’un bouton poussoir.
Étape 6: Cycles Mémoire Parralèle
Cycle d'écriture (voir figure 1, 2):
Pour écrire dans la mémoire il suffit de mettre les broches d'adresse aux valeurs souhaitées puis d'activer les entrées chip enable CE à l'état haut et l'instruction Write enable WE. Une fois cela effectuera mettre les pins des données aux valeurs souhaitées et le tour est joué (Mais attention tout de même à bien respecter les temporisations ! ~100ns)
Cycle de lecture (voir figure 3, 4):
Pour écrire dans la mémoire il suffit de mettre les broches d'adresse aux valeurs souhaitées puis d'activer les entrées chip enable CE à l'état haut et l'instruction Output enable OE. Une fois cela effectué on récupère sur les entrées GPIO de la BeagleBone les valeurs se trouvent à cette adresse.
Étape 7: Code Pilotant La Mémoire Parralèle
Ce code permet de piloter 2 mémoires parallèles indépendamment l'une de l'autre et s'utilise comme ceci:
compilation: $ gcc -lm programme_memoire.c -o memoire
$./memoire add 1 add 2 data1 data2 mode slot1 slot2
mode: 1 Conférence, 2 Ecriture
Le code étant créer pour piloter deux mémoires il y a deux "slots", mettre à 1 pour utiliser.
Ex: $./mémoire 120 140 20 210 2 1 0
écrit à l'adresse 120 140 (hex 16 bits) les données 20 210 sur la mémoire sur le slot 1.
Ex: $./mémoire 120 140 0 0 1 1 1
allumé à l'adresse 120 140 les données sur la mémoire du slot 1 et 2.
Étape 8: Soutenez Pour Mémoires
Je vous fournis dans les photos les PCB de support mémoire sur lequel vous pourrez vous inspirer pour vos réalisations. Si vous voulez réaliser un système de mémoire interchangeable comme moi veillez bien à câbler correctement vos mémoires en utilisant toujours le même ordre pour les broches.
Si vous avez des questions remarques n'hésitez pas à tout avis est le bienvenu, en espérant vous avoir aidé !
Conseillé:
Premiers pas avec BeagleBone Black : 11 étapes
Premiers pas avec BeagleBone Black : Après avoir utilisé Arduino pendant un certain temps, j'ai décidé d'essayer Beaglebone Black. Voyant le manque de contenu sur Instructables et ayant quelques difficultés à démarrer moi-même, je voulais aider d'autres personnes à s'installer avec BeagleBone Black
Contrôle Web Beaglebone Black à l'aide de WebPy : 6 étapes
Contrôle Web Beaglebone Black à l'aide de WebPy: Vous avez toujours voulu créer un moyen de contrôler votre porte de garage à l'aide de votre téléphone, peut-être collecter des données et les afficher à partir de votre ordinateur portable. Il existe un ordinateur monocarte appelé Beaglebone Black, un appareil extrêmement puissant qui vous permet de contrôler i
Barrette d'alimentation intelligente basée sur Beaglebone Black et OpenHAB : 7 étapes (avec photos)
Barrette d'alimentation intelligente basée sur Beaglebone Black et OpenHAB : !!!!! Jouer avec le secteur (110/220V) est dangereux, soyez TRÈS TRÈS prudent !!!!! Il existe des conceptions de multiprises intelligentes basées sur le "Raspberry Pi" et deux Arduinos, qui est montré dans l'image "Ancien design".Ce nouveau de
Convertissez votre iPod de 4e génération pour utiliser la mémoire flash : 6 étapes (avec photos)
Convertissez votre iPod de 4e génération pour utiliser la mémoire flash : Nous avons tous ou connaissons quelqu'un qui a un iPod avec un disque dur mort. Bien sûr, vous pouvez simplement acheter un autre lecteur, mais vous revenez au même support rotatif fragile, énergivore et sujet aux pannes. Au lieu de cela, mettez à niveau votre iPod pour utiliser la mémoire flash. Su
Convertissez votre vidéo iPod de 5e génération pour utiliser la mémoire flash ! : 6 étapes (avec images)
Convertissez votre vidéo IPod de 5e génération pour utiliser la mémoire flash ! Eh bien, vous pouvez ! Remarque : Certaines des instructions sont très similaires (sinon les mêmes) que les autres