Bonjour,
J'ai une carte PC qui tourne avec un linux embarqué RedHat 7.3 (2.4.17 gcc 2.95.3).
Je cherche à contrôler le port parallèle (10 pin) de la carte pour ensuite lire/écrire dans une Flash et finalement programmer un FPGA.
Il n'a qu'un seul port parallèle physique (connecteur He10-10 pin) sur ma carte.
Mais, je ne sais pas où lire/écrire car je vois 3 ports parallèles logiques:
J'ai cherché dans les posts et je suis tombé sur des bouts de code intéressants que j'ai récupéré et adapté:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 # ls /dev | grep -e par -e lp lp0 par0 par1 par2 # cat /proc/ioports | grep parport 0x278-0x27a : parport2 0x378-0x37a : parport1 0x3bc-0x3be : parport0
Le résultat à l'execution est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 char* par0 = "/dev/par0"; char* par1 = = "/dev/par1"; char* par1 = = "/dev/par2"; int p0,p1,p2,res; p0 = open ( par0, O_RDWR | O_NOCTTY | O_NDELAY ) ; if ( p0 == -1 ) { fprintf(stderr,"Error open %s failed\n",par0) ;} else {fprintf(stdout,"---open %s success\n",par0);} p1 = open ( par0, O_RDWR | O_NOCTTY | O_NDELAY ) ; if ( p1 == -1 ) { fprintf(stderr,"Error open %s failed\n",par1) ;} else {fprintf(stdout,"---open %s success\n",par1);} p2 = open ( par0, O_RDWR | O_NOCTTY | O_NDELAY ) ; if ( p2 == -1 ) { fprintf(stderr,"Error open %s failed\n",par2) ;} else {fprintf(stdout,"---open %s success\n",par2);} res = ioctl ( p0 , PPCLAIM , &i ) ; if ( res != 0 ) {fprintf(stderr,"NH: %s ERROR PPCLAIM res=%d,errno=%s\n",par0,res,strerror(errno));} res = ioctl ( p1 , PPCLAIM , &i ) ; if ( res != 0 ) {fprintf(stderr,"NH: %s ERROR PPCLAIM res=%d,errno=%s\n",par1,res,strerror(errno));} res = ioctl ( p2 , PPCLAIM , &i ) ; if ( res != 0 ) {fprintf(stderr,"NH: %s ERROR PPCLAIM res=%d,errno=%s\n",par2,res,strerror(errno));}
Quelqu'un a-t-il une idée de pourquoi PPCLAIM échoue ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 lp0: compatibility mode ---open /dev/par0 success lp1: compatibility mode ---open /dev/par1 success lp2: compatibility mode ---open /dev/par2 success /dev/par1 ERROR PPCLAIM res=-1,errno=Invalid argument /dev/par2 ERROR PPCLAIM res=-1,errno=Invalid argument /dev/par0 ERROR PPCLAIM res=-1,errno=Invalid argument
Quel est le port logique que je dois attaquer ?
Le compatibility mode est-il un problème ?
Merci d'avance.
Partager