From 354d17523f599746a84e5b22fa670c9910137947 Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Mon, 6 Jul 2015 00:08:33 +0300 Subject: modmachine: Implement physical memory access using /dev/mem (Linux, etc). This requires root access. And on recent Linux kernels, with CONFIG_STRICT_DEVMEM option enabled, only address ranges listed in /proc/iomem can be accessed. The above compiled-time option can be however overriden with boot-time option "iomem=relaxed". This also removed separate read/write paths - there unlikely would be a case when they're different. --- tests/extmod/machine1.py | 14 -------------- tests/extmod/machine1.py.exp | 3 --- tests/extmod/machine_mem.py | 16 ++++++++++++++++ tests/extmod/machine_mem.py.exp | 1 + 4 files changed, 17 insertions(+), 17 deletions(-) create mode 100644 tests/extmod/machine_mem.py create mode 100644 tests/extmod/machine_mem.py.exp (limited to 'tests/extmod') diff --git a/tests/extmod/machine1.py b/tests/extmod/machine1.py index e7fd40d4d..af4dacd03 100644 --- a/tests/extmod/machine1.py +++ b/tests/extmod/machine1.py @@ -7,22 +7,8 @@ except ImportError: import sys sys.exit() -import uctypes - print(machine.mem8) -buf = bytearray(8) -addr = uctypes.addressof(buf) - -machine.mem8[addr] = 123 -print(machine.mem8[addr]) - -machine.mem16[addr] = 12345 -print(machine.mem16[addr]) - -machine.mem32[addr] = 123456789 -print(machine.mem32[addr]) - try: machine.mem16[1] except ValueError: diff --git a/tests/extmod/machine1.py.exp b/tests/extmod/machine1.py.exp index e46afc752..bb421ea5c 100644 --- a/tests/extmod/machine1.py.exp +++ b/tests/extmod/machine1.py.exp @@ -1,7 +1,4 @@ <8-bit memory> -123 -12345 -123456789 ValueError ValueError TypeError diff --git a/tests/extmod/machine_mem.py b/tests/extmod/machine_mem.py new file mode 100644 index 000000000..7d8a9ac01 --- /dev/null +++ b/tests/extmod/machine_mem.py @@ -0,0 +1,16 @@ +# This test requires root privilege, so is usually skipped +# It also assumes x86 legacy hardware (with Video BIOS present). + +try: + import machine +except ImportError: + print("SKIP") + import sys + sys.exit() + +try: + print(hex(machine.mem16[0xc0000])) +except OSError: + print("SKIP") + import sys + sys.exit() diff --git a/tests/extmod/machine_mem.py.exp b/tests/extmod/machine_mem.py.exp new file mode 100644 index 000000000..371f8fa44 --- /dev/null +++ b/tests/extmod/machine_mem.py.exp @@ -0,0 +1 @@ +0xaa55 -- cgit v1.2.3