Externes SRam - Verhalten normal?

Gast #1556246
Hallo

Ich verwende einen ADUC7026. Diese MCU hat einen ARM7 Core und ein 
externes 16Bit Speicherinterface. Mittels 4 Selectleitungen können 4 
Adressräume mit 64Kx16 angesprochen werden.

Ich habe ein externes SRam mit 64Kx16 angeschlossen. Dabei ist mir etwas 
aufgefallen. Der Adressraum beginnt bei 0x30000000. Wird in Adresse 
0x30000000 oder 0x300000001 ein Char in C geschrieben, wird dieses auf 
beide Adressen geschrieben. Wird in Adress 0x30000000 ein Short in C 
geschrieben, werden beide Adressen korrekt verarbeitet.

Von der Hardwareseite her leuchtet mir dies ein Stück weit ein. Der 
Zugriff auf das SRam kann immer nur mit 16Bit erfolgen. Sollen nur 8Bit 
gespeichert werden, muss zu erst ein Lesezugriff durchgeführt werden, 
damit die 8Bit die im Speicher bleiben sollen, gelesen werden können und 
im Anschluss in einem einem 2. Schritt dann zusammen mit den neuen 8Bit 
geschrieben werden können.
Muss ich als C Programmierer selbst darauf achten, dass nur 16Bit 
Zugriffe erfolgen, oder übernimmt dies normalerweise der 
Speicherkontroller?
Warum wird das geschriebene Byte gespiegelt?

Aufgefallen ist mir das ganze, als ich einen Bytestream speichern 
wollte. Sah etwas eigenartig aus.

Vielen Dank für eure Tips,

Tilo
Es ist nicht Sache des Programmes, sondern der korrekten Beschaltung der 
Hardware. Üblicherweise besitzen Speicher und Speicherinterface 
Leitungen, die das jeweils zu schreibende Byte auswählen, so dass bei 
Byteoperationen nur eine dieser beiden Leitungen aktiv ist, bei 
Halbwortoperationen jedoch beide.

Beim ADUC dürften /BHE und /BLE dafür zuständig sein. Den Typ des SRAMs 
hast du nicht genannt, beim erstbesten 64Kx16 gibt es /UB und /LB.

Zugegeben, das Datasheet von Analog Devices ist nicht sehr gesprächig. 
Derart knappe Beschreibungen kenne ich anderswo (STM,NXP) nur als 
Kurzform eines ausführlicheren Reference Manuals - was ich bei AD aber 
noch nicht gefunden habe.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.