Cuprins:

Extension Mémoire Pour BeagleBone Black: 8 pași
Extension Mémoire Pour BeagleBone Black: 8 pași

Video: Extension Mémoire Pour BeagleBone Black: 8 pași

Video: Extension Mémoire Pour BeagleBone Black: 8 pași
Video: Создание приложений для мобильных устройств, игр, Интернета вещей и многого другого с помощью AWS DynamoDB, Рик Хулихан 2024, Iulie
Anonim
Extension Mémoire Pour BeagleBone Black
Extension Mémoire Pour BeagleBone Black

Je vous présenter dans cet instructable un de mes projet qui consistait à piloter des mémoires de different types afin de pouvoir tester leur functionation in des conditions spatiales (enceinte radiative) și de a găsi nivelurile de eroare implicate pentru acest mediu pentru fiecare tip de memorie. Vous poate folosi și datele de proiect pentru a-ți aminti memoria dvs. de BeagleBone, să creezi un clé USB sau să studiezi simplu funcționarea lor.

Pasul 1: Quelques Types De Mémoires

Quelques Types De Mémoires
Quelques Types De Mémoires
Quelques Types De Mémoires
Quelques Types De Mémoires
Quelques Types De Mémoires
Quelques Types De Mémoires

Voici o listă exhaustivă a diferitelor tipuri de memorii utilizate în acest proiect cu avantaje și inconveniente:

Premier type de mémoire: la mémoire SRAM

La mémoire vive statique (ou Static Random Access Memory) este un tip de memorie viu folosind bazele pentru memorarea datelor. Contrairement à la mémoire dynamique, son content n’a pas besoin d’être rafraîchit périodiquement. Elle reste cependant volatile: elle ne peut se passer d'alimentation sous peine de voir ses informations effacées irrémédiablement!

Avantaje: - SRAM este rapid (timp de acces 6 la 25 ns) - peu coûteuse (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 effect tunnel notamment). Elle est très résistante aux radiations și aux hautes températures. Avantaje: - non-volatilitatea informațiilor. - inusabilité, puis ce qu’aucun mouvement électrique n'est engagé (endurance de 10 ^ 16 cycles lecture / écriture!). - consumația electrică este teoretic moină atunci când nu există un perte termic datorită rezistenței materialelor pentru mișcările electronice. - temps d’accès de 10 nanosecunde. - 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: - coûteuse (~ 35 € / Mo) car encore en phase de développement (commercialization de masse du produit prévue en 2018!) mais on peut s'en procurer chez Digikey comercializat sub marca Everspin.- capacitate de stocare este foarte limitată datorită câmpurilor magnetice care riscă de perturberea celulelor voisine și ele sunt prea apropiate unele dintre altele.

Troisième type de mémoire: la mémoire FRAM

La mémoireFRAM (Ferroelectric Random Access Memory) este un tip de memorie de ordinator non volatile încă la statutul de căutare și dezvoltare.

Elle is similar to the mémoire DRAM à which on a added a couche ferro-electric pour obtenir the non volatilité. În mai 2011, Texas Instruments lance le premier microcontrôleur à mémoire FRAM.

Utilizarea lor este destinată SSD (Solid State Drive), precum și pentru alte memorii non-volatile, datele nu au nevoie de energie pentru a fi conservate. Avantaje: - 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é de être effacée et réécrite un bien plus grand nombre de fois (endurance de 10 ^ 14 cycles lectures / écritures).

Les deux grandes familles de mémoires: Série (foto 1) și paralelă (foto 2)

Série: les mémoires séries ont pour avantage de permettre un gain de place și de garder la même configuration selon les modèles d'où leur facilité d'intégration. Cependant ces mémoires ne sont pas très rapide car the trame entière (type d'opération, adresse, data …) trebuie să fie reçu înainte de înregistrare sau să acceseze la datée. Typiquement la vitesse d’accès allant de 5 à 20MHz on à mieux access aux bits de data that tous les (1 / (20 * 10⁶)) sec soit 50 ns par bits (50ns * 8 = 400ns pour 8 bits). Ce type de mémoire este așadar folosit atunci când timpurile de acces la date la peu importance comme lors du chargement d'un BIOS în unele cărți de tip FPGA.

Parallèle: Les mémoires parallèles are très utilisées in tous les domaines allant de la RAM pour computer to the clé USB. Ce type de mémoire est beaucoup plus rapide that the memory SPI car într-un coup d'horloge il permet d'accéder aux informations, nous sommes donc capable de récupérer in quelques ms tout the content of the mémoire de 1Mo. L'inconvénient est sa difficulté to intégrer car the many pins diffèrent d'un model à 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 pins de chip enable (CE) des mémoires afin d'indiquer à cui 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 and adresses.

Pasul 2: Mémoire Serial FRAM SPI

Mémoire Serial FRAM SPI
Mémoire Serial FRAM SPI
Mémoire Serial FRAM SPI
Mémoire Serial FRAM SPI

Câblage de la BeagleBone à la mémoire: Reliés au 3.3V: VDD, HOLD, WP A the masse: VSS MISO relié à SO MOSI relié à SI CS relié à CS

NB: L'avantage de ce type de mémoire SPI este că, puțin importat modelul sau marca du fabricant de semiconductori, configurația dublă rămâne la fel ce nu este casul celorlalte tipuri de memorii precum cele mémoires parallèles. De plus les datasheet de ces différentes mémoires indicent care toate funcționează de la aceeași manieră. Ainsi il est possible de commuter des mémoires de diverse modèles sans avoir à programmer de nouveaux algorithmes.

Les pins HOLD et WP sont reliés au 3.3V: dacă asta empêche l’utilisateur d’utiliser ces fonctionnalités, cela permite facilitarea programării. Cependant ces functionnalités auraient been utiles si l’on avait multiple mémoires SPI à piloter!

Afin de piloter la mémoire il faut d’abord étudier sa fiche technique available à l’adresse suivante:

Cette 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 la piloter.

Pasul 3: Ciclează seria FRAM

Cicluri Seriale FRAM
Cicluri Seriale FRAM
Cicluri Seriale FRAM
Cicluri Seriale FRAM
Cicluri Seriale FRAM
Cicluri Seriale FRAM
Cicluri Seriale FRAM
Cicluri Seriale FRAM

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) Analyze de la trame d'écriture envoyée par MOSI de la Beaglebone à SI (Voir figure 9)

- 8 premiers bits, Op-code de l'écriture (READ): 0000 0011 (0x03h) - Adresă de 16 biți, chiar și această memorie nu are în vedere că 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 biți de date. Lectura:

Analyze de la trame de lecture envoyée par MOSI de la Beaglebone à SI: (Voir figure 10) - 8 premiers bits, Op-code de la lecture (WRITE): 0000 0010 (0x02h) - 16 bits adresă Analyze de la trame de lecture trimis prin SO à MISO de la Beaglebone: - 8 biți de date

Pasul 4: Cod Pilotant La Mémoire FRAM

Pour compiler ce program en langage C: $ gcc program_spi.c –o spiPour folosi acest program: $./spi add1 add2 data mode

Add1 (MSB) et Add2 (LSB) correspondent 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)

Pasul 5: Mémoire Parralèle

Mémoire Parralèle
Mémoire Parralèle
Mémoire Parralèle
Mémoire Parralèle
Mémoire Parralèle
Mémoire Parralèle
Mémoire Parralèle
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 and Output Enable: WE # -OE # 2 VCC (3.3V), VSS (GND) 1 non connecté: NC

NB: La disposition des pins varie grandement d'un model à un autre ainsi que les temps de lecture / écriture

Pour le câblage à la BeagleBone voir schéma (Un réel plaisir à debugger où when l'on à mal câblé!)

Attention: Vous vous demandez sans doute pourquoi j'ai sauté certains GPIO dans les lignes d'adresses and data, c'est tout simplement que ces GPIO sont alloués à l'EMMC prezent pe BBB și pe care le-ați încercat mai multe jamais réussi à utiliser correctement (me faisant perdre au passage 2 semaines car je pensais la mémoire défectueuse alors that certain GPIO ne fonctionnaient simplement pas!)

Afin de piloter la mémoire il faut d’abord étudier sa fiche technique available to l’adressesuivante:

Cette fiche technique indique les différents cycles nécessaires pour lire et écrire dans la mémoire et ainsi réaliser notre program. Afin d’écrire dans la mémoire il faut respecter le cycle imposé par les constructeurs, qui sont tous les mêmes pour chacune des mémoires utilisées. Ainsi n'importe quelle mémoire 64Kb peut fonctionner with our program (si correctement câblé:)) Cependant les temps entre les cycles can varier d'une mémoire à une autre, le cycle le plus long (100ns) des mémoires utilisées étant retenu car il s'adaptera à toutes les mémoires. Ainsi les temps d’écriture et lecture minimums annoncés par les constructeurs ne will never atteints car imposés par la mémoire la plus lente. La durée des cycles este definit în cod. 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 à modificator l’état des GPIOs. La base du code est celle qui permet de faire clignoter une LED în adăugată de temporizări precise corespondent pentru duratele ciclurilor impuse prin constructor. En effet l’action de faire clignoter une LED correspond à la création de cycles d’état haut și bas pour les GPIOs.

Le cycle de lecture quant à lui consiste în récupération de l’état des GPIO, comme pour détecter l’état d’un bouton poussoir.

Pasul 6: Cicluri Mémoire Parralèle

Cycles Mémoire Parralèle
Cycles Mémoire Parralèle
Cycles Mémoire Parralèle
Cycles Mémoire Parralèle
Cycles Mémoire Parralèle
Cycles Mémoire Parralèle
Cycles Mémoire Parralèle
Cycles Mémoire Parralèle

Ciclul de ecran (vezi figurile 1, 2):

Pour écrire dans la mémoire il suffit de mettre les pins d'adresse aux valeurs souhaitées puis d'activer les entrées chip enable CE à l'état haut și l'instruction Write enable WE. Une fois cela effectuer mettre les pins des data aux valeurs souhaitées et le tour est joué (Mais attention tout de même à bien respecter les temporisations! ~ 100ns)

Ciclul de curs (vezi figurile 3, 4):

Pour écrire dans la mémoire il suffit de mettre les pins d'adresse aux valeurs souhaitées puis d'activer les entrées chip enable CE à l'état haut și l'instruction Output enable OE. Une fois cela effectué on récupère sur les entrée GPIO de la BeagleBone les valeurs se găsește în această adresă.

Pasul 7: Code Pilotant La Memoire Parraléle

Ce code permet de piloter 2 mémoire parallèles indépendamment l'une de l'autre et s'utilise comme ceci:

compilație: $ gcc -lm program_memoire.c -o memoire

$./memoire add 1 add 2 data1 data2 mode slot1 slot2

mod: 1 Lectură, 2 Ecriture

Le code étant create pour piloter deux mémoires il y a deux "slots", mettre à 1 pour utiliser.

Ex: $./memoire 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: $./memoire 120 140 0 0 1 1 1

lit à l'adresse 120 140 le données sur la mémoire du slot 1 et 2.

Pasul 8: Sprijiniți Pour Mémoires

Suportă Pour Mémoires
Suportă Pour Mémoires
Suportă Pour Mémoires
Suportă Pour Mémoires
Suportă Pour Mémoires
Suportă Pour Mémoires
Suportă Pour Mémoires
Suportă Pour Mémoires

Veți furniza în fotografiile PCB-ul de suport pentru memoria dvs. pe care o veți inspira pentru realizări. Si tu voulez réaliser un système de mémoire interchangeable comme moi veillez bien à câbler correctement vos mémoires en using always the même ordre pour les pins.

Si tu avez des questions remarques n'hésitez pas tout avis est le bienvenu, en espérant vous avoir aidé!

Recomandat: