locked
MSI interrupts on PCIe device / Interruptions de type "MSI" sur périphérique PCIe RRS feed

  • Question

  • Hello all

    I need to manage a "MSI" type interrupt delivered by a PCI express device (message signaled interrupt). I wanted to have some examples of managing such types of interrupts on WinCE 6.0. At the moment I prepared a driver for the device, that is correctly recognized as a standard PCI device. I can read the configuration space header. It is also given a Irq and a SysIntr identifiers by the registry when the driver is loaded.

    But when the device delivers interrupts I cannot retrieve any interrupt on Irq/SysIntr using the standard InterruptInitialize function. In the Configuration Space Header of the device I can write a MessageAddress (given at offset 0x04C of the CSH). Do I need to write a specific register address on it? I can also write a Message Data (0x050) that will be written at the register address. If I write the address of a variable declared statically in my driver code, then this variable is never updated. Can you please help ?

     

     

    Bonjour à toutes et à tous

    Je dois réagir à des interruptions de type "MSI" (message signaled interrupt) générées par un périphérique PCIexpress. Je souhaite avoir des exemples de code qui prennent en charge ce type d'interruptions sous WinCE 6.0. Actuellement j'ai écrit un driver qui reconnaît bien ce périphérique en tant que périphérique PCI. J'ai accès au "configuration space header" (en-tête PCI du périphérique). Une fois l'énumération du bus PCI effectuée, des clés Irq et SysIntr m'ont aussi été attribuées en base de registre.

    Mais sur ces lignes d'interruptions je ne récupère pas d'interruption en utilisant la fonction standard InterruptInitialize. Dans le "configuration space header", je peux entrer un "MessageAddress" (à l'offset 0x04C du CSH). Dois-je écrire l'adresse d'un registre particulier? Je peux aussi entrer un "Message Data" (offset 0x050), message qui sera écrit à l'adresse du registre "MessageAddress". En entrant l'adresse d'une variable statique globale déclarée dans le code du driver, cette variable n'est jamais mise à jour. Quelqu'un a-t-il déjà été confronté à la gestion de ce type d'interruption ? Merci par avance de votre aide.


    lundi 1 août 2011 08:26