PCI-I/O_Karte in Linux

Gast #1947652
Lesenswert?

Hallo,

ich versuche eine PCI-IO_Karte(LCS-6019) in Linux(Suse 11.1) zum laufen 
bringen und anschließend diesen mit einem C-code steuern.

im alten Rechner mit integriertem Port war es kein proplem.

Auf der Herstellerseite habe ich eine Beschreibung gefunden(Anhang) wie 
man das unter Linux machen muss. Alles gemacht leider funzt es nicht.

Muss noch dazu einfügen, dass ich die komplette Beschreibung ins 
terminal eingehackt habe also den part für den Serial sowol für den 
Parallelport :-( brauchen tu ich nur den Parallelport. <--ist das 
schlimm?

unter C spreche ich den port so an.
.
.

int
main (int argc, char *argv[])
{
.
.
ParallelTimerSwitch(0x01); // bsp. für pin 1
.
.
}


void ParallelTimerSwitch(unsigned char PinNu)
{
 unsigned char current;
  current = inb(888); //<-- neue Adresse 0x4a00 und nicht 888-->0x378
  current ^=  PinNu;
  outb(current, 888);

}

ich habe keinen weiteren Parallelport kann man nicht eigentlich die 
0x378 weiter verwenden?? Bzw sieht irgend jemand was ich falsch mache??


thanks for help
Angehängte Dateien:
Gast #1947879
Lesenswert?

chris schrieb:
> Für ports von 0-0x3ff musst du das port vorher mit ioperm freischalten.

hab ioperm eingebaut:

int
main (int argc, char *argv[])
{
.
.


  if( ioperm(0xa400,1,1) )
    {
      printf("Couldn't get port 0x0xa400\n");
      return 1;
    }
.
.
ParallelTimerSwitch(0xff); // datenpins sollen auf hight
.
.
}


void ParallelTimerSwitch(unsigned char PinNu)
{
 unsigned char current;


  current = inb(0xa400);
  current ^=  PinNu;
  outb(current, 0xa400);

}


leider klappt das auch nicht.  was meinst du eigentlich mit "legacy 
ports" wie das aussieht liegt meine karte auf einen anderen 
adressbereich.
"/sbin/modprobe parport_pc io=0x3f8,a400 irq=4,18 " <-- port = 0xa400
#1947955
Lesenswert?

Alf schrieb:
> "/sbin/modprobe parport_pc io=0x3f8,a400 irq=4,18 " <-- port = 0xa400

Wenn du sowieso direkt auf den IO-Registern rummachen willst, ist der 
Kernel-Treiber doch eher Kontraproduktiv? Nicht das dir der 
dazwischenfunkt...

Frage: Spricht eigentlich was dagegen, statt dem direktem Port-Gefriemel 
aus DOS-Zeiten direkt das dafür vorgesehene (ppdev-) Interface zu 
nehmen?

/dev/partport* öffnen, darauf arbeiten?

http://people.redhat.com/twaugh/parport/html/x623.html
Gast #1948242
Lesenswert?

Der erste Port (+0) ist eigentlich nicht dafür vorgesehen, gelesen zu 
werden. Manche Parallelports unterstützen das, müssen dies aber nicht 
tun. Der Zugriff inb(0x378) ist also laut Hardwaredefinition nicht 
erlaubt und das solltest du erstmal austesten. Der zweite Port (+1) ist 
ein reiner Leseport und der dritte "RW".
Versuch erstmal nur eine Ausgabe zu machen und wenn das nicht klappt den 
Parport-Treiber (falls er geladen ist) zu entladen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren