问题标签 [rtems]
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 - 外部符号值自动分配到 RAM 末尾
我不明白为什么外部符号等于链接器中定义的 ram 的结尾。
特别是,我在下面的 rtems 代码中看到了这种情况:
外部符号“rdb_start”定义 - start.S - 第 155 -157 行
外部符号“rdb_start”用法 - bspgetworkarea.c - 第 23-41 行
例如,当您在链接器中定义 RAM 大小 0x800000 并将入口地址设为 0x40000000 时,rdb_start 值自动对应于 0x407FFFF0。如果您定义任何其他类似于 rdb_start 的符号并将其设为全局 rdb_start,您会看到相同的结果。它的值自动分配给 407FFFF0。
为什么?
c++ - 为以太网适配器设置自定义 ip 时绑定套接字失败
问题
在我们运行 RTEMS 4.9.2 的系统上,我们遇到了一个非常奇怪的套接字通信问题。我们正在设置一个套接字并使用以下命令进行绑定:
这适用于 UDP 通信,除非在下面解释的奇怪的特定场景中。bind
即使设置正确,我们遇到的问题是此调用失败。我们得到125
RTEMS 的错误是EADDRNOTAVAIL
:
请求的接口不存在或请求的地址不是本地的。
明显的原因
在设备启动时,我们可以通过以下两种方式之一来设置我们的网络:
网络 IP 和子网是根据默认引导加载程序 (UBOOT) 中的内容自动配置的,并通过 RTEMS 操作系统进行设置。
启动时间后调用RTEMS 函数
rtems_bsdnet_ifconfig
来更改唯一以太网接口的 IP 地址。
为了澄清起见,选项 2 的调用如下:
如果按照选项 1 的指示设置网络,则一切都按预期工作,但如果使用选项 2(即使设置与选项 1 定义的网络选项匹配),则套接字绑定将失败。
RTEMS 是否存在已知原因或错误,表明如果您重新配置 IP,此绑定将失败?
附加信息
我们正在使用一种基本上使用
ioctl("eht1", SIOCSIFADDR, ...)
.如果我们绑定我们的套接字而不指定本地地址(即使用
INADDR_ANY
),那么它在任何情况下都有效。rtems_bsdnet_ifconfig
是函数的简单接口ioctl
。它来自rtems_glue.c
并具有功能签名int rtems_bsdnet_ifconfig(const char *ifname, uint32_t cmd, void *param)
除了这个绑定之外,所有正常的网络功能似乎都可以工作。
看了这个之后,我想也许我需要做更多的事情来重置我的 IP 地址。但这不起作用,使用第一个答案甚至做任何事情
SIOCSIFFLAGS
都会导致所有网络功能停止。
c - 在 rtems 中使用 powf 函数(未定义对 powf 的引用)
我正在尝试在 rtems 应用程序中使用 powf 函数。当我打电话给 powf(a,b); 在 Init() 函数内部,它编译正常。但是当我在其他函数中调用 powf 时,即使我有那些#include <math.h>
和#include <float.h>
. 我事件尝试合并文件,但它是相同的。
可能是什么问题?
编辑(添加):我在下面添加了源代码和生成文件。编译后的 rtems OS 包由 shell 环境变量 RTEMS_MAKEFILE_PATH 指定。
生成文件:
../Makefile.base :
../src/init.c:
../../../../abfrcnn/bare-c/lrn_layer/lrn_layer.c
命令的结果make
:
linux - 不是由 rtems 中的 mkdir 函数创建的文件
我写了一个在linux上运行的functino,在处理数据时会在linux上生成一些文件。我在 rtems(一个实时操作系统)中调用了该函数,它编译正常,并且在很大程度上似乎运行良好。但我发现它无法在指定目录中创建结果文件(这是一个选项)。(我将 SD 卡用于文件系统)。我有一个一年前编写的测试程序,我在其中测试文件在 SD 卡上的读取、写入和复制,一切正常。但是在我通过修改 SD 卡测试程序并添加更多东西(与深度学习相关)而制作的这个新应用程序中,该程序无法生成文件。在代码中,它检查是否存在名为“result”的目录,如果不存在,则创建该目录并生成通过 index.html 循环的文件。我希望有人能找出问题所在。标头对于 linux 和 rtems 都可以。(rtems 具有相同的标头)文件系统正常,mkdir 返回 0。我尝试从 rtems 添加一些标头(来自运行良好的测试程序),但它没有工作。可能是什么问题呢?任何帮助或建议表示赞赏。
以下是部分处理结果:
rtems - RTEMS libbsd 编译问题
对于 sparc 和 4.12 版本,我按照链接 https://github.com/RTEMS/rtems-libbsd中提到的步骤进行操作。
在这一步我得到了一个错误
cross-compiling - RTEMS 没有构建?
我正在尝试通过以下列出的说明来编译 RTEMS:
https://devel.rtems.org/wiki/TBR/UserManual/Quick_Start
我使用“RTEMS Source Builder”为 SPARC 架构生成了一个交叉编译器套件:
我的目录结构如下:
我通过 git 获得了 RTEMS v4.12:
我正在使用以下脚本来构建 RTEMS:
这是我的make文件输出:
make 和 make 安装步骤非常快(不到一秒钟)完成,而且据我所知,没有任何构建的测试样本或 RTEMS 文件。
理想情况下,我想为我真正的目标架构执行此操作,但我只是想尝试让示例正常工作并对其进行调整,但经过几次尝试后我完全陷入困境。任何想法我做错了什么?
arm - RTEMS STM32F4如何使用BSP
我对 RTEMS 很陌生。我认为已经成功构建 RTEMS 以在 STM32F4 上运行。我已经尝试了示例文件夹中包含的 LED 闪烁示例(槽计时器)(此处:https ://github.com/RTEMS/examples-v2/tree/master/led )。
我已经编译并在我的板上闪烁了它,并且 LED 闪烁,所以我认为有一个很好的设置。不幸的是,没有太多关于“如何使用板级支持包 (BSP)”的示例来对硬件相关功能进行编程。
我想更进一步,我想使用 USART 以便拥有一个对调试和学习有用的控制台。我真的不知道如何使用 BSP(在代码级别)来实现 USART 或更一般地实现硬件驱动程序。我应该定义什么?我需要打什么电话?我可以想象,使用 RTEMS 和 BSP,我不应该在“寄存器级别”编写代码。我对吗?有人可以给我一个简单的例子吗?你能给我一些关于这个论点的澄清吗?
在此先感谢您的帮助。洛伦佐
c - 套接字失败:协议族不支持地址族
我正在尝试使用 RTEMS 5 创建一个 BSD 套接字以实现 UDP 通信。我有以下功能:
执行期间返回以下错误:
协议系列不支持地址系列 (106)
此代码对应于 EAFNOSUPPORT。我发现此错误是针对其他功能的bind()
,但不是针对socket()
. 我认为这与 RTEMS 配置有关……但是什么?
提前致谢
c - 如何链接应用程序以通过 RTEMS 进行动态加载?
我正在使用RTEMS 4.11 和内置的 POSIX API 函数将程序映像动态加载到内存中。使用以下代码将程序映像加载到 RTEMS 中:
我正在使用 RTEMS Source Builder 构建的 GCC 来编译位于prog_name
内存文件系统中的对象。
我应该使用什么命令行来正确编译要以这种方式加载的单个 C 文件?
作为参考,我尝试了以下命令行选项,但出现错误:
我还尝试了一些其他组合并使用该rtems-ld
程序。有任何想法吗?