《嵌入式实时操作系统:RT-Thread设计与实现》 —3.6 RT-Thread内核配置示例
3.6 RT-Thread内核配置示例
RT-Thread的一个重要特性是高度可裁剪性,支持对内核进行精细调整,对组件进行灵活拆卸。其配置主要通过修改工程目录下的rtconfig.h文件来进行,用户可以通过打开/关闭该文件中的宏定义来对代码进行条件编译,最终达到系统配置和裁剪的目的,如下所示。
(1)RT-Thread内核部分。
/* 表示内核对象的名称的最大长度,若代码中对象名称的最大长度大于宏定义的长度,
* 多余的部分将被截掉。*/
#define RT_NAME_MAX 8
/* 字节对齐时设定对齐的字节个数。通常使用ALIGN(RT_ALIGN_SIZE)进行字节对齐。*/
#define RT_ALIGN_SIZE 4
/* 定义系统线程优先级数;通常用RT_THREAD_PRIORITY_MAX-1定义空闲线程的优先级 */
#define RT_THREAD_PRIORITY_MAX 32
/* 定义系统节拍,为100时表示100个tick每秒,一个tick为10ms */
#define RT_TICK_PER_SECOND 100
/* 检查栈是否溢出,未定义则关闭 */
#define RT_USING_OVERFLOW_CHECK
/* 定义该宏开启debug 模式,未定义则关闭 */
#define RT_DEBUG
/* 开启debug 模式时:该宏定义为0时表示关闭打印组件初始化信息,定义为1时表示启用 */
#define RT_DEBUG_INIT 0
/* 开启debug 模式时:该宏定义为0时表示关闭打印线程切换信息,定义为1时表示启用 */
#define RT_DEBUG_THREAD 0
/* 定义该宏表示开启钩子函数的使用,未定义则关闭 */
#define RT_USING_HOOK
/* 定义空闲线程的栈大小 */
#define IDLE_THREAD_STACK_SIZE 256
(2)线程间同步与通信部分,该部分会用到的对象有信号量、互斥量、事件、邮箱、消息队列、信号等。
/* 定义该宏可开启信号量的使用,未定义则关闭 */
#define RT_USING_SEMAPHORE
/* 定义该宏可开启互斥量的使用,未定义则关闭 */
#define RT_USING_MUTEX
/* 定义该宏可开启事件集的使用,未定义则关闭 */
#define RT_USING_EVENT
/* 定义该宏可开启邮箱的使用,未定义则关闭 */
#define RT_USING_MAILBOX
/* 定义该宏可开启消息队列的使用,未定义则关闭 */
#define RT_USING_MESSAGEQUEUE
/* 定义该宏可开启信号的使用,未定义则关闭 */
#define RT_USING_SIGNALS
(3)内存管理部分。
/* 开启静态内存池的使用 */
#define RT_USING_MEMPOOL
/* 定义该宏可开启两个或以上内存堆拼接的使用,未定义则关闭 */
#define RT_USING_MEMHEAP
/* 开启小内存管理算法 */
#define RT_USING_SMALL_MEM
/* 关闭 SLAB 内存管理算法 */
/* #define RT_USING_SLAB */
/* 开启堆的使用 */
#define RT_USING_HEAP
(4)内核设备对象。
/* 表示开启了系统设备的使用 */
#define RT_USING_DEVICE
/* 定义该宏可开启系统控制台设备的使用,未定义则关闭 */
#define RT_USING_CONSOLE
/* 定义控制台设备的缓冲区大小 */
#define RT_CONSOLEBUF_SIZE 128
/* 控制台设备的名称 */
#define RT_CONSOLE_DEVICE_NAME "uart1"
(5)自动初始化方式。
/* 定义该宏开启自动初始化机制,未定义则关闭 */
#define RT_USING_COMPONENTS_INIT
/* 定义该宏开启设置应用入口为main函数 */
#define RT_USING_USER_MAIN
/* 定义main 线程的栈大小 */
#define RT_MAIN_THREAD_STACK_SIZE 2048
(6)FinSH。
/* 定义该宏可开启系统FinSH调试工具的使用,未定义则关闭 */
#define RT_USING_FINSH
/* 开启系统FinSH时:将该线程名称定义为tshell */
#define FINSH_THREAD_NAME "tshell"
/* 开启系统FinSH时:使用历史命令 */
#define FINSH_USING_HISTORY
/* 开启系统FinSH时:对历史命令行数的定义 */
#define FINSH_HISTORY_LINES 5
/* 开启系统FinSH时:定义该宏开启使用Tab 键,未定义则关闭 */
#define FINSH_USING_SYMTAB
/* 开启系统FinSH时:定义该线程的优先级 */
#define FINSH_THREAD_PRIORITY 20
/* 开启系统FinSH时:定义该线程的栈大小 */
#define FINSH_THREAD_STACK_SIZE 4096
/* 开启系统FinSH时:定义命令字符长度 */
#define FINSH_CMD_SIZE 80
/* 开启系统FinSH时:定义该宏开启MSH 功能 */
#define FINSH_USING_MSH
/* 开启系统FinSH时:开启MSH 功能时,定义该宏默认使用MSH 功能 */
#define FINSH_USING_MSH_DEFAULT
/* 开启系统FinSH时:定义该宏,仅使用MSH功能 */
#define FINSH_USING_MSH_ONLY
(7)关于MCU。
/* 定义该工程使用的MCU为STM32F103ZE;系统通过对芯片类型的定义,来定义芯片的管脚 */
#define STM32F103ZE
/* 定义时钟源频率 */
#define RT_HSE_VALUE 8000000
/* 定义该宏开启UART1的使用 */
#define RT_USING_UART1
注意:在实际应用中,系统配置文件rtconfig.h是由配置工具自动生成的,无须手动更改。
- 点赞
- 收藏
- 关注作者
评论(0)