diff --git a/.vscode/launch.json b/.vscode/launch.json index cd34b8c20..16bc49c60 100755 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -47,10 +47,11 @@ "externalConsole": false, // "miDebuggerPath": "/opt/homebrew/bin/arm-none-eabi-gdb", - "miDebuggerPath": "/home/zhangzheng/gcc-arm/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-gdb", + // "miDebuggerPath": "/home/zhangzheng/gcc-arm/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-gdb", + "miDebuggerPath": "/home/zhangzheng/gcc-arm-none-eabi-5_4-2016q3/bin/arm-none-eabi-gdb", // "miDebuggerPath": "/home/zhangzheng/gcc-arm-10.3-2021.07-aarch64-aarch64-none-elf/bin/aarch64-none-elf-gdb", // "miDebuggerPath": "/home/mkrtos-smart/toolchains/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf/bin/aarch64-none-elf-gdb", - "miDebuggerServerAddress": "127.0.0.1:3333", + "miDebuggerServerAddress": "127.0.0.1:33333", "MIMode": "gdb", "setupCommands": [ { diff --git a/mkrtos_img/CMakeLists.txt b/mkrtos_img/CMakeLists.txt index a889ca1d2..575edc52c 100755 --- a/mkrtos_img/CMakeLists.txt +++ b/mkrtos_img/CMakeLists.txt @@ -23,10 +23,10 @@ add_custom_target( add_dependencies(mkrtos_img_dump bootstrap_dump mkrtos_dump - # init_dump + init_dump # app_dump - # shell_dump + shell_dump # fatfs_dump - # cpiofs_dump + cpiofs_dump # tcc_dump ) \ No newline at end of file diff --git a/mkrtos_knl/arch/cortex-m3/stm32f1/arch.h b/mkrtos_knl/arch/cortex-m3/stm32f1/arch.h index 4b66b8967..abe87412c 100755 --- a/mkrtos_knl/arch/cortex-m3/stm32f1/arch.h +++ b/mkrtos_knl/arch/cortex-m3/stm32f1/arch.h @@ -124,8 +124,8 @@ void arch_set_enable_irq_prio(int inx, int sub_prio, int pre_prio); static inline __attribute__((optimize(0))) void preemption(void) { - cli(); sti(); + cli(); } static inline umword_t intr_status(void) diff --git a/mkrtos_knl/arch/cortex-m3/stm32f2/arch.h b/mkrtos_knl/arch/cortex-m3/stm32f2/arch.h index b6c87189f..c779473b6 100755 --- a/mkrtos_knl/arch/cortex-m3/stm32f2/arch.h +++ b/mkrtos_knl/arch/cortex-m3/stm32f2/arch.h @@ -127,8 +127,8 @@ void arch_set_enable_irq_prio(int inx, int sub_prio, int pre_prio); static inline __attribute__((optimize(0))) void preemption(void) { - cli(); sti(); + cli(); } static inline umword_t intr_status(void) diff --git a/mkrtos_knl/arch/cortex-m3/thread_armv7m.c b/mkrtos_knl/arch/cortex-m3/thread_armv7m.c index 20b498757..8e9116cf8 100644 --- a/mkrtos_knl/arch/cortex-m3/thread_armv7m.c +++ b/mkrtos_knl/arch/cortex-m3/thread_armv7m.c @@ -19,7 +19,7 @@ #include "string.h" typedef struct entry_frame_tmp { - umword_t r[6]; + umword_t r[8]; } entry_frame_tmp_t; static void syscall_entry_raw(entry_frame_tmp_t entry); diff --git a/mkrtos_knl/arch/cortex-m33/swm34s/arch.h b/mkrtos_knl/arch/cortex-m33/swm34s/arch.h index 42fa8df0d..7461d12f0 100755 --- a/mkrtos_knl/arch/cortex-m33/swm34s/arch.h +++ b/mkrtos_knl/arch/cortex-m33/swm34s/arch.h @@ -124,8 +124,8 @@ void arch_set_enable_irq_prio(int inx, int sub_prio, int pre_prio); static inline __attribute__((optimize(0))) void preemption(void) { - cli(); sti(); + cli(); } static inline umword_t intr_status(void) diff --git a/mkrtos_knl/arch/cortex-m4/stm32f4/arch.h b/mkrtos_knl/arch/cortex-m4/stm32f4/arch.h index 570b702d6..f7712c6f5 100755 --- a/mkrtos_knl/arch/cortex-m4/stm32f4/arch.h +++ b/mkrtos_knl/arch/cortex-m4/stm32f4/arch.h @@ -124,8 +124,8 @@ void arch_set_enable_irq_prio(int inx, int sub_prio, int pre_prio); static inline void preemption(void) { - cli(); sti(); + cli(); } static inline umword_t intr_status(void) diff --git a/mkrtos_knl/inc/knl/prot.h b/mkrtos_knl/inc/knl/prot.h index cf24fbcc6..738d9b469 100755 --- a/mkrtos_knl/inc/knl/prot.h +++ b/mkrtos_knl/inc/knl/prot.h @@ -57,8 +57,13 @@ typedef struct msg_tag .msg_buf_len = (msg_words), \ .map_buf_len = (buf_words), \ .prot = (p)}) +#if ARCH_WORD_SIZE == 64 #define msg_tag_get_prot(tag) \ ((int)((tag).prot)) +#else +#define msg_tag_get_prot(tag) \ + ((short)((tag).prot)) +#endif #define msg_tag_get_val(tag) msg_tag_get_prot(tag) typedef union syscall_prot diff --git a/mkrtos_knl/knl/thread_knl.c b/mkrtos_knl/knl/thread_knl.c index 2019c7ad4..cebed0fc6 100755 --- a/mkrtos_knl/knl/thread_knl.c +++ b/mkrtos_knl/knl/thread_knl.c @@ -233,6 +233,6 @@ void start_kernel(void) while (1) { - knl_main(); + // knl_main(); } } diff --git a/mkrtos_script/build_f2.sh b/mkrtos_script/build_f2.sh index f129f2a57..5266850b6 100755 --- a/mkrtos_script/build_f2.sh +++ b/mkrtos_script/build_f2.sh @@ -4,8 +4,10 @@ # export TOOLCHAIN_LIB=/home/zhangzheng/mkrtos-tools/gcc/gcc-arm-none-eabi-5_4-2016q3/lib/gcc/arm-none-eabi/5.4.1/armv7-m/ # export TOOLCHAIN=/Users/zhangzheng/gcc-arm-none-eabi-10.3-2021.10/bin/ # export TOOLCHAIN_LIB=/Users/zhangzheng/gcc-arm-none-eabi-10.3-2021.10/lib/gcc/arm-none-eabi/10.3.1/thumb/v7-m/nofp -export TOOLCHAIN=/home/zhangzheng/gcc-arm/gcc-arm-none-eabi-10.3-2021.10/bin/ -export TOOLCHAIN_LIB=/home/zhangzheng/gcc-arm/gcc-arm-none-eabi-10.3-2021.10/lib/gcc/arm-none-eabi/10.3.1/thumb/v7-m/nofp +# export TOOLCHAIN=/home/zhangzheng/gcc-arm/gcc-arm-none-eabi-10.3-2021.10/bin/ +# export TOOLCHAIN_LIB=/home/zhangzheng/gcc-arm/gcc-arm-none-eabi-10.3-2021.10/lib/gcc/arm-none-eabi/10.3.1/thumb/v7-m/nofp +export TOOLCHAIN=/home/zhangzheng/gcc-arm-none-eabi-5_4-2016q3/bin/ +export TOOLCHAIN_LIB=/home/zhangzheng/gcc-arm-none-eabi-5_4-2016q3/lib/gcc/arm-none-eabi/5.4.1/armv7-m/ export BOARD=STM32F205 export CROSS_COMPILE_NAME=arm-none-eabi- diff --git a/mkrtos_script/build_qemu_aarch64.sh b/mkrtos_script/build_qemu_aarch64.sh index 90282b775..ff4bd99c9 100755 --- a/mkrtos_script/build_qemu_aarch64.sh +++ b/mkrtos_script/build_qemu_aarch64.sh @@ -1,9 +1,9 @@ #!/bin/bash -export TOOLCHAIN=/home/zhangzheng/gcc-arm-10.3-2021.07-aarch64-aarch64-none-elf/bin/ -export TOOLCHAIN_LIB=/home/zhangzheng/gcc-arm-10.3-2021.07-aarch64-aarch64-none-elf/lib/gcc/aarch64-none-elf/10.3.1 -# export TOOLCHAIN=/home/mkrtos-smart/toolchains/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf/bin/ -# export TOOLCHAIN_LIB=/home/mkrtos-smart/toolchains/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf/lib/gcc/aarch64-none-elf/10.3.1 +# export TOOLCHAIN=/home/zhangzheng/gcc-arm-10.3-2021.07-aarch64-aarch64-none-elf/bin/ +# export TOOLCHAIN_LIB=/home/zhangzheng/gcc-arm-10.3-2021.07-aarch64-aarch64-none-elf/lib/gcc/aarch64-none-elf/10.3.1 +export TOOLCHAIN=/home/mkrtos-smart/toolchains/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf/bin/ +export TOOLCHAIN_LIB=/home/mkrtos-smart/toolchains/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf/lib/gcc/aarch64-none-elf/10.3.1 export BOARD=aarch64_qemu export CROSS_COMPILE_NAME=aarch64-none-elf- diff --git a/mkrtos_user/CMakeLists.txt b/mkrtos_user/CMakeLists.txt index e96451ce6..cffa27482 100644 --- a/mkrtos_user/CMakeLists.txt +++ b/mkrtos_user/CMakeLists.txt @@ -13,7 +13,7 @@ if (${CONFIG_ARCH} STREQUAL "cortex-m3" OR -fPIC -fPIE -n -pie -fpie -fpic -msingle-pic-base -mno-pic-data-is-text-relative \ " ) - set(CORTEX_M_LINK_FLAGS "-pie") + set(CORTEX_M_LINK_FLAGS " -pie ") set(LIBC_NAME "muslc") set(ARCH_NAME "armv7_8m") diff --git a/mkrtos_user/lib/sys/inc/aarch64/u_arch_hard.h b/mkrtos_user/lib/sys/inc/aarch64/u_arch_hard.h index e4ceb0d6d..371d3f926 100644 --- a/mkrtos_user/lib/sys/inc/aarch64/u_arch_hard.h +++ b/mkrtos_user/lib/sys/inc/aarch64/u_arch_hard.h @@ -14,3 +14,6 @@ #define ARCH_REG_5 "x5" #define ARCH_REG_6 "x6" #define ARCH_REG_7 "x7" + +#define ARCH_WORD_SIZE 64 + diff --git a/mkrtos_user/lib/sys/inc/armv7_8m/u_arch_hard.h b/mkrtos_user/lib/sys/inc/armv7_8m/u_arch_hard.h index 857db1827..d98b9a6e6 100644 --- a/mkrtos_user/lib/sys/inc/armv7_8m/u_arch_hard.h +++ b/mkrtos_user/lib/sys/inc/armv7_8m/u_arch_hard.h @@ -19,3 +19,6 @@ #define ARCH_REG_5 "r5" #define ARCH_REG_6 "r6" #define ARCH_REG_7 "r7" + +#define ARCH_WORD_SIZE 32 + diff --git a/mkrtos_user/lib/sys/inc/u_prot.h b/mkrtos_user/lib/sys/inc/u_prot.h index 5a458d422..1f89f1a9f 100644 --- a/mkrtos_user/lib/sys/inc/u_prot.h +++ b/mkrtos_user/lib/sys/inc/u_prot.h @@ -47,8 +47,13 @@ typedef union msg_tag .msg_buf_len = (msg_words), \ .map_buf_len = (buf_words), \ .prot = (p)}) +#if ARCH_WORD_SIZE == 64 #define msg_tag_get_prot(tag) \ ((int)((tag).prot)) +#else +#define msg_tag_get_prot(tag) \ + ((short)((tag).prot)) +#endif #define msg_tag_get_val(tag) msg_tag_get_prot(tag) typedef union syscall_prot diff --git a/mkrtos_user/server/init/src/cons.c b/mkrtos_user/server/init/src/cons.c index d5c2d457d..398feda8b 100644 --- a/mkrtos_user/server/init/src/cons.c +++ b/mkrtos_user/server/init/src/cons.c @@ -16,7 +16,7 @@ #include #include -static ATTR_ALIGN(8) uint8_t cons_stack[4096]; +static ATTR_ALIGN(8) uint8_t cons_stack[1024]; // static uint8_t cons_msg_buf[MSG_BUG_LEN]; static cons_t cons_obj; static obj_handler_t cons_th; @@ -49,7 +49,7 @@ void console_init(void) cons_svr_obj_init(&cons_obj); meta_reg_svr_obj(&cons_obj.svr, CONS_PROT); u_thread_create(&cons_th, (char *)cons_stack + sizeof(cons_stack) - 8, NULL, console_read_func); - u_thread_run(cons_th, 3); + u_thread_run(cons_th, 2); ulog_write_str(LOG_PROT, "cons svr init...\n"); } /** diff --git a/mkrtos_user/server/init/src/init.cfg b/mkrtos_user/server/init/src/init.cfg index ff705358f..f2ad539ad 100644 --- a/mkrtos_user/server/init/src/init.cfg +++ b/mkrtos_user/server/init/src/init.cfg @@ -1,7 +1,7 @@ #一次读取一行,每行代表启动的应用程序,暂时不支持参数 # fatfs -cpiofs +# cpiofs # dm9000_drv # net sh diff --git a/mkrtos_user/server/shell/CMakeLists.txt b/mkrtos_user/server/shell/CMakeLists.txt index 9f57ab0e2..82853f397 100644 --- a/mkrtos_user/server/shell/CMakeLists.txt +++ b/mkrtos_user/server/shell/CMakeLists.txt @@ -48,6 +48,8 @@ add_custom_target( mkdir -p ${CMAKE_SOURCE_DIR}/build/output/cpio COMMAND cp sh.bin ${CMAKE_SOURCE_DIR}/build/output/cpio/sh + COMMAND + cp sh.elf ${CMAKE_SOURCE_DIR}/build/output/sh.elf ) if ((DEFINED CONFIG_ELF_LAUNCH) AND (CONFIG_ELF_LAUNCH STREQUAL "y")) add_custom_target(