Is your card returning FFFFFFFF for device or vendor ID? You might still be able to access in U-Boot via the
pci command but since that means no device present on a device scan, Linux would not pick it up. I could be very wrong about that (I presume this is an ARM platform since you mention U-Boot - maybe it works differently on different CPU architectures ...)
It's possible that Linux is reading the PCI bus incorrectly. Do other PCI devices than your custom one work? If not, check to make sure you are using the right kernel for your board or maybe need to look into your
make menuconfig options more closely when building your kernel.
/dev/mem lets you directly access unmapped memory addresses. You can use tools like
dd and such, though doing specific reads and writes to single addresses through
bash is not going to be pleasant or easy. I'm unaware of a Linux tool that acts like a "monitor", directly reading and writing memory or a device (maybe
gdb but it operates in userspace ...)