From f46f3a21818d472b680167a975dc23ac41702f77 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Mon, 17 Jan 2022 09:57:14 +0000 Subject: [PATCH] git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@15367 27425a3e-05d8-49a3-a47f-9c15f0e5edd8 --- .../Makefile | 8 +- ...ild-ch.elf)(OpenOCD, Flash and Run).launch | 48 ++++++++ ...1)(build-ch.elf)(OpenOCD, Just Run).launch | 48 ++++++++ ...ild-ch.elf)(OpenOCD, Flash and Run).launch | 96 +++++++-------- .../main.c | 115 ++++-------------- ...ild-ch.elf)(OpenOCD, Flash and Run).launch | 96 +++++++-------- os/sb/apps/msh/main.c | 10 +- 7 files changed, 230 insertions(+), 191 deletions(-) create mode 100644 demos/STM32/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC/debug/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC (SB1)(build-ch.elf)(OpenOCD, Flash and Run).launch create mode 100644 demos/STM32/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC/debug/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC (SB1)(build-ch.elf)(OpenOCD, Just Run).launch diff --git a/demos/STM32/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC/Makefile b/demos/STM32/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC/Makefile index a085f610f..db64db936 100644 --- a/demos/STM32/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC/Makefile +++ b/demos/STM32/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC/Makefile @@ -115,11 +115,11 @@ include $(CHIBIOS)/os/vfs/vfs_syscalls.mk # Auto-build files in ./source recursively. include $(CHIBIOS)/tools/mk/autobuild.mk # Other files (optional). -include $(CHIBIOS)/os/test/test.mk -include $(CHIBIOS)/test/rt/rt_test.mk -include $(CHIBIOS)/test/oslib/oslib_test.mk +#include $(CHIBIOS)/os/test/test.mk +#include $(CHIBIOS)/test/rt/rt_test.mk +#include $(CHIBIOS)/test/oslib/oslib_test.mk include $(CHIBIOS)/os/hal/lib/streams/streams.mk -include $(CHIBIOS)/os/various/shell/shell.mk +#include $(CHIBIOS)/os/various/shell/shell.mk include $(CHIBIOS)/os/various/fatfs_bindings/fatfs.mk # Define linker script file here diff --git a/demos/STM32/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC/debug/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC (SB1)(build-ch.elf)(OpenOCD, Flash and Run).launch b/demos/STM32/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC/debug/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC (SB1)(build-ch.elf)(OpenOCD, Flash and Run).launch new file mode 100644 index 000000000..25f117d5a --- /dev/null +++ b/demos/STM32/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC/debug/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC (SB1)(build-ch.elf)(OpenOCD, Flash and Run).launch @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demos/STM32/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC/debug/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC (SB1)(build-ch.elf)(OpenOCD, Just Run).launch b/demos/STM32/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC/debug/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC (SB1)(build-ch.elf)(OpenOCD, Just Run).launch new file mode 100644 index 000000000..845ae7ce7 --- /dev/null +++ b/demos/STM32/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC/debug/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC (SB1)(build-ch.elf)(OpenOCD, Just Run).launch @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demos/STM32/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC/debug/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC (build-ch.elf)(OpenOCD, Flash and Run).launch b/demos/STM32/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC/debug/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC (build-ch.elf)(OpenOCD, Flash and Run).launch index 19031b0c9..916fcdcd0 100644 --- a/demos/STM32/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC/debug/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC (build-ch.elf)(OpenOCD, Flash and Run).launch +++ b/demos/STM32/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC/debug/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC (build-ch.elf)(OpenOCD, Flash and Run).launch @@ -1,48 +1,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demos/STM32/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC/main.c b/demos/STM32/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC/main.c index 235dd5002..ce5745df3 100644 --- a/demos/STM32/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC/main.c +++ b/demos/STM32/RT-STM32L4R9-DISCOVERY-RAM_SB_HOST_DYNAMIC/main.c @@ -19,8 +19,8 @@ #include "sb.h" #include "chprintf.h" -#include "rt_test_root.h" -#include "oslib_test_root.h" +//#include "rt_test_root.h" +//#include "oslib_test_root.h" #include "nullstreams.h" @@ -138,7 +138,7 @@ static void SBHandler(eventid_t id) { if (!sbIsThreadRunningX(&sbx1)) { msg_t msg = sbWaitThread(&sbx1); - chprintf((BaseSequentialStream *)&SD2, "SB1 terminated (%d)\r\n", msg); + chprintf((BaseSequentialStream *)&SD2, "SB1 terminated (%08lx)\r\n", msg); } } @@ -197,91 +197,17 @@ int main(void) { * the FatFS driver but are restricted to "/sb1" and "/sb2" directories. */ drvOverlayObjectInit(&sb1_root_overlay_driver, (vfs_driver_c *)&fatfs_driver, "/sb1"); -// drvOverlayObjectInit(&sb2_root_overlay_driver, (vfs_driver_c *)&fatfs_driver, "/sb2"); ret = drvOverlayRegisterDriver(&sb1_root_overlay_driver, drvStreamsObjectInit(&sb1_dev_driver, &sb1_streams[0]), "dev"); if (CH_RET_IS_ERROR(ret)) { chSysHalt("VFS"); } -// ret = drvOverlayRegisterDriver(&sb2_root_overlay_driver, -// drvStreamsObjectInit(&sb2_dev_driver, &sb2_streams[0]), -// "dev"); -// if (CH_RET_IS_ERROR(ret)) { -// chSysHalt("VFS"); -// } - - /* - * Initializing overlay driver for the directory shared among the sandboxes. - * It is seen as "/shared". - */ -#if 0 - drvOverlayObjectInit(&sb_shared_overlay_driver, (vfs_driver_c *)&fatfs_driver, "/shared"); - ret = drvOverlayRegisterDriver(&sb1_root_overlay_driver, - (vfs_driver_c *)&sb_shared_overlay_driver, - "shared"); - if (CH_RET_IS_ERROR(ret)) { - chSysHalt("VFS"); - } - ret = drvOverlayRegisterDriver(&sb2_root_overlay_driver, - (vfs_driver_c *)&sb_shared_overlay_driver, - "shared"); - if (CH_RET_IS_ERROR(ret)) { - chSysHalt("VFS"); - } -#endif /* * Sandbox objects initialization. */ sbObjectInit(&sbx1, &sb_config1); -// sbObjectInit(&sbx2, &sb_config2); - - /* - * Associating standard input, output and error to sandbox 1. - */ - ret = vfsDrvOpen((vfs_driver_c *)&sb1_root_overlay_driver, - "/dev/VSD1", VO_RDWR, &np); - if (CH_RET_IS_ERROR(ret)) { - chSysHalt("VFS"); - } - sbRegisterDescriptor(&sbx1, STDIN_FILENO, (vfs_node_c *)roAddRef(np)); - sbRegisterDescriptor(&sbx1, STDOUT_FILENO, (vfs_node_c *)roAddRef(np)); - sbRegisterDescriptor(&sbx1, STDERR_FILENO, (vfs_node_c *)roAddRef(np)); - vfsClose(np); - -#if 0 - /* - * Associating standard input, output and error to sandbox 1. - */ - ret = vfsDrvOpen((vfs_driver_c *)&sb2_root_overlay_driver, - "/dev/VSD1", VO_RDWR, &np); - if (CH_RET_IS_ERROR(ret)) { - chSysHalt("VFS"); - } - sbRegisterDescriptor(&sbx2, STDIN_FILENO, (vfs_node_c *)roAddRef(np)); - sbRegisterDescriptor(&sbx2, STDOUT_FILENO, (vfs_node_c *)roAddRef(np)); - sbRegisterDescriptor(&sbx2, STDERR_FILENO, (vfs_node_c *)roAddRef(np)); - vfsClose(np); -#endif - -#if 0 - /* Starting sandboxed thread 1.*/ - sb1tp = sbStartThread(&sbx1, "sbx1", - waUnprivileged1, sizeof (waUnprivileged1), - NORMALPRIO - 1); - if (sb1tp == NULL) { - chSysHalt("sbx1 failed"); - } - - /* Starting sandboxed thread 2.*/ - sb2tp = sbStartThread(&sbx2, "sbx2", - waUnprivileged2, sizeof (waUnprivileged2), - NORMALPRIO - 1); - if (sb2tp == NULL) { - chSysHalt("sbx2 failed"); - } -#endif /* * Listening to sandbox events. @@ -295,18 +221,31 @@ int main(void) { while (true) { chEvtDispatch(evhndl, chEvtWaitOneTimeout(ALL_EVENTS, TIME_MS2I(500))); - /* Checking for user button, launching sandbox if pressed.*/ - if (palReadLine(LINE_BUTTON)) { - if (!sbIsThreadRunningX(&sbx1)) { + if (sdmon_ready && !sbIsThreadRunningX(&sbx1)) { + chThdSleepMilliseconds(1000); - /* Running the sandbox.*/ - ret = sbExec(&sbx1, "/bin/msh.elf", - waUnprivileged1, sizeof (waUnprivileged1), NORMALPRIO - 1, - sbx1_argv, sbx1_envp); - if (CH_RET_IS_ERROR(ret)) { - chprintf((BaseSequentialStream *)&SD2, "SBX1 launch failed (%08lx)\r\n", ret); - chThdSleepMilliseconds(1000); - } + /* + * Associating standard input, output and error to sandbox 1. + */ + ret = vfsDrvOpen((vfs_driver_c *)&sb1_root_overlay_driver, + "/dev/VSD1", VO_RDWR, &np); + if (CH_RET_IS_ERROR(ret)) { + chprintf((BaseSequentialStream *)&SD2, "Opening /dev/VSD1 failed (%08lx)\r\n", ret); + continue; + } + sbRegisterDescriptor(&sbx1, STDIN_FILENO, (vfs_node_c *)roAddRef(np)); + sbRegisterDescriptor(&sbx1, STDOUT_FILENO, (vfs_node_c *)roAddRef(np)); + sbRegisterDescriptor(&sbx1, STDERR_FILENO, (vfs_node_c *)roAddRef(np)); + vfsClose(np); + + /* + * Running the sandbox. + */ + ret = sbExec(&sbx1, "/bin/msh.elf", + waUnprivileged1, sizeof (waUnprivileged1), NORMALPRIO - 1, + sbx1_argv, sbx1_envp); + if (CH_RET_IS_ERROR(ret)) { + chprintf((BaseSequentialStream *)&SD2, "SBX1 launch failed (%08lx)\r\n", ret); } } } diff --git a/demos/STM32/RT-STM32L4R9-DISCOVERY-SB_HOST_STATIC/debug/RT-STM32L4R9-DISCOVERY-SB_HOST_STATIC (SB1)(build-ch.elf)(OpenOCD, Flash and Run).launch b/demos/STM32/RT-STM32L4R9-DISCOVERY-SB_HOST_STATIC/debug/RT-STM32L4R9-DISCOVERY-SB_HOST_STATIC (SB1)(build-ch.elf)(OpenOCD, Flash and Run).launch index 50a5f2f9e..2fae89e8f 100644 --- a/demos/STM32/RT-STM32L4R9-DISCOVERY-SB_HOST_STATIC/debug/RT-STM32L4R9-DISCOVERY-SB_HOST_STATIC (SB1)(build-ch.elf)(OpenOCD, Flash and Run).launch +++ b/demos/STM32/RT-STM32L4R9-DISCOVERY-SB_HOST_STATIC/debug/RT-STM32L4R9-DISCOVERY-SB_HOST_STATIC (SB1)(build-ch.elf)(OpenOCD, Flash and Run).launch @@ -1,48 +1,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/os/sb/apps/msh/main.c b/os/sb/apps/msh/main.c index 157fc6b05..7076e97fd 100644 --- a/os/sb/apps/msh/main.c +++ b/os/sb/apps/msh/main.c @@ -187,9 +187,10 @@ int main(int argc, char *argv[], char *envp[]) { (void)argv; (void)envp; + /* Welcome.*/ + shell_write(SHELL_WELCOME_STR SHELL_NEWLINE_STR SHELL_NEWLINE_STR); + while (true) { - /* Welcome.*/ - shell_write(SHELL_WELCOME_STR SHELL_NEWLINE_STR); /* Prompt.*/ shell_write(SHELL_PROMPT_STR); @@ -216,6 +217,9 @@ int main(int argc, char *argv[], char *envp[]) { } args[i] = NULL; - shell_execute(i, args); + /* Executing command, if any.*/ + if (i > 0) { + shell_execute(i, args); + } } }