
FreeRTOS内部机制
文章平均质量分 94
以熟悉Free RTOS实时操作系统内部机制为目的!
一只波本
热爱嵌入式,小学生自学嵌入式
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
FreeRTOS内部机制学习04(任务通知和软件定时器)
这时候就需要链表上场表演了,创建的定时器的时候创建的各个结构体都会储存在一个链表里面,到时候我就会里面找,比对一下就知道了谁时间到了,周期性的还会更新里面的启动时间和到点时间,方便下次运行!但是,在FreeRTOS实时操作系统中,它想做到实时,就不可能允许在内核,在中断中执行不确定的大小,万一定时器函数非常的长(运行的时间非常长),就会导致Tick中断迟迟无法退出,影响任务的调度,进入影响整个系统!都是利用队列唤醒一个任务来执行其他的工作的,软件定时器中的这个任务叫“任务通知则是不用创建,节省了很多空间!原创 2024-09-12 21:37:01 · 808 阅读 · 0 评论 -
FreeRTOS内部机制学习03(事件组内部机制)
在队列、信号量、互斥量使用他们的函数后,可能你使用之前就会有一个任务或者索多个因为写满了或者没数据可读因此阻塞了,然后假如你在中断中使用了API函数了,就会因此去唤醒他们吧,但是队列它们三个都只会去唤醒一个任务(优先级最高的),相反事件组会去唤醒所有符合这个事件发生条件的任务,那万一一个工程里面真有很多事件在等着同一个事件呢?(比如主人回到家后,自动唤醒灯,风扇,空调,煮饭,。而是仅仅关闭调度器呢?是多么的重要,多么的强大,事件组亦是如此,在创建事件组的时候也分配了一个结构体,那么里面到底又有什么东西呢?原创 2024-09-08 21:44:38 · 979 阅读 · 0 评论 -
FreeRTOS内部机制学习02(消息队列深度学习)
当一个任务因为使用互斥量被另一个任务卡住了,被迫休眠,那么内部就会比较一下这两个任务的优先级,假如,被卡住的任务的优先级>卡住别人的任务,那么卡住的任务就会将对方的优先级提高到像自己一样高级别的优先级,让他更早的运行,及时释放互斥量,让我(卡柱的任务)及时运行!由于低优先级的任务获取了信号量,使得最高优先级的任务卡住了(休眠),那么不就只能中优先级的任务运行了吗?读写任务休眠的时候,可以选择休眠,也是可以选择休眠多久的,不可能呆呆一直傻等着,所以等待的时候是可以设定等待时间的,时间一到,我就不等了被唤醒。原创 2024-09-08 14:06:27 · 1201 阅读 · 0 评论 -
FreeRTOS内部机制学习01(任务创建的细节以及任务调度的内部机制)
关于任务的轮换以及中断恢复继续得以原来为止继续运行,一点也离不开寄存器的作用,所以想要了解任务,了解寄存器也是必不可少的!原创 2024-09-06 20:10:52 · 1054 阅读 · 1 评论