【问题标题】:VtaskSuspenAll - Atomicity related ticket on FreeRTOSVtaskSuspenAll - FreeRTOS 上的原子性相关票证
【发布时间】:2019-12-02 20:44:30
【问题描述】:

我正在 STM32F469 目标上使用 FreeRTOS 内核。 我有一个严重的错误,我想这是由于 VtaskSuspendAll。 我读过这张票:click here 我怎么知道“从寄存器写回内存是原子的”?因为我知道否则它可能是一个问题,我猜我的作品不是原子的。

当我在定时器中断中使用 xEventGroupSetBitsFromISR() 时会出现问题...

我不知道如何调查这个问题。

【问题讨论】:

    标签: freertos stm32f4


    【解决方案1】:

    从这里开始https://www.freertos.org/FAQHelp.html,它记录了大量常见问题以及如何发现它们。 STM32 在硬件中设置数字抢占位等方面有一些非常具体的细节。

    【讨论】:

      【解决方案2】:

      根据ARMv7M Architecture Reference Manual,“A3.5.3 ARM 体系结构中的原子性”一章,对字节、半字和字的读写是原子的。读取-修改-写入循环不是原子的。

      上述票证:

      基本上,关键是每个任务都维护自己的上下文,如果变量不为零,则不会发生上下文切换。所以,只要从寄存器写回内存是原子的,就没有问题。

      因此,只要uxSchedulerSuspended 是字节/半字/字,就应该可以访问。

      使用 JTAG 调试器,在硬故障处理程序中放置断点,并回溯到故障发生的位置。检查寄存器 CFSRMMFARBFAR 以了解更多关于发生的事情。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-21
        • 1970-01-01
        • 2021-07-15
        相关资源
        最近更新 更多