对于RT-Thread中,比较关心的是ROM资源以及RAM资源,所以在设计之初,首先评估资源是否合理去跑一个rtos。 比如,rt-thread nano版本对 RAM 与 ROM 的开销非常小,在支持 semaphore 和 mailbox 特性,并运行两个线程 (main 线程 + idle 线程) 情况下,ROM 和 RAM 依然保持着极小的尺寸,RAM 占用约 1K 左右,ROM 占...
msh/>RT-Thread shell commands:hello-say hello toRT-Thread version-showRT-Thread version information list_thread-list thread …… 运行hello 命令,运行结果如下所示: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 msh/>hello hello RT_Thread!msh/> 导出有参数的命令时,函数的入参为 int argc 和 ...
9)#defineLED1_PINGET_PIN(F,10)#defineTHREAD_PRIORITY25//线程优先级#defineTHREAD_TIMESLICE5//线程时间片/* 静态线程参数定义 */ALIGN(RT_ALIGN_SIZE)staticcharled1_stack[1024];//线程栈内存空间staticstructrt_threadled1;//线程句柄intmain(void){inti=0;while(1){rt_thread_mdelay(200);}}/* ...
RT-Threadshellcommands:version-showRT-Threadversioninformationlist_thread-listthreadlist_sem-listsemaphoreinsystemlist_event-listeventinsystemlist_mutex-listmutexinsystemlist_mailbox-listmailboxinsystemlist_msgqueue-listmessagequeueinsystemlist_timer-listtimerinsystemlist_device-listdeviceinsystemexit-returntoRT...
RT-Thread 提供list_thread、list_device等,查看内核的对象。 查看线程初始化【次序】,看看最后打印的线程,就是【最先】首个创建的线程。 一般从链表【头部】开始遍历各个链表节点。如下:最后一个节点是:main线程. 其实,main线程,是第一个创建的。 msh/>list_threadthreadpristatusspstacksizemaxusedlefttickerror-...
RT-Thread 提供list_thread、list_device等,查看内核的对象。 查看线程初始化【次序】,看看最后打印的线程,就是【最先】首个创建的线程。 一般从链表【头部】开始遍历各个链表节点。如下:最后一个节点是:main线程. 其实,main线程,是第一个创建的。 登录后复制msh / >list_thread ...
最近在看RT-Thread内核的源码,内核对象使用链表组织。 RT-Thread内部有完整的【双向链表】与【单向链表】的操作API与实际用例 内核对象,内核派生的如线程、定时器、设备等,都是由链表链起来管理的。 链表介绍 /** Double List structure */ struct rt_list_node ...
rt_list_t rt_thread_priority_table[RT_THREAD_PRIORITY_MAX]; 这里的RT_THREAD_PRIORITY_MAX表示可用的线程优先级数,这里用了32个,最大可支持256个优先级,且数字越小,优先级越大。用图表说明为: 优先级管理数组 voidrt_system_scheduler_init(void){register rt_base_t offset;rt_scheduler_lock_nest=0;fo...
线程与线程就绪列表: 在RTT系统中,链表是一个相当重要的数据结构,RTT通过链表,来管理一些事物,例如说线程。 在线程控制块中,有一个线程链表节点: rt_list_t tlist; /**< the thread list */ 这个节点可以将线程控制块挂载到一些链表中。在线程创建之后,线
可以看到线程创建函数的返回值类型为:rt_thread_t,找到定义处(如下图),可以看到它的返回值类型是一个结构体指针变量。 2、线程定义 那么我们先定义一个结构体指针的线程th1_ptr,这样通过rt_thread_create函数创建的进程控制块的地址就能直接赋值给th1_ptr变量: ...