《嵌入式实时操作系统:RT-Thread设计与实现》 —3.6 RT-Thread内核配置示例

举报
华章计算机 发表于 2019/11/24 11:26:23 2019/11/24
【摘要】 本节书摘来自华章计算机《嵌入式实时操作系统:RT-Thread设计与实现》一书中第3章,第3.6节,作者是邱祎 熊谱翔 朱天龙 。

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是由配置工具自动生成的,无须手动更改。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。