问题标签 [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 投票
3 回答
7870 浏览

real-time - 适合类人机器人的 RTOS 是什么?

我们是学生开发一个中等大小(约 4.5 英尺高)的人形机器人,作为大学赞助的研究项目。机器人应该能够执行的主要任务包括:四处移动(前进、后退、侧身)、奔跑、拾取物体。我们正在考虑使用实时操作系统来控制机器人。但是,由于我们是这个领域的新手,几乎没有嵌入式系统或操作系统的背景,而且有多种选择,我们不确定哪一个是合适的选择。我们遇到了以下情况(括号中是我们目前对它们的印象):

  1. RTLinux(现在死了,内核 2.4.x,gcc 2.95(很难构建),几乎没有文档)
  2. FreeRTOS(良好的社区和文档,流行,移植到许多架构)
  3. uc-OS II(小、干净的内核、轻量级)
  4. RTAI(基于 Linux)

我有几个问题:

  1. 哪个选项更适合这个项目?我知道这听起来有点主观,但任何建议将不胜感激。如果您觉得缺少某些重要信息,请务必指出。
  2. 我遇到了一个名为CONFIG_PREEMPT_RT的 Linux 内核补丁,它为内核提供了硬实时功能。基于 Debian 的发行版也有带有此补丁的预编译内核。仅此一项就足以满足我们的要求吗?
  3. 一般来说,我们对操作系统知之甚少。我们有必要先了解它们吗?如果是,什么是该主题的良好简短入门?

更新:感谢您提供非常详细的答案。很明显,我们的做法是错误的。在没有知识和模糊要求的情况下潜入肯定会很糟糕。我们将不得不坐下来准确地找出我们需要的东西。当我们足够领先时,我们将尝试找出合适的操作系统。让我们看看结果如何。我还将阅读MicroC OS II: The Real Time Kernel 的第 2 章。

0 投票
2 回答
857 浏览

semaphore - FreeRTOS 堆栈溢出过多

我正在尝试使用 FreeRTOS 在 ATMega323_WinAVR 上实现生产者-消费者算法。调试时我在 AVR Studio 4 中收到此错误:

AVR Simulator: Excessive stack overflow, stop sim

堆栈指针停在这一行:

为什么会出现这个错误?

谢谢!

0 投票
3 回答
6157 浏览

c - PIC32,以 ms 为单位的免费 RTOS 时钟

我有一个运行 RTOS 的 PIC32MX460F512L,我正在寻找一种方法来获取代码中两点之间的毫秒差异。

下面的代码获取滴答时间,但不是以毫秒为单位的时间。

我的问题是

免费的 RTOS中,有没有办法以毫秒为单位获取当前的相对时间?

0 投票
1 回答
498 浏览

embedded - blackfin bf561 FreeRTOS 实现在加载任务时在运行时失败

我已经从代码中实现了 Blackfin BF561 coreB FreeRTOS:

http://www.freertos.org/index.html?http://interactive.freertos.org/forums/79366-analog-devices

我使用 gcc 转换为裸机作为 elf 可执行文件。

我很接近,但我有一个我无法弄清楚的运行时错误。当调度程序启动并尝试触发第一个任务时,内存指针会丢失并且它不会启动第一个堆栈,而是在第一个任务内启动一个函数并在退出函数时丢失。

这是相应的调试日志:

这是我在模拟设备论坛上开始的讨论:

http://ez.analog.com/message/38669#38669

0 投票
1 回答
304 浏览

embedded - MSP430F5418 的 RTC 中断问题

我正在使用带有 IAR EW 5.10 的 MSP430F5418。

在我的项目中,我使用 FreeRTOS 7.0 作为操作系统。

考虑场景:

  1. 将 RTC 设置为具有一分钟中断的闹钟模式。
  2. 创建两个任务。
  3. 当一分钟中断到来时,任务 1 向任务 2 发送请求。
  4. 任务 2 以 4 条消息响应任务 1。
  5. 在接收消息时,任务 1 调用一个简单的函数,该函数循环 0x7FFF 次。

这里,在第 4 次请求之后,即使没有经过一分钟,也会立即产生 RTC 中断。

我正在使用 TI 提供的解决方法代码进行 RTC 操作。

谁能告诉我为什么会发生这种意外行为???

谢谢,

哈里

0 投票
1 回答
2113 浏览

stack-overflow - 在 FreeRTOS 中从 ISR 提供​​信号量后堆栈溢出

我正在尝试使用 FreeRTOS 的xSemaphoreGiveFromISR函数和随附的portEND_SWITCHING_ISR宏从处理 I2C 事务结束的中断中提供信号量。

每次我这样做时,我都会遇到程序的应用程序堆栈溢出挂钩函数。工作版本的唯一变化是将此行添加到 ISR,并且我将堆栈的大小增加了一倍819216384但没有帮助。

有人对我得到了什么有想法吗?

我的configCHECK_FOR_STACK_OVERFLOW值为 1。

0 投票
2 回答
4595 浏览

java - 在 FreeRTOS 上使用 Java?

我可以在 FreeRTOS 上使用 Java 吗?

如果是这样,是否有任何好的 URL 可以帮助我入门?

我会遇到什么问题?

0 投票
2 回答
307 浏览

c - 指向结构数据时 bf561 COREB FreeRTOS 实现中的运行时错误

当它尝试访问结构数据时,我在几个函数中出现运行时错误,通常作为参数传递给函数。

问题的第一个例子是:

其中 pxQueue 是一个结构:

和:

其中 pxQueue 是一个结构:

和:

运行时错误是:

同样,我对以下函数也有同样的问题:

其中可以读取 pxItemToRemove->pxPrevious 但不能读取 pxItemToRemove->pxNext->pxPrevious

它的结构是:

运行时错误是:

先感谢您。

威廉


使用 gdb 进一步调试我有 pxQueue:

真的很奇怪,结构的所有参数都有相同的值:0xadadadad

当我进一步调试并将信号量创建视为创建队列函数中的队列对象时,我得到了正常值:

谢谢,

威廉

0 投票
1 回答
3566 浏览

list - 对于 vListInsert 函数中的信号量,FreeRTOS 无限期地停留在 for 循环中

我试图理解为什么我的代码会卡在 FreeRTOS 的 vListInsert 的 for 循环中。我正在使用 gcc 工具链编译器为 bfin561 coreb 实现 FreeRTOS。

这是我得到的线索:

我以这种方式初始化信号量:

然后在任务功能中:

在上面的代码中,问题发生在第二个 while( xSemaphoreTake( sem, portMAX_DELAY ) != pdTRUE ); 线。

通过代码进行调试,我陷入了:

来自 freeRTOS:

输出我得到的调试消息:

它留在这个for循环中。

任何了解 freeRTOS 的人都可以告诉我发生了什么吗?FreeRTOS代码中的for循环函数上方有一些评论,说明它会崩溃的某些原因,但似乎不是这样,或者如果是这样,我暂时不知道如何解决它。

谢谢,

威廉

0 投票
1 回答
9885 浏览

network-programming - LwIP - netconn API - 在进程被阻塞时发送 TCP 数据包?

我正在使用 FreeRTOS + LwIP开发基于以太网的床边护士呼叫设备。看了一些例子和文档后,我想用LwIP的netconn API在TCP下发送和接收数据,因为我不熟悉BSD风格的API,原始API可能比较难。

我知道该netconn_accept()函数会阻塞进程,直到来自远程主机的连接请求到达,并且该netconn_recv()函数也会在等待数据到达时阻塞进程......这两个函数都会阻塞进程,这对服务器有好处接收数据,但是,我的设备还需要充当客户端,当患者按下按钮时,需要触发对护士中心的“呼叫”。那么它如何在等待来自远程主机的连接(阻塞进程)的同时发起发送 TCP 数据包呢?

我需要发送 TCP,因为我必须使用 SIP(​​会话发起协议)来发起呼叫,它应该是可靠的,因为它是一个医疗设备。非常感谢你


@Kyle Heironimus ,@werewindle 我将您添加到我的问题中,因为我知道您在 LwIP 方面有经验,希望不会给您带来不便,希望您能提供帮助,谢谢。