Índice:
- Etapa 1: Quelques Types De Mémoires
- Etapa 2: Mémoire Serial FRAM SPI
- Etapa 3: Ciclos FRAM serial
- Etapa 4: Code Pilotant La Mémoire FRAM
- Etapa 5: Mémoire Parralèle
- Etapa 6: Cycles Mémoire Parralèle
- Etapa 7: Code Pilotant La Memoire Parraléle
- Etapa 8: Suporte Pour Mémoires
Vídeo: Mémoire de extensão Pour BeagleBone Black: 8 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
Je vous présenter dans cet instructable un de mes project qui consistait to piloter des mémoires de diferentes tipos afin de pouvoir tester leur fonctionnement dans des conditions spatiales (enceinte radiative) et de trouver le taux d'erreurs engendré par cet environment pour chaque type de mmoire. Vous pouvez aussi utiliser les données de ce project pour étendre la memoire de votre BeagleBone, créer une clé USB ou simplement pour étudier leur fonctionnement.
Etapa 1: Quelques Types De Mémoires
Voici une liste exaustive des différents types of 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) é um tipo de memória 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 informações effacées irrémédiablement!
Avantages: - la SRAM est rapide (temps d'accès 6 a 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 (Memória de acesso aleatório magnético) stocke les données sans avoir besoin d'être alimentée. Le changement d'état se fait en changeant l’orientation polaire des électrons (notamment de túnel par effet). Elle est très résistante 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 ciclos 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 nanossegundos. - les débits sont de l'ordre du gigabit par seconde. - une excellente résistance aux radiations, omniprésentes dans un milieu space. Inconvénients: - coûteuse (~ 35 € / Mo) car encore en phase de développement (comercialização de massa do produto prévue em 2018!) mais on peut s'en procurer chez 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) é um tipo de memória de coordenação não volátil para o estado de recuperação e desenvolvimento.
Elle est similaire à la mémoire DRAM à laquelle em um ajouté une couche ferro-électrique pour obtenir la non volatilité. Em maio de 2011, a Texas Instruments lançou o primeiro microcontrolador à memória FRAM.
Sua utilização é destinada ao 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. Vantagens: - une plus faible consommation d'électricité. - une plus grande rapidité de lecture et d'écriture (temps d'accès de 100 nanossegundos contra 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 ciclos palestras / écritures).
Les deux grandes familles de mémoires: Série (foto 1) et parallèle (foto 2)
Série: as memórias de séries estão sempre disponíveis para obter um ganho de lugar e ganhar a configuração da memória em modelos de módulos de integração. 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 a 20MHz on a au mieux accès aux bits de données que tous les (1 / (20 * 10⁶)) sec soit 50 ns par bits (50ns * 8 = 400ns para 8 bits). Ce type de mémoire é donc usado lorsque le temps d'accès aux données à peu d'importance comme lors du chargement d'un BIOS dans certos cartes de tipo FPGA.
Parallèle: Les mémoires parallèles sont très utilisées dans tous les domaines allant de la RAM para ordenador de clé USB. Ce type de mémoire est beaucoup plus rapide that la mémoire SPI car en un coup d'horloge il permet d'accéder aux informations, nous sommes donc capaz de récupérer en quelques ms tout le contenu de la mémoire de 1Mo. L'inconvénient é dificil para intégrer car les nombreux pins diffèrent d'un modèle to 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.
Etapa 2: Mémoire Serial FRAM SPI
Câblage de la BeagleBone à memória: Reliés au 3.3V: VDD, HOLD, WP À la masse: VSS MISO relié to SO MOSI relié to SI CS relié to 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érentes mémoires indiquent que toutes fonctionnent de la même manière. Ainsi it is possível commuter des mémoires de différents modèles sans avoir para programador de novos algoritmos.
Os pinos HOLD e WP so reliés au 3.3V: si cela empêche l’utilisateur d'utiliser ces fonctionnalités, cela permet de faciliter la programmation. Ces fonctionnalités auraient été usados se l’on avait plusieurs mémoires SPI à piloter!
Afin de piloter la mémoire il faut d'abord étudier sa fiche technology disponible à l’adresse suivante:
Cette fiche technology indique les différents cycle nécessaires pour lire et écrire dans la mémoire et ainsi réaliser un program permettant de les piloter.
Etapa 3: Ciclos FRAM serial
Ecriture:
Avant d'écrire dans la mémoire il faut enviado une trame d'accès à L'écriture (WREN) 0000 0110 (0x06h) (Voir figura 5) Analyze de la trame d'écriture enviado par MOSI de la Beaglebone à SI (Voir figura 9)
- 8 bits iniciais, Op-code de l'écriture (READ): 0000 0011 (0x03h) - 16 bits adresse, 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 envoyer 16 bits car cela permettra de pouvoir aussi piloter des mémoires 64Kb. - 8 bits de données. Palestra:
Analyse de la trame de lecture enviado par MOSI de la Beaglebone à SI: (Voir figura 10) - 8 bits principais, Op-code de la lecture (WRITE): 0000 0010 (0x02h) - 16 bits adresse Analyse de la trame de lecture enviado por SO à MISO de la Beaglebone: - 8 bits de données
Etapa 4: Code Pilotant La Mémoire FRAM
Pour compiler ce program en langage C: $ gcc programme_spi.c –o spiPour utiliser ce program: $./spi add1 add2 data mode
Add1 (MSB) e Add2 (LSB) correspondente chacun a 8 bits de donnée, os dados correspondem a 8 bits de données à écrire (mettre 0 si lecture) O modo corresponde a l’écriture (= 2) ou la lecture (= 1).
Exemplo de utilização:./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)
Etapa 5: Mémoire Parralèle
Pour ce projet j'ai use la mémoire SRAM ALLIANCE AS6C1008 128Kb * 8 bits (voir schéma)
Configuração do boitier: 17 Endereços: A0-A16 8 Dados: D0-D7 2 Ativar chip: CE # -CE2 2 Ativar gravação e saída: WE # -OE # 2 VCC (3,3 V), VSS (GND) 1 não conectado: NC
NB: La disposition des pins varie grandement d'un modèle à un autre ainsi que les temps de lecture / écriture
Despeje o câblage à la BeagleBone voir schéma (Un réel plaisir à debugger où lorsque l'on à mal câblé!)
Atenção: Vous vous demandez sans doute pourquoi j'ai sauté certas GPIO dans les lignes d'adresses et data, c'est tout simplement que ces GPIO sont alloué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 memoire défectueuse alors que sures GPIO ne fonctionnaient simplement pas!)
Afin de piloter la mémoire il faut d’abord étudier sa fiche technology disponible à l’adressesuivante:
Cette fiche technology indique les différents cycle 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 ciclo imposto pelos construtores, qui sont tous les memes 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 os ciclos peuvent 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 seront jamais atteints car imposés par la memoire la plus lente. A duração dos ciclos é definida no código. Le seul moyen d'aller d'atteindre la vitesse maximale et de programmer les Cycle pour une memoire en particulier avec les temps minimaux. Le cycle d'écriture revient à modifier l’état des GPIOs. A base do código é a celle permet de faire clignoter une LED en ajoutant des temporisations précises correspondant aux durées des ciclos imposées par le constructeur. En effet l’action de faire clignoter une LED corresponde à criação de ciclos 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.
Etapa 6: Cycles Mémoire Parralèle
Cycle d'écriture (veja a figura 1, 2):
Pour écrire dans la mémoire il sufit 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 atenção tout de même à bien respecter les temporisations! ~ 100ns)
Ciclo de aula (veja a figura 3, 4):
Pour écrire dans la mémoire il sufit de mettre les pins d'adresse aux valeurs souhaitées puis d'activer les entrées chip enable CE à l'état haut and l'instruction Output enable OE. Une fois cela effectué on récupère sur les entrée GPIO de la BeagleBone les valeurs se trouvant à cette adresse.
Etapa 7: Code Pilotant La Memoire Parraléle
Código Ce permet de piloter 2 mémoire parallèles indépendamment l'une de l'autre et s'utilise comme ceci:
compilação: $ gcc -lm programme_memoire.c -o memoire
$./memoire add 1 add 2 data1 data2 mode slot1 slot2
modo: 1 palestra, 2 escritura
Le code étant créer 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 na memória sobre o slot 1.
Ex: $./memoire 120 140 0 0 1 1 1
lit à l'adresse 120 140 les données sur la mémoire du slot 1 e 2.
Etapa 8: Suporte Pour Mémoires
Je vous fournit 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 intercambiável 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é!
Recomendado:
Medição de partículas finas portátil (extensão): 3 etapas
Medição portátil de partículas finas (extensão): Objetivo: adição de um sensor de CO2 Melhor legibilidade do programa Abertura do programa para outros tipos de sensores. Este projeto segue outro já publicado. Ele responde às perguntas feitas pelos leitores. Um sensor adicional foi
Extensão da Web do Chrome - Nenhuma experiência anterior de codificação necessária: 6 etapas
Chrome Web Extension - Nenhuma experiência anterior de codificação é necessária: as extensões do Chrome são pequenos programas desenvolvidos para aprimorar a experiência de navegação do usuário. Para obter mais informações sobre as extensões do Chrome, vá para https://developer.chrome.com/extensions.Para fazer uma extensão da Web do Chrome, a codificação é necessária, por isso é muito útil revisar o HT
Introdução ao BeagleBone Black: 11 etapas
Introdução ao BeagleBone Black: Depois de usar o Arduino por um tempo, decidi experimentar o Beaglebone Black. Vendo a falta de conteúdo no Instructables e tendo algumas dificuldades para começar, eu queria ajudar outras pessoas a configurar o BeagleBone Black
Beaglebone Black Web Control usando WebPy: 6 etapas
Beaglebone Black Web Control usando WebPy: Sempre quis criar uma maneira de controlar a porta de sua garagem usando seu telefone, talvez coletar dados e visualizá-los em seu laptop. Existe um computador de placa única chamado Beaglebone Black, que é um dispositivo extremamente poderoso que permite controlar i
Smart Power Strip baseado em Beaglebone Black e OpenHAB: 7 etapas (com imagens)
Smart Power Strip baseado em Beaglebone Black e OpenHAB: !!!!! Jogar com rede elétrica (110 / 220V) é perigoso, por favor, tenha MUITO cuidado !!!!! Existem alguns designs de réguas de energia inteligentes baseados em " Raspberry Pi " e dois Arduinos, que é mostrado na imagem " Design antigo ". Este novo de