- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对创建任务的 RTOS 方法不熟悉。之前,我在 Raspberry Pi 上使用 pthread,这使我能够同时运行 2 个任务,
1)每2秒通过套接字发送数据
2)每当从客户端发送数据时,通过套接字接收数据
我想做同样的事情,但 CC3200 目前在 RTOS 上运行,我读到你只能暂停任务并运行另一个任务,但我需要同时运行这两个任务。
我尝试这样做:
osi_TaskCreate( WlanAPMode, \
(const signed char*)"wireless LAN in AP mode", \
OSI_STACK_SIZE, NULL, 1, NULL );
osi_TaskCreate( SendAnalogInputToClient, "Analog Input to Client",\
OSI_STACK_SIZE, NULL, 1, NULL );
osi_start();
但我的第二个任务似乎没有运行。有人有这方面的经验吗?
最佳答案
我认为您误解的是并发和任务/线程执行的一般概念。
Raspberry Pi 和 CC3200 都有一个单核处理器 - 也就是说,它们的处理单元一次只能执行一条指令。与现代计算机可能具有多个内核并且有时可以通过使用超线程执行两倍的线程不同,单核处理器由于其设计而不允许在任何给定时间执行多于一条指令。
您使用 Raspberry Pi 所做的只是运行操作系统(我假设是 Raspbian)“同时”执行的多个“线程”。我将它们放在引号中,因为它们不是真正的线程,并且并发性也不是真实的。您只是对并发有一种印象,因为两个程序共享处理器时间,尽管核心一次只执行一个程序。操作系统的工作就是在两个“线程”之间切换并给人留下并发的印象。当处理单元切换到另一个任务并将其上下文加载到其寄存器时,这就是所谓的上下文切换。
同样的情况也发生在 CC3200 和 SYS/BIOS TI-RTOS 上。在任何给定时刻仅执行一项任务。程序员(或架构师)的工作是设计系统,以便为所有任务提供正确执行所需的处理时间。
您的代码在这里并没有真正的帮助,因为您正在正确地启动任务。问题出在任务源代码上。我假设你的第一个任务永远不会休眠/延迟/阻塞,并且它消耗 100% 的处理时间。这就是为什么你的第二个任务永远没有机会运行的原因。
这是一个很好的起点:http://processors.wiki.ti.com/index.php/SYS/BIOS_Online_Training
关于CC3200 RTOS 多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46504263/
假设有 6 个任务,在 6 个中,有 4 个(任务)正在等待一个信号量。当信号量发出信号时, 会做出什么决定?实时操作系统 which tasks to pick from the waiting(f
我希望编写一个非常基本的 RTOS,它可以在两个任务之间切换。它不适合任何专业用途。只是为了好玩 大多数引用资料都是关于如何使用 RTOS,而不是如何编写 RTOS。 引用像 FreeRTOS 这样的
如果有人可以解释 RTOS 中的滴答率过高的影响,或者指导我找到清楚解释它的资源,我将不胜感激? 问题的上下文... 我们使用 ucos-ii 运行,滴答率为 10000 (OS_TICKS_PER_
Zephyr 实时操作系统 https://www.zephyrproject.org/是一个 Linux 基金会项目。 Linux 以其 GPL 许可证而闻名。那么为什么 Zephyr RTOS 使
假设有两个任务正在运行TASK_A和TASK_B。当TASK_A运行时,发生中断,需要将上下文切换到TASK_B。 在ISR内时,不应直接跳过TASK_B,因为它仍在ISR中并且尚未返回(例如:未执行
我想了解操作系统节拍时间是什么意思,它有什么用? 以及它与 CPU 节拍率有何不同 最佳答案 系统节拍是操作系统计时器和延迟所基于的时间单位。系统节拍是一个调度事件 - 即它会导致调度程序运行并可能导
我正在尝试从头开始学习 RTOS,为此,我使用 freeRTOS.org 作为引用。我发现这个站点是学习 RTOS 的最佳资源。但是,我有一些疑问,我试图找出答案,但无法得到确切的答案。 1) 如何找
在基于 ARM7 的 C 语言编程的嵌入式应用程序中(具有可移植性要求),当前使用基于商业优先级的抢占式 RTOS,我们需要根据客户要求删除该 RTOS 和任何 RTOS 依赖项。我们有 8 个任务使
我对嵌入式世界还很陌生。我在为基于 ARM M0+ 的飞思卡尔微处理器编码固件方面有一些经验。我目前正在使用 CML-5282 开发板 (M5282LITE) 进行一个新项目,它带有 RTXC Qua
首先是背景,我的问题的细节如下: 在我工作的公司,我们工作的平台目前是 Microchip PIC32 系列,使用 MPLAB IDE 作为我们的开发环境。以前,我们还为同一应用编写了 Microch
FreeRTOS 使用什么样的调度程序? 我在某处读到它是一个运行完成调度程序,但另一方面,我也看到它与并行任务一起使用,所以它不会是一个循环调度程序? 最佳答案 最高优先级的任务被授予CPU时间。如
我正在对 TI 的一 block 板进行编程,并且我希望能够以某种方式将两个不同的 ISR 发布到任务的消息队列中。那部分工作正常。但是,在接收端,是否有任何智能方法可以让任务挂起在队列中,并根据发布
FreeRTOS 使用什么样的调度程序? 我在某处读到它是一个运行完成调度程序,但另一方面,我也看到它与并行任务一起使用,所以它不会是一个循环调度程序? 最佳答案 最高优先级的任务被授予CPU时间。如
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我正在编写一个模块,其中包含一个具有最高优先级的任务,并且它应该处于阻塞状态,直到它收到来自其他任务的消息,开始履行其作为最高优先级任务的职责。它使用邮箱机制进行信令。 我的问题是我希望任务 - 向更
所以我对为我实现的游戏形成线程的最佳方法有点困惑。游戏非常简单,你必须操纵你的飞船来躲避来袭的墙壁。 目前我的代码只是循环执行,直到宇宙飞船爆炸。以此 while 循环表示(如果游戏结束,notBlo
我对创建任务的 RTOS 方法不熟悉。之前,我在 Raspberry Pi 上使用 pthread,这使我能够同时运行 2 个任务, 1)每2秒通过套接字发送数据 2)每当从客户端发送数据时,通过套接
简单背景: 在我的 MCU 上运行 freeRTOS。 我的项目中的功能之一是一个处理存储在外部存储器中的参数的库。 基本上在启动时,主函数调用从外部存储器读取所有参数并将它们存储在库内的静态变量(非
我想编写一个需要一些 RTOS API(例如 Mbox 和任务创建 API)的模块! 我正在尝试使用结构化代码并为此查看一些库,例如“lwip”。在“lwip”中有一个名为 Sys-arch.c 的文
我有一个现有的嵌入式源代码,它直接在没有操作系统的微 Controller 上运行。我需要移植代码以在特定的 RTOS 上运行。 在尝试做某事时,是否有关于从哪里开始的指导方针?资源、最佳实践和其他见
我是一名优秀的程序员,十分优秀!