PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Register- b.z.w. Speicherzugriff



stieler
19-06-2002, 07:29
Hallo zusammen,

ich habe da ein kleines Problem mit dem Zugriff auf bestimmte Konfigurationsregister eines AMS Elan-Prozessors. Ich möchte das Problem ganz kurz beschreiben:

Der Elan hat mehrere Bereiche mit Konfigurationsregistern. Z.B. die "DIRECT-MAPPED I/O REGISTERS", IO-Adresse 0x0000 bis 0xFFFF. Auf die kann ich mittels inp() und Freunde zugreifen.

Dann gibt es aber auch die "Memory-Mapped Configuration Region Registers" im Speicherbereich 0xFFFEF000 bis 0xFFFEFFFF, die in das Speichersegment ab Adresse 0xDF00 gemappt werden. Ich möchte also z.B. auf die Adresse 0xDF00+0x0D30 sowohl lesend als auch schreibend zugreifen, aber das ist mir bis jetzt nicht gelungen.

Ich habe ein DOS-Beispielprogramm, das enthält etwa folgenden Code:



pointer = (unsigned long *) MK_FP(0xDF00,x0D30);
oldvalue = *pointer
*pointer = newvalue;


Aber so get's unter Linux natürlich nicht.

Wäre toll, wenn mir jemand einen Tipp geben könnte. Ich stehe total auf dem Schlauch und träume schon von "physical address", "virtual address", "logical address" ...

Es spielt für mich keine Rolle, ob der Zugriff im User- oder im Kernel-Space durchgeführt wird.

'tschuldigung, daß es etwas länger geworden ist.

Gruß -

Dirk

stieler
19-06-2002, 08:51
Hallo,

ich habe Euch mal wieder zu früh belästigt und die Lösung selber gefunden. Aber man weiß halt manchmal nicht, ob man einen Millimeter oder einen Kilometer von der Lösung entfernt ist.

Falls es interessiert, hier die total simple Lösung (im Kernalspace)



static __u16 *pointer;
__u8 dummy;

pointer = (__u16 *)(0xDF00+x0D30);
pointer = ioremap((unsigned long)pointer, 1);
dummy=readb(pointer);
writeb(0x05, pointer);


Entschuldigt bitte den unnötigen Thread -

Dirk