尝试修复其他芯片的编译
This commit is contained in:
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@@ -69,7 +69,8 @@
|
||||
"timer.h": "c",
|
||||
"arm_local_reg.h": "c",
|
||||
"thread_task_arch.h": "c",
|
||||
"mm_space.h": "c"
|
||||
"mm_space.h": "c",
|
||||
"spinlock_arch.h": "c"
|
||||
},
|
||||
"cortex-debug.showRTOS": false,
|
||||
"cortex-debug.variableUseNaturalFormat": false,
|
||||
|
||||
@@ -34,6 +34,7 @@ if (${CONFIG_CPU_TYPE} STREQUAL "stm32f1")
|
||||
${CMAKE_SOURCE_DIR}/mkrtos_bsp/STM32/STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/CoreSupport
|
||||
)
|
||||
add_subdirectory(bsp/STM32F1)
|
||||
set(PACK_CMD "${CMAKE_OBJCOPY} -I binary -O elf32-littlearm -B arm rootfs.cpio rootfs.cpio.elf --rename-section .data=.cpio")
|
||||
elseif(${CONFIG_CPU_TYPE} STREQUAL "stm32f2" )
|
||||
|
||||
file(GLOB bsp_src ${CMAKE_SOURCE_DIR}/mkrtos_bsp/STM32/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/*.c)
|
||||
@@ -46,6 +47,7 @@ elseif(${CONFIG_CPU_TYPE} STREQUAL "stm32f2" )
|
||||
${CMAKE_SOURCE_DIR}/mkrtos_bsp/STM32/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include
|
||||
)
|
||||
add_subdirectory(bsp/STM32F2)
|
||||
set(PACK_CMD "${CMAKE_OBJCOPY} -I binary -O elf32-littlearm -B arm rootfs.cpio rootfs.cpio.elf --rename-section .data=.cpio")
|
||||
elseif(${CONFIG_CPU_TYPE} STREQUAL "stm32f4" )
|
||||
if(${CONFIG_BOARD_NAME} STREQUAL "STM32F407VET6" )
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DSTM32F40_41xxx ")
|
||||
@@ -63,12 +65,14 @@ elseif(${CONFIG_CPU_TYPE} STREQUAL "stm32f4" )
|
||||
${CMAKE_SOURCE_DIR}/mkrtos_bsp/STM32/STM32F4xx_DSP_StdPeriph_Lib_V1.9.0/Libraries/CMSIS/Device/ST/STM32F4xx/Include
|
||||
)
|
||||
add_subdirectory(bsp/STM32F4)
|
||||
set(PACK_CMD "${CMAKE_OBJCOPY} -I binary -O elf32-littlearm -B arm rootfs.cpio rootfs.cpio.elf --rename-section .data=.cpio")
|
||||
elseif(${CONFIG_CPU_TYPE} STREQUAL "Cortex-R52" )
|
||||
include_directories(
|
||||
${CMAKE_SOURCE_DIR}/mkrtos_bootstrap/bsp/Cortex-R52
|
||||
|
||||
)
|
||||
add_subdirectory(bsp/Cortex-R52)
|
||||
set(PACK_CMD "${CMAKE_OBJCOPY} -I binary -O elf32-littlearm -B arm rootfs.cpio rootfs.cpio.elf --rename-section .data=.cpio")
|
||||
elseif(${CONFIG_CPU_TYPE} STREQUAL "swm34s" )
|
||||
|
||||
file(GLOB bsp_src
|
||||
@@ -85,11 +89,13 @@ elseif(${CONFIG_CPU_TYPE} STREQUAL "swm34s" )
|
||||
${CMAKE_SOURCE_DIR}/mkrtos_bsp/SWM34/SWM341_StdPeriph_Driver/SWM341_StdPeriph_Driver
|
||||
)
|
||||
add_subdirectory(bsp/SWM34S)
|
||||
set(PACK_CMD "${CMAKE_OBJCOPY} -I binary -O elf32-littlearm -B arm rootfs.cpio rootfs.cpio.elf --rename-section .data=.cpio")
|
||||
elseif(${CONFIG_CPU_TYPE} STREQUAL "aarch64_qemu" )
|
||||
include_directories(
|
||||
${CMAKE_SOURCE_DIR}/mkrtos_bootstrap/bsp/AARCH64_QEMU
|
||||
)
|
||||
add_subdirectory(bsp/AARCH64_QEMU)
|
||||
set(PACK_CMD "${CMAKE_OBJCOPY} -I binary -O elf64-littleaarch64 -B aarch64 rootfs.cpio rootfs.cpio.elf --rename-section .data=.cpio")
|
||||
endif()
|
||||
|
||||
add_custom_target(
|
||||
@@ -102,10 +108,11 @@ add_custom_target(
|
||||
COMMAND
|
||||
cd ${CMAKE_SOURCE_DIR}/build/output
|
||||
COMMAND
|
||||
${CMAKE_OBJCOPY} -I binary -O elf64-littleaarch64 -B aarch64 rootfs.cpio rootfs.cpio.elf --rename-section .data=.cpio
|
||||
eval ${PACK_CMD}
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/build/output
|
||||
BYPRODUCTS ${CMAKE_SOURCE_DIR}/build/output/rootfs.cpio.elf
|
||||
)
|
||||
)
|
||||
# ${CMAKE_OBJCOPY} -I binary -O elf64-littleaarch64 -B aarch64 rootfs.cpio rootfs.cpio.elf --rename-section .data=.cpio
|
||||
add_dependencies(
|
||||
gen_sys_cpio
|
||||
mkrtos_dump
|
||||
@@ -128,6 +135,7 @@ target_link_libraries(
|
||||
--whole-archive
|
||||
boot_bsp
|
||||
--no-whole-archive
|
||||
${GCC_LIB_PATH}/libgcc.a
|
||||
)
|
||||
|
||||
add_custom_target(
|
||||
|
||||
@@ -65,5 +65,5 @@
|
||||
#define SWD_ENABLE 0X01
|
||||
#define JTAG_SWD_ENABLE 0X00
|
||||
|
||||
void jump2kernel(void);
|
||||
void jump2kernel(addr_t cpio_start, addr_t cpio_end);
|
||||
#endif
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#include <mk_sys.h>
|
||||
//! 内核镜像的开始地址
|
||||
#define KERNEL_IMG_START_ADDR (0X8000000 + 0x2000)
|
||||
void jump2kernel(void)
|
||||
void jump2kernel(addr_t cpio_start, addr_t cpio_end)
|
||||
{
|
||||
uint32_t jump_addr;
|
||||
void (*_main)(void);
|
||||
|
||||
@@ -112,3 +112,16 @@ CONFIG_RTT_DIR="./"
|
||||
CONFIG_ARCH="cortex-m3"
|
||||
CONFIG_KNL_EXRAM=n
|
||||
CONFIG_BOARD_NAME="STM32F103ZET6"
|
||||
CONFIG_BUDDY_SLAB=n
|
||||
CONFIG_SMP=n
|
||||
CONFIG_CPU=1
|
||||
CONFIG_THREAD_BLOCK_SIZE=0x400
|
||||
CONFIG_PAGE_SHIFT=9
|
||||
CONFIG_MMU=n
|
||||
CONFIG_KNL_TEST=n
|
||||
CONFIG_ELF_LAUNCH=n
|
||||
CONFIG_THREAD_MSG_BUG_LEN=128
|
||||
CONFIG_THREAD_IPC_MSG_LEN=96
|
||||
CONFIG_THREAD_MAP_BUF_LEN=16
|
||||
CONFIG_MSG_BUF_VADDR=0xE0000000
|
||||
CONFIG_BOOT_FS_VADDR=0xE0001000
|
||||
|
||||
@@ -110,4 +110,17 @@ CONFIG_RT_USING_PIN=y
|
||||
CONFIG_CPU_TYPE="stm32f2"
|
||||
CONFIG_RTT_DIR="./"
|
||||
CONFIG_ARCH="cortex-m3"
|
||||
CONFIG_BOARD_NAME="STM32F205"
|
||||
CONFIG_BOARD_NAME="STM32F205"
|
||||
CONFIG_BUDDY_SLAB=n
|
||||
CONFIG_SMP=n
|
||||
CONFIG_CPU=1
|
||||
CONFIG_THREAD_BLOCK_SIZE=0x400
|
||||
CONFIG_PAGE_SHIFT=9
|
||||
CONFIG_MMU=n
|
||||
CONFIG_KNL_TEST=n
|
||||
CONFIG_ELF_LAUNCH=n
|
||||
CONFIG_THREAD_MSG_BUG_LEN=128
|
||||
CONFIG_THREAD_IPC_MSG_LEN=96
|
||||
CONFIG_THREAD_MAP_BUF_LEN=16
|
||||
CONFIG_MSG_BUF_VADDR=0xE0000000
|
||||
CONFIG_BOOT_FS_VADDR=0xE0001000
|
||||
|
||||
@@ -13,13 +13,14 @@
|
||||
#include "mm_space.h"
|
||||
#include "mpu.h"
|
||||
#include "assert.h"
|
||||
#if CONFIG_MK_MPU_CFG
|
||||
void mm_space_init(mm_space_t *mm_space, int is_knl)
|
||||
#if IS_ENABLED(CONFIG_MK_MPU_CFG)
|
||||
int mm_space_init(mm_space_t *mm_space, int is_knl)
|
||||
{
|
||||
for (int i = 0; i < CONFIG_REGION_NUM; i++)
|
||||
{
|
||||
mm_space->pt_regions[i].region_inx = -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
region_info_t *mm_space_alloc_pt_region(mm_space_t *m_space)
|
||||
{
|
||||
|
||||
@@ -12,6 +12,9 @@
|
||||
|
||||
#include "types.h"
|
||||
#include "arch.h"
|
||||
|
||||
#define PAGE_SIZE 512
|
||||
|
||||
#define LOG_INTR_NO 37 // USART1_IRQn
|
||||
|
||||
/// @brief 线程信息
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#include "types.h"
|
||||
#include "thread.h"
|
||||
#include "printk.h"
|
||||
#include "thread_armv7m.h"
|
||||
#include "thread_task_arch.h"
|
||||
#include "app.h"
|
||||
#include "mm_wrap.h"
|
||||
#include "arch.h"
|
||||
@@ -39,13 +39,12 @@ void thread_user_pf_set(thread_t *cur_th, void *pc, void *user_sp, void *ram, um
|
||||
// assert((((umword_t)user_sp) & 0x7UL) == 0);
|
||||
umword_t usp = ((umword_t)(user_sp) & ~0x7UL);
|
||||
|
||||
|
||||
pf_t *cur_pf = (pf_t *)(usp)-1; // thread_get_pf(cur_th);
|
||||
|
||||
cur_pf->pf_s.xpsr = 0x01000000L;
|
||||
cur_pf->pf_s.lr = (umword_t)NULL; //!< 线程退出时调用的函数
|
||||
cur_pf->pf_s.pc = (umword_t)pc | 0x1;
|
||||
cur_pf->rg1[5] = (umword_t)ram;
|
||||
cur_pf->regs[5] = (umword_t)ram;
|
||||
|
||||
cur_th->sp.knl_sp = ((char *)cur_th + THREAD_BLOCK_SIZE - 8);
|
||||
cur_th->sp.user_sp = cur_pf;
|
||||
@@ -53,3 +52,6 @@ void thread_user_pf_set(thread_t *cur_th, void *pc, void *user_sp, void *ram, um
|
||||
|
||||
// printk("exc_regs:%x %x %x\n", cur_pf->pf_s.pc, cur_th->sp.user_sp, ram);
|
||||
}
|
||||
void task_knl_init(task_t *knl_tk)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
#pragma once
|
||||
#include "mm_page.h"
|
||||
// #include "mm_page.h"
|
||||
void mm_man_dump(void);
|
||||
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "types.h"
|
||||
#include <mm_page.h>
|
||||
// #include <mm_page.h>
|
||||
#include <assert.h>
|
||||
#include <util.h>
|
||||
#if IS_ENABLED(CONFIG_MMU)
|
||||
|
||||
@@ -126,11 +126,17 @@ typedef struct thread
|
||||
static inline void thread_set_msg_buf(thread_t *th, void *msg, void *umsg)
|
||||
{
|
||||
th->msg.msg = msg;
|
||||
#if IS_ENABLED(CONFIG_MMU)
|
||||
th->msg.umsg = umsg;
|
||||
#endif
|
||||
}
|
||||
static inline void *thread_get_msg_buf(thread_t *th)
|
||||
{
|
||||
#if IS_ENABLED(CONFIG_MMU)
|
||||
return th->msg.umsg;
|
||||
#else
|
||||
return th->msg.msg;
|
||||
#endif
|
||||
}
|
||||
static inline void *thread_get_kmsg_buf(thread_t *th)
|
||||
{
|
||||
|
||||
@@ -3,13 +3,34 @@ cmake_minimum_required(VERSION 3.13)
|
||||
|
||||
file(GLOB deps *.c *.S)
|
||||
|
||||
if (NOT ${CONFIG_BUDDY_SLAB} STREQUAL "y")
|
||||
# if (NOT ${CONFIG_BUDDY_SLAB} STREQUAL "y")
|
||||
# list(REMOVE_ITEM deps ${CMAKE_SOURCE_DIR}/mkrtos_knl/knl/buddy.c)
|
||||
# list(REMOVE_ITEM deps ${CMAKE_SOURCE_DIR}/mkrtos_knl/knl/slab.c)
|
||||
# endif()
|
||||
|
||||
if (NOT DEFINED CONFIG_BUDDY_SLAB)
|
||||
list(REMOVE_ITEM deps ${CMAKE_SOURCE_DIR}/mkrtos_knl/knl/buddy.c)
|
||||
list(REMOVE_ITEM deps ${CMAKE_SOURCE_DIR}/mkrtos_knl/knl/slab.c)
|
||||
else()
|
||||
if (NOT CONFIG_BUDDY_SLAB STREQUAL "y")
|
||||
list(REMOVE_ITEM deps ${CMAKE_SOURCE_DIR}/mkrtos_knl/knl/buddy.c)
|
||||
list(REMOVE_ITEM deps ${CMAKE_SOURCE_DIR}/mkrtos_knl/knl/slab.c)
|
||||
endif()
|
||||
endif()
|
||||
if (${CONFIG_MMU} STREQUAL "y")
|
||||
file(GLOB mm_src mm/*.c mm/*.S)
|
||||
list(APPEND deps ${mm_src})
|
||||
|
||||
if (NOT DEFINED CONFIG_ELF_LAUNCH)
|
||||
list(REMOVE_ITEM deps ${CMAKE_SOURCE_DIR}/mkrtos_knl/knl/elf64.c)
|
||||
else()
|
||||
if (NOT CONFIG_ELF_LAUNCH STREQUAL "y")
|
||||
list(REMOVE_ITEM deps ${CMAKE_SOURCE_DIR}/mkrtos_knl/knl/elf64.c)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (DEFINED CONFIG_MMU)
|
||||
if (CONFIG_MMU STREQUAL "y")
|
||||
file(GLOB mm_src mm/*.c mm/*.S)
|
||||
list(APPEND deps ${mm_src})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
add_library(knl STATIC ${deps})
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
#include "types.h"
|
||||
#include "kobject.h"
|
||||
#include "init.h"
|
||||
#include "mm_page.h"
|
||||
// #include "mm_page.h"
|
||||
#include "thread.h"
|
||||
#include "task.h"
|
||||
#include "globals.h"
|
||||
|
||||
@@ -239,7 +239,7 @@ static share_mem_t *share_mem_create(ram_limit_t *lim, size_t max)
|
||||
|
||||
#if CONFIG_MK_MPU_CFG
|
||||
#if CONFIG_MPU_VERSION == 1
|
||||
if (max < PAGE_SIZE || !is_power_of_2(max))
|
||||
if (max < (1UL << CONFIG_PAGE_SHIFT) || !is_power_of_2(max))
|
||||
{
|
||||
//!< 大小必须是2的整数倍
|
||||
return NULL;
|
||||
|
||||
@@ -12,8 +12,11 @@
|
||||
#include "cpulock.h"
|
||||
#include "spinlock.h"
|
||||
#include <arch.h>
|
||||
#include <util.h>
|
||||
#if IS_ENABLED(CONFIG_SMP)
|
||||
#include <atomics.h>
|
||||
#include <spinlock_arch.h>
|
||||
#endif
|
||||
void spinlock_init(spinlock_t *lock)
|
||||
{
|
||||
lock->val &= ~3UL;
|
||||
@@ -40,7 +43,7 @@ mword_t spinlock_lock(spinlock_t *lock)
|
||||
cpulock_set(status);
|
||||
return -1;
|
||||
}
|
||||
#if CONFIG_SMP
|
||||
#if IS_ENABLED(CONFIG_SMP)
|
||||
spinlock_lock_arch(lock);
|
||||
_dmb(ish);
|
||||
#endif
|
||||
@@ -48,7 +51,7 @@ mword_t spinlock_lock(spinlock_t *lock)
|
||||
}
|
||||
void spinlock_set(spinlock_t *lock, mword_t status)
|
||||
{
|
||||
#if CONFIG_SMP
|
||||
#if IS_ENABLED(CONFIG_SMP)
|
||||
_dmb(ish);
|
||||
spinlock_unlock_arch(lock);
|
||||
#endif
|
||||
|
||||
@@ -49,9 +49,9 @@ end:;
|
||||
addr_t u_sp = arch_get_user_sp();
|
||||
pf_s_t *pf_a = (pf_s_t *)u_sp;
|
||||
|
||||
pf_a->rg0[0] = entry->r[0];
|
||||
pf_a->rg0[1] = entry->r[1];
|
||||
pf_a->rg0[2] = entry->r[2];
|
||||
pf_a->rg0[3] = entry->r[3];
|
||||
pf_a->rg0[0] = entry->regs[0];
|
||||
pf_a->rg0[1] = entry->regs[1];
|
||||
pf_a->rg0[2] = entry->regs[2];
|
||||
pf_a->rg0[3] = entry->regs[3];
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
#include "map.h"
|
||||
#include "access.h"
|
||||
#include "ipc.h"
|
||||
#include "asm/mm.h"
|
||||
#include "arch.h"
|
||||
enum thread_op
|
||||
{
|
||||
SET_EXEC_REGS,
|
||||
@@ -785,8 +785,13 @@ static void thread_syscall(kobject_t *kobj, syscall_prot_t sys_p, msg_tag_t in_t
|
||||
task_t *tag_tk = thread_get_bind_task(tag_th);
|
||||
if (is_rw_access(tag_tk, (void *)(f->regs[1]), THREAD_MSG_BUG_LEN, FALSE))
|
||||
{
|
||||
#if IS_ENABLED(CONFIG_MMU)
|
||||
thread_set_msg_buf(tag_th, (void *)mm_get_paddr(mm_space_get_pdir(&tag_tk->mm_space), f->regs[1], PAGE_SHIFT),
|
||||
(void *)(f->regs[1]));
|
||||
#else
|
||||
thread_set_msg_buf(tag_th, (void *)(f->regs[1]),
|
||||
(void *)(f->regs[1]));
|
||||
#endif
|
||||
tag = msg_tag_init4(0, 0, 0, 0);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "mk_sys.h"
|
||||
// #include "mk_sys.h"
|
||||
#include "cpio.h"
|
||||
#include <util.h>
|
||||
#include <string.h>
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
#!/bin/bash
|
||||
|
||||
export TOOLCHAIN=/home/zhangzheng/mkrtos-tools/gcc/gcc-arm-none-eabi-5_4-2016q3/bin/
|
||||
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=/home/zhangzheng/mkrtos-tools/gcc/gcc-arm-none-eabi-5_4-2016q3/bin/
|
||||
# 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=/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=/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 BOARD=STM32F103ZET6
|
||||
export CROSS_COMPILE_NAME=arm-none-eabi-
|
||||
|
||||
set -e
|
||||
cmake -G Ninja -B build .
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
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 BOARD=STM32F205
|
||||
export CROSS_COMPILE=arm-none-eabi-
|
||||
export CROSS_COMPILE_NAME=arm-none-eabi-
|
||||
|
||||
set -e
|
||||
cmake -G Ninja -B build/$KNL .
|
||||
|
||||
@@ -2,9 +2,11 @@ cmake_minimum_required(VERSION 3.13)
|
||||
|
||||
|
||||
file(GLOB_RECURSE deps *.c *.S)
|
||||
if (${CONFIG_ELF_LAUNCH} STREQUAL "y")
|
||||
list(REMOVE_ITEM deps ${CMAKE_SOURCE_DIR}/mkrtos_user/lib/sys_util/src/u_app_loader.c)
|
||||
list(APPEND deps ${CMAKE_SOURCE_DIR}/mkrtos_user/lib/sys_util/src/u_elf_loader.c)
|
||||
if (DEFINED CONFIG_ELF_LAUNCH)
|
||||
if (CONFIG_ELF_LAUNCH STREQUAL "y")
|
||||
list(REMOVE_ITEM deps ${CMAKE_SOURCE_DIR}/mkrtos_user/lib/sys_util/src/u_app_loader.c)
|
||||
list(APPEND deps ${CMAKE_SOURCE_DIR}/mkrtos_user/lib/sys_util/src/u_elf_loader.c)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
add_library(
|
||||
|
||||
Reference in New Issue
Block a user