LiteOS los_config.h说明

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值