tests/ports/rp2: Update DMA test to work on RP2350.
Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
@@ -1,21 +1,36 @@
|
|||||||
# Test rp2.DMA functionality.
|
# Test rp2.DMA functionality.
|
||||||
|
|
||||||
|
import sys
|
||||||
import time
|
import time
|
||||||
import machine
|
import machine
|
||||||
import rp2
|
import rp2
|
||||||
|
|
||||||
|
is_rp2350 = "RP2350" in sys.implementation._machine
|
||||||
|
|
||||||
src = bytes(i & 0xFF for i in range(16 * 1024))
|
src = bytes(i & 0xFF for i in range(16 * 1024))
|
||||||
|
|
||||||
print("# test basic usage")
|
print("# test basic usage")
|
||||||
|
|
||||||
dma = rp2.DMA()
|
dma = rp2.DMA()
|
||||||
|
|
||||||
|
# Test printing.
|
||||||
print(dma)
|
print(dma)
|
||||||
print(rp2.DMA.unpack_ctrl(dma.pack_ctrl()))
|
|
||||||
|
# Test pack_ctrl/unpack_ctrl.
|
||||||
|
ctrl_dict = rp2.DMA.unpack_ctrl(dma.pack_ctrl())
|
||||||
|
if is_rp2350:
|
||||||
|
for entry in ("inc_read_rev", "inc_write_rev"):
|
||||||
|
assert entry in ctrl_dict
|
||||||
|
del ctrl_dict[entry]
|
||||||
|
for key, value in sorted(ctrl_dict.items()):
|
||||||
|
print(key, value)
|
||||||
|
|
||||||
|
# Test register access.
|
||||||
dma.read = 0
|
dma.read = 0
|
||||||
dma.write = 0
|
dma.write = 0
|
||||||
dma.count = 0
|
dma.count = 0
|
||||||
dma.ctrl = dma.pack_ctrl()
|
dma.ctrl = dma.pack_ctrl()
|
||||||
print(dma.read, dma.write, dma.count, dma.ctrl & 0x01FFFFFF, dma.channel, dma.registers)
|
print(dma.read, dma.write, dma.count, dma.ctrl & 0x01F, dma.channel, dma.registers)
|
||||||
dma.close()
|
dma.close()
|
||||||
|
|
||||||
# Test closing when already closed.
|
# Test closing when already closed.
|
||||||
@@ -62,7 +77,8 @@ dma.write = dest
|
|||||||
dma.count = len(dest) // 4
|
dma.count = len(dest) // 4
|
||||||
dma.ctrl = dma.pack_ctrl()
|
dma.ctrl = dma.pack_ctrl()
|
||||||
dt = run_and_time_dma(dma)
|
dt = run_and_time_dma(dma)
|
||||||
print(70 <= dt <= 110)
|
expected_dt_range = range(40, 70) if is_rp2350 else range(70, 125)
|
||||||
|
print(dt in expected_dt_range)
|
||||||
print(dest[:8], dest[-8:])
|
print(dest[:8], dest[-8:])
|
||||||
dma.close()
|
dma.close()
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,22 @@
|
|||||||
# test basic usage
|
# test basic usage
|
||||||
DMA(0)
|
DMA(0)
|
||||||
{'inc_read': 1, 'high_pri': 0, 'write_err': 0, 'ring_sel': 0, 'enable': 1, 'treq_sel': 63, 'sniff_en': 0, 'irq_quiet': 1, 'read_err': 0, 'chain_to': 0, 'busy': 0, 'inc_write': 1, 'ring_size': 0, 'bswap': 0, 'size': 2, 'ahb_err': 0}
|
ahb_err 0
|
||||||
0 0 0 4161593 0 <memoryview>
|
bswap 0
|
||||||
|
busy 0
|
||||||
|
chain_to 0
|
||||||
|
enable 1
|
||||||
|
high_pri 0
|
||||||
|
inc_read 1
|
||||||
|
inc_write 1
|
||||||
|
irq_quiet 1
|
||||||
|
read_err 0
|
||||||
|
ring_sel 0
|
||||||
|
ring_size 0
|
||||||
|
size 2
|
||||||
|
sniff_en 0
|
||||||
|
treq_sel 63
|
||||||
|
write_err 0
|
||||||
|
0 0 0 25 0 <memoryview>
|
||||||
ValueError
|
ValueError
|
||||||
# test memory copy
|
# test memory copy
|
||||||
True
|
True
|
||||||
|
|||||||
Reference in New Issue
Block a user