[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
external PCI board direct access
Hi,
I've got an external PCI board
/proc/pci gives me :
Non-prefetchable 32 bit memory at 0xfeaff800 [0xfeaff800].
I/O at 0xd800 [0xd801].
Non-prefetchable 32 bit memory at 0xfeaa0000 [0xfeaa0000].
Non-prefetchable 32 bit memory at 0xfea80000 [0xfea80000].
I'd like to access to memory at 0xfea80000 which is a SDRAM on my
external board
in my driver I made
baseAddress=0xfea80000;
sramSize=0x00020000;
ptr = (u_int *) ioremap (baseAddress, sramSize)
thanks to the pointer ptr I can access to the memory :
for (i = 0; i < 0x10; i++)
writel (i, the.ptrAccess + i);
for (i = 0; i < 0x10; i++)
printk ("at 0x%08x got 0x%08x\n", i, readl
(the.ptrAccess + i));
---------
I want to do the same thing from my application.
I can export ptr via an ioctl () access in order to do :
for (i = 0; i < 0x10; i++)
(*(volatile u_int *) (ptr + i)) = i;
for (i = 0; i < 0x10; i++)
printf ("at 0x%08x got 0x%08x\n", i, (*(volatile u_int
*) (ptr + i)));
as soon as I access to (*(volatile u_int *) (ptr + i)) I've got a
"Segmentation fault (core dumped)"
Can somebody tell me if I forgot something or what is the best method to
do this direct memory access.
Best regards.
Frédéric Dumoulin
-
Kernelnewbies: Help each other learn about the Linux kernel.
Archive: http://mail.nl.linux.org/
IRC Channel: irc.openprojects.net / #kernelnewbies
Web Page: http://www.surriel.com/kernelnewbies.shtml