/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Brug af parallelport i Linux
Fra : Mikael W. Bertelsen


Dato : 30-08-03 19:13

Jeg kan godt tænke mig at få fat i min parport2 og parport3 i linux med
henblik på styring.

Jeg har fået mit program til at virke på parport1 (lp0).

Mit spørgsmål går nu på hvordan access'er jeg porten?
Ifølge nogle tutorials jeg har fundet, skal jeg bruge følgende:
iopl(), da ioperm() kun tillader op til adresse 0x3ff.

Men hvad er min baseaddress?

Lidt information:
linux$ cat /proc/pci
[SNIP]
Bus 0, device 11, function 0:
Communication controller: NetMos Technology VScom 021H-EP2 \
2 port parallel adaptor (rev 1).
IRQ 11.
Master Capable. Latency=32.
I/O at 0xbc00 [0xbc07].
I/O at 0xc000 [0xc007].
I/O at 0xc400 [0xc407].
I/O at 0xc800 [0xc807].
I/O at 0xcc00 [0xcc07].
I/O at 0xd000 [0xd00f].
[SNIP]

linux$ cat /proc/ioports
[SNIP]
bc00-bc07 : NetMos Technology VScom 021H-EP2 2 port parallel adaptor
bc00-bc02 : parport1
c000-c007 : NetMos Technology VScom 021H-EP2 2 port parallel adaptor
c400-c407 : NetMos Technology VScom 021H-EP2 2 port parallel adaptor
c400-c402 : parport2
c800-c807 : NetMos Technology VScom 021H-EP2 2 port parallel adaptor
cc00-cc07 : NetMos Technology VScom 021H-EP2 2 port parallel adaptor
d000-d00f : NetMos Technology VScom 021H-EP2 2 port parallel adaptor
[SNIP]

linux$ cat /var/log/syslog
[SNIP]
kernel: parport0: PC-style at 0x378 (0x778) [PCSPP,TRISTATE]
kernel: parport_pc: Via 686A parallel port: io=0x378
kernel: PCI parallel port detected: 14d2:8001, I/O at 0xbc00(0xc000)
kernel: parport1: PC-style at 0xbc00 (0xc000) [PCSPP,TRISTATE]
kernel: PCI parallel port detected: 14d2:8001, I/O at 0xc400(0xc800)
kernel: parport2: PC-style at 0xc400 (0xc800) [PCSPP,TRISTATE]
[SNIP]

Ud fra ovenstående, har jeg så ikke ret i at baseaddress for parport1 er
0xbc00 og baseaddress for parport2 er 0xc400?

Hvis der mangler oplysninger, don't hesitate to ask for 'em!

/Mikael
--
My mailserver uses TMDA. (http://tmda.net)
Therefore if you mail me you need to reply to my autogenerated message
to be put in my whitelist. Then I will be able to receive your mail.

 
 
Kent Friis (30-08-2003)
Kommentar
Fra : Kent Friis


Dato : 30-08-03 19:47

Den Sat, 30 Aug 2003 20:13:28 +0200 skrev Mikael W. Bertelsen:
>Jeg kan godt tænke mig at få fat i min parport2 og parport3 i linux med
>henblik på styring.
>
>Jeg har fået mit program til at virke på parport1 (lp0).
>
>Mit spørgsmål går nu på hvordan access'er jeg porten?
>Ifølge nogle tutorials jeg har fundet, skal jeg bruge følgende:
>iopl(), da ioperm() kun tillader op til adresse 0x3ff.

Kan det du skal lave ikke klares med at åbne /dev/parportx? Hvis
iopl/ioperm er nødvendigt, vil programmet kræve root adgang, det
kræves ikke for at bruge /dev/parportx.

Iøvrigt, er du sikker på at parport1 er lp0? Hvad er parport0 så, lp-1?

Mvh
Kent
--
Journalist: En der har forstand på at skrive artikler, men typisk
ikke på det artiklerne handler om.

Mikael W. Bertelsen (30-08-2003)
Kommentar
Fra : Mikael W. Bertelsen


Dato : 30-08-03 21:34

On Sat, 30 Aug 2003 18:47:12 +0000, Kent Friis wrote:

> Kan det du skal lave ikke klares med at åbne /dev/parportx? Hvis
> iopl/ioperm er nødvendigt, vil programmet kræve root adgang, det
> kræves ikke for at bruge /dev/parportx.

Jeg har ikke noget information om hvordan jeg bruger /dev/parportX.
Min kilde er primært en Linux-IO-Programming-HOWTO og Linux Device Drivers
fra O'Reilly.

>
> Iøvrigt, er du sikker på at parport1 er lp0? Hvad er parport0 så, lp-1?

Ja, det er netop det interessante. I alt den information jeg har kunnet
finde, så starter parport ved #1 og ikke #0, hvor lp starter ved #0.

/Mikael
--
My mailserver uses TMDA. (http://tmda.net)
Therefore if you mail me you need to reply to my autogenerated message
to be put in my whitelist. Then I will be able to receive your mail.

Kent Friis (30-08-2003)
Kommentar
Fra : Kent Friis


Dato : 30-08-03 22:02

Den Sat, 30 Aug 2003 22:34:09 +0200 skrev Mikael W. Bertelsen:
>On Sat, 30 Aug 2003 18:47:12 +0000, Kent Friis wrote:
>
>> Kan det du skal lave ikke klares med at åbne /dev/parportx? Hvis
>> iopl/ioperm er nødvendigt, vil programmet kræve root adgang, det
>> kræves ikke for at bruge /dev/parportx.
>
>Jeg har ikke noget information om hvordan jeg bruger /dev/parportX.

open, read, write, close. Og måske ioctl.

>Min kilde er primært en Linux-IO-Programming-HOWTO og Linux Device Drivers
>fra O'Reilly.
>
>>
>> Iøvrigt, er du sikker på at parport1 er lp0? Hvad er parport0 så, lp-1?
>
>Ja, det er netop det interessante. I alt den information jeg har kunnet
>finde, så starter parport ved #1 og ikke #0, hvor lp starter ved #0.

kfr:kfr$ ls -l /dev/parport*
crw-rw---- 1 root root 99, 0 aug 6 2000 /dev/parport0
crw-rw---- 1 root root 99, 1 aug 6 2000 /dev/parport1
crw-rw---- 1 root root 99, 2 aug 6 2000 /dev/parport2
crw-rw---- 1 root root 99, 3 aug 6 2000 /dev/parport3

Mvh
Kent
--
6.0 FDiv 3.0 = 1.999773462873 - Intel Pentium bug

Mikael W. Bertelsen (30-08-2003)
Kommentar
Fra : Mikael W. Bertelsen


Dato : 30-08-03 22:24

On Sat, 30 Aug 2003 21:01:48 +0000, Kent Friis wrote:

> Den Sat, 30 Aug 2003 22:34:09 +0200 skrev Mikael W. Bertelsen:
>>Jeg har ikke noget information om hvordan jeg bruger /dev/parportX.
>
> open, read, write, close. Og måske ioctl.
>
>>> Iøvrigt, er du sikker på at parport1 er lp0? Hvad er parport0 så, lp-1?
>>
>>Ja, det er netop det interessante. I alt den information jeg har kunnet
>>finde, så starter parport ved #1 og ikke #0, hvor lp starter ved #0.
>
> kfr:kfr$ ls -l /dev/parport*
> crw-rw---- 1 root root 99, 0 aug 6 2000 /dev/parport0
> crw-rw---- 1 root root 99, 1 aug 6 2000 /dev/parport1
> crw-rw---- 1 root root 99, 2 aug 6 2000 /dev/parport2
> crw-rw---- 1 root root 99, 3 aug 6 2000 /dev/parport3

Ja, den er sgi svær at argumentere imod...

Det kan godt være at jeg skal kigge lidt på parport...
Jeg har dog fået det andet til at virke (se andetsteds i trådene).

Jeg takker!

/Mikael
--
My mailserver uses TMDA. (http://tmda.net)
Therefore if you mail me you need to reply to my autogenerated message
to be put in my whitelist. Then I will be able to receive your mail.

Mikael W. Bertelsen (30-08-2003)
Kommentar
Fra : Mikael W. Bertelsen


Dato : 30-08-03 22:20

On Sat, 30 Aug 2003 20:13:28 +0200, Mikael W. Bertelsen wrote:

> Mit spørgsmål går nu på hvordan access'er jeg porten?
> Ifølge nogle tutorials jeg har fundet, skal jeg bruge følgende:
> iopl(), da ioperm() kun tillader op til adresse 0x3ff.

Jeg har selv fundet ud af det... Det var et hardware problem.

Følgende kode virker:
#include <stdio.h>
#include <stdlib.h>
#include <sys/io.h>

//#define BASE 0x378
//#define BASE 0xbc00
#define BASE 0xc400
#define OUTPUT 64

int main(void)
{
/* Granting permission to the port(s) */
iopl(3);

/* Outputting to the port */
outb(OUTPUT, BASE);

return 0;
}

>
> Ud fra ovenstående, har jeg så ikke ret i at baseaddress for parport1 er
> 0xbc00 og baseaddress for parport2 er 0xc400?

Det må jeg så sige er korrekt!

/Mikael
--
My mailserver uses TMDA. (http://tmda.net)
Therefore if you mail me you need to reply to my autogenerated message
to be put in my whitelist. Then I will be able to receive your mail.

Jørgen Christiansen (31-08-2003)
Kommentar
Fra : Jørgen Christiansen


Dato : 31-08-03 16:01

> Mit spørgsmål går nu på hvordan access'er jeg porten?
> Ifølge nogle tutorials jeg har fundet, skal jeg bruge følgende:
> iopl(), da ioperm() kun tillader op til adresse 0x3ff.

http://sourceforge.net/projects/portatux/ er din ven



Mikael W. Bertelsen (31-08-2003)
Kommentar
Fra : Mikael W. Bertelsen


Dato : 31-08-03 16:24

On Sun, 31 Aug 2003 17:01:23 +0200, Jørgen Christiansen wrote:

> http://sourceforge.net/projects/portatux/ er din ven

Tak for linket!

/Mikael
--
My mailserver uses TMDA. (http://tmda.net)
Therefore if you mail me you need to reply to my autogenerated message
to be put in my whitelist. Then I will be able to receive your mail.

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408186
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste