我们常规裸机系统就是在main函数里顺序无限循环,而多线程系统中为多个独立且无法返回的函数称为线程。裸机系统不用关心变量存放位置他们都会存放在栈空间里。多线程系统每个线程都是相互独立的必须事先预定义好,每个线程通常都是存在预定义好的全局数组称为线程栈,而在RT-Thread中凡涉及到数据类型时会用typedef重新取一个以rt_xxx前缀的类型名,所以预定义全局数组类型不要搞错!/* RT-Thread basic data type definitions */
typedef signed char rt_int8_t; /**< 8bit integer type */
typedef signed short rt_int16_t; /**< 16bit integer type */
typedef signed long rt_int32_t; /**< 32bit integer type */
typedef unsigned char rt_uint8_t; /**< 8bit unsigned integer type */
typedef unsigned short rt_uint16_t; /**< 16bit unsigned integer type */
typedef unsigned long rt_uint32_t; /**< 32bit unsigned integer type */
typedef int rt_bool_t; /**< boolean type */
线程是独立函数,主体无限循环且不能返回。线程由系统调度,由额外的线程控制块定义,系统对线程的全部操作可以通过线程控制块完成。线程控制块使用结构体struct在rtdef.h里来定义,包涵线程指针、入口地址、栈起始地址、栈大小等成员变量。
/**
* Thread structure
*/
struct rt_thread
{
/* rt object */
char name[RT_NAME_MAX]; /**< the name of thread */
rt_uint8_t type; /**< type of object */
rt_uint8_t flags; /**< thread's flags */