In message <NDBBLJKOJGKDOFBHNPGEGEIKCEAA.elan at nxnetworks.com> you wrote: > > Thanks to all those who helped me get my custom 860 board up and running! > My next question is about mapping some physical memory to user space. I > have some devices with memory mapped registers. One of them lives at > 0x84000800 (above 2Gb!). I have been trying to mmap() this into user space
That's a physical address, right? > memory, without success (the kernel doesn't like the >2Gb). Ummm... you must have been doing something wrong. > >From what I understand, there are usually a few options. Usually one can > use mmap() -- although I don't know if I can -- or one can write a device > driver to work with kmalloc and friends. You can use mmap(), but of course you need a device driver that provides such a mmap() interface. > What would be the easiest way to gain access to that physical memory > (non-cached, of course) from user space? Obviously, it would be nice to map > it in at that very address in user space, but I don't think that's going to > happen. Any tips would be greatly appreciated, as I'm new to this game. No. You should really use mmap(), but you will end up with virtual addresses (a virtual kernel address in your device driver, and a virtual user address in your application) which differ from the physical address. See drivers/char/ip860_mem.c for examples of how to export physical address ranges (in the example it's VMEBus memory) to user level applications. You can find the file in the kernel sources on our FTP server, see ftp://ftp.denx.de/pub/LinuxPPC/usr/src/linux-2.4.4-2001-07-23.tar.bz2 Wolfgang Denk -- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd at denx.de Certainly there are things in life that money can't buy, but it's very funny - Did you ever try buying them without money? - Ogden Nash ** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
