Direkte Speicheradressierung unter Proteced Mode?

Hallo,

ich bin gerade am verzweifeln. Ich versuche den Speicher einer Einsteckkarte direkt zu adressieren. (Borland 4.5, Dos Extender)

int *Steckkarte; Steckkarte=(int *)0x000d0000;

*Steckkarte=0x33;

Beim Speicherzuweisen schmeisst mich der Extender mit der Meldung "The instruction referenced illegal adress 000d0000" raus.

Hat jemand schon mal sowas gelöst?

danke im voraus Werner

Reply to
Werner Brennecke
Loading thread data ...

Hallo Werner,

"Werner Brennecke" schrieb im Newsbeitrag news: snipped-for-privacy@news.hrb.de...

Verraetst Du uns noch das Betriebssystem? Unter Win2k aufwaerts vergiss den direkten IO-Zugriff.

Gruss, Kurt

Reply to
Kurt Harders

Das ist normal im PM und sollte auch so sein, sonst waere das Schutzkonzept fuer die Katz.

Es ist lange her und ich habe vornehmlich mit WATOM und Rationals 4GW Extender gearbeitet. In der Regel musst Du Dir fuer den physischen Speicherbereich (Adresse, Laenge) ein Fenster zuweisen lassen.

Das kann je nach Hardwarekompatibelitaet beim 286er ein Farpointer fuer ein Segment sein und ab 386er ein 32 Bit near pointer wenn paging verwendet wird. Beachte dabei, dass im Segmentierungsfall Deine Adresse u.U. 4-Byte aligned sein muss und im Pagingfall auf jeden Fall 4096-Byte aligned sein muss.

Ich denke mal Borland hat da aehnliches. Aufmerksam Doku lesen, ich bin mir sicher, dass ich das bei BC auch schon gesehen habe.

Gruesse, Christian

PS: Wie der Vorposter schon erwaehnt kann Dir das OS natuerlich auch nen Strich durch die Rechnung machen. Aber ich gehe auf Grund von "DOS Extender" mal von DOS aus.

Reply to
Christian Kahlo

Bei Win muß man einen Treiber schreiben. Hab ich noch nicht gemacht, aber wenn mir jemand einen netten Link auf was brauchbares postet, immer her damit.

Grüße, Holger

Reply to
Holger Bruns

Ob's brauchbar ist, kann ich nicht beurteilen. Ich hab mir mal vor einiger Zeit von "

formatting link
" die Port IO Treiber geladen, aber bis heute noch nicht ausprobiert.

Mein Programm läuft unter DOS (Win9x) und Linux ohne spezielle Treiber, was mir im Augenblick völlig reicht. Unter Linux muß man als Superuser angemeldet sein und vor dem Portzugriff mit einem ioperm-Aufruf den Port freigeben. Klappt sehr gut.

Michael

Reply to
=?ISO-8859-1?Q?Michael_Kr=E4me

Da werd ich auch nicht so ohne weiteres schlau draus. Ist eher was für den beinharten C-Programmierer, nicht für solche Pascal-Flaschen wie mich.

Du greifst unter Windows 98 ohne Wimpernzucken auf die Ports zu? Das hätte ja was ... nicht ganz sauber, aber ...

Viele Grüße, Holger

Reply to
Holger Bruns

Hallo,

das hatte ich vergessen. Ich arbeite noch unter DOS:-) Das Problem habe ich über die beigelegten Beispiele aber gelöst. (DPMI Aufrufe)

danke Werner

Reply to
Werner Brennecke

Genauso sauber wie unter DOS, nur daß Windows mit seinen eigenen Treibern dazwischenfunken könnte. Man darf halt nicht gleichzeitig versuchen, über diesen Port zu drucken. Weder in Win9x noch in XT/2K/XP ist der direkte Zugriff sauber gelöst. Win9x schert sich überhaupt nicht darum, was ein Programm macht und die anderen Systeme verbieten einfach alles (ohne speziellen Treiber). Unter Linux reserviert man sich die I/O Adressen, sichert sich so den exklusiven Zugriff und legt los, was ich für deutlich besser halte (ich hoffe, daß ich mit diesem Statement keinen Glaubenskrieg Win/Linux lostrete).

Michael

Reply to
=?ISO-8859-1?Q?Michael_Kr=E4me

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.