RT-Thread
一路向北lm
嵌入式Linux研发
展开
-
RT-Thread 读后感5 ——初始化线程栈
线程第一次运行的时候,加载到CPU寄存器的参数就放在线程栈里面,改函数 rt_hw_stack_init()在cpuport.c中实现。具体代 码如下: /* 初始化线程栈 */ rt_uint8_t *rt_hw_stack_init(void *tentry, void *parameter, ...原创 2018-10-28 14:54:54 · 1639 阅读 · 0 评论 -
RT-Thread 读后感6 ——实现调度器(调度器初始化,启动调度器)
1. 调度器初始化 调度器是操作系统的核心,主要功能是实现线程的切换,即从就绪列表中找到优先级最高的线程,然后执行该线程。关于调度器的代码,RT-Thread在scheduler.c文件中实现。 调度器初始化:调度器在使用前必须初始化,具体代码如下: /* 初始化系统调度器 */ void rt_system_scheduler_init(void) { register rt_...原创 2018-10-28 15:14:51 · 623 阅读 · 0 评论 -
RT-Thread 读后感3 —— 实现就绪列表 (定义就绪列表,将线程插入到就绪列表)
1. 定义就绪列表 线程创建好后,需要将线程添加到就绪列表里面,表示线程已经就绪,系统随时可以调度。RT-Thread定义的就绪列表如下: /* 线程就绪列表如下 ** RT_THREAD_PRIORITY_MAX 在rtconfig.h中默认定义为32 决定最大线程优先级 */ rt_list_t rt_thread_priority_table[RT_THREAD_PRIORI...原创 2018-10-25 20:53:01 · 408 阅读 · 0 评论 -
RT-Thread 读后感1——线程
1. 什么是线程? 在单片机裸机系统中, 系统的主体就是 main 函数里面顺序执行的无限循环,这个无限循环里面 CPU 按照顺序完成各种事情。在多线程系统中,我们根据功能的不同,把整个系统分割成一个个独立的且无法返回的函数,这个函数我们称为线程。说白了就是把我们之前现在main函数的任务放入while(1)死循环中,通过调用线程切换函数来切换不同的线程。线程大概形式如下: /*******...原创 2018-10-24 21:01:59 · 321 阅读 · 0 评论 -
RT-Thread 读后感2——创建线程(定义线程的栈,定义线程函数,定义线程控制块,线程初始化函数)
1. 定义线程的栈 多线程操作系统中,每个线程都是独立的,互不干扰,所以要为每个线程分配独立的栈空间,这个栈空间通常是一个预先定义好的全局数组, 也可以是动态分配的一段内存空间,但它们都存在于 RAM 中。定义两个线程栈如下: // 定义线程栈 大小设置为512 rt_uint8_t rt_flag1_thread_stack[512]; rt_uint8_t rt_flag2_thr...原创 2018-10-24 21:21:48 · 960 阅读 · 3 评论 -
RT-Thread 读后感4 —— 小插曲 rt_list_entry()函数
在学习RT-Thread的时候发现了一个函数rt_list_entry() 改函数的功能是:已知结构体的成员的地址,反推出结构体的首地址的宏。具体定义如下: /* 已知一个结构体里面的成员地址,反推出结构体的首地址 */ #define rt_container_of(ptr,type,member) \ ((type *)((char *)(ptr)-(unsigned...原创 2018-10-27 19:58:58 · 1561 阅读 · 0 评论 -
RT-thread 互斥量中优先级继承机制
三个线程分别是 H线程、M线程、L线程 1.三个线程的优先级顺序是:H线程 > M线程 > L线程;2.正常运行的时候H线程可以打断M线程与L线程, M线程可以打断L线程;3.假设系统有一个资源被保护了,此时该资源被L线程在使用,某一时刻H线程需要使用该资源,但L线程还未使用完,H线程申请不到而进入阻塞态,此时已出现优先级翻转现象;没有优先级继承机制的时候:如果L线程执行的时候,M线...原创 2018-11-01 13:23:58 · 714 阅读 · 0 评论