diff options
-rw-r--r-- | common/flash.c | 4 | ||||
-rw-r--r-- | zephyr/test/drivers/flash/src/flash.c | 42 |
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 * |