问题标签 [rtos]

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 投票
2 回答
1094 浏览

c - 动态 C/Rabbit 上的 Micrium uC-OS/II - 可能存在任务不足

我正在尝试在 Micrium uC-OS/II 下的 Dynamic C 中运行 2 个任务。一个任务是 http 处理程序,另一个从串行端口读取。串口任务似乎阻止了 http 任务的运行。任何想法为什么会这样?我认为 uC-OS/II 是抢占式的。

两个线程都设置为相同的默认优先级。

0 投票
1 回答
1203 浏览

linux-kernel - spinlock和cli一起使用

我最近从http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.1.tar.bz2下载了 linux 源代码。我在 linux-2.6.34.1\Documentation 文件夹中名为 spinlocks.txt 的文件中遇到了以下段落。

“这确实意味着如果你有一些代码

和另一个序列

那么它们不是互斥的,关键区域可以同时发生在两个不同的 CPU 上。这本身很好,但关键区域最好对不同的事情至关重要(即它们不能相互踩踏)。"

如果某些代码使用 cli()/sti() 并且同一代码的其他部分使用 spin_lock_irqsave(flags)/spin_unlock_irqrestore(flags) ,它们会如何影响?

0 投票
2 回答
1479 浏览

operating-system - RTOS 的过程控制块类型是什么?

我正在设计一个使用基于优先级的抢占式调度程序的 RTOS。PCB包含什么?我只能想出这些项目

1)PID 2)优先级 3)程序计数器 4)状态寄存器 5)一些标志

我还应该包括截止日期吗?或任何其他字段

0 投票
5 回答
18988 浏览

embedded - 为什么我会考虑为我的嵌入式项目使用 RTOS?

首先是背景,我的问题的细节如下:

在我工作的公司,我们使用的平台目前是 Microchip PIC32 系列,使用 MPLAB IDE 作为我们的开发环境。以前,我们还为同一应用编写了 Microchip dsPIC 和 TI MSP 系列的固件。固件非常简单,因为代码分为三个主要模块:设备控制、数据采样和用户通信(通常是用户 PC)。设备控制是通过 GPIO 总线和至少一个需要 SPI 或 I2C 控制的部分的组合来实现的。数据采样是使用定时器模块中断驱动来维持采样频率和更多的 SPI/I2C 和 GPIO 总线来控制采样硬件(即 ADC)。用户通信目前是使用 Microchip 应用程序框架通过 USB 实现的。


所以现在的问题是:鉴于我上面所描述的,我会在什么时候考虑为我的项目使用 RTOS?目前我正在考虑将这些可能的触发点作为使用 RTOS 的原因:

  • 代码复杂度? 代码库架构/组织仍然足够小,我可以将所有细节都牢记在心。
  • 多任务/线程? 现在,通过中断对模块执行进行时间切片就足够了多任务处理。
  • 测试? 目前我们在硬件冒烟测试之后没有做太多的正式测试或验证(我希望在不久的将来纠正)。
  • 沟通? 我们目前使用自定义数据包格式和协议,该协议几乎只执行 START、STOP、SEND DATA 命令,数据为二进制 blob。
  • 项目范围? 在不久的将来,我们有可能获得一个项目,将我们的设备集成到一个更大的系统中,目标是将该系统投入批量生产。目前我们所有的项目都是实验原型,大约一个月的快速周转,一次生产一两个单元。

您认为我还应该考虑哪些其他问题?根据您的经验,是什么说服(或迫使)您考虑使用 RTOS 而不是仅在基本运行时上运行代码?也非常感谢有关为 RTOS 设计/编程的其他资源的指针。

0 投票
1 回答
1465 浏览

embedded - 在嵌入式 RTOS 任务之间传递消息的好方法(但可以优雅地处理消息超时)

我正在使用嵌入式 RTOS (CMX),但我认为这适用于任何嵌入式 RTOS。我想在各种任务之间传递消息。问题是一个任务有时会在很长一段时间(几秒钟)内“锁定”所有其他任务。

由于我不再等待大约 100 毫秒左右的消息被确认,如果我在这段时间内发送邮箱消息,发送消息的任务不再等待它的回复,但接收任务会得到消息并尝试对其采取行动。问题是接收任务有一个指向消息的指针,但是由于发送任务已经移动,指针不再指向消息,这可能会导致巨大的问题。

一旦消息在队列中,我就无法删除它们。我怎样才能优雅地处理这个错误?

0 投票
2 回答
2438 浏览

c - 多对一网守任务同步

我正在研究一种使用网守任务来访问共享资源的设计。我现在拥有的基本设计是看门人任务从中接收的单个队列以及将请求放入其中的多个任务。

这是一个内存有限的系统,我使用的是 FreeRTOS(Cortex M3 端口)。

问题如下:异步处理这些请求相当简单。请求任务将其请求排队并继续其业务、轮询、处理或等待其他事件。为了同步处理这些请求,我需要一种机制来阻止请求任务,这样一旦请求被处理,网守就可以唤醒调用该请求的任务。

我能想到的最简单的设计是在每个请求中包含一个信号量,但考虑到内存限制和 FreeRTOS 中相当大的信号量,这是不切实际的。

我想出的是使用任务挂起和任务恢复功能手动阻止任务,将句柄传递给网守,它可以在请求完成时恢复任务。但是,暂停/恢复存在一些问题,我真的很想避免它们。无论任务被其他调用挂起多少次,一个恢复调用都会唤醒一个任务,这可能会产生不良行为。

一些简单的伪 C 来演示挂起/恢复方法。

我计划在此期间使用的一种解决方法是使用异步调用并在每个请求任务中完全实现阻塞。当操作完成时,网守将执行提供的回调,然后可以发布到任务的主队列或特定的信号量,或任何需要的东西。对请求进行阻塞调用本质上是一种便利功能,因此每个请求任务都不需要实现这一点。

伪 C 来演示特定于任务的阻塞,但这需要在每个任务中实现。

也许最好的解决方案就是不在网关守卫和 API 中实现阻塞,并强制每个任务处理它。不过,这会增加每个任务流程的复杂性,我希望我可以避免它。在大多数情况下,所有调用都希望阻塞,直到操作完成。

是否有一些我遗漏的结构,或者只是我可以用谷歌搜索的这类问题的更好术语?我在搜索中没有遇到过这样的事情。

附加说明- 看门人任务的两个原因:

  1. 需要大的堆栈空间。与其将这个要求添加到每个任务中,网关守卫可以拥有一个包含所有所需内存的堆栈。

  2. CPU 中的资源并不总是可访问的。它不仅同步 CPU 中的任务,还同步 CPU 外的任务。

0 投票
3 回答
2009 浏览

c - 如何在 vxworks 中查找套接字描述符的状态

如何借助 vxworks 中的套接字描述符检查远程端的状态。我正在使用 TCP 连接。

0 投票
1 回答
1410 浏览

embedded - 如何在arm9上安装uCos [ mini2440 ]

我对嵌入式编程非常陌生,我的第一个项目是在mini2440 [arm9] 上安装 uCos。有没有像我这样的初学者在 arm9 上安装 uCos 的教程?

先谢谢 :)

0 投票
2 回答
837 浏览

android - Android OS 内核相关查询

我想写一些关于 Android 内核的案例研究。这将是我在高级操作系统课程中课程的一部分。我想要的主要关注点是如何在任何 RTOS 中实现优先级队列的实际实现,只是为了将其与我们在课堂上学习的理论联系起来。但我开始知道,查找信息确实是一项艰巨的任务,而不仅仅是拥有一个好主意。:( 所以现在我想将自己限制在 1. 非常具体的内核(进程或内存)或 2. Android 和 Linux 操作系统的差异 我观察到的是,尽管我们对它们都有一些信息但是给出的数据甚至可以在我的教科书中看到。我想要的是实际的差异。

我希望我能得到一些指示。

0 投票
1 回答
911 浏览

c - 在 uC-OS/II 中从 USB 记忆棒读取/写入文件

我有一块带有 ARM 处理器和 micrium RTOS 的板子。我需要从 USB 记忆棒读取/写入文件。例如,重命名文件的标准函数是下一个 -

我需要将哪个路径写入 sExistingName 以指向我的 USB 记忆棒上的文件?