cancel
Showing results for 
Search instead for 
Did you mean: 

Driver GPIO Windows CE

olivier2
Associate
Posted on April 26, 2004 at 12:03

Driver GPIO Windows CE

1 REPLY 1
olivier2
Associate
Posted on April 26, 2004 at 12:03

Bonjour à tous,

Je suis en train de développer un driver Windows CE .NET 4.2 pour utiliser le GPIO du Elite.

J'utilise une structure pour contrôler tous les registres du GPIO.

Le principe que j'essaye d'implementer est de mapper un pointeur de cette structure sur le début de l'adresse physique des registres du GPIO.

La fonction MmMapIoSpace me renvoie bien une adresse sur laquelle je peux lire et écrire, mais comme rien ne se passe sur le GPIO, je suppose qu'elle ne pointre pas sur la bonne adresse physique !

Voici le code qui permet d'activer le GPIO (SB_Misc0) :

Code:

SouthBridgeRegisterMisc0.QuadPart = 0x0cf8;

SouthBridgeRegisterMisc0_val.QuadPart = 0x0cfc;

pSB_Misc0 = (PUINT) MmMapIoSpace(SouthBridgeRegisterMisc0 , (ULONG) sizeof(UINT) , FALSE);

pSB_Misc0_val = (PUCHAR) MmMapIoSpace(SouthBridgeRegisterMisc0_val, (ULONG) sizeof(UCHAR), FALSE);

*pSB_Misc0 = 0x80006040;

*pSB_Misc0_val |= 0x02;

Voici le code qui permet de mapper l'addresse physique de base sur une adresse virtuelle :

Code:

gpioAddr.QuadPart = 0x0320;

pGPIO = (PSTRUCT_GPIO) MmMapIoSpace(gpioAddr, (ULONG) sizeof(STRUCT_GPIO), FALSE);

Ensuite, je peux par exemple mettre mon port 1 en sortie et à l'état haut.

Code:

pGPIO->port1.portDirCtrl.byte = 0x00;

pGPIO->port1.GPIOport.byte = 0xff;

Est-ce que quelqu'un aurait une idée de ce qui cloche ?

Merci beaucoup pour votre aide,

Olivier.

PS : Je test sur la ELITEBD Board Rev 1.1.