优化系统配置
This commit is contained in:
16
.config
16
.config
@@ -2,9 +2,15 @@
|
|||||||
#
|
#
|
||||||
# Knl config
|
# Knl config
|
||||||
#
|
#
|
||||||
CONFIG_MK_MPU_CFG=y
|
CONFIG_KNL_INFO=y
|
||||||
CONFIG_KNL_TEXT_ADDR=0x8000000
|
CONFIG_KNL_TEXT_ADDR=0x8000000
|
||||||
CONFIG_KNL_TEXT_SIZE=0x100000
|
CONFIG_KNL_TEXT_SIZE=0x100000
|
||||||
|
CONFIG_KNL_DATA_ADDR=0x20000000
|
||||||
|
CONFIG_KNL_DATA_SIZE=0xa00000
|
||||||
|
CONFIG_KNL_OFFSET=0x2000
|
||||||
|
CONFIG_INIT_TASK_OFFSET=0x10000
|
||||||
|
CONFIG_BOOTFS_OFFSET=0x20000
|
||||||
|
CONFIG_MK_MPU_CFG=y
|
||||||
CONFIG_FT_ADDR_NR=16
|
CONFIG_FT_ADDR_NR=16
|
||||||
CONFIG_SYS_SCHE_HZ=1000
|
CONFIG_SYS_SCHE_HZ=1000
|
||||||
CONFIG_USER_ISR_START_NO=16
|
CONFIG_USER_ISR_START_NO=16
|
||||||
@@ -22,6 +28,14 @@ CONFIG_FD_MAP_ROW_CN=16
|
|||||||
CONFIG_FD_MAP_ROW_NR=16
|
CONFIG_FD_MAP_ROW_NR=16
|
||||||
# end of Libc backend
|
# end of Libc backend
|
||||||
|
|
||||||
|
#
|
||||||
|
# Sys util config
|
||||||
|
#
|
||||||
|
CONFIG_USING_SIG=y
|
||||||
|
CONFIG_SIG_THREAD_STACK_SIZE=512
|
||||||
|
CONFIG_SIG_THREAD_PRIO=3
|
||||||
|
# end of Sys util config
|
||||||
|
|
||||||
#
|
#
|
||||||
# DFS: device virtual file system
|
# DFS: device virtual file system
|
||||||
#
|
#
|
||||||
|
|||||||
44
.config.old
44
.config.old
@@ -1,4 +1,25 @@
|
|||||||
CONFIG_RTT_DIR="./"
|
|
||||||
|
#
|
||||||
|
# Knl config
|
||||||
|
#
|
||||||
|
CONFIG_KNL_INFO=y
|
||||||
|
CONFIG_KNL_TEXT_ADDR=0x8000000
|
||||||
|
CONFIG_KNL_TEXT_SIZE=0x100000
|
||||||
|
CONFIG_KNL_DATA_ADDR=0x20000000
|
||||||
|
CONFIG_KNL_DATA_SIZE=0x100000
|
||||||
|
CONFIG_KNL_OFFSET=0x2000
|
||||||
|
CONFIG_INIT_TASK_OFFSET=0x10000
|
||||||
|
CONFIG_BOOTFS_OFFSET=0x20000
|
||||||
|
CONFIG_MK_MPU_CFG=y
|
||||||
|
CONFIG_FT_ADDR_NR=16
|
||||||
|
CONFIG_SYS_SCHE_HZ=1000
|
||||||
|
CONFIG_USER_ISR_START_NO=16
|
||||||
|
CONFIG_IRQ_REG_TAB_SIZE=80
|
||||||
|
CONFIG_REGION_NUM=8
|
||||||
|
CONFIG_OBJ_MAP_TAB_SIZE=4
|
||||||
|
CONFIG_OBJ_MAP_ENTRY_SIZE=8
|
||||||
|
CONFIG_PRINTK_CACHE_SIZE=128
|
||||||
|
# end of Knl config
|
||||||
|
|
||||||
#
|
#
|
||||||
# Libc backend
|
# Libc backend
|
||||||
@@ -7,6 +28,14 @@ CONFIG_FD_MAP_ROW_CN=16
|
|||||||
CONFIG_FD_MAP_ROW_NR=16
|
CONFIG_FD_MAP_ROW_NR=16
|
||||||
# end of Libc backend
|
# end of Libc backend
|
||||||
|
|
||||||
|
#
|
||||||
|
# Sys util config
|
||||||
|
#
|
||||||
|
CONFIG_USING_SIG=y
|
||||||
|
CONFIG_SIG_THREAD_STACK_SIZE=512
|
||||||
|
CONFIG_SIG_THREAD_PRIO=3
|
||||||
|
# end of Sys util config
|
||||||
|
|
||||||
#
|
#
|
||||||
# DFS: device virtual file system
|
# DFS: device virtual file system
|
||||||
#
|
#
|
||||||
@@ -78,15 +107,4 @@ CONFIG_RT_USING_PIN=y
|
|||||||
# end of Using USB
|
# end of Using USB
|
||||||
# end of Device Drivers
|
# end of Device Drivers
|
||||||
|
|
||||||
#
|
CONFIG_RTT_DIR="./"
|
||||||
# Knl config
|
|
||||||
#
|
|
||||||
CONFIG_FT_ADDR_NR=16
|
|
||||||
CONFIG_SYS_SCHE_HZ=1000
|
|
||||||
CONFIG_USER_ISR_START_NO=16
|
|
||||||
CONFIG_IRQ_REG_TAB_SIZE=80
|
|
||||||
CONFIG_REGION_NUM=8
|
|
||||||
CONFIG_OBJ_MAP_TAB_SIZE=4
|
|
||||||
CONFIG_OBJ_MAP_ENTRY_SIZE=8
|
|
||||||
CONFIG_PRINTK_CACHE_SIZE=128
|
|
||||||
# end of Knl config
|
|
||||||
|
|||||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1 +1,3 @@
|
|||||||
build/*
|
build/*
|
||||||
|
.config
|
||||||
|
.config.old
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ add_custom_target(
|
|||||||
# -DKNL_TEXT=$ENV{KNL_TEXT}
|
# -DKNL_TEXT=$ENV{KNL_TEXT}
|
||||||
-DKNL_DATA=$ENV{KNL_DATA}
|
-DKNL_DATA=$ENV{KNL_DATA}
|
||||||
-DKNL_OFFSET=$ENV{KEN_OFFSET}
|
-DKNL_OFFSET=$ENV{KEN_OFFSET}
|
||||||
-DKNL_DATA_SIZE=$ENV{KNL_DATA_SIZE}
|
# -DKNL_DATA_SIZE=$ENV{KNL_DATA_SIZE}
|
||||||
-include ${CMAKE_SOURCE_DIR}/build/autoconf.h
|
-include ${CMAKE_SOURCE_DIR}/build/autoconf.h
|
||||||
-E -P -<${CMAKE_CURRENT_LIST_DIR}/stm32_link.lds.S>
|
-E -P -<${CMAKE_CURRENT_LIST_DIR}/stm32_link.lds.S>
|
||||||
${CMAKE_CURRENT_LIST_DIR}/stm32_link.lds
|
${CMAKE_CURRENT_LIST_DIR}/stm32_link.lds
|
||||||
|
|||||||
@@ -14,6 +14,11 @@
|
|||||||
#include "types.h"
|
#include "types.h"
|
||||||
#include "kobject.h"
|
#include "kobject.h"
|
||||||
|
|
||||||
|
extern char _sdata[];
|
||||||
|
extern char _edata[];
|
||||||
|
extern char _sbss[];
|
||||||
|
extern char _ebss[];
|
||||||
|
|
||||||
mem_t *mm_get_global(void);
|
mem_t *mm_get_global(void);
|
||||||
void global_reg_kobj(kobject_t *kobj, int inx);
|
void global_reg_kobj(kobject_t *kobj, int inx);
|
||||||
kobject_t *global_get_kobj(int inx);
|
kobject_t *global_get_kobj(int inx);
|
||||||
|
|||||||
@@ -11,6 +11,8 @@
|
|||||||
#include "types.h"
|
#include "types.h"
|
||||||
#include "app.h"
|
#include "app.h"
|
||||||
|
|
||||||
|
#define APP_MAGIC "MKRTOS."
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 通过地址获得app的信息
|
* @brief 通过地址获得app的信息
|
||||||
*
|
*
|
||||||
@@ -19,5 +21,15 @@
|
|||||||
*/
|
*/
|
||||||
app_info_t *app_info_get(void *addr)
|
app_info_t *app_info_get(void *addr)
|
||||||
{
|
{
|
||||||
return (app_info_t *)addr;
|
app_info_t *app = (app_info_t *)((umword_t)addr & (~0x3UL));
|
||||||
|
const char *magic = APP_MAGIC;
|
||||||
|
|
||||||
|
for (int i = 0; i < sizeof(app->magic) - 1; i++)
|
||||||
|
{
|
||||||
|
if (app->magic[i] != magic[i])
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return app;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,9 +17,8 @@
|
|||||||
#include "assert.h"
|
#include "assert.h"
|
||||||
#include "mm_man.h"
|
#include "mm_man.h"
|
||||||
#include "ipc.h"
|
#include "ipc.h"
|
||||||
static mem_t global_mem; //!< 全局内存管理块
|
static mem_t global_mem; //!< 全局内存管理块
|
||||||
static uint8_t mem_block[9 * 1024 * 1024 + 1024 * 1000]; //!< 内核内存分配堆 TODO:自动识别大小,或者从bootstrap中读取
|
static kobject_t *kobj_ls[FACTORY_FUNC_MAX]; //!< 全局静态内核对象
|
||||||
static kobject_t *kobj_ls[FACTORY_FUNC_MAX]; //!< 全局静态内核对象
|
|
||||||
/**
|
/**
|
||||||
* @brief 注册一个全局静态的内核对象
|
* @brief 注册一个全局静态的内核对象
|
||||||
*
|
*
|
||||||
@@ -59,7 +58,8 @@ mem_t *mm_get_global(void)
|
|||||||
*/
|
*/
|
||||||
static void mem_sys_init(void)
|
static void mem_sys_init(void)
|
||||||
{
|
{
|
||||||
|
void *mem_block_data;
|
||||||
mem_init(&global_mem);
|
mem_init(&global_mem);
|
||||||
mem_heap_add(mm_get_global(), mem_block, sizeof(mem_block));
|
mem_heap_add(mm_get_global(), (void *)_ebss, CONFIG_KNL_DATA_SIZE - ((umword_t)_ebss - (umword_t)_sdata));
|
||||||
}
|
}
|
||||||
INIT_MEM(mem_sys_init);
|
INIT_MEM(mem_sys_init);
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
ENTRY(Reset_Handler)
|
ENTRY(Reset_Handler)
|
||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 10M
|
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 0xa00000
|
||||||
FLASH (rx) : ORIGIN = 0x8000000 + 0x2000, LENGTH = 64K - 0x2000
|
FLASH (rx) : ORIGIN = 0x8000000 + 0x2000, LENGTH = 64K - 0x2000
|
||||||
}
|
}
|
||||||
SECTIONS
|
SECTIONS
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ ENTRY(Reset_Handler)
|
|||||||
/* Specify the memory areas */
|
/* Specify the memory areas */
|
||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
RAM (xrw) : ORIGIN = KNL_DATA, LENGTH = KNL_DATA_SIZE
|
RAM (xrw) : ORIGIN = KNL_DATA, LENGTH = CONFIG_KNL_DATA_SIZE
|
||||||
/* RAM1 (xrw) : ORIGIN = 0x68000000, LENGTH = 1M */
|
/* RAM1 (xrw) : ORIGIN = 0x68000000, LENGTH = 1M */
|
||||||
/* RAM2 (xrw) : ORIGIN = 0x2001C000, LENGTH = 16K */
|
/* RAM2 (xrw) : ORIGIN = 0x2001C000, LENGTH = 16K */
|
||||||
FLASH (rx) : ORIGIN = CONFIG_KNL_TEXT_ADDR + KNL_OFFSET, LENGTH = 64K - KNL_OFFSET
|
FLASH (rx) : ORIGIN = CONFIG_KNL_TEXT_ADDR + KNL_OFFSET, LENGTH = 64K - KNL_OFFSET
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ export KEN_OFFSET=0x2000
|
|||||||
export INIT_OFFSET=0x10000
|
export INIT_OFFSET=0x10000
|
||||||
export BOOTFS_ADDR_OFFSET=0x22000
|
export BOOTFS_ADDR_OFFSET=0x22000
|
||||||
export KNL_DATA=0x20000000
|
export KNL_DATA=0x20000000
|
||||||
export KNL_DATA_SIZE=10M
|
|
||||||
export BOARD=STM32F2x
|
export BOARD=STM32F2x
|
||||||
export ARCH=cortex-m3
|
export ARCH=cortex-m3
|
||||||
export PYTHON_EXECUTABLE=python3
|
export PYTHON_EXECUTABLE=python3
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
|
|
||||||
|
|
||||||
source "mkrtos_user/lib/libc_backend/Kconfig"
|
source "mkrtos_user/lib/libc_backend/Kconfig"
|
||||||
|
source "mkrtos_user/lib/sys_util/Kconfig"
|
||||||
|
|||||||
@@ -11,6 +11,8 @@
|
|||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#ifdef CONFIG_USING_SIG
|
||||||
|
|
||||||
static int shell_sig_call_back(pid_t pid, umword_t sig_val)
|
static int shell_sig_call_back(pid_t pid, umword_t sig_val)
|
||||||
{
|
{
|
||||||
/*TODO:这个消息是init发送的,这里不能给init发送消息,否导致卡死*/
|
/*TODO:这个消息是init发送的,这里不能给init发送消息,否导致卡死*/
|
||||||
@@ -29,3 +31,4 @@ int shell_test_sig(int argc, char *argv[])
|
|||||||
return pm_sig_watch(pid, 0 /*TODO:现在只有kill */);
|
return pm_sig_watch(pid, 0 /*TODO:现在只有kill */);
|
||||||
}
|
}
|
||||||
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), test_sig, shell_test_sig, shell_test_sig command);
|
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN), test_sig, shell_test_sig, shell_test_sig command);
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
static pthread_spinlock_t lock;
|
static pthread_spinlock_t lock;
|
||||||
extern void *app_start_addr;
|
extern void *app_start_addr;
|
||||||
static umword_t mm_bitemp[256 /*TODO:自动分配,或者静态划分*/];
|
static umword_t mm_bitemp[ROUND(CONFIG_KNL_DATA_SIZE, MK_PAGE_SIZE) / (sizeof(umword_t) * 8) + 1];
|
||||||
static void *mm_page_alloc(int page_nr)
|
static void *mm_page_alloc(int page_nr)
|
||||||
{
|
{
|
||||||
int cnt = 0;
|
int cnt = 0;
|
||||||
|
|||||||
@@ -103,8 +103,9 @@ int __libc_start_main(int (*main)(int, char **, char **), int argc, char **argv,
|
|||||||
* are used to prevent the stack frame used during init from
|
* are used to prevent the stack frame used during init from
|
||||||
* persisting for the entire process lifetime. */
|
* persisting for the entire process lifetime. */
|
||||||
__init_libc(envp, argv[0]);
|
__init_libc(envp, argv[0]);
|
||||||
|
#ifdef CONFIG_USING_SIG
|
||||||
sig_init();
|
sig_init();
|
||||||
|
#endif
|
||||||
/* Barrier against hoisting application code or anything using ssp
|
/* Barrier against hoisting application code or anything using ssp
|
||||||
* or thread pointer prior to its initialization above. */
|
* or thread pointer prior to its initialization above. */
|
||||||
lsm2_fn *stage2 = libc_start_main_stage2;
|
lsm2_fn *stage2 = libc_start_main_stage2;
|
||||||
|
|||||||
17
mkrtos_user/lib/sys_util/Kconfig
Normal file
17
mkrtos_user/lib/sys_util/Kconfig
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
|
||||||
|
|
||||||
|
menu "Sys util config"
|
||||||
|
|
||||||
|
menuconfig USING_SIG
|
||||||
|
bool "Using signal."
|
||||||
|
default y
|
||||||
|
if USING_SIG
|
||||||
|
config SIG_THREAD_STACK_SIZE
|
||||||
|
int "Set signal thread stack size."
|
||||||
|
default 512
|
||||||
|
config SIG_THREAD_PRIO
|
||||||
|
int "Set signal thread prio."
|
||||||
|
default 3
|
||||||
|
endif
|
||||||
|
endmenu
|
||||||
|
|
||||||
@@ -9,8 +9,10 @@
|
|||||||
#include <rpc_prot.h>
|
#include <rpc_prot.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
|
#ifdef CONFIG_USING_SIG
|
||||||
|
|
||||||
static sig_call_back sig_cb_func;
|
static sig_call_back sig_cb_func;
|
||||||
static ATTR_ALIGN(8) uint8_t sig_stack[1024];
|
static ATTR_ALIGN(8) uint8_t sig_stack[CONFIG_SIG_THREAD_STACK_SIZE];
|
||||||
static uint8_t sig_msg_buf[MSG_BUG_LEN];
|
static uint8_t sig_msg_buf[MSG_BUG_LEN];
|
||||||
static obj_handler_t sig_th;
|
static obj_handler_t sig_th;
|
||||||
static obj_handler_t sig_ipc;
|
static obj_handler_t sig_ipc;
|
||||||
@@ -70,5 +72,6 @@ void sig_init(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
u_thread_create(&sig_th, sig_stack, sizeof(sig_stack), sig_msg_buf, sig_func);
|
u_thread_create(&sig_th, sig_stack, sizeof(sig_stack), sig_msg_buf, sig_func);
|
||||||
u_thread_run(sig_th, 3);
|
u_thread_run(sig_th, CONFIG_SIG_THREAD_PRIO);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ int main(int argv, char *args[])
|
|||||||
ret = rpc_meta_init(THREAD_MAIN, &hd);
|
ret = rpc_meta_init(THREAD_MAIN, &hd);
|
||||||
assert(ret >= 0);
|
assert(ret >= 0);
|
||||||
fs_svr_init();
|
fs_svr_init();
|
||||||
ns_register("/cpio", hd, MOUNT_NODE);
|
ns_register("/bin", hd, MOUNT_NODE);
|
||||||
cons_write_str("cpiofs mount success\n");
|
cons_write_str("cpiofs mount success\n");
|
||||||
// *((char *)0) = 0;
|
// *((char *)0) = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,9 @@ void fs_svr_init(void)
|
|||||||
{
|
{
|
||||||
fs_init(&fs);
|
fs_init(&fs);
|
||||||
meta_reg_svr_obj(&fs.svr, FS_PROT);
|
meta_reg_svr_obj(&fs.svr, FS_PROT);
|
||||||
|
#ifdef CONFIG_USING_SIG
|
||||||
pm_sig_func_set(fs_sig_call_back);
|
pm_sig_func_set(fs_sig_call_back);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
typedef struct file_desc
|
typedef struct file_desc
|
||||||
{
|
{
|
||||||
@@ -184,11 +186,13 @@ int fs_svr_open(const char *path, int flags, int mode)
|
|||||||
{
|
{
|
||||||
return fatfs_err_conv(ret);
|
return fatfs_err_conv(ret);
|
||||||
}
|
}
|
||||||
|
#ifdef CONFIG_USING_SIG
|
||||||
int w_ret = pm_sig_watch(pid, 0 /*TODO:现在只有kill */);
|
int w_ret = pm_sig_watch(pid, 0 /*TODO:现在只有kill */);
|
||||||
if (w_ret < 0)
|
if (w_ret < 0)
|
||||||
{
|
{
|
||||||
printf("pm wath pid %d err.\n", w_ret);
|
printf("pm wath pid %d err.\n", w_ret);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
return fd;
|
return fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
* @copyright Copyright (c) 2023
|
* @copyright Copyright (c) 2023
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#define HEAP_SIZE 512
|
#define HEAP_SIZE 1024
|
||||||
#define STACK_SIZE 1024 * 2
|
#define STACK_SIZE 1024 * 2
|
||||||
|
|
||||||
#if defined(__CC_ARM)
|
#if defined(__CC_ARM)
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#一次读取一行,每行代表启动的应用程序,暂时不支持参数
|
#一次读取一行,每行代表启动的应用程序,暂时不支持参数
|
||||||
|
|
||||||
fatfs
|
fatfs
|
||||||
|
cpiofs
|
||||||
sh
|
sh
|
||||||
|
|||||||
Reference in New Issue
Block a user