I have a 6032E series PCI card from national instrument.
I would like to interface it on QNX but I can’t do it.
When I use the command “pci â€“v” i have :
Class = Unknown (Unknown) Vendor ID = 1093h, National Instruments Device ID = 2a60h, PCI-6023E PCI index = 0h Class Codes = ff0000h Revision ID = 0h Bus number = 0 Device number = 11 Function num = 0 Status Reg = 280h Command Reg = 117h Header type = 0h Single-function BIST = 0h Build-in-self-test not supported Latency Timer = 20h Cache Line Size= 8h un-cacheable PCI Mem Address = ffbee000h 32bit length 4096 enabled PCI Mem Address = ffbed000h 32bit length 4096 enabled Max Lat = 0ns Min Gnt = 0ns PCI Int Pin = INT A Interrupt line = 5
Then I can see we have 2 memory addresses (ffbee000h et ffbed000h).
I have seen in the help menu of QNX. There is the command mmap_device_memory.
I mapped my card like that :
I attach the card with the command pci_device_attach (here, there are no problem) mem0=malloc(info.BaseAddressSize); mem0=(unsigned char *)mmap_device_memory((caddr_t)mem0,info.BaseAddressSize,PROT_READ|PROT_WRITE|PROT_NOCACHE, 0,info.CpuBaseAddress); Then I use "mem0" to access my register (this should be correct because it's the code of the constructor)
according to me i can’t access my register card because the mapping doesn’t work.
Can you help me ?