5 def __init__(self
, bar
, bar_size
, debug
=False):
7 self
.bar_size
= bar_size
11 if hasattr(self
, "sysfs"):
13 self
.sysfs
= open(self
.bar
, "r+b")
15 self
.mmap
= mmap
.mmap(self
.sysfs
.fileno(), self
.bar_size
)
18 if not hasattr(self
, "sysfs"):
25 def read(self
, addr
, length
=None):
27 length_int
= 1 if length
is None else length
28 for i
in range(length_int
):
29 self
.mmap
.seek(addr
+ 4*i
)
30 value
= int.from_bytes(self
.mmap
.read(4), "big")
32 print("read {:08x} @ {:08x}".format(value
, addr
+ 4*i
))
38 def write(self
, addr
, data
):
39 data
= data
if isinstance(data
, list) else [data
]
41 for i
, value
in enumerate(data
):
42 self
.mmap
[addr
+ 4*i
:addr
+ 4*(i
+ 1)] = value
.to_bytes(4, byteorder
="big")
44 print("write {:08x} @ {:08x}".format(value
, addr
+ 4*i
))