两个任务之间的同步

2023-12-22

这实际上是嵌入式系统中固件的设计问题 我有两个独立执行的 ISR(具有相同优先级)。 当硬件生成数据时,这些 ISR 被触发。 我想要一种必须到位的机制来在任务 1 和任务 2 之间进行同步。任务 2 必须知道任务 1 中计算的某些值,然后在计算任务 2 中的某些值时必须考虑这些值。 我没有可用的操作系统原语,即系统没有任何操作系统。 任务 1 在 ISR1 的上下文中执行,任务 2 在 ISR2 的上下文中执行。 我们使用的处理器是 STMicroElectronics 32 控制器

编辑:附加信息 处理器连接到某些 IP,这些 IP 在准备好数据时会触发中断。这些 IP 充当输入流帧数据上的累加器类型。


我不会在中断上下文中进行繁重的处理,只需读取数据并设置一个标志。

然后可以在主循环中的简单调度程序中检查标志,以根据需要执行任务。因此任务不能互相中断,也看不到另一个任务不一致的输出。

任务还可以设置这样的标志来激活另一个任务。例如。任务 1 可以激活任务 2,因为任务 2 需要来自任务 1 的值。

对于在 ISR 中读取的数据,您需要一些缓冲区。根据传入数据的时间,可能是环形缓冲区或双缓冲区。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

两个任务之间的同步 的相关文章

  • 在哪里可以找到有关 IOS 日历同步的优秀教程? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在开发 iPhone 应用程序 如何将新事件与 iOS 日历同步 您可以浏览此 github 代码
  • 在嵌入式 Jetty 上使用 DefaultServlet 提供静态 html 文件

    我正在开发一个需要独立的项目 因此我决定将 Jetty 嵌入到我的应用程序中 我将提供静态 HTML 页面 一些 JSP 页面 并且还将使用一些自定义 servlet 我找到了一个完美的示例 说明如何设置嵌入式 Jetty 来完成所有这一切
  • 本地 Postgres 实例和 Azure Cloud Postgres 实例之间的实时同步

    我需要在本地 postgresql 实例与云 postgresql 实例之间设置实时同步过程 请让我知道我可以通过哪些选项来实现它 我是否必须使用任何特定工具或者可以通过复制进行管理 请指教 使用 PgPool http www pgpoo
  • Android 上的 SQLite 和 MongoDB 具有同步功能

    是否可以在 Android 上使用 SQLite 在服务器上使用像 MongoDB 这样的 NoSQL 数据库 并在两者之间进行 2 路数据复制 同步 或者最好在两端使用 SQL 或者在两端使用 NoSQL 但不要混合使用 有几种不同的方法
  • 如何避免服务器端和客户端的重复验证?

    如何避免服务器端和客户端的重复验证 是否有一个网络编程平台可以从另一个生成一个 这样我就不必保持两者同步 有些框架可以从服务器端验证配置生成客户端验证 现在我不知道你使用什么语言或框架 但也许这篇文章可以有所帮助 http www emad
  • 在java中实现你自己的阻塞队列

    我知道这个问题之前已经被问过并回答过很多次了 但我只是无法根据互联网上找到的示例找出窍门 例如this http tutorials jenkov com java concurrency blocking queues html or t
  • 如何使用Python多处理创建同步对象?

    我无法弄清楚如何创建同步的 Python 对象 我有一个名为 Observation 的类和一个名为 Variable 的类 基本上看起来像这样 代码被简化以显示本质 class Observation def init self date
  • 映射文件和链接器文件之间的区别

    链接器生成的映射文件与包含内存段本身的链接器文件有什么区别 链接器 文件是链接器的一组命令 涉及如何在内存中布置所有内容 并由程序员创建 映射 文件是所有内容在内存中位置的列表 由链接器创建
  • Windows CE 与嵌入式 Linux [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 现在我确信我们都清楚 Linux 与 Windows 桌面的相对优点 然而 我对嵌入式开发世界的了解却少得多 我主要对行业解决方案感兴
  • 用于嵌入式系统的简约人类可读序列化格式解析器

    By 人类可读的序列化格式 I mean YAML JSON INI或喜欢 请注意 XML对于我的目的来说太冗长而且太不方便 所以让我们把它作为最后的手段 格式应将数据存储为 命名键 值 配对并允许嵌套和数组 不过 缺少数组并不重要 此外
  • ARM Cortex-M3 启动代码

    我试图了解 STM32 微控制器的 Keil realview v4 附带的初始化代码是如何工作的 具体来说 我试图了解堆栈是如何初始化的 In the 文档 http infocenter arm com help index jsp t
  • 在嵌入式系统上将内核控制台发送到哪里?

    我正在开发一个嵌入式系统 该系统当前通过串行端口 1 上的控制台输出启动 Linux 使用启动加载程序中的控制台启动参数 然而 最终我们将使用这个串行端口 内核控制台输出的最佳解决方案是什么 dev null 能否以某种方式将其放在 pty
  • 最近的文件列表存储在哪里?

    我想在多台计算机之间同步某些 Sublime Tex2 设置 我不想同步的一件事是最近的文件列表 Sublime Text 2 在本地文件系统的哪个位置存储最近打开的文件列表 在 Mac OS X 上 此列表存储在名为Session sub
  • 嵌入式开发系统中JTAG的一般工作流程?

    在我的嵌入式项目中 我使用 JTAG 接口下载代码并调试下载的应用程序 但我不知道 JTAG 设置内部发生了什么 任何人都可以给我 JTAG 设置的基本想法 流程 高级视图 这将真正帮助我更好地理解我的开发系统 为了添加克利福德的答案 这里
  • 在哪里可以找到有关嵌入式 C++ 的信息?

    我想查找有关 嵌入式平台中的 C 编程 的信息 我用谷歌搜索 但无法找到有关该主题的足够信息 我到底想找到的是 C 在嵌入式环境中到底如何有用 并带有详细的描述和示例 如果可用 如果我能得到 任何人都可以建议任何链接或任何免费电子书下载吗
  • 是否“static/extern uint8_t array[2] = {0};”符合ANSI C规范吗?

    我对以下代码有疑问 include all needed h static uint8 t array 2 0 void main void 是否允许按上述方式初始化 模块 全局数组 以便在符合 ANSI C 的情况下将每个成员设置为零 我
  • 如何在嵌入式上进行代码覆盖

    我为非 POSIX 嵌入式系统编写了一个项目 因此我无法使用 gcc 选项 coverage 我没有读或写 我还能做什么来产生类似 gcov 的输出 我确实有输出功能 它可以通过具有嵌入式跟踪的处理器 公开跟踪端口的板设计以及合适的硬件调试
  • 使用 XCHG 解锁的自旋锁

    维基百科提供的使用 x86 XCHG 命令的自旋锁的示例实现是 Intel syntax locked The lock variable 1 locked 0 unlocked dd 0 spin lock mov eax 1 Set t
  • 在LPC2148 ARM处理器上创建中断向量的汇编代码

    我最近刚刚开始使用 LPC2148 ARM 处理器 我试图理解一些有关创建中断向量的汇编代码 这是代码 Runtime Interrupt Vectors Vectors b start reset start ldr pc undf un
  • 尝试了解 ARM 二进制映像中的加载内存地址 (LMA) 和二进制文件偏移量

    我在一家ARM 皮质 M4 STM32F4xxxx 我试图了解二进制文件 elf and bin 在内存中构建并闪存 特别是关于内存位置 具体来说 我不明白的是LMA从实际的二进制文件偏移量进行 翻译 让我用一个例子来解释一下 我有一个 e

随机推荐