summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan Honscheid <honscheid@google.com>2023-02-06 14:55:24 -0700
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2023-02-15 19:01:07 +0000
commit8636762aff20e11da8a99b010550ea3952d5bbc0 (patch)
treeeb5e9bdc57e905064945641dcd5b564cc2de58c7
parentbca2869e404b32d3e6b624084465c8c75f2d6891 (diff)
downloadchrome-ec-8636762aff20e11da8a99b010550ea3952d5bbc0.tar.gz
zephyr: test: Test 'flashread' console command
Test the operation, edge cases, and output formatting of the `flashread` console command BUG=None BRANCH=None TEST=./twister -s drivers/drivers.flash Change-Id: Ic572b4a34ebbe0436142b1214449944175af29f3 Signed-off-by: Tristan Honscheid <honscheid@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4224879 Reviewed-by: Tomasz Michalec <tmichalec@google.com>
-rw-r--r--common/flash.c4
-rw-r--r--zephyr/test/drivers/flash/src/flash.c42
2 files changed, 44 insertions, 2 deletions
diff --git a/common/flash.c b/common/flash.c
index c68f47a368..de2596ab27 100644
--- a/common/flash.c
+++ b/common/flash.c
@@ -1183,7 +1183,7 @@ static int command_flash_read(int argc, const char **argv)
int offset = -1;
int size = 256;
int rv;
- char *data;
+ uint8_t *data;
int i;
rv = parse_offset_size(argc, argv, 1, &offset, &size);
@@ -1194,7 +1194,7 @@ static int command_flash_read(int argc, const char **argv)
size = shared_mem_size();
/* Acquire the shared memory buffer */
- rv = shared_mem_acquire(size, &data);
+ rv = shared_mem_acquire(size, (char **)&data);
if (rv) {
ccputs("Can't get shared mem\n");
return rv;
diff --git a/zephyr/test/drivers/flash/src/flash.c b/zephyr/test/drivers/flash/src/flash.c
index f5ee17bb24..c0b0d9ef4f 100644
--- a/zephyr/test/drivers/flash/src/flash.c
+++ b/zephyr/test/drivers/flash/src/flash.c
@@ -16,6 +16,7 @@
#include <zephyr/drivers/gpio/gpio_emul.h>
#include <zephyr/kernel.h>
#include <zephyr/shell/shell_dummy.h>
+#include <zephyr/sys/byteorder.h>
#include <zephyr/ztest.h>
#define WP_L_GPIO_PATH NAMED_GPIOS_GPIO_NODE(wp_l)
@@ -645,6 +646,47 @@ ZTEST_USER(flash, test_console_cmd_flash_write__happy)
zassert_equal(output, 0xFFFFFFFF, "Got %08x", output);
}
+ZTEST_USER(flash, test_console_cmd_flash_read__bad_args)
+{
+ /* No args*/
+ CHECK_CONSOLE_CMD("flashread", NULL, EC_ERROR_PARAM_COUNT);
+
+ /* Check for alpha arg instead of number*/
+ CHECK_CONSOLE_CMD("flashread xyz 100", NULL, EC_ERROR_PARAM1);
+ CHECK_CONSOLE_CMD("flashread 100 xyz", NULL, EC_ERROR_PARAM2);
+}
+
+ZTEST_USER(flash, test_console_cmd_flash_read__too_big)
+{
+ CHECK_CONSOLE_CMD("flashread 0x10000 " STRINGIFY(INT_MAX), NULL,
+ EC_ERROR_INVAL);
+}
+
+ZTEST_USER(flash, test_console_cmd_flash_read__happy_4_bytes)
+{
+ /* Write some bytes to read */
+ zassert_ok(write_flash_helper32(0x10000, sys_cpu_to_be32(0xA1B2C3D4)));
+
+ static const char *expected = "\r\n\r\n"
+ "00010000: a1 b2 c3 d4\r\n";
+ CHECK_CONSOLE_CMD("flashread 0x10000 4", expected, EC_SUCCESS);
+}
+
+ZTEST_USER(flash, test_console_cmd_flash_read__happy_17_bytes)
+{
+ /* Test 16-byte column wrapping behavior */
+
+ /* Write some bytes to read */
+ zassert_ok(write_flash_helper32(0x10000, sys_cpu_to_be32(0xA1B2C3D4)));
+
+ static const char *expected =
+ "\r\n\r\n"
+ "00010000: a1 b2 c3 d4 ff ff ff ff ff ff ff ff ff ff ff ff\r\n"
+ "00010010: ff\r\n";
+
+ CHECK_CONSOLE_CMD("flashread 0x10000 17", expected, EC_SUCCESS);
+}
+
/**
* @brief Prepare a region of flash for the test_crec_flash_is_erased* tests
*