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对应字符串最大长度,包括结束符。