This is an automated email from the ASF dual-hosted git repository.

utzig pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git


The following commit(s) were added to refs/heads/master by this push:
     new 6a59feb  Add flash-id parameter to flash cli command
6a59feb is described below

commit 6a59feb01bebbcc254ceb9023fa949c000e4a1e3
Author: Fabio Utzig <[email protected]>
AuthorDate: Thu Aug 16 15:23:14 2018 -0300

    Add flash-id parameter to flash cli command
---
 test/flash_test/src/flash_test/flash_test.c | 105 +++++++++++++++++-----------
 1 file changed, 64 insertions(+), 41 deletions(-)

diff --git a/test/flash_test/src/flash_test/flash_test.c 
b/test/flash_test/src/flash_test/flash_test.c
index d24035f..3703244 100644
--- a/test/flash_test/src/flash_test/flash_test.c
+++ b/test/flash_test/src/flash_test/flash_test.c
@@ -41,69 +41,99 @@ flash_cli_cmd(int argc, char **argv)
     uint32_t sz = 1;
     int sec_cnt;
     int i;
+    int devid;
     int soff;
     char *eptr;
     char tmp_buf[8];
     char pr_str[80];
 
-    hf = hal_bsp_flash_dev(0);
-    if (!hf) {
-        console_printf("No flash device present\n");
+    if (argc > 1 && (!strcmp(argv[1], "?") || !strcmp(argv[1], "help"))) {
+        console_printf("Commands Available\n");
+        console_printf("flash [flash-id] -- dumps sector map \n");
+        console_printf("flash <flash-id> read <offset> <size> -- reads bytes 
from flash \n");
+        console_printf("flash <flash-id> write <offset>  <size>  -- writes 
incrementing data pattern 0-8 to flash \n");
+        console_printf("flash <flash-id> erase <offset> <size> -- erases flash 
\n");
         return 0;
     }
-    if (argc == 1) {
-        /*
-         * print status
-         */
-        console_printf("Flash at 0x%lx size 0x%lx with %d sectors,"
-          " alignment req %d bytes\n",
-                (long unsigned int) hf->hf_base_addr,
-                (long unsigned int) hf->hf_size,
-                hf->hf_sector_cnt,
-                hf->hf_align);
-        sec_cnt = hf->hf_sector_cnt;
-        if (sec_cnt > 32) {
-            sec_cnt = 32;
-        }
-        for (i = 0; i < sec_cnt; i++) {
-            console_printf("  %d: %lx\n", i,
-                    (long unsigned int) hal_flash_sector_size(hf, i));
-        }
-        if (sec_cnt != hf->hf_sector_cnt) {
-            console_printf("...  %d: %lx\n", hf->hf_sector_cnt - 1,
-              (long unsigned int) hal_flash_sector_size(hf, hf->hf_sector_cnt 
- 1));
+
+    devid = 0;
+    if (argc < 3) {
+        if (argc == 2) {
+            devid = strtoul(argv[1], &eptr, 0);
+            if (*eptr != 0) {
+                console_printf("Invalid flash id %s\n", argv[1]);
+                return 0;
+            }
         }
+        do {
+            hf = hal_bsp_flash_dev(devid);
+            if (!hf) {
+                if (argc == 2) {
+                    console_printf("Flash device not present\n");
+                }
+                return 0;
+            }
+            console_printf("Flash %d at 0x%lx size 0x%lx with %d sectors,"
+              " alignment req %d bytes\n",
+                    devid,
+                    (long unsigned int) hf->hf_base_addr,
+                    (long unsigned int) hf->hf_size,
+                    hf->hf_sector_cnt,
+                    hf->hf_align);
+            sec_cnt = hf->hf_sector_cnt;
+            if (sec_cnt > 32) {
+                sec_cnt = 32;
+            }
+            for (i = 0; i < sec_cnt; i++) {
+                console_printf("  %d: %lx\n", i,
+                        (long unsigned int) hal_flash_sector_size(hf, i));
+            }
+            if (sec_cnt != hf->hf_sector_cnt) {
+                console_printf("...  %d: %lx\n", hf->hf_sector_cnt - 1,
+                  (long unsigned int) hal_flash_sector_size(hf, 
hf->hf_sector_cnt - 1));
+            }
+            ++devid;
+        } while(argc == 1);
+
         return 0;
     }
-    if (argc > 2) {
-        off = strtoul(argv[2], &eptr, 0);
+
+    if (argc > 1) {
+        devid = strtoul(argv[1], &eptr, 0);
+        if (*eptr != 0) {
+            console_printf("Invalid flash id %s\n", argv[1]);
+            goto err;
+        }
+    }
+    if (argc > 3) {
+        off = strtoul(argv[3], &eptr, 0);
         if (*eptr != '\0') {
             console_printf("Invalid offset %s\n", argv[2]);
             goto err;
         }
     }
-    if (argc > 3) {
-        sz = strtoul(argv[3], &eptr, 0);
+    if (argc > 4) {
+        sz = strtoul(argv[4], &eptr, 0);
         if (*eptr != '\0') {
             console_printf("Invalid size %s\n", argv[3]);
             goto err;
         }
     }
-    if (!strcmp(argv[1], "erase")) {
+    if (!strcmp(argv[2], "erase")) {
         console_printf("Erase 0x%lx + %lx\n",
                 (long unsigned int) off, (long unsigned int) sz);
 
-        if (hal_flash_erase(0, off, sz)) {
+        if (hal_flash_erase(devid, off, sz)) {
             console_printf("Flash erase failed\n");
         }
         console_printf("Done!\n");
-    } else if (!strcmp(argv[1], "read")) {
+    } else if (!strcmp(argv[2], "read")) {
         console_printf("Read 0x%lx + %lx\n",
                 (long unsigned int) off, (long unsigned int) sz);
         sz += off;
         while (off < sz) {
             sec_cnt = min(sizeof(tmp_buf), sz - off);
-            if (hal_flash_read(0, off, tmp_buf, sec_cnt)) {
+            if (hal_flash_read(devid, off, tmp_buf, sec_cnt)) {
                 console_printf("flash read failure at %lx\n",
                         (long unsigned int) off);
                 break;
@@ -116,7 +146,7 @@ flash_cli_cmd(int argc, char **argv)
                     (long unsigned int) off, pr_str);
             off += sec_cnt;
         }
-    } else if (!strcmp(argv[1], "write")) {
+    } else if (!strcmp(argv[2], "write")) {
         console_printf("Write 0x%lx + %lx\n",
                 (long unsigned int) off, (long unsigned int) sz);
 
@@ -127,20 +157,13 @@ flash_cli_cmd(int argc, char **argv)
 
         while (off < sz) {
             sec_cnt = min(sizeof(tmp_buf), sz - off);
-            if (hal_flash_write(0, off, tmp_buf, sec_cnt)) {
+            if (hal_flash_write(devid, off, tmp_buf, sec_cnt)) {
                 console_printf("flash write failure at %lx\n",
                         (long unsigned int) off);
             }
             off += sec_cnt;
         }
         console_printf("Done!\n");
-    } else if ( !strcmp(argv[1], "?") || !strcmp(argv[1], "help"))
-    {
-        console_printf("Commands Available\n");
-        console_printf("flash -- dumps sector map \n");
-        console_printf("flash read <offset> <size> -- reads bytes from flash 
\n");
-        console_printf("flash write <offset>  <size>  -- writes incrementing 
data pattern 0-8 to flash \n");
-        console_printf("flash erase <offset> <size> -- erases flash \n");
     }
     return 0;
 err:

Reply via email to