【LiteOS】小白进阶之系统移植配置解析
【摘要】
LiteOS 配置文件是操作系统移植的核心部分 - los_config.h。
1、配置时钟
系统时钟的配置,需要根据不同的 CPU 以及 CPU 初始化的时钟频率来修改:
#define OS_SYS_CLOCK &nbs...
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);
文章来源: blog.csdn.net,作者:简一商业,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/liwei16611/article/details/86579256
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
yd_2866394852023/08/08 15:13:491楼编辑删除举报