Hallo allerseits, ich habe beim aussortieren ein paar alte RAM-Riegel (?) gefunden. Ich weiß nicht genau, ob das wirklich RAMs sind, waren zumindest in einer Kiste, wo das draufstand. Leider hab ich solche Dinger noch nicht gesehen. Es sind kleine Platinen, die so alle ca. 3 Chips aufgelötet haben (z.B. M5M41000AJ oder TC511000AJ). Die Platinchen haben beidseitige Anschlüsse, ähnlich denen einer SD-RAM-Platine. Rastermaß: ca. 2,54mm. Anzahl Anschlüsse: 2x30; scheinen von vorne nach inten durchkontaktiert zu sein. Ich wollte nun eigentlich nur wissen, was das ist (wenn ich noch irgendwo eine Digi-Cam auftreibe schicke ich noch ein Bild) und ob man es noch verwenden kann (nicht als PC-RAM sondern eher an irgendwelche µC-Schaltungen o.ä) MfG Christian
Das ist ein altes 8-Bit SIMM mit 30 Kontakten. Wenn drei Chips aufgelötet sind, sind zwei davon 4 Bit breit organisiert und der dritte ein Bit breit organisiert, der stellt dann ein neuntes, in der Regel als Parity genutztes Bit zur Verfügung. Auch verbreitet war eine Bestückung mit 8 bzw. 9 identischen, ein Bit breit organisierten Bausteinen. Die Speicherbausteine selbst sind klassisches DRAM, kein EDO, höchstens Fast-Page-Mode. In dieser Bauform gab es Module mit Kapazitäten zwischen 256 kBit * 8(9) und 4 MBit * 8(9). Die von Dir genannten Speicherbausteine sind 1 MBit * 1 organisiert. Verwendet wurden diese Speichermodule in alten PCs so im Zeitrahmen 286er (immer paarweise) und frühe 486er (immer in 4er-Packs). Es gab diese Speichermodule auch mit angelöteten Beinchen (eine Reihe à 30 Pins), die hießen dann SIPP. Ein solches Speichermodul eignet sich durchaus, um es mit Software-Refresh und Software-Multiplex an einen AVR anzuschließen, vor allem, da diese Module mit 5V Versorgungsspannung betrieben werden. Mehr dazu hier http://www.mikrocontroller.net/forum/read-4-121457.html#121457
OK, ich hab mir mal den Thraed durchgelesen, allerdings ist das - soweit ich es beurteilen kann - ein Thread zum Thema "Wie binde ich ein DRAM-*Chip* ein?", oder? Ich wollte eigentlich die Dinger nicht ausenander löten; befürchte, da mache ich viel kaputt. Gibt es eine Möglichkeit, die Bausteine (so wie sie sind) direkt einzustecken (passender Verbinder vorausgesetzt)? Ich hab nämlich leider keinen Schalt-/Anschlussplan. MfG Christian
Doch, in der DRAM_Controller.zip ist auch eine Version für DRAMs ohne OE\ und die läuft mit den SIMM Modulen. Diese gab es auch als 16MB Version (nur mal der Vollständigkeit halber) aber diese waren damals unbezahlbar. Ich hatte damals für 4MB rund 120DM bezahlt...
@Benedikt: Sorry, wenn ich in deinem Archiv nicht so ganz das Finde, was ich suche: Aber ich finde nur in der readme annähernd Infos, wie ich ein DRAM-Modul anschließen muss. Aber soweit ich das sehe, ist der Anschlussplan der, der dem kleinen 1-Chip-Speicher (s. Bild) beschreibt. Ich suche aber den Anschlussplan eines SIMMs. Bitte enschuldige mich, falls ich falsch liegen sollte (+ Korrektur, bitte!), aber ich finde diesbezüglich keine Infos in dem Archiv. Oder sind die irgendwo in den Quellcodes verstecht? MfG Christian
Die Anschlussbelegung eines SIMMs findet man über google. In der dramio.h kann man die Anschlussbelegung dann eingeben, welcher Pin wo am AVR angeschlossen ist.
Also ich hab jetzt unter http://www.elektroniklager.de/pc-sup/d_dta-pc-tech-bus.htm#30PINSIMM was gefnden. Allerdings werde ich nicht so schlau darüber, wie ich auf den Speicher zugreifen kann (könnte ihn nämlich in meinem aktuellen Projekt gut gebrauchen ;-). Ich suche also so was wie ein Protokoll. Ehrlich gesagt, blicke ich bei dem ASM nicht merwirklichdurch, da mir die Zusammenhäge etwas fehlen. Kann mirzwar so grob denken, was da geht, aber warum man das macht bleibt im Dunkeln. Und die Antwort auf ein paar Fragen wären vermutlich hilfreich (Sorry, fürs viele Lesen): 1. Wiso finde ich viele der PINs aus der DRAMIO.h nicht auf der Liste? Haben die da andere Namen? 2. So ein Standard-SIMM ist doch one OE-Leitung, oder nicht? 3. Habe ich das richtig verstanden, das 8/9/10 Adressleitungen (je nach Größe), 8 Datenleitungen und noch bis zu 5 Steuerleitungen (RAS, CASL, CASH, WE und OE) nötig sind? Warum sind dann in den Definitionen nur die Adressleitungen A8, A9 und A10 eingebaut? Was sind das alles für (Steuer-)Leitungen? WE dürfte "Write Enable" sein (1=lesen, 0=schreiben, da vermutlich invertiert) OE (auch wenn nicht vorhanden irdendwas mit Output Enable. Vermutlich um mehrere Chips zusammen auf einem Datenbus zu betreiben, oder? RAS ist (laut wikipedia) die Reihenadresse(?). CAS sei die Spaltenadresse. Wie ist so ein Modul jetzt (in Spalten und reihen) organisiert? Wo wird negative Logik verwendet (Eingänge invertiert)? 4. Warum werden 4 Byte breite Adressen verwendet, wo doch 3 Byts reichen würden? Liegt das blos an der C-Definition, dass long 4 Bytes enthält? 5. [offtopic] Nur aus Interesse, weil ich's hier sehe: Woher weißt man, wo der gcc die Parameter übergibt? Ich meine es gibt 32 Register, da ist die Trefferwahrscheinlichkeit recht klein ;-). Ich hoffe, das sich das scnell löst (wenn ich mal die nötigen Infos habe, werd ich auch nciht mer nerven, ich versprech's! ;-) ) MfG und Danke schonmal Christian
1. Welche denn z.B. ? 2. Ja 3. A0-7 wird auf immer angesteuert, da kleinere DRAMs selten sind. A8-10 werden nur bei Bedarf bitweise angesteuert und sind daher frei belegbar. RAS, CAS, WE und OE sind negativ. Irgendwo weiter unten in dem Orginalthread habe ich ein paar Grundlagen zu DRAMs aus einem alten Darenblatt gepostet, da ist das gut erklärt. 4. In C gibt es keine standard 3Byte großen Variablen. 5. Das steht in der Dokumentation vom avr gcc.
Hallo, 1. ich meine so die CASL und CASH. Ich vermute, dass das die CAS und CASP sind, aber welches ist welches? 3. Ahh, ok. Sorry, übersehen O:-) Wie ist denn eigentlich so ein Modul jetzt (in Spalten und Reihen) organisiert? 5. In welcher Doku meinst du? Im Tutorial hier im Forum wird auf ASM kaum eingegangen. Und ehrlich gesagt, in den man-pages ist nur der Aufruf von gcc angegeben. Es muss irgendwas geben, das ist klar, nur hab ich bisher noch inx brauchbares gefunden (unter http://gcc.gnu.org/onlinedocs/gcc-4.0.2/gcc finde ich auch nicht viel zum Programmieren, nur zum Aufruf von gcc & Co.). Vllt. kannst du mich hier aufklären ;-). MfG und Danke schon mal Christian
1. CASP braucht man nicht, das kann man nur zur Fehlerkontrolle verwenden. CASL und CASH gibt es nur bei 16bit DRAMs, die SIMMs haben nur 8bit, daher wird nur CASL verwendet. 5. Im avr libc Manual ist das beschrieben. Die Organistion der DRAMs ist immer Wurzel(Größe). Ein 64kByte DRAM hat also 256 Zeilen und 256 Spalten. Das nächstgrößere ist 512x512=256kByte usw.
> 5. Im avr libc Manual ist das beschrieben. Naja, so wirlich steht da auch nix, wie ich einer Funktion (ASM) einen Parameter aus C übergebe, aber ich glaube, ich hab es trotzdem verstanden. Stimmt folgendes: Wird eine Funktion übergeben, werden die Parameter in einzelne Bytes zerstückelt und dann in der Reigenfolge nach in die Register r25 abwärts abgelegt. Bei mehrbytigen Variablen wird im little-endian Format gespeichert. Das MSB ist im höchsten Register zu finden. Stimmt das oder ist das Zufall, dass immer r25:r24:r23... für die Parameter verwendet wird? > Die Organistion der DRAMs ist immer Wurzel(Größe). Ein 64kByte DRAM hat > also 256 Zeilen und 256 Spalten. Das nächstgrößere ist 512x512=256kByte > usw. Danke, genau das brauchte ich noch. MfG Christian
Das steht das ziemlich genau da drin: Function call conventions: Arguments - allocated left to right, r25 to r8. All arguments are aligned to start in even-numbered registers (odd-sized arguments, including char, have one free register above them). This allows making better use of the movw instruction on the enhanced core. If too many, those that don’t fit are passed on the stack. Return values: 8-bit in r24 (not r25!), 16-bit in r25:r24, up to 32 bits in r22-r25, up to 64 bits in r18-r25. 8-bit return values are zero/sign-extended to 16 bits by the caller (unsigned char is more efficient than signed char - just clr r25). Arguments to functions with variable argument lists (printf etc.) are all passed on stack, and char is extended to int.
OK, danke das hab ich nicht gefunden. Ich hab mich zu sehr auf die ASM-Page konzentriert. Nur kurz eine kleine Frage: Wenn jetzt mehr Parameter übergeben werden als möglich (z.B. 10 char's), werden die ja auf dem Stack abgelegt. In welcher Reiehnfolge? So, dass wenn ich peu-a-peu pope ich die Werte in der richtigen Reihenfolge (also die theoretische Weiterführung r7, r6, ...) bekomme oder muss ich alles rumdrehen? MfG Christian
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.