Bonjour ,
je veux de l'aide de vous, s'il vous plait ;jai un programme et j'ai quelque dificultés là dessus:
**************************************************
#include <linux/module.h>
#include <asm/uaccess.h>
#include <asm-i386/io.h>
#include <linux/fs.h>
#define LPT_BASE 0x378
#define DEVICE_NAME "stepper"
static int Major,i,j,k;
static int Device_Open = 0;
static int pattern[2][8][8] = {
{{0xA,0x9,0x5,0x6,0xA,0x9,0x5,0x6},{0xA,0x8,0x9,0x1,0x5,0x4,0x6,0x2}},
{{0x6,0x5,0x9,0xA,0x6,0x5,0x9,0xA},{0x2,0x6,0x4,0x5,0x1,0x9,0x8,0xA}}
};
int step(void)
{
if(k<8) {
// printk("%d\n",pattern[j][k]);
outb(pattern[j][k],LPT_BASE);
k++;
}
else {
k=0;
outb(pattern[j][k],LPT_BASE);
// printk("%d\n",pattern[j][k]); /*#####*/
k++; /*#####*/
}
return 0;
}
static int stepper_open(struct inode *inode,struct file *filp)
{
if(Device_Open) return -EBUSY;
printk("Ouverture en mode Lecture/Ecriture ...\n");
Device_Open++;
return 0;
}
static int stepper_release(struct inode *inode,struct file *filp)
{
printk("Fermeture ...\n");
Device_Open --;
return 0;
}
static int stepper_write(struct file *file, const char *buffer, size_t len, loff_t *offset)
{
char data;
char cmd;
get_user(data,buffer);
switch (cmd=data) {
case 'H':
printk("Reportez-vous au fichier README\n");
break;
case 'h':
printk("Initialisation en mode demi pas\n");
j=0;
break;
case 'f':
printk("Initialisation en mode pas entier\n");
j=1;
break;
case 'F':
i=0;
step();
break;
case 'R':
i=1;
step();
break;
// default:
// printk("Reportez-vous au fichier README, les commandes sont H, h, F, f, et R\n");
// break;
}
return 1;
}
static struct file_operations fops={
open:stepper_open,
write:stepper_write,
release:stepper_release,
};
int init_module(void)
{
Major = register_chrdev(0, DEVICE_NAME, &fops);
if (Major < 0) {
printk("<1>L'enregistrement du périphérique caractère avec %d a échoué\n",Major);
return Major;
}
printk("<1>Enregistrement réussi, a obtenu le nombre majeur= %d\n",Major);
return 0;
}
void cleanup_module(void)
{
printk("<1>Non enregistré\n");
unregister_chrdev(Major,DEVICE_NAME);
}
***************************************
et dont voilà son makefile
-----------------------------------------------------------------
TARGET := stepper
WARN := -W -Wall
INCLUDE:= /usr/src/linux-2.4/include
#INCLUDE:= -isystem /usr/src/`uname -r`/include
CFLAGS := -O2 -DMODULE -D__KERNEL__ ${WARN} -I${INCLUDE}
all : stepper.o
#${TARGET}.o : ${TARGET}.c
clean:
rm -rf *.o
-------------------------------------------------------------------
je veux que vous m'expliquez ce programe surtout:
pattern[2][8][8] = {
{{0xA,0x9,0x5,0x6,0xA,0x9,0x5,0x6},{0xA,0x8,0x9,0x1,0x5,0x4,0x6,0x2}},
{{0x6,0x5,0x9,0xA,0x6,0x5,0x9,0xA},{0x2,0x6,0x4,0x5,0x1,0x9,0x8,0xA}}
};
j'attend votre reponse s'il vous plait le plus tot possible
Poste le Sunday 11 June 2006 20:07:05