[kernel] zelf een device driver maken

Pagina: 1
Acties:

  • EWS99
  • Registratie: Maart 2001
  • Laatst online: 17-08 15:32
Heeft iemand ervaring met het zelf maken van een device driver?
Ik wil nl. een driver gaan maken voor ledjes die aangesloten zijn aan de parallele poort.
Het moet zo worden dat als ik:
echo 4 > /dev/ledjes
doe, dat dan de eerste 4 ledjes (eerste 4 bits op adres 0x378) oplichten.
Heeft iemand dit al ooit eens gedaan, of weet iemand waar ik informatie kan vinden om op weg te komen?

Hier had uw advertentie kunnen staan!


Verwijderd

tja..... dan moet je een progje scrijven dat kijkt welk cijfer in /dev/ledjes staat, en die hoeveelheid op laat lichten. Als je weet hoe dat in C moet, is het niet moeilijk

Verwijderd

ledjes aan de parallele poort, daar heb je (imho) geen driver voor nodig. Wat je nodig hebt is een userspace applicatie die de parallele poort opent (/dev/lp0) en daar dus bepaalde data naartoe stuurt. Een driver schrijven is pure overkill, elke printer heeft ook niet z'n eigen kerneldriver ;)

Welke data je naar de parallelle poort wilt schrijven hangt af van de ledjesdinges die op de parallele poort staat, en dat moet de applicatie dus regelen... Denk aan iets van "ledjes 4" ipv "echo 4 > /dev/ledjes". Eventueel maak je een FIFO/socket in /dev/ledjes waar de daemon naar luistert, dan kun je alsnog "echo 4 > /dev/ledjes" doen zonder device driver :)

  • EWS99
  • Registratie: Maart 2001
  • Laatst online: 17-08 15:32
Tja, het C-progje zelf zal niet zo'n probleem worden, alleen de driver /dev/ledjes. En juist daar gaat het me om.

Hier had uw advertentie kunnen staan!


  • EWS99
  • Registratie: Maart 2001
  • Laatst online: 17-08 15:32
Ik heb de situatie wat simpeler uit proberen te leggen, maar mijn bedoeling is om toch een device driver te schrijven.
Uiteindelijk moet er op de printerpoort een display aangesloten worden. Deze display kan kant en klare ascii ontvangen. Ik wil dus het volgende:
echo "deze tekst komt op het display" > /dev/display
De ascii code bestaat uit de 8 output poorten van de parallele poort, dus de letter A is dan 0x065 naar poort 0x378.
Het gaat mij niet zo zeer om hoe ik de data van Stdin naar de parallele poort leid, maar om een basis te maken voor de device driver. Hoe ik met Major en Minor om moet gaan enzo.

Hier had uw advertentie kunnen staan!


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Misschien is dit een goed beginpunt.

Succes :)

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • EWS99
  • Registratie: Maart 2001
  • Laatst online: 17-08 15:32
Dat is idd een mooi begin.
Ook op http://www.xml.com/ldd/chapter/book/pdf/ch03.pdf staat een goed stuk. Alleen dit is allebei de theory achter de kernel devices. Maar heeft er iemand een voorbeeld (en ervaring), vanwaaruit ik mijn eigen toepassing kan verder werken?

Hier had uw advertentie kunnen staan!


Verwijderd

Ja, maar met videocapture drivers kom je niet zover als je over de parallele poort wilt werken ;)

Neem eens een kijkje in de sources van de parallele poort driver zelf, van daaruit kan je denk ik wel verder werken, het is dezelfde poort ;)

  • EWS99
  • Registratie: Maart 2001
  • Laatst online: 17-08 15:32
idd goeie tip! ff een kernelsource installeren (moest toch al)

Hier had uw advertentie kunnen staan!


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Op vrijdag 15 februari 2002 19:25 schreef beelzebubu het volgende:
Neem eens een kijkje in de sources van de parallele poort driver zelf, van daaruit kan je denk ik wel verder werken, het is dezelfde poort ;)
Hmm, eigenlijk een open deur :) Dat niemand daar eerder op gekomen is :z
Och, tis vrijdag eh :P

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • EWS99
  • Registratie: Maart 2001
  • Laatst online: 17-08 15:32
ik denk dat ik het idee device driver maar uit mijn hoofd ga halen, voorlopig, maar weet iemand hoe je nou iets naar de parallele poort stuurt (via /dev/lp0???)?
Ik heb (voor de kenners) een CenSim aan mijn linuxbak gehangen, maar hoe laat ik die ledjes nou branden?

Hier had uw advertentie kunnen staan!


Verwijderd

Op vrijdag 15 februari 2002 20:29 schreef hardrocker het volgende:
ik denk dat ik het idee device driver maar uit mijn hoofd ga halen, voorlopig, maar weet iemand hoe je nou iets naar de parallele poort stuurt (via /dev/lp0???)?
Ik heb (voor de kenners) een CenSim aan mijn linuxbak gehangen, maar hoe laat ik die ledjes nou branden?
Dat zei ik al >:)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>

int main()
{
  char buffer[256];
  int fd;

  fd = open("/dev/lp0", O_RDWR);

  /* maak hier de buffer */
  ..

  write(fd, buffer, <size>);
  close(fd);

  return 0;
}

Standaard ;)

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 16-08 16:08

deadinspace

The what goes where now?

Je bent fcntl.h en unistd.h vergeten te includen ;)

Bovendien werkt het (hier) gewoon niet. Ik heb zelf eens een progje voor de parallelle poort geschreven en had dat probleem toen ook. Ik heb het toen via de userspace parallelle poort driver-mogelijkheid (ppdev) van de 2.4 kernels gedaan (werkt niet op 2.2 en lager).

In http://gemini.luon.net/~marcelm/tmp/parport staat de code.

/dev/parport0 is een character device met major 99, minor 0.

  • EWS99
  • Registratie: Maart 2001
  • Laatst online: 17-08 15:32
Dat is wel weer een Device driver. Hij is lekker kort, en ik denk dat ik er wel wat aan heb!
Tnx!

Hier had uw advertentie kunnen staan!


Verwijderd

Ja, /dev/parport0 lijkt me handiger dan /dev/lp0, dat is namelijk een line printer.

Er is ook een userspace programma waar je de 8 plus pinnen van de parport mee kunt bedienen.
Misschien ook wel aardig om eens te bekijken.
Dit maakt geen gebruik van parport, parport_pc of ppdev.
http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/Home-Electrical-Control.html

Of je kunt even of http://www.torque.net/parport kijken.

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 16-08 16:08

deadinspace

The what goes where now?

Op zaterdag 16 februari 2002 18:27 schreef hardrocker het volgende:
Dat is wel weer een Device driver.
Ja, maar een userspace device driver, niet kernelspace.

  • baswandeling
  • Registratie: April 2001
  • Laatst online: 11-08 13:43
Hardrocker: Heb je al geprobeerd om het C programmaatje in de handleiding van de censim te compillen onder linux? Ken de censim wel, heb er namelijk ook een. Zit je toevallig in Eindhoven op het TLE? Zal hem eens gaan zoeken en kijken of ik hem onder linux aan de gang krijg.

  • zerok
  • Registratie: November 2001
  • Laatst online: 22:43

zerok

geen

ben zelf ook een beetje aan het orienteren en is best wel pittig. In linuxmag 5 stond een artikeltje daarover en op www.nedlinux.nl staat de code.
Voor jou doel is het wel een beetje overkill maar ach als je er zin in heb :)
als je gaat schrijven zou ik het wel eens willen zien :P

"never argue with idiots they drag you down to their level and beat you with experience" dilbert

Pagina: 1