RTT Nano学习笔记 4 - 配置

RT-Thread Nano 的配置在 rtconfig.h 中进行,通过开关宏定义来使能或关闭某些功能。

1. RTE_USING_FINSH

这个开关是通过defined(__CC_ARM) || defined(__CLANG_ARM)约束的。其中__CC_ARM是MDK编译器,__CLANG_ARM是CLANG编译器。

RTE_USING_FINSH是控制RT Thread的控制台功能。先不用使能。

2. RT_THREAD_PRIORITY_MAX

/* 线程优先级表 */
rt_list_t rt_thread_priority_table[RT_THREAD_PRIORITY_MAX];

占用的空间大小:RT_THREAD_PRIORITY_MAX * n(对于32位n=8)。RT-Thread 最大支持 256 个线程优先级 (0~255),最小1个优先级 (0),数值越小的优先级越高,0 为最高优先级。

建议尽量将 RT_THREAD_PRIORITY_MAX 设置小一点,最好是小于等于 32,不仅省资源,还能加快调度速度。

3. RT_TICK_PER_SECOND

操作系统中最小的时间单位是时钟节拍 (OS Tick)。 对于GD32F450来说(ARM内核都一样)来说就是定义SystemTick的定时中断时间,一般设置为1ms(数值为1000)即可。可以根据CPU选择合适的值,因为OS切换进程需要开销,这个值如果设置的太大,可能导致OS的执行效率太低。

4. RT_ALIGN_SIZE

设置数据对齐大小。根据MCU设置,32位为4,16位为2,8位为1,如果需要使用浮点数,则必须设置为8。

5. RT_NAME_MAX

设置OS中名字的最大长度(比如进程名和设备名等)。定义的是字符串长度,所以最小2个字节。

6. RT_USING_COMPONENTS_INIT

RT-thread提供了组件化功能,该宏使能组件初始化。

7. RT_USING_USER_MAIN

使能该宏后OS跳转到main函数,如果没有使能,需要自己实现rtthread_startup,否则会编译错误。

8. RT_DEBUG

打开OS的内核调试功能。如果正常打开这个是没有信息打印出来的。

9.  RT_DEBUG_INIT

定义为1表示打印组件初始化配置信息。

10. RT_USING_OVERFLOW_CHECK

打开表示OS检测栈是否溢出。

11. RT_USING_HOOK

打开OS的钩子函数功能,RTT提供多个钩子功能,例如进出中断时。

12. RT_USING_IDLE_HOOK

打开空闲钩子函数功能,注意这个HOOK是独立于RT_USING_HOOK的。

13. RT_USING_TIMER_SOFT

RTT定时器有会分两种模式,soft模式(超时在线程环境下)和hard模式(超时在中断环境下) 不开soft模式,打开这个宏定义则使用soft模式,默认不开。

另外2个宏定义RT_TIMER_THREAD_PRIO和RT_TIMER_THREAD_STACK_SIZE是Timer进程的优先级和栈大小。

14. RT_USING_SEMAPHORE

打开信号量功能。

15. RT_USING_MUTEX

打开互斥量功能。

16. RT_USING_EVENT

打开事件功能。

17. RT_USING_MAILBOX

打开邮箱功能。

18. RT_USING_MESSAGEQUEUE

打开消息队列功能。

19. RT_USING_HEAP

打开堆管理功能。

20. RT_USING_SMALL_MEM

使用小内存管理算法,需要和RT_USING_HEAP配合使用

21. RT_USING_TINY_SIZE

使用小体积的算法,牵扯到 rt_memset、rt_memcpy 所产生的体积

22. RT_USING_CONSOLE/RT_CONSOLEBUF_SIZE

使用调试台和调试台缓冲大小。对应调试台输出API函数:

void rt_hw_console_output(const char *str)
{
    
}

这个函数需要自己实现。

而RT_CONSOLEBUF_SIZE对应字符串最大长度,包括结束符。

经验分享 程序员 微信小程序 职场和发展