public inbox for linux-omap@vger.kernel.org
 help / color / mirror / Atom feed
* mmap /dev/mem in python
@ 2009-10-20 22:06 Brett Graham
  2009-10-20 22:17 ` Tony Lindgren
  2009-10-20 23:18 ` Paul Walmsley
  0 siblings, 2 replies; 8+ messages in thread
From: Brett Graham @ 2009-10-20 22:06 UTC (permalink / raw)
  To: linux-omap

I'm trying to mmap /dev/mem in python to access various registers on a
gumstix overo (with an omap 3530 processor). Here is the code I'm
using (as a minimal example):
----------------------------
import os, mmap
MAP_MASK = mmap.PAGESIZE - 1
addr = (see below)

f = os.open("/dev/mem", os.O_RDWR | os.O_SYNC)
m = mmap.mmap(f, mmap.PAGESIZE, mmap.MAP_SHARED, mmap.PROT_WRITE |
mmap.PROT_READ, offset=addr & ~MAP_MASK)
m.seek(addr & MAP_MASK)
c = m.read_byte()
print c
m.close()
os.close(f)
----------------------------

If I use: addr = 0x48002178 everything works swimmingly. However, if I
use: addr = 0x48088024 (or all the addresses I've tried > 0x48044000)
I get the following error

Unhandled fault: external abort on non-linefetch (0x1018) at 0x40020024
Bus error

and python crashes. I'm basing the mmap flags and options off of
devmem2.c. If I remove the O_SYNC flag from the os.open command, I can
read and write to registers fine, but randomly I will get the
Unhandled fault error and things will not work correctly.

Am I using the right command to write to the omap registers? should I
be using the O_SYNC flag? Any ideas where these errors are coming
from?

Thanks in advance for your help.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2009-10-21 12:20 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-20 22:06 mmap /dev/mem in python Brett Graham
2009-10-20 22:17 ` Tony Lindgren
     [not found]   ` <47b23c40910201615l1b1ab25ewd1dcae6b27728397@mail.gmail.com>
2009-10-20 23:16     ` Fwd: " Brett Graham
2009-10-20 23:26       ` Paul Walmsley
2009-10-21  0:01         ` Brett Graham
2009-10-21  0:27           ` Paul Walmsley
2009-10-21 12:20             ` Brett Graham
2009-10-20 23:18 ` Paul Walmsley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox