M.Santhoff(at)t-online.de writes:
> Thomas Gellekum wrote:
> >
> > Im Prinzip schon; man 4 io.
>
> Hm, da steht ja nicht so massiv viel drin. Gibt es andere Quellen, wie
> eine konzentrierte Einführung?
Nicht, daß ich wüßte. Ich lasse mich aber gerne belehren. Mein Versuch
einer konzentrierten Einführung:
iofd = open("/dev/io", O_RDWR);
if (iofd == -1)
{
perror("open()");
exit(EXIT_FAILURE);
}
Danach kannst Du alle I/O-Funktionen aus <machine/cpufunc.h> benutzen,
mit allen damit verbundenen Gefahren. Dabei sind in erster Linie wohl
in{b,w}(port), out{b,w}(port, data) interessant. inb und inw lesen ein
Byte bzw. ein Wort (16 Bit) von port, outb und outw schreiben data
nach port.
Muß man mehr wissen?
> > Schau Dir mal /sys/i386/isa/labpc.c an, das ist ein Treiber für eine
> > alte National Instruments LabPC Karte; ein analoger Eingang mit 8 Bit
> > Auflösung und ein 8 Bit breiter Digitalausgang.
> >
>
> Das scheint zu sein, was ich brauche, fehlt nur der Multiplexer und die
> Ansteuerung der D/A-Wandler. Ist nur auf der 2.2.1-R CD nicht drauf,
> werd
Sollte aber. Der Treiber ist so alt, daß angeblich die ioctl()s in
neueren 2.2.x nicht mehr funktionieren, weil ein uiomove() zuviel
passiert ;-). Zur Anschauung ist er aber noch geeignet.
> > Welche Karte soll denn bei Dir laufen?
> >
> > tg
>
> Nichts namhaftes, sind von Decision Computer:
>
> 1. 12 Bit A/D-in, 8 Kanäle differentiell via Multiplexer
> 2. 48 Bit I/O + 3 Timer
>
> Bezeichnungen müßte ich nachschauen. Bei den Problemen z.Zt. kann es
> aber
> sinnvoll sein, IRQ-gesteuerte karten zu benutzen.
In jedem Fall. So viel komplizierter wird's mit Interrupts auch
nicht. Bei der Gelegenheit ein Literaturtip: mir hat Pajari, "Writing
UNIX device drivers", als Einführung gut gefallen. Es ist zwar in
Teilen veraltet und für die falsche UNIX-Familie, aber die Prinzipien
sind gut erklärt. Für die Unterschiede zu BSD kann man danach den
"FreeBSD Device Driver Writer's Guide" von Eric Hernes lesen, der
leider nur als Fragment existiert (such mal nach ddwg auf der
Webseite). Danach sollte man mit den einschlägigen Manpages in der
Section 9 (insbesondere spl(9), tsleep(9), uio(9)) und ein paar realen
Treibern aus /sys/i386/isa ganz gut klarkommen.
Dann gibt's natürlich noch die Mailinglisten bei konkreten Fragen. ;-)
tg
Received on Thu 19 Nov 1998 - 08:34:41 CET