硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1349|回复: 4
收起左侧

[FreeRTOS] FreeRTOS临界段保护机制

[复制链接]

5

主题

19

回帖

34

积分

新手上路

积分
34
发表于 2024-7-17 16:47:07 | 显示全部楼层 |阅读模式
本帖最后由 叮个隆咚呛 于 2024-7-17 16:49 编辑

FreeRTOS任务级的临界段保护,退出时设置basepri为0;

FreeRTOS中断级的临界段保护,退出时设置basepri为进入保护前的值。

为何任务级退出保护时,basepri不恢复初始状态。看网上说是为了获取更快的执行速度?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-7-17 19:02:43 | 显示全部楼层
两种不同的玩法,任务里面那个做嵌套计数了。

我这个帖子讲解的非常清楚

第15章 FreeRTOS临界段和开关中断
https://forum.anfulai.cn/forum.p ... 1162&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

5

主题

19

回帖

34

积分

新手上路

积分
34
 楼主| 发表于 2024-7-17 20:14:55 | 显示全部楼层
eric2013 发表于 2024-7-17 19:02
两种不同的玩法,任务里面那个做嵌套计数了。

我这个帖子讲解的非常清楚

帖子看了,发现并没有解决我的疑问。

我的疑问是,为何任务级的临界段保护和中断级的保护,实现方式不一样?一个是通过变量的增减,一个是通过恢复basepri寄存器的状态,来实现中断的嵌套保护的。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-7-18 07:57:34 | 显示全部楼层
叮个隆咚呛 发表于 2024-7-17 20:14
帖子看了,发现并没有解决我的疑问。

我的疑问是,为何任务级的临界段保护和中断级的保护,实现方式不 ...

在M内核下,这两个实际没区别。

1、任务里面那个你将几处断言注释掉,可以用在中断里面。
2、中断那个你也可以用在任务里面。你几乎想不到那种情况下,首次进入中断后,函数portSET_INTERRUPT_MASK_FROM_ISR()返还的BSAEPRI值会是0以外的情况。除非用户做一些骚操作。
回复

使用道具 举报

5

主题

19

回帖

34

积分

新手上路

积分
34
 楼主| 发表于 2024-7-18 11:14:54 | 显示全部楼层
eric2013 发表于 2024-7-18 07:57
在M内核下,这两个实际没区别。

1、任务里面那个你将几处断言注释掉,可以用在中断里面。

好的,多谢大佬解惑
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 03:12 , Processed in 0.038761 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表