From 2edfcdfcbbadf6dfd3649b31cd3c1a54cc0b9094 Mon Sep 17 00:00:00 2001 From: Federico Pellegrin Date: Tue, 2 Oct 2018 23:03:37 +0200 Subject: [PATCH] tests/periph_flashpage: add automated test for flash peripheral --- tests/periph_flashpage/main.c | 30 ++++++++++++++++++++++++++ tests/periph_flashpage/tests/01-run.py | 20 +++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100755 tests/periph_flashpage/tests/01-run.py diff --git a/tests/periph_flashpage/main.c b/tests/periph_flashpage/main.c index f79f08086e..e74e66d77a 100644 --- a/tests/periph_flashpage/main.c +++ b/tests/periph_flashpage/main.c @@ -290,6 +290,35 @@ static int cmd_test(int argc, char **argv) return 0; } +/** + * @brief Does a write and verify test on last page available + * + * @note Since every hardware can have different flash layouts for + * automated testing we always write to the last page available + * so we are independent of the size or layout + */ +static int cmd_test_last(int argc, char **argv) +{ + (void) argc; + (void) argv; + char fill = 'a'; + + for (unsigned i = 0; i < sizeof(page_mem); i++) { + page_mem[i] = (uint8_t)fill++; + if (fill > 'z') { + fill = 'a'; + } + } + + if (flashpage_write_and_verify((int)FLASHPAGE_NUMOF - 2, page_mem) != FLASHPAGE_OK) { + puts("error verifying the content of last page"); + return 1; + } + + puts("wrote local page buffer to last flash page"); + return 0; +} + static const shell_command_t shell_commands[] = { { "info", "Show information about pages", cmd_info }, { "dump", "Dump the selected page to STDOUT", cmd_dump }, @@ -302,6 +331,7 @@ static const shell_command_t shell_commands[] = { { "erase", "Erase the given page buffer", cmd_erase }, { "edit", "Write bytes to the local page buffer", cmd_edit }, { "test", "Write and verify test pattern", cmd_test }, + { "test_last", "Write and verify test pattern on last page available", cmd_test_last }, { NULL, NULL, NULL } }; diff --git a/tests/periph_flashpage/tests/01-run.py b/tests/periph_flashpage/tests/01-run.py new file mode 100755 index 0000000000..226c7011d6 --- /dev/null +++ b/tests/periph_flashpage/tests/01-run.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2018 Federico Pellegrin +# +# This file is subject to the terms and conditions of the GNU Lesser +# General Public License v2.1. See the file LICENSE in the top level +# directory for more details. + +import sys +from testrunner import run + + +def testfunc(child): + # writes and verifies the last page of the flash + child.sendline("test_last") + child.expect_exact('wrote local page buffer to last flash page') + + +if __name__ == "__main__": + sys.exit(run(testfunc))