INHOUDSOPGAWE:
- Stap 1: Quelques Types De Mémoires
- Stap 2: Mémoire Serial FRAM SPI
- Stap 3: Serial FRAM -siklusse
- Stap 4: Kode Pilotant La Mémoire FRAM
- Stap 5: Mémoire Parralèle
- Stap 6: Fietse Mémoire Parralèle
- Stap 7: Code Pilotant La Memoire Parraléle
- Stap 8: Ondersteun Pour Mémoires
Video: Uitbreiding Mémoire Pour BeagleBone Black: 8 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:26
Je vous présenter dans cet instructable un de mes projet qui consistait à piloter des mémoires de différents types afin de pouvoir tester leur fonctionnement in des conditions spatiales (enceinte radiative) et de trouver le taux d'erreurs engendré par cet omgewing vir chaque tipe de memoire. 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.
Stap 1: Quelques Types De Mémoires
Voici une list exhaustive des différents types of mémoires utilices in ce projet avec leurs avantages and inconvénients:
Premier tipe geheue: la mémoire SRAM
La mémoire vive statique (ou statiese ewekansige toegang geheue) is un type of the mémoire vive utilizing 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 information effacées irrémédiablement!
Voordele: - la SRAM est rapide (temps d'accès 6 à 25 ns) - peu coûteuse (4 €/Ma). Invonente: - besoin d'être alimenté en permanence pour ne pas perdre ses données, aussi ce type de mémoire impos 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 résistante aux radiations et aux hautes températures. Voordele:- la non-volatilité des information. - inusabilité, puis ce qu’aucun mouvement électrique n'est engagementé (uithouvermoë van 10^16 siklusse lesing /é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 mouences des électrons. - temps d'accès de 10 nanosekondes. - 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 at Digikey commercialisé 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.
Troisième type de mémoire: la mémoire FRAM
La mémoireFRAM (Ferroelectric Random Access Memory) is 'n tipe nie -vlugtige geheue vir die recherche en ontwikkeling.
Elle est similaire à la mémoire DRAM à laquelle on ajouté une couche ferro-électrique pour obtenir la non volatilité. In Mei 2011 het Texas Instruments 'n vooraanstaande mikrobeheer in FRAM gemaak.
Die gebruik kan op SSD (Solid State Drive) gebruik word, en dit kan ook nie -vlugtige produkte bevat. Voordele: - 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 (foto 1) en parallèle (foto 2)
Série: les mémoires kan vir avantage de permettre un gain the place en die 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 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 op à 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 donc utilisé lorsque le temps d'accès aux données à peu d'importance comme lors du chargement d'un BIOS in certaines cartes de type FPGA.
Parallelle: Die geheue van parallelle kan ook gebruik word in alle domeine wat die geheue van die USB vir 'n ordinateur kan toelaat. 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 information, nous sommes donc capable de récupérer en quelques ms tout le contenu de la mémoire de 1Mo. Dit is 'n moeilike manier om 'n intellektuele motor met 'n ander styl te kenne as 'n ander model en 'n klein stert van die boete.
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 adressen.
Stap 2: Mémoire Serial FRAM SPI
Câblage de la BeagleBone à la mémoire: Reliés au 3.3V: VDD, HOLD, WP A 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. Die plus les datasheet de ces différentes mémoires indiquent que toutes fonctionnent de la même manière. Dit is ook moontlik dat die pendelaars van verskillende modelle sonder 'n nuwe programmeerder kan werk.
Les pins HOLD en WP sont reliés au 3.3V: si cela empêche l'utilisateur d'utiliser ces fonctionnalités, cela permet de faciliter la programme. 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:
Cette fiche technique indique les différents cycles nécessaires pour lire et écrire dans la mémoire en ainsi réaliser un program permettant de les piloter.
Stap 3: Serial FRAM -siklusse
Ekrituur:
Avant d'écrire dans la mémoire il faut envoyer une trame d'accès à L'écriture (WREN) 0000 0110 (0x06h) (Voir figuur 5) Analiseer die la trame d'écriture envoyée par MOSI de la Beaglebone à SI (Voir figuur 9)
- 8 premiers bits, Op -code de l'écriture (READ): 0000 0011 (0x03h) - 16 bits address, même si cette mémoire n'en considère que 11 car il s'agit d'une mémoire de 16Kb ((2 ^11)*8bits) il faut gesant 16 bits car cela permettra de pouvoir aussi piloter des mémoires 64Kb. - 8 stukke données. Lesing:
Ontleed die geskenk van die lesers by MOSI de la Beaglebone à SI: (Voir figuur 10)- 8 premiere stukkies, Op-kode de la lecture (SKRYF): 0000 0010 (0x02h)- 16 bits adresse Analise de la trame de lecture gesant by SO à MISO de la Beaglebone: - 8 stukkies données
Stap 4: Kode Pilotant La Mémoire FRAM
Gee die samesteller se program en langage C: $ gcc program_spi.c –o spiPour utiliser ce program: $./spi add1 add2 data mode
Add1 (MSB) et Add2 (LSB) korrespondent kan 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).
Voorbeeld van gebruik:./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)
Stap 5: Mémoire Parralèle
Giet ce projet j'ai utilisé la mémoire SRAM ALLIANCE AS6C1008 128Kb * 8 bits (voir schéma)
Bo-konfigurasie: 17 Adresse: 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
LET WEL: La disposition des pins varie grandement d'un modèle à un autre ainsi que les temps de lecture / écriture
Giet le câblage à la BeagleBone voir schéma (Un réel plaisir à débugger où lorsque l'on à mal câblé!)
Aandag: Vous vous demandez sans doute pourquoi j'ai sauté certains GPIO dans les lignes d'adresses et data, c'est tout simplement que ces GPIO sont alloués à l'EMMC present on la BBB and que malgré mes recherches je n'ai jamais réussi à utiliser correctment (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:
Cette fiche technique indique les différents cycles nécessaires pour lire et écrire dans la mémoire en 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 different 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 advertés 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 en die programmeerder les cycles pour une mémoire en particulier avec les temps minimaux. Le cycle d'écriture revient à modifier l'état des GPIOs. Die basiese kode is 'n unieke funksie en 'n LED vir 'n tydsberekening wat die korrespondent aux durées des cycles imposées par le constructeur kan aanneem. Die effektiwiteit van die LED -lampe stem ooreen met die siklusse van die huidige en basiese gebruik van GPIO's.
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.
Stap 6: Fietse Mémoire Parralèle
Cycle d'écriture (voir figuur 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 et l'instruction Write enable WE. Une fois cela effectuer 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 figuur 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 et l'instruction Output aktiveer OE. Une fois cela effectué on récupère sur les entrée GPIO de la BeagleBone les valeurs se trouvant à cette adresse.
Stap 7: Code Pilotant La Memoire Parraléle
Ce code permet de piloter 2 mémoire parallèles indépendamment l'une de l'autre en s'utilise comme ceci:
samestelling: $ gcc -lm program_memoire.c -o memoire
$./memoire voeg 1 by 2 voeg 2 data1 data2 modus slot1 gleuf2
modus: 1 lesing, 2 lesings
Le code étant créer pour piloter deux mémoires il y a deux "slots", mettre à 1 pour utiliser.
Byvoorbeeld: $./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.
Byvoorbeeld: $./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.
Stap 8: Ondersteun Pour Mémoires
U kan vier foto's en foto's van die PCB ondersteun om u te help met inspirasie vir heropleidings. Si vous voulez réaliser un système de mémoire verwisselbare comme moi veillez bien à câbler correctement vos mémoires en utilisant toujours le même ordre pour les pins.
Si vous avez des questions remarques n'hésitez pas tout avis est le bienvenu, en espérant vous avoir aidé!
Aanbeveel:
Meting van fyn deeltjies (uitbreiding): 3 stappe
Draagbare meting van fyn deeltjies (uitbreiding): doelstelling: byvoeging van 'n CO2 -sensor Verbeterde leesbaarheid van die program Opening van die program vir ander soorte sensors. Hierdie projek volg op nog 'n projek wat reeds gepubliseer is. Dit beantwoord vrae wat lesers stel. 'N Bykomende sensor is
Uitbreiding vir watter DJ -sagteware u ook al wil hê: 6 stappe
Uitbreiding vir watter DJ -sagteware u ook al wil hê !: Nie almal kan net op die eerste dag van DJ begin nie, en daar word verwag dat al die mengers en draaitafels en hot cues -pad gereed is op dag een, maar laat ons regtig hier wees: meng op 'n skootrekenaar is suig. Dit is waarvoor dit bedoel is om al u finansiële bekommernisse op te los
Flexibele uitbreiding van die Oculus -sensorstandaard: 7 stappe
Flexibele uitbreiding van die Oculus -sensorstandaard: Einde verlede jaar het ek die monitors op my rekenaar opgegradeer na twee taamlik mooi 27 " 2K Dells. Die enigste probleem met hulle is dat ek nou nie genoeg plek het vir die sensors van my Oculus Rift nie; dit lyk nie asof hulle so breed van mekaar hou nie
Uitbreiding, ondersteuning en omslag van SD -kaart: 7 stappe
Uitbreiding, ondersteuning en omslag van SD -kaart: as u 'n Arduino TFT -skermskerm met die SD -kaartleser het, en u elke keer nodig het om die lêers wat op die SD -kaart gestoor is, na te gaan of aan te pas, sal 'n uitbreiding u senuwees en tyd bespaar, sonder om die TFT -skermskerm te verwyder. Dit kan wees
Intel Aero Drone - Uitbreiding van die WiFi -reeks: 9 stappe
Intel Aero Drone - Uitbreiding van Wifi -reeks: Besoek ons wiki vir die nuutste inligting en ondersteuning vir Aero. Dit het 'n reikafstand van 'n paar meter, wat normaalweg goed is vir ontwikkelingsdoeleindes, maar laat