Új hozzászólás Aktív témák

  • tobal

    tag

    Sziasztok

    Egy hobbiprojektemhez szükségem lenne arra, hogy legyen egy működő paralel port a laptopomon (a régi, 25 tűs fajta). Ehhez vettem egy PCMCIA kártyát, ami viszont nem úgy működik, ahogy én azt elképzeltem. Egyelőre próbaképpen programból próbálom felhúzni a DATA vonalait, de nem sikerül, mintha rossz címen próbálkoznék.

    Bemásolom néhány releváns parancs kimenetének releváns részét

    $> lspci -v
    03:00.0 Communication controller: NetMos Technology PCI 1 port parallel adapter (rev 01)
    Subsystem: LSI Logic / Symbios Logic Device 0010
    Flags: medium devsel, IRQ 18
    I/O ports at 4010 [size=8]
    I/O ports at 4018 [size=8]
    I/O ports at 4020 [size=8]
    I/O ports at 4028 [size=8]
    I/O ports at 4030 [size=8]
    I/O ports at 4000 [size=16]
    Kernel driver in use: parport_pc

    $> cat /proc/ioports
    ...
    0376-0376 : 0000:00:1f.1
    0376-0376 : ata_piix
    0378-037a : parport0
    03c0-03df : vga+
    03e8-03ef : serial
    03f6-03f6 : 0000:00:1f.1
    ...
    4000-4fff : PCI Bus 0000:02
    4000-40ff : PCI CardBus 0000:03
    4000-400f : 0000:03:00.0
    4010-4017 : 0000:03:00.0
    4010-4012 : parport1
    4018-401f : 0000:03:00.0
    4020-4027 : 0000:03:00.0
    4028-402f : 0000:03:00.0
    4030-4037 : 0000:03:00.0
    4400-44ff : PCI CardBus 0000:03
    4800-48ff : PCI CardBus 0000:04
    4c00-4cff : PCI CardBus 0000:04

    Tehát az lspci szerint a rendszer látja a portot, a parport_pc kernel modul kezeli is. Az ioportok között is feltűnik, az aláhúzott rész utal elvileg a PC kártyára (a dőlttel szedett rész az alapértelmezett paralel portcím, de olyan nincs a laptopon). Elvileg a 0x4010-es cím hivatkozik a DATA mezőre, oda próbálok írni a következő programmal (root jogokkal futtatom):

    #include <stdio.h>
    #include <unistd.h>
    #include <sys/io.h>
    #define PDATA 0x4010
    int main()
    {
    if (ioperm(PDATA, 1, 1))
    {
    perror("Could not get permissions to parallel port");
    return 1;
    }
    outb(0xFF, PDATA);
    return 0;
    }

    Elvileg ezután az összes DATA lábon meg kellene jelennie 5V-nak, de a multiméter meg se mukkan. Végigpróbálgattam az alapértelmezett címet is, és az ioportok között felsorolt címeket is, nulla sikerrel. Arra is gondoltam, hogy esetleg a fizikai porton nincs bekötve az összes földelő láb, úgyhogy végigpróbálgattam mindegyikkel, de ez sem vezetett eredményre.

    Szóval a kérdés egyszerű: mit csinálok rosszul? :)

    [ Szerkesztve ]

Új hozzászólás Aktív témák