[ELDK] Userland memory access

Detlev Zundel dzu at denx.de
Tue Oct 5 17:37:16 CEST 2010


Hi Stefano,

> Luigi Rizzi wrote:
>> Hello,
>> 
>> I connected an external SRAM to my TQM885D module. In the driver I'm
>> writing, with the virtual address returned by ioremap(), I can access
>> the memory locations with readb/writeb functions and also with direct
>> access.
>> 
>> It's possible to map this kernel virtual space also in a user land
>> process?
>
> Of course. You need to implement the mmap entry point in your driver, as
> the framebuffer drivers are usual to do. Your application in user space
> needs only to call mmap() after opening your driver and use the returned
> pointer to access your SRAM.
>
> See more info with "man mmap". You find a lot of examples in kernel how
> to write the mmap entry point.

Please note that with recent kernels (containing git commit-id
dd02b67d5e9e7896891fa27eb5db65f55a290998, i.e. v2.6.36-rc2 and up) we
can use such external memory which has been setup by firmware correctly
with "only standard drivers".  One example is the MRAM on the PDM360NG
dts file[1] starting in line 118.  This uses the CONFIG_MTD_PHYSMAP_OF,
CONFIG_MTD_PHYSMAP, CONFIG_MTD_PLATRAM combo.

Note that this setup even allows us to divide such an address space in
multiple partitions with potentially differing access rights.  I find
the latter especially smart as it can be used to isolate un-cooperative
software widely seen in the industrial field.

Cheers
  Detlev

[1] http://git.denx.de/?p=linux-2.6-denx.git;a=blob;f=arch/powerpc/boot/dts/pdm360ng.dts
-- 
You get 3 opportunities to advertise your Rock band, no more.
           -- Proposed Symbolics guidelines for mail messages (1984)
--
DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de


More information about the eldk mailing list