From 8d03c10fba36ea04c534846efdd64737acdfa2fb Mon Sep 17 00:00:00 2001 From: zhangzheng <1358745329@qq.com> Date: Thu, 17 Oct 2024 23:31:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BC=96=E8=AF=91=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Kconfig | 5 +++++ .../bsp/AARCH64_QEMU/CMakeLists.txt | 19 +++++++++---------- .../AARCH64_QEMU/{link.lds.S => link.lds.asm} | 0 mkrtos_bootstrap/bsp/STM32F2/link.lds | 4 ++-- mkrtos_bootstrap/bsp/STM32F2/stm32_start.c | 9 ++------- mkrtos_configs/ATSURFF437_defconfig | 4 +++- mkrtos_configs/STM32F103ZET6_defconfig | 2 ++ mkrtos_configs/STM32F205_defconfig | 4 +++- mkrtos_configs/STM32F407VET6_defconfig | 4 +++- mkrtos_configs/SWM34_defconfig | 2 ++ mkrtos_configs/aarch64_qemu_defconfig | 2 +- mkrtos_knl/Kconfig | 7 +++++++ mkrtos_knl/arch/cortex-m3/core_it.c | 1 + mkrtos_knl/arch/cortex-m3/link.lds | 2 +- mkrtos_knl/arch/cortex-m33/core_it.c | 1 + mkrtos_knl/arch/cortex-m4/core_it.c | 1 + mkrtos_knl/inc/knl/globals.h | 2 ++ mkrtos_knl/knl/globals.c | 2 ++ mkrtos_knl/knl/thread_knl.c | 2 ++ mkrtos_script/build_qemu_aarch64.sh | 8 ++++---- mkrtos_script/build_test.sh | 5 ++++- 21 files changed, 57 insertions(+), 29 deletions(-) rename mkrtos_bootstrap/bsp/AARCH64_QEMU/{link.lds.S => link.lds.asm} (100%) diff --git a/Kconfig b/Kconfig index a434a0ad8..ea6329ed5 100644 --- a/Kconfig +++ b/Kconfig @@ -17,10 +17,15 @@ config ARCH config FLOAT_TYPE string "float type is soft or hard" default "soft" + config ELF_LAUNCH bool "elf app launch" default n +config DTBO_SUPPORT + bool "dtb support." + default n + config DTBO_OFFSET hex "dtbo img offset." default 0x1000 diff --git a/mkrtos_bootstrap/bsp/AARCH64_QEMU/CMakeLists.txt b/mkrtos_bootstrap/bsp/AARCH64_QEMU/CMakeLists.txt index c68bc2bd7..1d9de8764 100755 --- a/mkrtos_bootstrap/bsp/AARCH64_QEMU/CMakeLists.txt +++ b/mkrtos_bootstrap/bsp/AARCH64_QEMU/CMakeLists.txt @@ -2,7 +2,6 @@ cmake_minimum_required(VERSION 3.13) file(GLOB_RECURSE deps *.S *.s *.C *.c) -list(REMOVE_ITEM deps ${CMAKE_CURRENT_LIST_DIR}/link.lds.S) add_library(boot_bsp STATIC ${deps}) target_include_directories( boot_bsp @@ -12,13 +11,13 @@ target_include_directories( target_link_libraries(boot_bsp PRIVATE ) -add_custom_target( - bootstratp_link_file_dump ALL - COMMAND - ${CMAKE_C_COMPILER} - -include ${CMAKE_SOURCE_DIR}/build/autoconf.h - -E -P -<${CMAKE_CURRENT_LIST_DIR}/link.lds.S > - ${CMAKE_CURRENT_LIST_DIR}/link.lds -) +# add_custom_target( +# bootstratp_link_file_dump ALL +# COMMAND +# ${CMAKE_C_COMPILER} +# -include ${CMAKE_SOURCE_DIR}/build/autoconf.h +# -E -P -<${CMAKE_CURRENT_LIST_DIR}/link.lds.S > +# ${CMAKE_CURRENT_LIST_DIR}/link.lds +# ) -add_dependencies(boot_bsp bootstratp_link_file_dump) \ No newline at end of file +# add_dependencies(boot_bsp bootstratp_link_file_dump) \ No newline at end of file diff --git a/mkrtos_bootstrap/bsp/AARCH64_QEMU/link.lds.S b/mkrtos_bootstrap/bsp/AARCH64_QEMU/link.lds.asm similarity index 100% rename from mkrtos_bootstrap/bsp/AARCH64_QEMU/link.lds.S rename to mkrtos_bootstrap/bsp/AARCH64_QEMU/link.lds.asm diff --git a/mkrtos_bootstrap/bsp/STM32F2/link.lds b/mkrtos_bootstrap/bsp/STM32F2/link.lds index bb21f6f25..e78544635 100644 --- a/mkrtos_bootstrap/bsp/STM32F2/link.lds +++ b/mkrtos_bootstrap/bsp/STM32F2/link.lds @@ -1,10 +1,10 @@ ENTRY(Reset_Handler) -_estack = 0x20000000 + 0x20000; +_estack = 0x20000000 + 0x800000; _Min_Heap_Size = 0; _Min_Stack_Size = 0x300; MEMORY { -RAM (xrw) : ORIGIN = 0x20000000 + 0x20000 - 0x4000, LENGTH = 0x4000 - 0x300 +RAM (xrw) : ORIGIN = 0x20000000 + 0x800000 - 0x4000, LENGTH = 0x4000 - 0x300 FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 0x2000 } SECTIONS diff --git a/mkrtos_bootstrap/bsp/STM32F2/stm32_start.c b/mkrtos_bootstrap/bsp/STM32F2/stm32_start.c index 4ef7f6d65..9294fc95c 100644 --- a/mkrtos_bootstrap/bsp/STM32F2/stm32_start.c +++ b/mkrtos_bootstrap/bsp/STM32F2/stm32_start.c @@ -47,15 +47,10 @@ static boot_info_t boot_info = { .mem_list = { { .addr = CONFIG_SYS_DATA_ADDR, - .size = CONFIG_SYS_DATA_SIZE / 2, + .size = CONFIG_SYS_DATA_SIZE, .is_sys_mem = 1, .speed = 0, - }, - { - .addr = CONFIG_SYS_DATA_ADDR + CONFIG_SYS_DATA_SIZE / 2, - .size = CONFIG_SYS_DATA_SIZE / 2, - .speed = 1, - }, + } }, .mem_num = 2, }, diff --git a/mkrtos_configs/ATSURFF437_defconfig b/mkrtos_configs/ATSURFF437_defconfig index a3b8b0082..82b167a9b 100644 --- a/mkrtos_configs/ATSURFF437_defconfig +++ b/mkrtos_configs/ATSURFF437_defconfig @@ -129,4 +129,6 @@ CONFIG_MSG_BUF_VADDR=0xE0000000 CONFIG_BOOT_FS_VADDR=0xE0001000 CONFIG_MPU_PAGE_FAULT_SUPPORT=n CONFIG_MPU_PAGE_NUM=64 -CONFIG_MPU_PAGE_FAULT_REGIONS_NUM=2 \ No newline at end of file +CONFIG_MPU_PAGE_FAULT_REGIONS_NUM=2 +CONFIG_BOOT_INFO_SUPPORT=y +CONFIG_DTBO_SUPPORT=y \ No newline at end of file diff --git a/mkrtos_configs/STM32F103ZET6_defconfig b/mkrtos_configs/STM32F103ZET6_defconfig index 29eaa0ffc..70e7a111d 100644 --- a/mkrtos_configs/STM32F103ZET6_defconfig +++ b/mkrtos_configs/STM32F103ZET6_defconfig @@ -127,3 +127,5 @@ CONFIG_THREAD_MAP_BUF_LEN=4 CONFIG_THREAD_USER_BUF_LEN=4 CONFIG_MSG_BUF_VADDR=0xE0000000 CONFIG_BOOT_FS_VADDR=0xE0001000 +CONFIG_BOOT_INFO_SUPPORT=y +CONFIG_DTBO_SUPPORT=y \ No newline at end of file diff --git a/mkrtos_configs/STM32F205_defconfig b/mkrtos_configs/STM32F205_defconfig index 30242dff2..a1dd7bda4 100644 --- a/mkrtos_configs/STM32F205_defconfig +++ b/mkrtos_configs/STM32F205_defconfig @@ -6,7 +6,7 @@ CONFIG_KNL_INFO=y CONFIG_SYS_TEXT_ADDR=0x8000000 CONFIG_SYS_TEXT_SIZE=0x800000 CONFIG_SYS_DATA_ADDR=0x20000000 -CONFIG_SYS_DATA_SIZE=0x20000 +CONFIG_SYS_DATA_SIZE=0x800000 CONFIG_BOOTSTRAP_TEXT_SIZE=0x2000 CONFIG_DTBO_TEXT_SIZE=0x1000 CONFIG_KNL_TEXT_SIZE=0x30000 @@ -129,3 +129,5 @@ CONFIG_BOOT_FS_VADDR=0xE0001000 CONFIG_MPU_PAGE_FAULT_SUPPORT=y CONFIG_MPU_PAGE_NUM=64 CONFIG_MPU_PAGE_FAULT_REGIONS_NUM=2 +CONFIG_BOOT_INFO_SUPPORT=y +CONFIG_DTBO_SUPPORT=y \ No newline at end of file diff --git a/mkrtos_configs/STM32F407VET6_defconfig b/mkrtos_configs/STM32F407VET6_defconfig index 76dac96da..72dbacc64 100644 --- a/mkrtos_configs/STM32F407VET6_defconfig +++ b/mkrtos_configs/STM32F407VET6_defconfig @@ -129,4 +129,6 @@ CONFIG_MSG_BUF_VADDR=0xE0000000 CONFIG_BOOT_FS_VADDR=0xE0001000 CONFIG_MPU_PAGE_FAULT_SUPPORT=n CONFIG_MPU_PAGE_NUM=64 -CONFIG_MPU_PAGE_FAULT_REGIONS_NUM=2 \ No newline at end of file +CONFIG_MPU_PAGE_FAULT_REGIONS_NUM=2 +CONFIG_BOOT_INFO_SUPPORT=y +CONFIG_DTBO_SUPPORT=y \ No newline at end of file diff --git a/mkrtos_configs/SWM34_defconfig b/mkrtos_configs/SWM34_defconfig index 078f618aa..6fc0224e0 100644 --- a/mkrtos_configs/SWM34_defconfig +++ b/mkrtos_configs/SWM34_defconfig @@ -130,3 +130,5 @@ CONFIG_BOOT_FS_VADDR=0xE0001000 CONFIG_MPU_PAGE_FAULT_SUPPORT=n CONFIG_MPU_PAGE_NUM=64 CONFIG_MPU_PAGE_FAULT_REGIONS_NUM=2 +CONFIG_BOOT_INFO_SUPPORT=y +CONFIG_DTBO_SUPPORT=y \ No newline at end of file diff --git a/mkrtos_configs/aarch64_qemu_defconfig b/mkrtos_configs/aarch64_qemu_defconfig index 68c45b1c2..a5a5163f9 100644 --- a/mkrtos_configs/aarch64_qemu_defconfig +++ b/mkrtos_configs/aarch64_qemu_defconfig @@ -9,7 +9,7 @@ CONFIG_SYS_DATA_ADDR=0x40000000 CONFIG_SYS_DATA_SIZE=0x1E000000 CONFIG_BOOTSTRAP_TEXT_SIZE=0x1000000 CONFIG_KNL_TEXT_SIZE=0x10000 -CONFIG_BOOTFS_OFFSET=0x02000000 +# CONFIG_BOOTFS_OFFSET=0x02000000 CONFIG_MK_MPU_CFG=n CONFIG_FT_ADDR_NR=16 CONFIG_SYS_SCHE_HZ=1000 diff --git a/mkrtos_knl/Kconfig b/mkrtos_knl/Kconfig index 5f9ad19a9..b845fcd4d 100644 --- a/mkrtos_knl/Kconfig +++ b/mkrtos_knl/Kconfig @@ -146,4 +146,11 @@ config PRINTK_CACHE_SIZE default 128 help The printk cache size refers to the size of the data content output to the console in a single attempt, which usually does not need to be modified. + +config BOOT_INFO_SUPPORT + bool "boot info support" + default n + help + support boot info. + endmenu diff --git a/mkrtos_knl/arch/cortex-m3/core_it.c b/mkrtos_knl/arch/cortex-m3/core_it.c index d68d0c42e..bdc02c445 100755 --- a/mkrtos_knl/arch/cortex-m3/core_it.c +++ b/mkrtos_knl/arch/cortex-m3/core_it.c @@ -99,6 +99,7 @@ void MemManage_Handler(void) thread_get_current_task(), fault_addr, bus_addr); task_knl_kill(thread_get_current(), is_knl); } + return; } if ((SCB->CFSR & 8)) { diff --git a/mkrtos_knl/arch/cortex-m3/link.lds b/mkrtos_knl/arch/cortex-m3/link.lds index 94d7879d1..04c380480 100644 --- a/mkrtos_knl/arch/cortex-m3/link.lds +++ b/mkrtos_knl/arch/cortex-m3/link.lds @@ -1,7 +1,7 @@ ENTRY(Reset_Handler) MEMORY { - RAM (arw) : ORIGIN = 0x20000000, LENGTH = 0x20000 + RAM (arw) : ORIGIN = 0x20000000, LENGTH = 0x800000 FLASH (arx) : ORIGIN = 0x8000000 + 0x2000 + 0x1000, LENGTH = 0x30000 } SECTIONS diff --git a/mkrtos_knl/arch/cortex-m33/core_it.c b/mkrtos_knl/arch/cortex-m33/core_it.c index b4d461dc6..688197b08 100755 --- a/mkrtos_knl/arch/cortex-m33/core_it.c +++ b/mkrtos_knl/arch/cortex-m33/core_it.c @@ -52,6 +52,7 @@ void MemManage_Handler(void) thread_get_current_task(), fault_addr, bus_addr); task_knl_kill(thread_get_current(), is_knl); } + return; } if ((SCB->CFSR & 8)) { diff --git a/mkrtos_knl/arch/cortex-m4/core_it.c b/mkrtos_knl/arch/cortex-m4/core_it.c index 50361494b..827b31c28 100755 --- a/mkrtos_knl/arch/cortex-m4/core_it.c +++ b/mkrtos_knl/arch/cortex-m4/core_it.c @@ -95,6 +95,7 @@ void MemManage_Handler(void) thread_get_current_task(), fault_addr, bus_addr); task_knl_kill(thread_get_current(), is_knl); } + return; } if ((SCB->CFSR & 8)) { diff --git a/mkrtos_knl/inc/knl/globals.h b/mkrtos_knl/inc/knl/globals.h index cacd91090..c9ff4afcc 100755 --- a/mkrtos_knl/inc/knl/globals.h +++ b/mkrtos_knl/inc/knl/globals.h @@ -24,6 +24,8 @@ extern int mem_node_num; extern mem_node_t flash_nodes[]; //!< 支持的flash节点 extern int flash_node_num; +extern umword_t cpio_images; + mem_t *mm_get_global(void); void global_reg_kobj(kobject_t *kobj, int inx); kobject_t *global_get_kobj(int inx); diff --git a/mkrtos_knl/knl/globals.c b/mkrtos_knl/knl/globals.c index 5a9faf6b6..d4ad95311 100755 --- a/mkrtos_knl/knl/globals.c +++ b/mkrtos_knl/knl/globals.c @@ -73,6 +73,7 @@ static void mem_sys_init(void) } INIT_MEM(mem_sys_init); +#if IS_ENABLED(CONFIG_DTBO_SUPPORT) static void dts_parse(void) { printk("init dts parsing.\n"); @@ -96,3 +97,4 @@ static void dts_parse(void) // #endif } INIT_ONBOOT(dts_parse); +#endif diff --git a/mkrtos_knl/knl/thread_knl.c b/mkrtos_knl/knl/thread_knl.c index ce8b6760b..bafa61aa0 100755 --- a/mkrtos_knl/knl/thread_knl.c +++ b/mkrtos_knl/knl/thread_knl.c @@ -230,7 +230,9 @@ void start_kernel(void *boot_info) // 初始化系统时钟 // 初始化串口 // 初始化定时器 +#if IS_ENABLED(CONFIG_BOOT_INFO_SUPPORT) arch_set_boot_info(boot_info); +#endif sys_call_init(); printk("mkrtos init done..\n"); printk("mkrtos running..\n"); diff --git a/mkrtos_script/build_qemu_aarch64.sh b/mkrtos_script/build_qemu_aarch64.sh index f66ca3ab5..661792c71 100755 --- a/mkrtos_script/build_qemu_aarch64.sh +++ b/mkrtos_script/build_qemu_aarch64.sh @@ -1,12 +1,12 @@ #!/bin/bash -# export TOOLCHAIN=/Applications/ArmGNUToolchain/11.3.rel1/aarch64-none-elf/bin/ -# export TOOLCHAIN_LIB=/Applications/ArmGNUToolchain/11.3.rel1/aarch64-none-elf/lib/gcc/aarch64-none-elf/11.3.1 +export TOOLCHAIN=/Applications/ArmGNUToolchain/11.3.rel1/aarch64-none-elf/bin/ +export TOOLCHAIN_LIB=/Applications/ArmGNUToolchain/11.3.rel1/aarch64-none-elf/lib/gcc/aarch64-none-elf/11.3.1 # export TOOLCHAIN=/home/toolchains/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf/bin/ # export TOOLCHAIN_LIB=/home/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-x86_64-aarch64-none-elf/bin/ -export TOOLCHAIN_LIB=/home/zhangzheng/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-x86_64-aarch64-none-elf/bin/ +# export TOOLCHAIN_LIB=/home/zhangzheng/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_script/build_test.sh b/mkrtos_script/build_test.sh index 22bc0672b..a49f0b37c 100755 --- a/mkrtos_script/build_test.sh +++ b/mkrtos_script/build_test.sh @@ -47,7 +47,10 @@ run_and_check "./mkrtos_script/run_m3.sh" "$TIMEOUT" run_and_check "./mkrtos_script/run_m4.sh" "$TIMEOUT" ./mkrtos_script/clean.sh -./mkrtos_script/build_swm34s.sh test +./mkrtos_script/build_at32f437.sh test "$TIMEOUT" + +./mkrtos_script/clean.sh +./mkrtos_script/build_swm34s.sh test "$TIMEOUT" # run_and_check "./mkrtos_script/build_swm34s.sh test" "$TIMEOUT" echo "All tests completed." \ No newline at end of file