首页 > 其他分享 >FreeRTOS LIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 存在的意义以及高于它的中断不能调用 safe freertos api

FreeRTOS LIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 存在的意义以及高于它的中断不能调用 safe freertos api

时间:2024-11-25 11:12:12浏览次数:7  
标签:PRIORITY FreeRTOS freertos SYSCALL MAX safe will api

This is how I understand it.

我是这样理解的。

If we now have 2 tasks and 6 interrupts, among which, and when interrupts 4, 5, 6 are running, they will call the safe freertos api.

假如我们现在有2个任务以及6个中断,其中,中断4、5、6运行的时候将会调用 safe freertos api

Just like (1) in the picture.

就像图中的(1)一样。

So now if we are executing task 1 or task 2, interrupt 5 is triggered, and it will do what it needs to do in the callback, including calling the safe freertos api, and during the execution, it will enter the critical section to block all interrupts and tasks with a lower priority than it (for now, let’s not consider the MAX_SYSCALL_INTERRPUT_PRIORITY mechanism in FreeRTOS, that is, it will not block interrupts 1~4).

那么现在假如我们正在执行任务1或任务2,此时中断5触发,在回调中会执行它需要做的,包含调用 safe freertos api,并在执行过程中会进入临界段屏蔽所有低于它优先级的中断和任务(现在先不考虑 FreeRTOS 中的 MAX_SYSCALL_INTERRPUT_PRIORITY 机制,也就是它不会屏蔽中断1~4)。

Just like (2) in the picture.

就像图中的(2)一样。

Moving forward, when interrupt 5 calls the safe freertos api and is in the process of execution, interrupt 4 is triggered at this time, it will preempt interrupt 5 execution, and further call the safe freertos api. At this time, I guess that interrupt 5 involves the operation of the freertos kernel (because of preemption, only half of it is executed) will lose protection, causing serious irreversible effects (there may be problems with context scheduling and task management).

继续前进,当中断5调用 safe freertos api,并在执行过程中时,这个时候中断4触发,它将会抢占中断5执行,进一步也将调用 safe freertos api,这个时候我猜测中断5涉及freertos内核的操作(因为抢占,仅执行了一半)将会失去保护,造成严重的不可逆的影响(可能有上下文调度、任务管理的问题)。

Just like (3) in the picture.

就像图中的(3)一样。

So now let’s go back to the beginning. If there is MAX_SYSCALL_INTERRPUT_PRIORITY in FreeRTOS The mechanism exists. During the execution of interrupt 5, all interrupts below MAX_SYSCALL_INTERRPUT_PRIORITY will be blocked, so the accident caused by the interrupt 4 preemption execution mentioned above will not happen.

那么现在让我们回到一开始的地方,如果有FreeRTOS 中的 MAX_SYSCALL_INTERRPUT_PRIORITY 机制存在,在中断5执行过程中,会屏蔽低于 MAX_SYSCALL_INTERRPUT_PRIORITY 的所有中断,也就不会发生我前面说过的中断4抢占执行造成的事故。

Just like (4) in the picture.

就像图中的(4)一样。

Then, you will definitely ask, what about interrupts 1~3, will they be blocked? The answer is: No. Then will they call the safe freertos api and the above mentioned accident will not happen? This is the problem I encountered recently, and now I know the answer. There is a MAX_SYSCALL_INTERRPUT_PRIORITY mechanism in FreeRTOS. Interrupts above MAX_SYSCALL_INTERRPUT_PRIORITY will not allow you to call the safe freertos api (if you call it, the code will not pass the compilation due to the existence of the Freertos assert), so there will be no accident.

那么,你肯定会问,中断1~3呢,它们会被屏蔽吗?答案是:不会。那么它们调用 safe freertos api 不会发生上面说的事故吗?这个就是我最近遇到的问题,现在也知道了答案。有FreeRTOS 中的 MAX_SYSCALL_INTERRPUT_PRIORITY 机制存在,高于 MAX_SYSCALL_INTERRPUT_PRIORITY 的中断将会不允许你调用 safe freertos api(如果你调用,会因为Freertos断言 存在导致代码不会通过编译),也就不会发生事故。

This is my own understanding. If you find any errors, please leave a message to reply.

这是我个人的理解。如果发现错误,请留言回复。

标签:PRIORITY,FreeRTOS,freertos,SYSCALL,MAX,safe,will,api
From: https://www.cnblogs.com/likkoliu/p/18567163

相关文章

  • 线性分类器全解析:Logistic 回归、Softmax 回归、感知器和支持向量机
    引言在机器学习中,线性分类器是一种经典而高效的分类方法,能够在特征空间中寻找一条(或一个超平面)来区分不同类别的数据点。它是现代机器学习模型的基石,同时为许多复杂模型(如神经网络)奠定了理论基础。本文将详细解析四种常见的线性分类器——Logistic回归、Softmax回归、感知......
  • 说说你对min-width和max-width的理解,它们有什么运用场景?
    min-width和max-width是CSS属性,用于控制元素的最小和最大宽度。它们在响应式网页设计中非常重要,可以确保元素在不同屏幕尺寸下都能良好地显示。min-width(最小宽度):定义:指定元素内容区域的最小宽度。即使内容较少,元素的宽度也不会小于min-width的值。作用:避免元......
  • 洛谷P1253 扶苏的问题(区间加值,区间修改,求区间max)
    题目Description给定一个长度为 nn 的序列 aa,要求支持如下三个操作:给定区间 [l,r][l,r],将区间内每个数都修改为 xx。给定区间 [l,r][l,r],将区间内每个数都加上 xx。给定区间 [l,r][l,r],求区间内的最大值。Input第一行是两个整数,依次表示序列的长度 nn 和操......
  • 【做梦都没有想到】有了这些3DMAX插件不论是出图速度还是出图质量,都能轻松碾压一切三
    在建筑设计的广阔领域中,3DMAX作为一款功能强大的三维建模软件,早已成为众多设计师的首选工具。然而,仅凭3DMAX的基础功能,往往难以满足日益复杂和多样化的设计需求。幸运的是,市场上涌现出了众多专为建筑设计优化的3DMAX插件,它们能够极大地扩展软件的功能,提升设计效率,甚至激发设计......
  • 快读快写模板 Pro Max
    模板namespaceQuickIO{template<typenameT>inlinevoidread(T&x){x=0;signedop=1;charch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')op=-1;for(;isdigit(ch);ch=getchar()......
  • 迈从AX5 PRO MAX
    买了好多鼠标,个人而言觉得这个鼠标反应快定位准。也是我的主力鼠标。之前我已经写过一篇关于AX5PROMAX鼠标的文章,现在单独开一篇文章说说它的缺点。1、塑料底盘用料一般,容易坏,但是只要你不经常拆,问题不大,我后面会说说为什么觉得他的塑料材质不行。2、蓝牙模式问题:如果在2.4G模式......
  • 3dsMax:3dsMax基础操作与界面介绍_2024-07-15_15-24-33.Tex
    3dsMax:3dsMax基础操作与界面介绍一、3dsMax简介1.13dsMax的历史与发展3dsMax,原名3DStudioMax,是由Autodesk公司开发的一款基于PC的三维动画渲染和建模软件。它的历史可以追溯到1990年代初,当时由YostGroup开发的3DStudio系列软件在DOS平台上首次亮相,随后在Window......
  • 3dsMax:产品设计与展示技巧_2024-07-15_17-50-57.Tex
    3dsMax:产品设计与展示技巧产品设计基础3dsMax界面介绍在开始使用3dsMax进行产品设计之前,熟悉其界面是至关重要的。3dsMax的界面主要由以下几个部分组成:菜单栏:位于界面顶部,提供各种命令和功能的访问入口。工具栏:紧邻菜单栏下方,包含常用的工具和命令按钮。视图区:界面中......
  • [学习笔记] Minimax 算法和 Alpha-Beta 剪枝
    题目引入在博弈论中,有这样一类题目:两个玩家A、B轮流行动,A先手,B后手。有一个结果,A想要使它最大,B想要使它最小。Minimax算法把每个状态作为一个点,每个转移作为一条边建出一棵树。这棵树好像叫博弈树。两种实现(都没有真正地建树):直接搜索(可能有结点被重复经过)记忆化......
  • Softmax函数计算详解
    Softmax函数计算详解Softmax函数的组成部分:输入示例输出概率分布参考Softmax函数的组成部分:σ(z⃗......