Skip to main content
Visitor II
April 26, 2004
Question

Driver GPIO Windows CE

  • April 26, 2004
  • 1 reply
  • 621 views
Posted on April 26, 2004 at 12:03

Driver GPIO Windows CE

    This topic has been closed for replies.

    1 reply

    olivier2Author
    Visitor II
    April 26, 2004
    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.