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

pkarashchenko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx-apps.git


The following commit(s) were added to refs/heads/master by this push:
     new 1d3e6510e nshlib: Add switchboot command
1d3e6510e is described below

commit 1d3e6510e6d650b1b34b5520dc1fbc8481db56cf
Author: Xiang Xiao <xiaoxi...@xiaomi.com>
AuthorDate: Tue Apr 4 19:59:45 2023 +0800

    nshlib: Add switchboot command
    
    switchboot <image path>
    
    Switch to the updated or specified boot system. This command depends on
    hardware support CONFIG_BOARDCTL_SWITCH_BOOT. `<image path>` point to a
    partion or file which contain the firmware to boot.
    
    Signed-off-by: Xiang Xiao <xiaoxi...@xiaomi.com>
---
 nshlib/Kconfig       |  5 +++++
 nshlib/README.md     |  6 ++++++
 nshlib/nsh.h         |  4 ++++
 nshlib/nsh_command.c |  4 ++++
 nshlib/nsh_syscmds.c | 18 ++++++++++++++++++
 5 files changed, 37 insertions(+)

diff --git a/nshlib/Kconfig b/nshlib/Kconfig
index 1acad06f4..196af77a1 100644
--- a/nshlib/Kconfig
+++ b/nshlib/Kconfig
@@ -519,6 +519,11 @@ config NSH_DISABLE_READLINK
        default DEFAULT_SMALL
        depends on PSEUDOFS_SOFTLINKS
 
+config NSH_DISABLE_SWITCHBOOT
+       bool "Switch boot partition"
+       default DEFAULT_SMALL
+       depends on BOARDCTL_SWITCH_BOOT
+
 config NSH_DISABLE_BOOT
        bool "Disable boot"
        default DEFAULT_SMALL
diff --git a/nshlib/README.md b/nshlib/README.md
index d5f0c0215..1dd383c51 100644
--- a/nshlib/README.md
+++ b/nshlib/README.md
@@ -1158,6 +1158,12 @@ system image.
 
   Show target of a soft link.
 
+- `switchboot <image path>
+
+  Switch to the updated or specified boot system. This command depends on
+  hardware support CONFIG_BOARDCTL_SWITCH_BOOT. `<image path>` point to a
+  partion or file which contain the firmware to boot.
+
 - `boot [<image path> [<header size>]]`
 
   Boot a new firmware image. This command depends on hardware support
diff --git a/nshlib/nsh.h b/nshlib/nsh.h
index cfde18aca..e77ae9130 100644
--- a/nshlib/nsh.h
+++ b/nshlib/nsh.h
@@ -1149,6 +1149,10 @@ int cmd_irqinfo(FAR struct nsh_vtbl_s *vtbl, int argc, 
FAR char **argv);
 int cmd_pmconfig(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv);
 #endif
 
+#if defined(CONFIG_BOARDCTL_SWITCH_BOOT) && 
!defined(CONFIG_NSH_DISABLE_SWITCHBOOT)
+int cmd_switchboot(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv);
+#endif
+
 #if defined(CONFIG_BOARDCTL_BOOT_IMAGE) && !defined(CONFIG_NSH_DISABLE_BOOT)
   int cmd_boot(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv);
 #endif
diff --git a/nshlib/nsh_command.c b/nshlib/nsh_command.c
index 326091470..ffc973b44 100644
--- a/nshlib/nsh_command.c
+++ b/nshlib/nsh_command.c
@@ -529,6 +529,10 @@ static const struct cmdmap_s g_cmdmap[] =
   { "source",   cmd_source,   2, 2, "<script-path>" },
 #endif
 
+#if defined(CONFIG_BOARDCTL_SWITCH_BOOT) && 
!defined(CONFIG_NSH_DISABLE_SWITCHBOOT)
+  { "swtichboot", cmd_swtichboot, 2, 2, "<image path>" },
+#endif
+
 #if !defined(CONFIG_NSH_DISABLESCRIPT) && !defined(CONFIG_NSH_DISABLE_TEST)
   { "test",     cmd_test,     3, CONFIG_NSH_MAXARGUMENTS, "<expression>" },
 #endif
diff --git a/nshlib/nsh_syscmds.c b/nshlib/nsh_syscmds.c
index 15fbc6ec3..406d2eac2 100644
--- a/nshlib/nsh_syscmds.c
+++ b/nshlib/nsh_syscmds.c
@@ -318,6 +318,24 @@ int cmd_poweroff(FAR struct nsh_vtbl_s *vtbl, int argc, 
FAR char **argv)
 }
 #endif
 
+/****************************************************************************
+ * Name: cmd_switchboot
+ ****************************************************************************/
+
+#if defined(CONFIG_BOARDCTL_SWITCH_BOOT) && 
!defined(CONFIG_NSH_DISABLE_SWITCHBOOT)
+int cmd_switchboot(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv)
+{
+  if (argc != 2)
+    {
+      nsh_output(vtbl, g_fmtarginvalid, argv[0]);
+      return ERROR;
+    }
+
+  boardctl(BOARDIOC_SWITCH_BOOT, (uintptr_t)argv[1]);
+  return 0;
+}
+#endif
+
 /****************************************************************************
  * Name: cmd_boot
  ****************************************************************************/

Reply via email to