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