问题标签 [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.
real-time - 适合类人机器人的 RTOS 是什么?
我们是学生开发一个中等大小(约 4.5 英尺高)的人形机器人,作为大学赞助的研究项目。机器人应该能够执行的主要任务包括:四处移动(前进、后退、侧身)、奔跑、拾取物体。我们正在考虑使用硬实时操作系统来控制机器人。但是,由于我们是这个领域的新手,几乎没有嵌入式系统或操作系统的背景,而且有多种选择,我们不确定哪一个是合适的选择。我们遇到了以下情况(括号中是我们目前对它们的印象):
- RTLinux(现在死了,内核 2.4.x,gcc 2.95(很难构建),几乎没有文档)
- FreeRTOS(良好的社区和文档,流行,移植到许多架构)
- uc-OS II(小、干净的内核、轻量级)
- RTAI(基于 Linux)
我有几个问题:
- 哪个选项更适合这个项目?我知道这听起来有点主观,但任何建议将不胜感激。如果您觉得缺少某些重要信息,请务必指出。
- 我遇到了一个名为CONFIG_PREEMPT_RT的 Linux 内核补丁,它为内核提供了硬实时功能。基于 Debian 的发行版也有带有此补丁的预编译内核。仅此一项就足以满足我们的要求吗?
- 一般来说,我们对操作系统知之甚少。我们有必要先了解它们吗?如果是,什么是该主题的良好简短入门?
更新:感谢您提供非常详细的答案。很明显,我们的做法是错误的。在没有知识和模糊要求的情况下潜入肯定会很糟糕。我们将不得不坐下来准确地找出我们需要的东西。当我们足够领先时,我们将尝试找出合适的操作系统。让我们看看结果如何。我还将阅读MicroC OS II: The Real Time Kernel 的第 2 章。
semaphore - FreeRTOS 堆栈溢出过多
我正在尝试使用 FreeRTOS 在 ATMega323_WinAVR 上实现生产者-消费者算法。调试时我在 AVR Studio 4 中收到此错误:
AVR Simulator: Excessive stack overflow, stop sim
堆栈指针停在这一行:
为什么会出现这个错误?
谢谢!
c - PIC32,以 ms 为单位的免费 RTOS 时钟
我有一个运行 RTOS 的 PIC32MX460F512L,我正在寻找一种方法来获取代码中两点之间的毫秒差异。
下面的代码获取滴答时间,但不是以毫秒为单位的时间。
我的问题是
在免费的 RTOS中,有没有办法以毫秒为单位获取当前的相对时间?
embedded - blackfin bf561 FreeRTOS 实现在加载任务时在运行时失败
我已经从代码中实现了 Blackfin BF561 coreB FreeRTOS:
http://www.freertos.org/index.html?http://interactive.freertos.org/forums/79366-analog-devices
我使用 gcc 转换为裸机作为 elf 可执行文件。
我很接近,但我有一个我无法弄清楚的运行时错误。当调度程序启动并尝试触发第一个任务时,内存指针会丢失并且它不会启动第一个堆栈,而是在第一个任务内启动一个函数并在退出函数时丢失。
这是相应的调试日志:
这是我在模拟设备论坛上开始的讨论:
embedded - MSP430F5418 的 RTC 中断问题
我正在使用带有 IAR EW 5.10 的 MSP430F5418。
在我的项目中,我使用 FreeRTOS 7.0 作为操作系统。
考虑场景:
- 将 RTC 设置为具有一分钟中断的闹钟模式。
- 创建两个任务。
- 当一分钟中断到来时,任务 1 向任务 2 发送请求。
- 任务 2 以 4 条消息响应任务 1。
- 在接收消息时,任务 1 调用一个简单的函数,该函数循环 0x7FFF 次。
这里,在第 4 次请求之后,即使没有经过一分钟,也会立即产生 RTC 中断。
我正在使用 TI 提供的解决方法代码进行 RTC 操作。
谁能告诉我为什么会发生这种意外行为???
谢谢,
哈里
stack-overflow - 在 FreeRTOS 中从 ISR 提供信号量后堆栈溢出
我正在尝试使用 FreeRTOS 的xSemaphoreGiveFromISR
函数和随附的portEND_SWITCHING_ISR
宏从处理 I2C 事务结束的中断中提供信号量。
每次我这样做时,我都会遇到程序的应用程序堆栈溢出挂钩函数。工作版本的唯一变化是将此行添加到 ISR,并且我将堆栈的大小增加了一倍8192
,16384
但没有帮助。
有人对我得到了什么有想法吗?
我的configCHECK_FOR_STACK_OVERFLOW
值为 1。
java - 在 FreeRTOS 上使用 Java?
我可以在 FreeRTOS 上使用 Java 吗?
如果是这样,是否有任何好的 URL 可以帮助我入门?
我会遇到什么问题?
c - 指向结构数据时 bf561 COREB FreeRTOS 实现中的运行时错误
当它尝试访问结构数据时,我在几个函数中出现运行时错误,通常作为参数传递给函数。
问题的第一个例子是:
其中 pxQueue 是一个结构:
和:
其中 pxQueue 是一个结构:
和:
运行时错误是:
同样,我对以下函数也有同样的问题:
其中可以读取 pxItemToRemove->pxPrevious 但不能读取 pxItemToRemove->pxNext->pxPrevious
它的结构是:
运行时错误是:
先感谢您。
威廉
使用 gdb 进一步调试我有 pxQueue:
真的很奇怪,结构的所有参数都有相同的值:0xadadadad
当我进一步调试并将信号量创建视为创建队列函数中的队列对象时,我得到了正常值:
谢谢,
威廉
list - 对于 vListInsert 函数中的信号量,FreeRTOS 无限期地停留在 for 循环中
我试图理解为什么我的代码会卡在 FreeRTOS 的 vListInsert 的 for 循环中。我正在使用 gcc 工具链编译器为 bfin561 coreb 实现 FreeRTOS。
这是我得到的线索:
我以这种方式初始化信号量:
然后在任务功能中:
在上面的代码中,问题发生在第二个 while( xSemaphoreTake( sem, portMAX_DELAY ) != pdTRUE ); 线。
通过代码进行调试,我陷入了:
来自 freeRTOS:
输出我得到的调试消息:
它留在这个for循环中。
任何了解 freeRTOS 的人都可以告诉我发生了什么吗?FreeRTOS代码中的for循环函数上方有一些评论,说明它会崩溃的某些原因,但似乎不是这样,或者如果是这样,我暂时不知道如何解决它。
谢谢,
威廉
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 方面有经验,希望不会给您带来不便,希望您能提供帮助,谢谢。