自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 freertos任务动态创建与静态创建的区别

系统自动分配任务控制块(TCB)和堆栈内存。:用户必须手动提供任务控制块(TCB)和堆栈内存。

2025-07-17 11:05:41 464

原创 rtthread如何快速找到就绪线程在对应优先级的插入与删除

函数从第 0 块开始检查,只要某块不为 0,就说明 “第一个 1” 在这个块里。在下一个系统周期来临时,调度器需要选取优先级最高的线程去运行,从图。我们一眼就可以看出线程就绪优先级组从右往左开始数,第一个置。程就绪优先级组中看到那个第一个置 1 的位,怎么办?32 位整数太长,直接查一张 40 亿项的表不现实。表示此时就绪的线程当中,优先级最高的是线程。,直接返回 0(表示没有就绪线程)。,然后调度器从线程优先级表的索引。位整形数第一个(从低位开始)置。的线程控制块,从而切换到线程。

2025-07-15 19:57:24 1839

原创 临界区资源的嵌套

同理,在代码中,如果临界段是嵌套的(一个临界段中包含另一个临界段),直接开关中断会导致内层临界段结束时错误地恢复中断状态。也就是说嵌套的代码需通过寄存器和变量存储之前的在这一层进入嵌套前的中断状态,也就是PRIMASK的值。临界段1关中断------>临界2关中断----->临界断2代码操作完成--------->你可能会问:“直接关门(关中断)和开门(开中断)不就行了,为什么还要保存之前的状态?),没有读者能进入图书馆,管理员可以专注整理书籍(执行临界段代码),不会被打断。),允许读者再次进入。

2025-07-15 14:15:56 184

原创 异常和中断的区别

今天在看rt-thread的源码,对于临界段保护中就提到(先说一说临界段:临界段用一句话概括就是一段在执行的时候不能被中断的代码段。在 RT-Thread 里面,这个临界段最常出现的就是对全局变量的操作,全局变量就好像是一个枪把子,谁都可以对他开枪,但是我开枪的时候,你就不能开枪,否则就不知道是谁命中了靶子。

2025-07-15 13:41:50 643

原创 Task相关

* 表示当前运行的任务 */4 /* 就绪任务链表,每个优先级都有一个链表。*/7 /* 延时任务链表。*/10 /* 延时的任务(使用两个列表-一个用于当前tick计数溢出时的延时。*/13 /* 指向当前使用的延时链表。*/16 /* 指向tick计数溢出时的延时任务。*/19 /* 调度器挂起时进入就绪的任务。当调度器恢复时,它们将被移动到就绪链表中。*/22 /* 被删除的任务,但任务持有的内存还未释放。*/24 /* 等待清理内存的任务数量。*/

2025-07-06 19:24:52 1653

原创 阻塞与唤醒的协同机制

每个任务可以同时存在于多个链表中,例如既在某个事件的等待列表中,又在延迟列表中。这个过程中,硬件自动保存和恢复部分寄存器(R0-R3、R12、LR、PC、PSR),软件负责处理剩余寄存器(R4-R11),实现了任务上下文的完整切换。这个过程中,任务从就绪状态转换为阻塞状态,并被加入到相应的等待列表中。当任务超时或事件发生时,系统会将任务从相应的等待列表移至就绪列表,等待调度器分配 CPU 时间。通过这个流程,信号量释放后会直接唤醒等待队列中的最高优先级任务,并在必要时触发上下文切换。

2025-06-25 10:46:16 230

原创 Port.c

是 FreeRTOS 中用于实现任务上下文切换的核心汇编函数,基于 ARM Cortex-M 架构的 PendSV异常实现。这段代码的主要功能是保存当前任务的上下文(寄存器状态),选择下一个要执行的任务,并恢复其上下文。源码目录:\FreeRTOS\portable\RVDS\ARM_CM4F\portmacro.h、\FreeRTOS\portable\RVDS\ARM_CM4F\port.c。PendSV 异常是专门为上下文切换设计的低优先级异常,确保在所有高优先级中断处理完成后执行。

2025-06-24 11:55:31 1623

原创 链表管理与heap4.c

* 指向该链表项所在链表(如果有的话)。/* 项值,链表中升序排序 *//* 下一个链表项 *//* 上一个链表项 */* 那么它的pxNextFreeBlock指针已被设置,不应该在这里设置,否则会使它指向自己 *//* 遍历列表,直到发现一个块的地址高于被插入的块的地址 *//* 被插入的块和被插入后的块是否构成一个连续的内存块?/* 被插入的块和被插入后的块是否构成一个连续的内存块?/* 如果插入的块产生一个间隙,则会将相连的块合并,/* 什么都不做,只遍历 */

2025-06-23 21:19:52 639

原创 查找资料的学习笔记:

获取网盘资源(打包好的知识):谷歌 :某网盘的搜索引擎。搜索前沿论文:sci-hub google学术。研究报告的一个网站域名:199it.com。限定文件格式:filetype:想要的格式。

2023-10-30 22:56:09 240

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除