Ekstensi Memoire Tuang BeagleBone Black: 8 Langkah
Ekstensi Memoire Tuang BeagleBone Black: 8 Langkah
Anonim
Ekstensi Memoire Pour BeagleBone Black
Ekstensi Memoire Pour BeagleBone Black

Je vous présenter dans cet dapat diinstruksikan un de mes projet qui konsisten piloter des mémoires de différents tipe afin de pouvoir tester leur fonctionnement dans des conditions spasial (enceinte radiative) dan de trouver le taux d'erreurs envirendré par cet. Vous pouvez aussi 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.

Langkah 1: Jenis Quelques De Mémoires

Jenis Quelques De Memoires
Jenis Quelques De Memoires
Jenis Quelques De Memoires
Jenis Quelques De Memoires
Jenis Quelques De Memoires
Jenis Quelques De Memoires

Voici une liste exhaustive des différents types de mémoires utilisés dans ce projet avec leurs avantages and inconvénients:

Jenis de mémoire utama: la mémoire SRAM

La mémoire vive statique (Memori Akses Acak Statis) dan ketik 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 périodiquement. Elle reste cependant volatile: elle ne peut se passer d'alimentation sous peine de voir ses informasi effacées irrémédiablement !

Keuntungan: - la SRAM est rapide (temps d'accès 6 25 ns) - peu coûteuse (4€/Bln). Ketidaknyamanan: - besoin d'être alimenté en permanence pour ne pas perdre ses données, aussi ce type de mémoire memaksakan 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.

Deuxime 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 résistante aux radiations et aux hautes températures. Keuntungan:- la non-volatilité des informations. - inusabilité, puis ce qu'aucun mouvement électrique n'est engage (daya tahan 10^16 siklus kuliah /écriture !). - la conommation électrique est théoriquement moindre puisqu'il n'y a pas de perte thermique karena la résistance des matériaux aux mouvements des électrons. - temps d'accès de 10 nanodetik. - les débits sont de l'ordre du gigabit par seconde. - une excellente résistance aux radiations, omniprésentes dans un milieu spatial. Ketidaknyamanan: - coûteuse (~35€/Mo) car encore en phase de développement (komersialisasi de masse du produit prévue en 2018 !) mais on peut s'en procurer chez komersialisasi sous la marque Everspin.- capacité de stockage est très limitée due aux champs magnétiques qui risquent de perturber les cellules voisines si elles sont trop proches les unes des autres.

Troisime type de mémoire: la mémoire FRAM

La mémoireFRAM (Memori Akses Acak Ferroelektrik) dengan tipe yang tidak mudah menguap encore l'état de recherche et développement.

Elle est similaire la mémoire DRAM laquelle on a ajouté une couche ferro-électrique pour obtenir la non volatilité. En Mei 2011, Texas Instruments lance le premier microcontrôleur memoire FRAM.

Manfaatkan sebaik mungkin 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. Keuntungan: - une plus faible conommation 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 (daya tahan 10^14 siklus kuliah/écritures). Ketidaknyamanan: - des capacités de stockage plus limitées - un coût de fabrikasi plus élevé, ~30€/Bln

Les deux grandes familles de mémoires: Seri (foto 1) et parallèle (foto 2)

Série: les mémoires séries ont pour avantage de permettre un gain de place et de garder la même konfigurasi selon les modèles d'où leur facilité d'intégration. Cependant ces mémoires ne sont pas très rapide 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. Ketik la vitesse d'accès allant de 5 20MHz pada au mieux accès aux bits de données que tous les (1/(20*10⁶))dtk jadi 50 ns par bit (50ns*8= 400ns tuangkan 8 bit). Ce type de mémoire est donc utilisé lorsque le temps d'accès aux données peu d'importance comme lors du chargement d'un BIOS dan pastikan cartes de type FPGA.

Paralel: 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 mampu de récupérer en quelques ms tout le contenu de la mémoire de 1Mo. L'inconvénient est sa kesulitan mobil terpadu les nombreux pins 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 pins de chip 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.

Langkah 2: Memoire Serial FRAM SPI

Memoire Serial FRAM SPI
Memoire Serial FRAM SPI
Memoire Serial FRAM SPI
Memoire Serial FRAM SPI

Cablage 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 memoires parallèles. De plus les datasheet de ces différentes mémoires indiquent que toutes fonctionnent de la même manière. Temukan kemungkinan yang terbaik dari komuter des mémoires de différents modèles sans avoir algoritma programmer de nouveaux.

Pin HOLD dan WP sont reliés 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 teknik disponible 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 program permettant de les piloter.

Langkah 3: Siklus FRAM Serial

Siklus FRAM Serial
Siklus FRAM Serial
Siklus FRAM Serial
Siklus FRAM Serial
Siklus FRAM Serial
Siklus FRAM Serial
Siklus FRAM Serial
Siklus FRAM Serial

Ecriture:

Avant d'écrire dans la mémoire il faut envoyer une trame d'accès L'écriture (WREN) 0000 0110 (0x06h) (Angka Voir 5)Analyse de la trame d'écriture envoyée par MOSI de la Beaglebone SI (Angka Voir 9)

- 8 bit perdana, Op-code de l'écriture (BACA): 0000 0011 (0x03h) - 16 bit adresse, même si cette mémoire n'en considre que 11 car il s'agit d'une mémoire de 16Kb ((2 ^11)*8bits) il faut envoyer 16 bit car cela permettra de pouvoir aussi piloter des mémoires 64Kb. - 8 bit de donnees. Kuliah:

Analyze de la trame de lecture envoyée par MOSI de la Beaglebone SI: (Voir gambar 10)- 8 bit perdana, Op-code de la lecture (MENULIS): 0000 0010 (0x02h) - 16 bit alamat Analisis de la trame de kuliah utusan par SO MISO de la Beaglebone: - 8 bit de données

Langkah 4: Kode Pilotan La Mémoire FRAM

Menuangkan program compiler ce dalam bahasa C: $ gcc program_spi.c –o program spiPour utiliser ce: $./spi add1 add2 data mode

Add1 (MSB) et Add2 (LSB) koresponden chacun 8 bit de donnée, data sesuai 8 bit de données écrire (mettre 0 si kuliah) Mode sesuai l'écriture (= 2) ou la kuliah (= 1).

Contoh pemanfaatan:./spi 150 14 210 2 écrit l'adresse 16 bit 150 14 (0x96h, 0x0Eh) la donnée 210 (0xD2).

./spi 150 14 0 1 lit l'adresse150 14 (0x96j, 0x0Eh)

Langkah 5: Memoire Parralèle

Memoire Parralèle
Memoire Parralèle
Memoire Parralèle
Memoire Parralèle
Memoire Parralèle
Memoire Parralèle
Memoire Parralèle
Memoire Parralèle

Tuang ce projet j'ai utilisé la mémoire SRAM ALLIANCE AS6C1008 128Kb * 8 bit (voir schéma)

Konfigurasi du boitier: 17 Alamat: 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 pins 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é !)

Perhatian:Vous vous demandez sans doute pourquoi j'ai sauté sures GPIO dans les lignes d'adresses et data, c'est tout simplement que ces GPIO sont alloués l'EMMC presentasi sur la BBB et que malgré mes recherches je n'ai jamais réussi utiliser correction (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 teknik disponible 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 avec notre program (si correctement câblé:))Cependant les temps entre les cycles peuvent varier d'une mémoire une autre, le cycle le plus long (100ns) des utilmisémonire s'adaptera toutes les mémoires. Ainsi les temps d'écriture dan kuliah minimum pemberitahuan par les constructeurs ne seront jamais atteints car imposés 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 pengubah l'état des GPIOs. La base du code est celle qui permet de faire clignoter une LED en ajoutant des temporisations tepat koresponden aux durées des cycles imposées par le constructeur. En effet l'action de faire clignoter une LED sesuai dengan siklus d'état haut et bas tuangkan les GPIOs.

Le cycle de lecture quant lui constant en la récupération de l'état des GPIO, comme pour détecter l'état d'un bouton poussoir.

Langkah 6: Siklus Memoire Parralèle

Siklus Memoire Parralèle
Siklus Memoire Parralèle
Siklus Memoire Parralèle
Siklus Memoire Parralèle
Siklus Memoire Parralèle
Siklus Memoire Parralèle
Siklus Memoire Parralèle
Siklus Memoire Parralèle

Siklus d'écriture (voir gambar 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 aktifkan CE l'état haut et l'instruction Tulis aktifkan WE. Une fois cela effectuer mettre les pins des données aux valeurs souhaitées et le tour est joué (Perhatikan tout de même bien honorer les temporisations ! ~100ns)

Siklus kuliah (voir gambar 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 aktifkan CE l'état haut et l'instruction Output aktifkan OE. Une fois cela effectué on récupère sur les entrée GPIO de la BeagleBone les valeurs se trouvant cette adresse.

Langkah 7: Kode Pilotan La Memoire Parraléle

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

kompilasi: $ gcc -lm program_memoire.c -o memoire

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

mode: 1 Ceramah, 2 Ecriture

Kode étant créer pour piloter deux mémoires il y a deux "slot", mettre 1 pour utiliser.

Contoh: $./memoire 120 140 20 210 2 1 0

écrit l'adresse 120 140 (hex 16 bit) les données 20 210 sur la mémoire sur le slot 1.

Contoh: $./memoire 120 140 0 0 1 1 1

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

Langkah 8: Dukung Tuangkan Memoires

Dukung Tuangkan Memoires
Dukung Tuangkan Memoires
Dukung Tuangkan Memoires
Dukung Tuangkan Memoires
Dukung Tuangkan Memoires
Dukung Tuangkan Memoires
Dukung Tuangkan Memoires
Dukung Tuangkan Memoires

Je vous fournit dans les photos les PCB de support mémoire sur lequel vous pourrez vous inspirator pour vos réalisations. Si vous voulez réaliser un système de mémoire yang dapat dipertukarkan comme moi veillez bien koreksi kabel vos mémoires en toujours le même ordre pour les pins.

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