暂时去除mm_page支持,会影响实时性
This commit is contained in:
@@ -96,33 +96,36 @@ void MemManage_Handler(void)
|
||||
if (SCB->CFSR & 128)
|
||||
{
|
||||
fault_addr = (addr_t)(SCB->MMFAR);
|
||||
if (mm_page_alloc_fault(&cur_task->mm_space.mm_pages, fault_addr) == NULL)
|
||||
{
|
||||
goto end;
|
||||
}
|
||||
return;
|
||||
// if (mm_page_alloc_fault(&cur_task->mm_space.mm_pages, fault_addr) == NULL)
|
||||
// {
|
||||
// goto end;
|
||||
// }
|
||||
// return;
|
||||
goto end;
|
||||
}
|
||||
if ((SCB->CFSR & 8))
|
||||
{
|
||||
printk("出栈错误\n");
|
||||
fault_addr = arch_get_user_sp();
|
||||
// fault_addr = arch_get_user_sp();
|
||||
|
||||
if (mm_page_alloc_fault(&cur_task->mm_space.mm_pages, fault_addr) == NULL)
|
||||
{
|
||||
goto end;
|
||||
}
|
||||
return;
|
||||
// if (mm_page_alloc_fault(&cur_task->mm_space.mm_pages, fault_addr) == NULL)
|
||||
// {
|
||||
// goto end;
|
||||
// }
|
||||
// return;
|
||||
goto end;
|
||||
}
|
||||
if (SCB->CFSR & 16)
|
||||
{
|
||||
printk("压栈错误\n");
|
||||
fault_addr = arch_get_user_sp();
|
||||
// fault_addr = arch_get_user_sp();
|
||||
|
||||
if (mm_page_alloc_fault(&cur_task->mm_space.mm_pages, fault_addr) == NULL)
|
||||
{
|
||||
goto end;
|
||||
}
|
||||
return;
|
||||
// if (mm_page_alloc_fault(&cur_task->mm_space.mm_pages, fault_addr) == NULL)
|
||||
// {
|
||||
// goto end;
|
||||
// }
|
||||
// return;
|
||||
goto end;
|
||||
}
|
||||
if (SCB->CFSR & 32)
|
||||
{
|
||||
|
||||
@@ -19,7 +19,7 @@ typedef struct region_info
|
||||
typedef struct mm_space
|
||||
{
|
||||
region_info_t pt_regions[REGION_NUM]; //!< mpu内存保护块
|
||||
mm_pages_t mm_pages; //!< 模拟分页内存
|
||||
// mm_pages_t mm_pages; //!< 模拟分页内存
|
||||
void *mm_block; //!< task 的私有内存块
|
||||
size_t mm_block_size; //!< 私有内存块的大小
|
||||
} mm_space_t;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
/**
|
||||
* @file mm_man.c
|
||||
* @author zhangzheng (1358745329@qq.com)
|
||||
* @brief
|
||||
* @brief
|
||||
* @version 0.1
|
||||
* @date 2023-09-29
|
||||
*
|
||||
*
|
||||
* @copyright Copyright (c) 2023
|
||||
*
|
||||
*
|
||||
*/
|
||||
#include "types.h"
|
||||
#include "kobject.h"
|
||||
@@ -55,23 +55,25 @@ static void mm_man_syscall(kobject_t *kobj, syscall_prot_t sys_p, msg_tag_t in_t
|
||||
{
|
||||
case MM_ALLOC:
|
||||
{
|
||||
addr_t ret_addr;
|
||||
int ret = mm_pages_alloc_page(&cur_task->mm_space.mm_pages, cur_task->lim, f->r[1], &ret_addr, f->r[2]);
|
||||
if (ret < 0)
|
||||
{
|
||||
tag = msg_tag_init4(0, 0, 0, ret);
|
||||
}
|
||||
else
|
||||
{
|
||||
tag = msg_tag_init4(0, 0, 0, 0);
|
||||
f->r[1] = ret_addr;
|
||||
}
|
||||
// addr_t ret_addr;
|
||||
// int ret = mm_pages_alloc_page(&cur_task->mm_space.mm_pages, cur_task->lim, f->r[1], &ret_addr, f->r[2]);
|
||||
// if (ret < 0)
|
||||
// {
|
||||
// tag = msg_tag_init4(0, 0, 0, ret);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// tag = msg_tag_init4(0, 0, 0, 0);
|
||||
// f->r[1] = ret_addr;
|
||||
// }
|
||||
tag = msg_tag_init4(0, 0, 0, -ENOSYS);
|
||||
}
|
||||
break;
|
||||
case MM_FREE:
|
||||
{
|
||||
mm_pages_free_page(&cur_task->mm_space.mm_pages, cur_task->lim, f->r[1], f->r[2]);
|
||||
tag = msg_tag_init4(0, 0, 0, 0);
|
||||
// mm_pages_free_page(&cur_task->mm_space.mm_pages, cur_task->lim, f->r[1], f->r[2]);
|
||||
// tag = msg_tag_init4(0, 0, 0, 0);
|
||||
tag = msg_tag_init4(0, 0, 0, -ENOSYS);
|
||||
}
|
||||
break;
|
||||
case MM_ALIGN_ALLOC:
|
||||
|
||||
@@ -26,7 +26,7 @@ void mm_space_init(mm_space_t *mm_space, int is_knl)
|
||||
{
|
||||
regi_info = mm_space_alloc_pt_region(mm_space);
|
||||
assert(regi_info);
|
||||
mm_pages_init(&mm_space->mm_pages, regi_info);
|
||||
// mm_pages_init(&mm_space->mm_pages, regi_info);
|
||||
}
|
||||
}
|
||||
region_info_t *mm_space_alloc_pt_region(mm_space_t *m_space)
|
||||
|
||||
@@ -11,7 +11,7 @@ export KNL_TEXT=0x8000000
|
||||
export KNL_DATA=0x20000000
|
||||
export KNL_DATA_SIZE=64K
|
||||
export BOARD=STM32F2x
|
||||
|
||||
export ARCH=cortex-m3
|
||||
export PYTHON_EXECUTABLE=python3
|
||||
|
||||
set -e
|
||||
|
||||
19
mkrtos_script/build_cortex_r52.sh
Executable file
19
mkrtos_script/build_cortex_r52.sh
Executable file
@@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 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 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 KEN_OFFSET=0x2000
|
||||
export INIT_OFFSET=0x10000
|
||||
export BOOTFS_ADDR_OFFSET=0x20000
|
||||
export KNL_TEXT=0x8000000
|
||||
export KNL_DATA=0x20000000
|
||||
export KNL_DATA_SIZE=64K
|
||||
export BOARD=STM32F2x
|
||||
export ARCH=cortex-r52
|
||||
export PYTHON_EXECUTABLE=python3
|
||||
|
||||
set -e
|
||||
cmake -G Ninja -B build/$KNL .
|
||||
cd build/$KNL && ninja
|
||||
@@ -11,6 +11,7 @@ export BOOTFS_ADDR_OFFSET=0x20000
|
||||
export KNL_TEXT=0x8000000
|
||||
export KNL_DATA=0x20000000
|
||||
export KNL_DATA_SIZE=64K
|
||||
export ARCH=cortex-m3
|
||||
export BOARD=STM32F1x
|
||||
|
||||
set -e
|
||||
|
||||
12
mkrtos_script/debug_cortex_r52.sh
Executable file
12
mkrtos_script/debug_cortex_r52.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
|
||||
# if [-z "$1"]; then
|
||||
# echo "usage: ./debug.sh [tcp port]"
|
||||
# exit
|
||||
# fi
|
||||
|
||||
qemu-system-arm -machine\
|
||||
netduino2 -cpu cortex-r52 \
|
||||
-nographic -m size=2\
|
||||
-kernel $PWD/build/output/kernel.img \
|
||||
-S -gdb tcp::$1
|
||||
@@ -18,22 +18,23 @@ set(CMAKE_NM "${CROSS_COMPILE}nm" CACHE PATH "" FORCE)
|
||||
set(CMAKE_AR "${CROSS_COMPILE}ar" CACHE PATH "" FORCE)
|
||||
set(CMAKE_SIZE "${CROSS_COMPILE}size" CACHE PATH "" FORCE)
|
||||
|
||||
set(MKRTOS_ARCH $ENV{ARCH})
|
||||
|
||||
# -mfloat-abi=soft -u _printf_float
|
||||
set(CMAKE_C_FLAGS "-mcpu=cortex-m3 -mthumb -O0 -g3 -lc -lrdimon -msoft-float -u _printf_float -D=MKRTOS \
|
||||
-std=gnu11 -ffunction-sections -fdata-sections -fno-builtin \
|
||||
set(CMAKE_C_FLAGS "-mcpu=${MKRTOS_ARCH} -mthumb -O0 -g3 -lc -lrdimon -msoft-float -u _printf_float -D=MKRTOS \
|
||||
-std=gnu11 -ffunction-sections -fdata-sections -fno-builtin -mfix-cortex-m3-ldrd \
|
||||
-nostartfiles -nodefaultlibs -nostdlib -nostdinc -Xlinker \
|
||||
-fno-stack-protector -Wl,--gc-sections \
|
||||
" CACHE STRING "" FORCE)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "-mcpu=cortex-m3 -mthumb -mno-thumb-interwork -D=MKRTOS \
|
||||
set(CMAKE_CXX_FLAGS "-mcpu=${MKRTOS_ARCH}-mthumb -mno-thumb-interwork -D=MKRTOS \
|
||||
-mfix-cortex-m3-ldrd -O0 -g -std=c++11 \
|
||||
-fmessage-length=0 -Xlinker --print-map -Wall -W -fno-stack-protector -g \
|
||||
-mfloat-abi=soft -lc -lrdimon -u _printf_float \
|
||||
-ffunction-sections -fdata-sections -fno-builtin -nostartfiles -nodefaultlibs -nostdlib -nostdinc -Xlinker \
|
||||
" CACHE STRING "" FORCE)
|
||||
|
||||
set(CMAKE_ASM_FLAGS "-mcpu=cortex-m3 -mthumb -O0 -g -mfloat-abi=soft -lc -lrdimon -D=MKRTOS \
|
||||
set(CMAKE_ASM_FLAGS "-mcpu=${MKRTOS_ARCH} -mthumb -O0 -g -mfloat-abi=soft -lc -lrdimon -D=MKRTOS \
|
||||
-u _printf_float -std=gnu11 -ffunction-sections -fdata-sections -fno-builtin \
|
||||
-nostartfiles -nodefaultlibs -nostdlib -nostdinc -Xlinker -fno-stack-protector \
|
||||
" CACHE STRING "" FORCE)
|
||||
|
||||
Reference in New Issue
Block a user