Hallo Forum Angenommen ich habe einen Speicher via erweitertem Adressbus am µC und will dort was auslesen. In einem Musterprogramm fand ich folgendes: header.h ------------------ #define _OFFSET_ 0x0A000000 MEM_REG1 .EQU ( 0x0004 + _OFFSET_ ) main.C ------------------ uint32_t readmem ( uint32_t input ) { return (((input & 0xFF000000)>>24) + ((input & 0x00FF0000)>>8) + ((input & 0x0000FF00)<<8) + ((input & 0x000000FF)<<24)); } temp = (readmem ( MEM_REG1 ) ); Ich verstehe nicht wie die Funktion readmem auf den Speicher zugreifen kann, wenn die keine Adresse bekommt. Meiner Meinung bekommt sie die Zahl 0x0004 + 0x0A000000 und das wars. Wie weis die Funktion dass es eine Adresse ist und somit auf den Wert der sich dort verbirgt zugreifen muss? Ich hätte jetzt irgendwo ein * vermutet.... Das Programm funktioniert so, nur kann ich es mir nicht erklären. Danke für einen Tipp. PS: wie kann man Code hervorheben?
Das sieht aus, als hätte da jemand über memory-mapped IO auf einen
externen RAM zugegriffen. Wie das genau funktioniert, kann man nur
mit Kenntnis der dafür benutzten Hardware (Controller, RAM-Interface)
beantworten.
> PS: wie kann man Code hervorheben?
Mit [ c ]...[ /c ], [ avrasm ]...[ /avrasm ] (?) oder [ pre ]...[ /pre
].
Jeweils die Leerzeichen weglasssen.
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.