
FreeRTOS
RTos学习笔记
霖城城
嵌入式小牛马,本人文章都是学习笔记,如果有误,欢迎各位大佬指点
展开
-
4.事件组
任务A:可以等待这个整数的"bitx,bity,bitz....."都被设置为1.也可以等待这个整数的"bitx bity bitz..."任意一个被设置为1.1.假设任务A,B都在等待bit0事件。里面的每一个bit,表示一类事件。2.任务C设置了bit0事件.事件组的本质:一个整数。这就是"AND"的关系。原创 2024-09-18 23:24:28 · 238 阅读 · 0 评论 -
3.信号量与互斥量
这个时候,如果我们的任务B"释放信号量",就会把"信号量里list上的第一个任务"唤醒:就是把他移到就绪链表中,那么他就会继续运行了.这个时候,我们就可以使用"信号量","信号量"的本质:item_size等于 0 的队列。2.一个"队伍",就是一个链表:用来记录等待的对应信号量的任务。这时候我们的任务就不会参与调度了:他不在就绪链表中。1.从ReadyList[1]里移除。如果不想传递数据,只是"通知"呢?假设现在我们的cnt是等于0,2.放入信号量的"list"信号量里面有什么呢?原创 2024-09-17 22:32:17 · 259 阅读 · 0 评论 -
2.队列和队列集
在我们队列中是有一个读list 链表 和 一个写list链表 他们就是用来保存 读 或者 写阻塞 的任务。这个时候我们的A 会从读 list 中剔除 加载到 就绪链表[1]中,A又可以开始重新调度了.这个时候A 任务就会从就绪链表[1]中剔除出来,挂载到 队列里面的读链表中。假设我们 就绪链表中有A 和 B两个任务 他们正常情况下都是轮流运行,那这个时候 我们的 B 会唤醒 读list中的A。原创 2024-09-11 23:08:23 · 274 阅读 · 0 评论 -
1.任务的创建与状态
d.这个任务运行中被切换出去的那一个瞬间,所有寄存器的值就被存进"栈"b.FreeRTOS里的malloc函数,从这个大数组里分配内存。c.创建任务时,我们就是从这个数组中分配内存,用作"栈"a.在FreeRTOS里定义了一个大数组。保存进"内存",这块内存被称为栈。就是程序暂停瞬间所有寄存器的值。b.静态分配内存 可以直接建立一个数组去当作栈。a.动态分配内存 就是在函数内部分配。除了"栈",最重要的就是"入口函数"原创 2024-09-11 22:26:37 · 247 阅读 · 0 评论