tests/ports/rp2: Add test for SLEEP_ENx registers over lightsleep.
Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
58
tests/ports/rp2/rp2_lightsleep_regs.py
Normal file
58
tests/ports/rp2/rp2_lightsleep_regs.py
Normal file
@@ -0,0 +1,58 @@
|
||||
# Test that SLEEP_ENx registers are preserved over a call to machine.lightsleep().
|
||||
|
||||
import sys
|
||||
from machine import mem32, lightsleep
|
||||
import unittest
|
||||
|
||||
is_rp2350 = "RP2350" in sys.implementation._machine
|
||||
|
||||
if is_rp2350:
|
||||
CLOCK_BASE = 0x40010000
|
||||
SLEEP_EN0 = CLOCK_BASE + 0xB4
|
||||
SLEEP_EN1 = CLOCK_BASE + 0xB8
|
||||
TO_DISABLE_EN0 = 1 << 30 # SHA256
|
||||
TO_DISABLE_EN1 = 1 << 4 # SRAM0
|
||||
else:
|
||||
CLOCK_BASE = 0x40008000
|
||||
SLEEP_EN0 = CLOCK_BASE + 0xA8
|
||||
SLEEP_EN1 = CLOCK_BASE + 0xAC
|
||||
TO_DISABLE_EN0 = 1 << 28 # SRAM0
|
||||
TO_DISABLE_EN1 = 1 << 0 # SRAM4
|
||||
|
||||
|
||||
class Test(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.orig_sleep_en0 = mem32[SLEEP_EN0]
|
||||
self.orig_sleep_en1 = mem32[SLEEP_EN1]
|
||||
|
||||
def tearDown(self):
|
||||
mem32[SLEEP_EN0] = self.orig_sleep_en0
|
||||
mem32[SLEEP_EN1] = self.orig_sleep_en1
|
||||
|
||||
def test_sleep_en_regs(self):
|
||||
print()
|
||||
|
||||
# Disable some bits so the registers aren't just 0xffff.
|
||||
mem32[SLEEP_EN0] &= ~TO_DISABLE_EN0
|
||||
mem32[SLEEP_EN1] &= ~TO_DISABLE_EN1
|
||||
|
||||
# Get the registers before the lightsleep.
|
||||
sleep_en0_before = mem32[SLEEP_EN0] & 0xFFFFFFFF
|
||||
sleep_en1_before = mem32[SLEEP_EN1] & 0xFFFFFFFF
|
||||
print(hex(sleep_en0_before), hex(sleep_en1_before))
|
||||
|
||||
# Do a lightsleep.
|
||||
lightsleep(100)
|
||||
|
||||
# Get the registers after a lightsleep.
|
||||
sleep_en0_after = mem32[SLEEP_EN0] & 0xFFFFFFFF
|
||||
sleep_en1_after = mem32[SLEEP_EN1] & 0xFFFFFFFF
|
||||
print(hex(sleep_en0_after), hex(sleep_en1_after))
|
||||
|
||||
# Check the registers have not changed.
|
||||
self.assertEqual(sleep_en0_before, sleep_en0_after)
|
||||
self.assertEqual(sleep_en1_before, sleep_en1_after)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user