QNX 6.2 (mmap_device_memory) problem

Hi!

I have just upgraded from QNX 6.1 to QNX 6.2. I have written a resource
manager, which is talking with a PCI card using memory mapped registers. The
addresses to these registers are returned from the C function
mmap_device_memory, which is converting a physical address to the process
address space.

The problem is that when accessing the PCI Local configuration registers
using the address returned from the mmap_device_memory function (on a PLX
9050 chip on the PCI card) no real values are returned. They are all zero.
The memory-mapped area is 128 bytes long.
When I do the same test on the QNX 6.1 version, these register values seems
correct, using the same source code.
I have used DDD to check the status of each address pointer, but it seems
that they are OK. Using the QNX utility “pci -v”, I can verify that the PCI
base addresses are read correctly.

The BIOS mapped PCI base address values are (from pci -v utility):
PCI Mem Address = 0xdfffef80 128 bytes length
PCI Mem Address = 0xdfffee00 256 bytes length
PCI Mem Address = 0xdfff0000 32768 bytes length

It is the first address, which is mapped to the PCI local configuration
register on the PLX 9050 chip.

Can somebody tell me way I can’t access the memory mapped PCI registers on
the QNX 6.2 operating system?


Regards,

Oystein Solvberg
Telenor Satellite Broadcasting
Norway

The problem was fixed!

Oystein

“Øystein Sølvberg” <oystein.solvberg@telenor.com> wrote in message
news:ancb1m$dft$1@inn.qnx.com

Hi!

I have just upgraded from QNX 6.1 to QNX 6.2. I have written a resource
manager, which is talking with a PCI card using memory mapped registers.
The
addresses to these registers are returned from the C function
mmap_device_memory, which is converting a physical address to the process
address space.

The problem is that when accessing the PCI Local configuration registers
using the address returned from the mmap_device_memory function (on a PLX
9050 chip on the PCI card) no real values are returned. They are all zero.
The memory-mapped area is 128 bytes long.
When I do the same test on the QNX 6.1 version, these register values
seems
correct, using the same source code.
I have used DDD to check the status of each address pointer, but it seems
that they are OK. Using the QNX utility “pci -v”, I can verify that the
PCI
base addresses are read correctly.

The BIOS mapped PCI base address values are (from pci -v utility):
PCI Mem Address = 0xdfffef80 128 bytes length
PCI Mem Address = 0xdfffee00 256 bytes length
PCI Mem Address = 0xdfff0000 32768 bytes length

It is the first address, which is mapped to the PCI local configuration
register on the PLX 9050 chip.

Can somebody tell me way I can’t access the memory mapped PCI registers on
the QNX 6.2 operating system?


Regards,

Oystein Solvberg
Telenor Satellite Broadcasting
Norway