From 2811651ce44eb17f64f4af3b6088b5933d9e165b Mon Sep 17 00:00:00 2001 From: Romain Goyet Date: Fri, 19 Oct 2018 10:44:59 +0200 Subject: [PATCH] Add a DFU test --- tests/dfu_test.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 tests/dfu_test.py diff --git a/tests/dfu_test.py b/tests/dfu_test.py new file mode 100644 index 000000000..63862f602 --- /dev/null +++ b/tests/dfu_test.py @@ -0,0 +1,22 @@ +# We want to test a bunch of addresses and sizes + +import os + +def random_write(flash_offset, length): + flash_base_address = 0x08000000 + os.system("head -c %d /dev/urandom > data.bin" % length) + os.system("dfu-util -i 0 -a 0 -s 0x%x -D data.bin > /dev/null 2>&1" % (flash_base_address + flash_offset)) + os.system("rm result.bin") + os.system("dfu-util -i 0 -a 0 -s 0x%x:%d -U result.bin > /dev/null 2>&1" % (flash_base_address, flash_offset + length + 100)) + data = open('data.bin', 'rb').read() + result = open('result.bin', 'rb').read() + theoretical_result = "\xFF"*flash_offset + data + "\xFF"*100 + return (result == theoretical_result) + +pairs = [(0,1), (5,2), (37,33), (211,2719), (0x4000-5, 17)] +# The last test crosses sector boundaries +for (offset,length) in pairs: + if not random_write(offset, length): + print("[ERROR] Write %d bytes at offset 0x%x" % (length, offset)) + else: + print("[OK] Write %d bytes at offset 0x%x" % (length, offset))