本文共 4854 字,大约阅读时间需要 16 分钟。
LiteOS 配置文件是操作系统移植的核心部分 - los_config.h。
1、配置时钟
系统时钟的配置,需要根据不同的 CPU 以及 CPU 初始化的时钟频率来修改:
#define OS_SYS_CLOCK 16000000
2、地址配置extern char __data_end;
extern char __bss_start; #define OS_SYS_FUNC_ADDR_START &__bss_start #define OS_SYS_FUNC_ADDR_END &__data_end 3、RAM 配置RAM_SIZE_LEVEL_0means kernel ram < 8k ,
RAM_SIZE_LEVEL_1means kernel ram < 16k, RAM_SIZE_LEVEL_2means means kernel ram>=32k 4、滴答定时器#define LOSCFG_BASE_CORE_TICK_PER_SECOND 1000 // 这里是指 1 秒钟的滴答数,1000 是固定的
5、中断配置硬件中断的初始化为什么跟 RAM 大小有关,说明硬件中断的管理需要耗费一定 RAM,可做裁剪。
#if defined (RAM_SIZE_LEVEL_0)
#define LOSCFG_PLATFORM_HWI NO #elif defined(RAM_SIZE_LEVEL_1) #define LOSCFG_PLATFORM_HWI YES #elif defined(RAM_SIZE_LEVEL_2) #define LOSCFG_PLATFORM_HWI YES #else #define LOSCFG_PLATFORM_HWI YES #endif #define LOSCFG_PLATFORM_HWI_LIMIT 96 // 硬件中断的最多数量 6、任务相关配置基本内核任务优先级。
#define LOSCFG_BASE_CORE_TSK_DEFAULT_PRIO 10
#if defined (RAM_SIZE_LEVEL_0) #define LOSCFG_BASE_CORE_TSK_LIMIT 4 // max num task #elif defined (RAM_SIZE_LEVEL_1) #define LOSCFG_BASE_CORE_TSK_LIMIT 7 // max num task #elif defined (RAM_SIZE_LEVEL_2) #define LOSCFG_BASE_CORE_TSK_LIMIT 15 // max num task #else #define LOSCFG_BASE_CORE_TSK_LIMIT 15 // max num task #endif 内核空闲任务的堆栈大小:#if defined (RAM_SIZE_LEVEL_0)
#define LOSCFG_BASE_CORE_TSK_IDLE_STACK_SIZE SIZE(0x2D0) // IDLE task stack #elif defined (RAM_SIZE_LEVEL_1) #define LOSCFG_BASE_CORE_TSK_IDLE_STACK_SIZE SIZE(0x300) // IDLE task stack #elif defined (RAM_SIZE_LEVEL_2) #define LOSCFG_BASE_CORE_TSK_IDLE_STACK_SIZE SIZE(0x500) // IDLE task stack #else #define LOSCFG_BASE_CORE_TSK_IDLE_STACK_SIZE SIZE(0x500) // IDLE task stack #endif 默认任务大小:#if defined (RAM_SIZE_LEVEL_0)
#define LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE SIZE(0x200) // default stack #elif defined (RAM_SIZE_LEVEL_1) #define LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE SIZE(0x2D0) // default stack #elif defined (RAM_SIZE_LEVEL_2) #define LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE SIZE(0x2D0) // default stack #else #define LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE SIZE(0x2D0) // default stack #endif #define LOS_TASK_MIN_STACK_SIZE (ALIGN(0x130, 16)) //最小任务堆栈大小,用于创建任务时检测 #define LOSCFG_BASE_CORE_TIMESLICE YES // task-ROBIN moduel cuttingswitch #define LOSCFG_BASE_CORE_TIMESLICE_TIMEOUT 10 // 同一优先级最长运行时间 #define LOSCFG_BASE_CORE_TSK_MONITOR YES // 任务的监测功能是不是要开启 #define OS_INCLUDE_PERF YES // 性能检测使能 #define LOS_TASK_PRIORITY_HIGHEST 0 // 最大优先级 #define LOS_TASK_PRIORITY_LOWEST 31 // 最小优先级 7、信号量配置#define LOSCFG_BASE_IPC_SEM YES
#if defined (RAM_SIZE_LEVEL_0) #define LOSCFG_BASE_IPC_SEM_LIMIT 5 // the max sem-numb #else #define LOSCFG_BASE_IPC_SEM_LIMIT 10 // the max sem-numb #endif 8、互斥锁配置#define LOSCFG_BASE_IPC_MUX YES
#if defined (RAM_SIZE_LEVEL_0) #define LOSCFG_BASE_IPC_MUX_LIMIT 5 // the max mutex-num #else #define LOSCFG_BASE_IPC_MUX_LIMIT 10 // the max mutex-num #endif 9、消息队列配置#define LOSCFG_BASE_IPC_QUEUE YES
#if defined (RAM_SIZE_LEVEL_0) #define LOSCFG_BASE_IPC_QUEUE_LIMIT 5 //the max queue-numb #elif defined (RAM_SIZE_LEVEL_1) #define LOSCFG_BASE_IPC_QUEUE_LIMIT 7 //the max queue-numb #elif defined (RAM_SIZE_LEVEL_2) #define LOSCFG_BASE_IPC_QUEUE_LIMIT 10 //the max queue-numb #else #define LOSCFG_BASE_IPC_QUEUE_LIMIT 10 //the max queue-numb #endif 10、软件定时器配置#define LOSCFG_BASE_CORE_SWTMR YES
#if defined (RAM_SIZE_LEVEL_0) #define LOSCFG_BASE_CORE_SWTMR_LIMIT 4 // the max SWTMR numb #elif defined (RAM_SIZE_LEVEL_1) #define LOSCFG_BASE_CORE_SWTMR_LIMIT 7 // the max SWTMR numb #elif defined (RAM_SIZE_LEVEL_2) #define LOSCFG_BASE_CORE_SWTMR_LIMIT 16 // the max SWTMR numb #else #define LOSCFG_BASE_CORE_SWTMR_LIMIT 16 // the max SWTMR numb #endif #define OS_SWTMR_MAX_TIMERID ((65535/LOSCFG_BASE_CORE_SWTMR_LIMIT) * LOSCFG_BASE_CORE_SWTMR_LIMIT) #define OS_SWTMR_HANDLE_QUEUE_SIZE (LOSCFG_BASE_CORE_SWTMR_LIMIT + 0) #define LOS_COMMON_DIVISOR 10 #endif 11、接口配置#define LOSCFG_COMPAT_CMSIS_FW YES
#define VER "Huawei LiteOS KernelV100R001c00B021" #define OS_SR_WAKEUP_INFO YES //配置唤醒信息,应该是通过串口打印,可裁剪 #ifndef LOSCFG_LIB_LIBC #define LOSCFG_LIB_LIBC #endif extern UINT32 osTaskInit(VOID); extern VOID osHwiInit(void); extern UINT32 osSemInit(void); extern UINT32 osMuxInit(void); extern UINT32 osQueueInit(void); extern UINT32 osSwTmrInit(void); extern VOID LOS_StartToRun(VOID); extern UINT32 los_TestInit(VOID); extern VOID osStart(void); extern VOID osHwInit(VOID); extern VOID osRegister(VOID); extern int osMain(void); extern int LOS_KernelInit(void); extern UINT32 LOS_EnableTick(void); extern UINT32 LOS_Start(void); extern UINT32 osTickStart(VOID); extern VOID osTimesliceInit(VOID); extern UINT32 osMemSystemInit(VOID); extern VOID osTaskMonInit(VOID); extern UINT32 osCpupInit(VOID); extern void osBackTrace(VOID); ———————————————— 版权声明:本文为CSDN博主「简一商业」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/liwei16611/article/details/86579256