问题标签 [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.
c - FreeRTOS 配置TICK_RATE_HZ
我正在使用带有 FreeRTOS 5.4 版的 MSP430f5438。
我有一个有趣的问题,我无法弄清楚。
基本上,当我将 configTICK_RATE_HZ 设置为不同的值时,LED 会更快或更慢地闪烁;它应该保持不变。我将 configTICK_RATE_HZ 设置得越高,它就会闪烁得越慢,而当我将 TICK_RATE 设置得越低时,它就会越快闪烁。
vTaskDelayUntil(&xLastFlashTime, xFlashRate); 这样无论 configTICK_RATE_HZ 是什么,LED 都应该每秒闪烁一次。我一步一步检查了 xFlashRate 以确保。它总是 = 到 configTICK_RATE_HZ。代码:
当我将 configtick_rate_hz 设置为 1000 时,LED 闪烁的周期大于 1 秒,当我将滴答率设置为小于 ~200 时,LED 闪烁的周期远小于 1 秒
configTICK_RATE_HZ 不应影响 LED 闪烁时间。
我意识到需要更多信息,并且会随时提供所需的任何代码片段来提供帮助。
embedded - 是否有可用的 FreeRTOS 解释语言库?
我在一家使用 FreeRTOS 为多个设备创建固件的公司工作。最近我们对新功能的要求已经超过了我们的固件工程师的工作量,但我们现在也雇不起任何新人。即使是微小的更改,也需要固件人员在非常低的级别上进行修改。
我一直在为 FreeRTOS 寻找某种解释语言项目,它可以让我们在更高级别实现新功能。理想情况下,我希望最终得到一些东西,这样设备就更接近于我们编写驱动程序的通用计算机,而不是我们必须自己实现每个功能。
是否有任何解释 java、python 或类似字节码的 FreeRTOS 项目?
我在谷歌上看过,但由于我自己不是固件工程师,我不确定我是否正在寻找正确的关键字。
感谢大家
c - FreeRTOS 在调度程序启动之前(或在它停止之后)排队等待 IO
我正在寻找有关如何在操作系统调度程序可能尚未启动、正在运行、暂停或可能已停止的环境中最好地实现线程安全 IO(例如,用于调试串行端口的 printf)的建议,或者坠毁。我正在使用 Newlib 和 FreeRTOS。
目前,我正在使用(看似标准的)FreeRTOS 方法,将 _write 系统调用(Newlib)队列字符放入 FreeRTOS队列,然后从中断服务例程中清空(填充串行端口硬件 FIFO,然后等待FIFO 空中断)。
这样做的缺点是(至少在 FreeRTOS 上)队列只能在调度程序运行时安全使用,并且在禁用中断时无法打印调试输出(因为它们在引导期间直到调度程序启动,或者在致命之后错误条件(正是调试 printf 输出最有用的地方:-)。
最好让_write系统调用查询调度程序和/或中断状态,如果调度程序正在运行,则使用队列,并在禁用中断时使用阻塞/轮询串行IO?有没有更优雅的想法我还没有想到?
谢谢
msp430 - 如何使用 CCE 在 MSP430 上获取 FreeRTOS?
我想使用 Code Composer Essentials v3.1 在 MSP430 处理器上运行 FreeRTOS。我在http://www.westmorelandengineering.com/toc.htm找到了一个例子。具体来说,我正在使用最上面的 FreeRTOS_Demo.zip。当我尝试使用 CCE 打开它时,我收到一个错误,指出工作区“不是由这个版本的 Code Composer 创建的”。因此,我尝试导入项目,但出现错误“由于以下错误,无法读取托管 Make 项目:找不到项目类型 com.ti.ccstudio.managedbuild.ui.programTargetID。托管 Make 功能将不可用对于这个项目。”
我想知道我的问题是什么以及如何才能构建项目,或者我应该以不同的方式解决这个问题?
sqlite - 使用 FOpen* 的 SQLite VFS 实施指南
我即将使用 FOpen、FRead、FWrite、FSeek 和 FClose 为 Netburner 嵌入式设备(非 Windows)实现自定义 VFS(虚拟文件系统)。我很惊讶我找不到可用的 VFS 的 FOpen* 版本。它将使其对嵌入式设备更具可移植性。
我在这里找到了一些关于为 SQLite 创建 VFS 的信息http://sqlite.org/c3ref/vfs.html 但这些信息非常详细,而且我还有很多关于实现的其他问题。
我在 Win、OS2、Linux 的 SQLite 源代码中有一些示例 VFS,但它们没有很多注释,只有源代码。
我可以使用上面链接中提供的信息和示例来创建我的自定义 VFS,但我敢肯定,如果我这样做,我会错过一些东西。
我的问题是:
- 还有关于我缺少的 SQLite VFS 的更多文档吗?也许是实施指南?
- 是否有可用的 SQLite VFS 的 Fopen 版本?
- 创建自定义 SQLite VFS 后,是否有可用于测试自定义 SQLite VFS 的单元测试代码?
- 您想分享的关于实施 SQLite VFS 的建议、评论和经验。
gcc - 使用 FreeRTOS 和 OpenOCD 配置 GCC
我很确定这是可能的,但我不知道该怎么做。一般来说,我对使用 GCC 构建非常陌生,而且我从未使用过 FreeRTOS,但我想尝试让操作系统在 TI ARM Cortex MCU 上启动并运行,但略有不同:我想得到它与 Pascal 一起运行。我很好奇:
- 这甚至可能得到工作?如果不是,那么接下来的问题就是有争议的问题。
- 在我的 Delphi 时代,我隐约记得访问 C 库中的函数的能力。我想知道我是否可以访问 FreeRTOS 中的 C 例程。
- 如果我使用 GCC 版本(首选),我可以在目标上使用 OpenOCD 进行调试吗?我不太确定调试符号是如何工作的,以及它是否或多或少与语言无关(希望在这种情况下)。
- 作为一个有点超出原始查询范围的附加问题,我可以在 x86 处理器(例如我的开发 PC)上模拟 FreeRTOS,以便在开发过程中更轻松地进行调试吗?(当然,使用 Pascal 程序..)
我还没有找到任何关于实现这一点的文档,所以希望这里的人能有所启发!任何资源都是最有帮助的。就像我说的,我对这种发展很陌生。如果您认为有更好的选择,我也愿意接受建议。
仅供参考,我首选的主机配置类似于:
- Linux (Ubuntu/Debian)
- Eclipse IDE 用于开发、单元测试和希望的模拟/调试
- 用于目标调试的 OpenOCD
- 目标上的 GNU Pascal + FreeRTOS
c - 多对一网守任务同步
我正在研究一种使用网守任务来访问共享资源的设计。我现在拥有的基本设计是看门人任务从中接收的单个队列以及将请求放入其中的多个任务。
这是一个内存有限的系统,我使用的是 FreeRTOS(Cortex M3 端口)。
问题如下:异步处理这些请求相当简单。请求任务将其请求排队并继续其业务、轮询、处理或等待其他事件。为了同步处理这些请求,我需要一种机制来阻止请求任务,这样一旦请求被处理,网守就可以唤醒调用该请求的任务。
我能想到的最简单的设计是在每个请求中包含一个信号量,但考虑到内存限制和 FreeRTOS 中相当大的信号量,这是不切实际的。
我想出的是使用任务挂起和任务恢复功能手动阻止任务,将句柄传递给网守,它可以在请求完成时恢复任务。但是,暂停/恢复存在一些问题,我真的很想避免它们。无论任务被其他调用挂起多少次,一个恢复调用都会唤醒一个任务,这可能会产生不良行为。
一些简单的伪 C 来演示挂起/恢复方法。
我计划在此期间使用的一种解决方法是使用异步调用并在每个请求任务中完全实现阻塞。当操作完成时,网守将执行提供的回调,然后可以发布到任务的主队列或特定的信号量,或任何需要的东西。对请求进行阻塞调用本质上是一种便利功能,因此每个请求任务都不需要实现这一点。
伪 C 来演示特定于任务的阻塞,但这需要在每个任务中实现。
也许最好的解决方案就是不在网关守卫和 API 中实现阻塞,并强制每个任务处理它。不过,这会增加每个任务流程的复杂性,我希望我可以避免它。在大多数情况下,所有调用都希望阻塞,直到操作完成。
是否有一些我遗漏的结构,或者只是我可以用谷歌搜索的这类问题的更好术语?我在搜索中没有遇到过这样的事情。
附加说明- 看门人任务的两个原因:
需要大的堆栈空间。与其将这个要求添加到每个任务中,网关守卫可以拥有一个包含所有所需内存的堆栈。
CPU 中的资源并不总是可访问的。它不仅同步 CPU 中的任务,还同步 CPU 外的任务。
linux - freeRTOS 和并行处理
这是一个简单的问题:freeRTOS 是否像“真正的”Linux 系统那样处理多个进程中的多个线程?
c - 用于嵌入式系统的小型 libc
我正在寻找一个小型 libc,用于在 ARM7 微控制器上与 freertos 一起使用。我看过 newlib,但它对我的需要来说有点太复杂了。Newlib 在许多函数(例如 printf())中调用 malloc(),这对小型嵌入式实时系统不利。
有谁知道适合我的应用程序的小型可移植开源 libc 实现?
c - FreeRTOS 任务不是上下文切换
我在 PIC32MX 入门套件上为 PIC32 微控制器使用 FreeRTOS 端口。只是在玩任务,但任务不是上下文切换。这是我的主要配置设置:
现在我定义了两个任务,它们使两个 LED 闪烁。两者的优先级均为 4(最高)。在正常操作下,LED 应每隔 100 个滴答声交替闪烁。但这不会发生。第二个 LED 闪烁 100 次,然后控制转到通用异常处理程序。为什么会这样?好像根本没有安排。