Hallo,
ich habe hier einen Samsung SC32412 (=S3C2410 bzgl. UART) ARM9 mit einem
2.6.16 Linux Kernel mit dem ich gerne IR Fernbedienungssignale
"verarbeiten" würde. Dazu habe ich LIRC mit den entsprechenden
Kernelmodulen kompiliert und installiert – keine Problem soweit. Der
LIRC Treiber läuft, scheint allerdings nicht richtig mit den Memory
Mapped IOs der UART umgehen zu können. Im Quelltext wird erwähnt, das
evtl. ein Aufruf von „ioremap“ helfen könnte. Also die Frage ist, wie
man direkt auf die seriellen Schnittstellen zugreifen kann. Zur Zeit
versuche ich folgendes:
Es gibt die (physikalische) Adresse:
1 | #define S3C2410_PA_UART0 0x50000000
|
Den Speicher „holen“, remappen, und lesen.
1 | request_mem_region(0x50000000, 8, LIRC_DRIVER_NAME);
|
2 |
|
3 | char* baseptr = ioremap(0x50000000);
|
4 |
|
5 | unsigned int value = readb(baseptr + offset);
|
Natürlich werden alle Rückgabewerte getestet... es treten keine Fehler
auf. Der „Treiber“ läuft und liefert irgendeine Ausgabe, die aber
sicherlich nichts mit einer der seriellen Schnittstellen zu tun hat :(
Es gibt auch noch eine weitere (virtuelle) Adresse:
1 | #define S3C2410_VA_UART0 0xF0800000
|
Allerdings verstehe ich nicht was ich mit ihr noch anfangen könnte.
Bin nach wirklich langem googlen inzwischen etwas verzweifelt und bitte
um Hilfe.