diff --git a/APP_Framework/Applications/app_test/Makefile b/APP_Framework/Applications/app_test/Makefile index 5f971e4a7..073fbc636 100644 --- a/APP_Framework/Applications/app_test/Makefile +++ b/APP_Framework/Applications/app_test/Makefile @@ -14,6 +14,10 @@ ifeq ($(CONFIG_ADD_NUTTX_FETURES),y) CSRCS += test_touch.c endif + ifeq ($(CONFIG_MUSL_LIBC),y) + CSRCS += test_musl.c + endif + include $(APPDIR)/Application.mk endif diff --git a/APP_Framework/Applications/app_test/test_musl.c b/APP_Framework/Applications/app_test/test_musl.c new file mode 100644 index 000000000..bfa1ba1f7 --- /dev/null +++ b/APP_Framework/Applications/app_test/test_musl.c @@ -0,0 +1,103 @@ +/* +* Copyright (c) 2020 AIIT XUOS Lab +* XiUOS is licensed under Mulan PSL v2. +* You can use this software according to the terms and conditions of the Mulan PSL v2. +* You may obtain a copy of Mulan PSL v2 at: +* http://license.coscl.org.cn/MulanPSL2 +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +* See the Mulan PSL v2 for more details. +*/ + +/** +* @file: test_musl.c +* @brief: a application of musl test function +* @version: 2.0 +* @author: AIIT XUOS Lab +* @date: 2022/11/8 +*/ + +#include + +#ifdef ADD_NUTTX_FETURES + +#if defined(CONFIG_MUSL_LIBC) && defined(CONFIG_FS_AUTOMOUNTER) + +static void file_read_and_write(void) +{ + FILE *p; + char s[] = "good luck to you!"; + char buffer[20]; + + if((p = fopen("/mnt/sdcard/test.txt","w+")) == NULL) + { + printf("Can not open file!\n"); + } + fwrite(s, sizeof(s) + 1, 1, p); + fseek(p, SEEK_SET, 0); + fread(buffer, sizeof(buffer) + 1, 1, p); + printf("read string is: %s\n", buffer); + fclose(p); +} + +static void file_operations(void) +{ + int ret; + FILE *fp; + char filename1[] = "/mnt/sdcard/file1.txt"; + char filename2[] = "/mnt/sdcard/file2.txt"; + + fp = fopen(filename1, "w"); + + fprintf(fp, "%s", "this is runoob.com"); + fclose(fp); + + ret = remove(filename1); + + if(ret == 0) + { + printf("remove file1 success!\n"); + } + else + { + printf("error,can not remove file1!\n"); + } + + ret = remove(filename2); + if(ret == 0) + { + printf("remove file2 success!\n"); + } + else + { + printf("error,can not remove file2!\n"); + } +} + +static void malloc_and_free(void) +{ + int *p; + int len; + for(int i = 0; i < 100; i++) + { + len = 1024*(i+1); + p = malloc(len); + if(p) + { + printf("malloc %d bytes success!\n",len); + free(p); + } + } +} +void Testmusl(void) +{ + printf("--------start test file read and write!--------\n"); + file_read_and_write(); + printf("----------start test file operationsn!---------\n"); + file_operations(); + printf("---------start test malloc and free!-----------\n"); + malloc_and_free(); +} +#endif +#endif diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/xidatong-arm32/configs/muslnsh/defconfig b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/xidatong-arm32/configs/muslnsh/defconfig new file mode 100644 index 000000000..9b1048d9e --- /dev/null +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/xidatong-arm32/configs/muslnsh/defconfig @@ -0,0 +1,74 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +CONFIG_ADD_NUTTX_FETURES=y +CONFIG_ARCH="arm" +CONFIG_ARCH_BOARD="xidatong-arm32" +CONFIG_ARCH_BOARD_XIDATONG_ARM32=y +CONFIG_ARCH_CHIP="imxrt" +CONFIG_ARCH_CHIP_IMXRT=y +CONFIG_ARCH_CHIP_MIMXRT1052CVL5B=y +CONFIG_ARCH_INTERRUPTSTACK=10240 +CONFIG_ARCH_STACKDUMP=y +CONFIG_ARMV7M_DCACHE=y +CONFIG_ARMV7M_DCACHE_WRITETHROUGH=y +CONFIG_ARMV7M_ICACHE=y +CONFIG_ARMV7M_USEBASEPRI=y +CONFIG_BOARD_LOOPSPERMSEC=104926 +CONFIG_BUILTIN=y +CONFIG_FAT_LCNAMES=y +CONFIG_CLOCK_MONOTONIC=y +CONFIG_FAT_LFN=y +CONFIG_FS_FAT=y +CONFIG_IDLETHREAD_STACKSIZE=2048 +CONFIG_EXAMPLES_HELLO=y +CONFIG_IMXRT_GPIO_IRQ=y +CONFIG_IMXRT_GPIO2_16_31_IRQ=y +CONFIG_IMXRT_GPIO3_0_15_IRQ=y +CONFIG_DEV_GPIO=y +CONFIG_IMXRT_LPUART1=y +CONFIG_IMXRT_USDHC1=y +CONFIG_IMXRT_USDHC1_WIDTH_D1_D4=y +CONFIG_INTELHEX_BINARY=y +CONFIG_IOB_NBUFFERS=24 +CONFIG_IOB_NCHAINS=8 +CONFIG_LIBC_STRERROR=y +CONFIG_LPUART1_SERIAL_CONSOLE=y +CONFIG_MMCSD=y +CONFIG_MMCSD_SDIO=y +CONFIG_MM_IOB=y +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_CMDOPT_DD_STATS=y +CONFIG_NSH_DISABLE_IFUPDOWN=y +CONFIG_NSH_FILEIOSIZE=32768 +CONFIG_NSH_LINELEN=64 +CONFIG_NSH_READLINE=y +CONFIG_RAM_SIZE=524288 +CONFIG_RAM_START=0x20200000 +CONFIG_RAW_BINARY=y +CONFIG_SCHED_CHILD_STATUS=y +CONFIG_SCHED_HAVE_PARENT=y +CONFIG_SCHED_HPWORK=y +CONFIG_SCHED_LPWORK=y +CONFIG_SCHED_WAITPID=y +CONFIG_SDIO_BLOCKSETUP=y +CONFIG_SERIAL_TERMIOS=y +CONFIG_START_DAY=14 +CONFIG_START_MONTH=3 +CONFIG_SYSTEM_CLE_CMD_HISTORY=y +CONFIG_SYSTEM_COLOR_CLE=y +CONFIG_FS_AUTOMOUNTER=y +CONFIG_XIDATONG_ARM32_SDIO_AUTOMOUNT=y +CONFIG_SYSTEM_NSH=y +CONFIG_READLINE_CMD_HISTORY=y +CONFIG_READLINE_CMD_HISTORY_LEN=100 +CONFIG_READLINE_CMD_HISTORY_LINELEN=120 +CONFIG_READLINE_TABCOMPLETION=y +CONFIG_BOARDCTL_RESET=y +CONFIG_MUSL_LIBC=y +CONFIG_INIT_ENTRYPOINT="nsh_main" diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/Kconfig b/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/Kconfig index fcffc9750..70bed4716 100644 --- a/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/Kconfig +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/Kconfig @@ -667,6 +667,10 @@ config NSH_DISABLE_K210_FFT bool "Disable the K210 fft device." default n +config NSH_DISABLE_MUSL_TEST + bool "Disable the musl test." + default n + endmenu if MMCSD diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/nsh.h b/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/nsh.h index 918ba31a7..0720a68cb 100644 --- a/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/nsh.h +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/nsh.h @@ -1587,6 +1587,10 @@ int nsh_foreach_var(FAR struct nsh_vtbl_s *vtbl, nsh_foreach_var_t cb, int cmd_fft(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv); #endif +#if defined(CONFIG_MUSL_LIBC) && !defined(CONFIG_NSH_DISABLE_MUSL_TEST) + int cmd_musl(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv); +#endif + #if defined(__cplusplus) } #endif diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/nsh_Applicationscmd.c b/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/nsh_Applicationscmd.c index a61b1a1f3..8f9095d76 100644 --- a/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/nsh_Applicationscmd.c +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/nsh_Applicationscmd.c @@ -500,3 +500,13 @@ int cmd_fft(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) return OK; } #endif + +#if defined(CONFIG_MUSL_LIBC) && !defined(CONFIG_NSH_DISABLE_MUSL_TEST) +extern void Testmusl(void); +int cmd_musl(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) +{ + nsh_output(vtbl, "Hello, test musl!\n"); + Testmusl(); + return OK; +} +#endif \ No newline at end of file diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/nsh_command.c b/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/nsh_command.c index 1b03f5cc9..21a733522 100644 --- a/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/nsh_command.c +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/nsh_command.c @@ -732,6 +732,10 @@ static const struct cmdmap_s g_cmdmap[] = { "fft", cmd_fft, 1, 1, "[K210 fft function.]" }, #endif +#if defined(CONFIG_MUSL_LIBC) && !defined(CONFIG_NSH_DISABLE_MUSL_TEST) + { "testmusl", cmd_musl, 1, 1, "[test musl function.]" }, +#endif + { NULL, NULL, 1, 1, NULL } };