问题标签 [freertos]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
721 浏览

c++ - 使用 Cortex-M MPU

我们启动了一个新软件,并考虑使用 MPU。我们的新软件基于 FreeRTOS(带有 MPU 端口)。

我们正确理解了关于与 MPU 的任务间通信的所有分段。我们遇到的困难是如何处理动态分配保护。默认情况下,所有内存都应该在用户模式下受到保护。是否有任何在线文档解释我们应该如何处理动态分配?

我们希望尽可能多地保护内存,因为我们将设计一个 > 500K 编译代码的大型软件。

问候

乔纳森

0 投票
2 回答
1956 浏览

task - 在 FreeRTOS 中重新启动任务

我有一个特定的任务例程,它以特定的顺序执行一些操作,这些操作处理一些易失性变量。有一个特定的中断可以异步更新这些易失性变量。因此,如果发生这样的中断,任务例程应该重新启动。通常 FreeRTOS 会恢复任务,但这会导致错误的派生值,因此需要重新启动例程。我也不能将任务例程保持在关键部分,因为我不应该错过任何中断。

FreeRTOS 中有没有一种方法可以实现这一目标?就像一个 vtaskRestart API。我本可以删除该任务并重新创建它,但这会增加很多内存管理的复杂性,我想避免这种情况。目前我唯一的选择是在例程中添加对标志的检查,以查看是否发生了上下文切换,如果是,则重新启动,否则继续。

谷歌搜索没有得到任何线索。似乎人们从未遇到过这样的问题,或者可能是这种设计很差。在 FreeRTOS 论坛中,很少有人要求重新启动任务似乎没有同样的问题。stackOverflow 在 freertos + 任务 + 重启时没有结果。所以,这可能是第一篇使用这个标签组合的帖子;)

有人可以告诉我这在 FreeRTOS 中是否可以直接实现吗?

0 投票
0 回答
761 浏览

arm - 中断处理 免费 RTOS + ARM cortex A9

我已经为在 ARM cortex A9 ( Zedboard) 上运行的免费 RTOS 实现了中断处理。我面临以下问题。

我可以看到中断线正在被提升(通过检查 spi_status 寄存器以获取相应的中断)

但是中断没有被 Free RTOS 捕获

我也看到了这种情况,我可以看到对于我的中断,设置启用(ICDISER)位已设置,但是当我为相应的中断提升中断线时,设置的启用位正在重置。当 Free Rtos 任务正在运行时,我提出了中断。这很奇怪,我不知道为什么当我提高中断线时该中断的设置启用位会被重置。任何想法,将不胜感激?

我知道这个问题是针对 Free rtos 的,但我实际上不知道为什么要重置中断的设置启用位(我认为这很奇怪),所以没有人知道为什么会发生这种情况吗?

问候,N

0 投票
0 回答
680 浏览

python - 在 32 位 arm cortexM3 板上的 freertos 上需要 python 支持

我在 marvell 板上使用免费的 rtos,我想在上层编程接口上使用 python。所以我需要一个解释器或编译器来生成用 python 编写的本地 C 代码。我尝试使用 pymite 选项,但是在 pymite 中有很多不支持的 python 功能,比如:isinstance、bool、bytes、property、repr等等。 .

是否有任何其他解释器可以与免费 RTOS 和 32 位 ARM 一起使用?

谢谢你,问候,shreyas。

0 投票
0 回答
1078 浏览

interrupt - FreeRTOS & PIC24EP & 正确的中断处理

我在我的项目中使用 FreeRTOS 已经有一段时间了,我不得不说我喜欢它。

艰难的我正面临一个正在杀死我的错误。

我的代码包含大量代码,大约 80 个文件并使用几个微芯片堆栈并运行大约 10 个任务。

问题是每天大约有 2-3 次,芯片会进入地址错误中断,我还没有真正找出问题的根源。

我相信这个错误发生在中断的那一刻,因为我已经能够减少崩溃的发生,因为我在一个 UART 中使用 DMA 传输,从而将中断减少了 80 倍。

我已经阅读了很多关于它的示例和论坛帖子,但它似乎总是有不同的方法来处理中断,无论是否使用 taskYield,特别是在 PIC24EP 上。

另一点是中断嵌套。它目前已启用,我尚未测试禁用。我已经看到了一些关于它的线程,但没有真正回答是否应该保持启用。

这是我目前处理 DMA 中断的方式。对于以前的代码兼容性机器人,我使用队列而不是信号量,它执行相同的工作。

RTOS 库中的一些示例显示中断后没有任务产生。

  • 我应该将产量添加到每个中断中吗?

    无效属性((中断,auto_psv))_DMA1中断(无效){char val = 55;portBASE_TYPE xTaskWoken;IFS0bits.DMA1IF = 0;// 清除 DMA1 中断标志​​ xQueueSendFromISR(RS485_Queue, &val, &xTaskWoken); 如果(xTaskWoken)任务YIELD();}

我应该禁用嵌套中断吗?

我应该在我的任务中添加更多的堆栈空间吗?

我不是处理器堆栈和 RTOS 在堆栈级别的工作方式的专家。如果两个中断同时发生,那么当前正在运行的任务需要更大的堆栈大小吗?我的问题可能与同时有两个(或更多)中断以及嵌套中断使用的任务空间比实际定义的更多有关吗?

谢谢!

编辑:问题解决了,实际上我并不是唯一一个遇到这个问题的人,因为不幸的是它似乎没有出现在文档或代码示例中,而只是出现在需要挖掘的一些 freertos 网页中. 使用 FreeRTOS 内核的中断的优先级不应高于默认值为 1 的 configKERNEL_INTERRUPT_PRIORITY,而微芯片上的中断的默认值为 3。这意味着使用默认优先级的中断会导致零星的陷阱错误。

0 投票
1 回答
1267 浏览

c++ - 带有 C++ 主文件的 FreeRTOS

我正在尝试将 C++ 应用程序与 FreeRTOS 一起使用。我开始了解这篇文章:- https://sourceforge.net/p/freertos/discussion/382005/thread/5d5201c0但我不确定如何以及在何处添加此 TaskCPP.h 文件。

现在我有像这样的非常简单的 main.cpp 文件。

这给了我一个错误:-

我不确定设置有什么问题。

0 投票
1 回答
5721 浏览

embedded - 嵌入式 cortexM3 平台上的 zeromq

有没有人已经在 cortexM3 节点上实现了 zeroMQ 作为可靠的消息解决方案?我试图了解这是否可能并对此有一个内存占用的想法。也许我会有 freeRTOS 操作系统。感谢您的想法和建议。尼古拉

0 投票
1 回答
8001 浏览

c - FreeRTOS xTaskCreate() 方法中的优先级值

我似乎无法找到传递给 FreeRTOS 任务创建功能的优先级值的含义。如果我没记错的话,ThreadX 使用更小的值来获得更高的优先级,即优先级值为 1 的任务比优先级值为 2 的任务具有更高的优先级值。但对于 FreeRTOS,我似乎无法确定它是相同还是相反,即更高值意味着更高的优先级。

我试过谷歌搜索,但找不到任何东西。xTaskCreate 的 FreeRTOS API 参考页面仅指定这是优先级值。有人可以帮助解决这个困惑。

0 投票
1 回答
549 浏览

freertos - 在 RTOS 中启动两个以上的任务

我是 RTOS 的新手,我的问题是我不能同时启动 2 个以上的任务。我正在使用FREE-RTOS。任务优先级设置为相同的优先级。并且 configTOTAL_HEAP_SIZE 设置为 8192 字节。

有人可以帮我解决这个问题,或者给我一些指导吗?

0 投票
0 回答
329 浏览

delay - FreeRTOS --vTaskDelay 使处理器 P4080 停止。

我在 PowerPC 拱形处理器 P4080 上移植 FreeRTOS,基本上遵循示例端口 PPC405。

一切都成功了,一切正常,除了vTaskDelay.

每当有对处理器的调用时vTaskDelay,就会停止。异常并不一致,即有时是Data TLB 错误,有时是程序错误,有时只是Target Reset。我已经测试了所有其他功能,它们工作正常。

但令人惊奇的是,每当我尝试进行步进输入调试时——我从来没有遇到任何问题,vTaskDelay 工作得很好。但是我运行程序,我得到了这个错误。

  1. 谁能告诉我问题出在哪里?
  2. 还有其他方法可以调试问题吗?

请帮我尽快解决。当我接近我的硕士论文截止日期时,如果没有解决这个问题,我将无法继续前进。