问题标签 [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.

0 投票
1 回答
126 浏览

c++ - RTEMS驱动程序定义中用于数组设置的“太多初始化程序”

背景

我正在使用 RTEMS 并尝试设置本机 NFS 客户端。尽管我已正确包含此内容,但驱动程序可用的动态驱动程序条目不足。您可以在此处寻求更多信息。

执行

为了设置额外的动态驱动程序,需要将 NULL 元素添加到一个大的免费驱动程序表中。请参阅以下内容:

本质上,这是在构建设备驱动程序表......

除冰驱动程序如下所示:

问题

可能非常简单的问题是,当我构建它时,我收到以下错误:

这里看,这似乎是用未指定数量的表元素编译的问题。我不明白的是,如果我用 7 s(我需要的数字)指定它,它目前正在工作,它会失败,但是用 6 s 它工作得很好?NULL_DRIVER_TABLE_ENTRYNULLNULL

据我所知,该表或其元素的大小没有定义?有任何想法吗?

0 投票
0 回答
739 浏览

c - 在eclipse中构建项目时出现错误2

16:22:14 **** 项目 ccsds-compression.git.old 的默认配置增量构建 **** 使所有
“构建文件:../../src/AC_Coding.c” sparc-leon3-none -gcc.exe -c -O3 -pedantic -Wall -msoft-float -mcpu=v8 -mtune=leon -Wno-long-long -funroll-loops -fmessage-length=0 -std=c99 -I。-I....\src -o AC_Coding.o ../../src/AC_Coding.c process_begin: CreateProcess((null), sparc-leon3-none-gcc.exe -c -O3 -pedantic -Wall - msoft-float -mcpu=v8 -mtune=leon -Wno-long-long -funroll-loops -fmessage-length=0 -std=c99 -I. -I....\src -o AC_Coding.o ../ ../src/AC_Coding.c, ...) 失败。make (e=2): 系统找不到指定的文件。
make: *** [AC_Coding.o] 错误 2

我在构建项目时收到此错误。有人可以指导我如何解决这个问题吗?

0 投票
0 回答
91 浏览

libc - libc 中的函数“创建”

我正在尝试为我的MicroBlaze处理器构建RTEMS (www.rtems.org) ,但我有一个无法修复的错误。

使用时autoconf,会生成文件conftest.c并需要creat()libc 中的函数。但是,libc 没有该功能creat(),因此它失败并出现错误。

有谁知道为什么缺少此功能,我该如何解决?

0 投票
0 回答
136 浏览

c - 在 Ubuntu 上编译 RTEMS RTOS(未安装)并使用其链接器脚本运行简单的 c 程序

作为我项目的一部分,我需要在 ubuntu 上编译 RTEMS,并且需要访问它的链接器脚本来运行简单的 C 程序。

主要是,我需要以下强大的第一部分的帮助:第 1 部分。在 Ubuntu 上编译 Rtems(不安装 Rtems)。如何在不安装的情况下编译操作系统?

我从哪里开始?我试过在很多地方搜索这个,但一无所知。

事情/si已经尝试过:

1.make在rtems-4.6.2目录下运行

2. 广泛搜索——一切都让我在交叉开发环境中下载 rtem。

任何指导将不胜感激。非常感谢。

0 投票
2 回答
875 浏览

ubuntu-14.04 - RTEMS编译安装错误

我正在尝试在 Ubuntu 14.04 上编译 RTEMS。

尝试运行“make”时出现以下错误:

make all in tools/build make[1]: 进入目录/home/user/development/rtems/b-sis/tools/build' make all-am make[2]: Entering directory/home/user/development/rtems/b-sis/tools/build' make[2]: 离开目录/home/user/development/rtems/b-sis/tools/build' make[1]: Leaving directory/home/user/development/rtems/b-sis/ tools/build' make all in tools/cpu make[1]: 进入目录/home/user/development/rtems/b-sis/tools/cpu' Making all in generic make[2]: Entering directory/home/user/development/rtems/b-sis/tools/cpu/generic' make[2]: 无事可做all'. make[2]: Leaving directory/home/user /development/rtems/b-sis/tools/cpu/generic'make[2]:进入目录/home/user/development/rtems/b-sis/tools/cpu' make[2]: Nothing to be done forall-am'。make[2]: 离开目录/home/user/development/rtems/b-sis/tools/cpu' make[1]: Leaving directory/home/user/development/rtems/b-sis/tools/cpu' 全部在testsuites/tools make[1]: 进入目录/home/user/development/rtems/b-sis/testsuites/tools' Making all in generic make[2]: Entering directory/home/user/development/rtems/b-sis/ testsuites/tools/generic'make[2]:all'. make[2]: Leaving directory/home/user/development/rtems/b-sis/testsuites/tools/generic'make[2]:进入目录/home/user/development/rtems/b-sis/testsuites/tools' make[2]: Nothing to be done for全是'。make[2]: 离开目录/home/user/development/rtems/b-sis/testsuites/tools' make[1]: Leaving directory/home/user/development/rtems/b-sis/testsuites/tools' 全部在 sparc-rtems4.11/c make[1]: 进入目录/home/user/development/rtems/b-sis/sparc-rtems4.11/c' Making all in . make[2]: Entering directory/home/user/development/rtems/ b-sis/sparc-rtems4.11/c' make[2]: Nothing to be done for all-am'. make[2]: Leaving directory/home/user/development/rtems/b-sis/sparc-rtems4.11/c' make all in sis make[2 ]:进入目录/home/user/development/rtems/b-sis/sparc-rtems4.11/c/sis' make[2]: *** No rule to make targetall'。停止。make[2]: 离开目录/home/user/development/rtems/b-sis/sparc-rtems4.11/c/sis' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory/home/user/development/rtems/b-sis/sparc-rtems4.11/c' make: *** [all-recursive] 错误 1

这是我遵循的步骤列表:

  1. 要安装工具,我使用 RSB 并运行此处列出的所有命令: https ://devel.rtems.org/wiki/Developer/Tools/RSB

  2. 然后我遵循了这个命令列表: https ://devel.rtems.org/wiki/TBR/UserManual/Quick_Start

在此列表中,我尝试更改 PATH 变量 = /development/rtems/4.11/bin=$PATH

除此之外,这一切都是由我按照此处列出的命令完成的。我也做了 ./bootstrap -p 。

0 投票
1 回答
589 浏览

python - Ubuntu 15.04 的 RTEMS 构建失败

我尝试在 ubuntu 15.04 中为 rtems 构建 rsb,但由于 python,gdb 无法安装。

$python --version

这是Python 2.7.10

我也安装了$sudo apt-get install python-all-dev

我在 SO 上找到的一种解决方案是

无法使用 python 支持安装 GDB我不知道如何将此解决方案与我的问题集成。任何帮助,将不胜感激。

rtem 的错误日志:

0 投票
2 回答
175 浏览

linux - 在 Linux Mint 上构建 rtem 时 shell cmd 失败

我试图在 linux mint 17.02 系统上使用 RTEMS Source Builder 构建 RTEMS。我收到 shell cmd failed 错误,即(错误报告的最后几行)

我们可以看到

85: cd: 不能 cd 到 rtems-tools-4.11

但是通过终端使用 cd 我们可以做到..

谁能提供此错误的解释或解决方案?

0 投票
2 回答
532 浏览

c++ - 对“nfsInit”的未定义引用

我目前正在尝试将 NFS 服务器集成到RTEMS 4.9.2POWER PC 5200. 这将很难简洁地解释,所以请耐心等待。

RTEMS NFS

目前 RTEMS 通过 nfs.c 文件实现 NFS 客户端。为了激活命令行界面并能够使用mount -t nfs ...您需要添加#define CONFIGURE_SHELL_MOUNT_NFS到配置文件并将 rtems nfs 文件与-lnfs. 有关更多详细信息,请参见此处。正确执行此操作使我们能够实现 RTEMS nfs 客户端,并且我们可以从命令行挂载远程驱动器。

直接使用 RTEMS NFS 客户端

我们没有在程序中公开 RTEMS 命令行,因此我们希望能够直接使用 nfs 接口。RTEMS 库提供了librtemsNfs.h包含实现 nfs 客户端的功能。这些函数的实现在nfs.c其中被编译以创建 2 个库中的 1 个:

  1. libnfs.a
  2. nfs.rel

两者都需要构建。作为我们代码的一部分,我们正在使用在nfsInit(...中声明librtemsNfs.h和定义的函数nfs.c

错误

所以错误非常明显。当我们构建时,我们得到链接器错误:

尝试链接这些库

为了将这些联系起来,我们尝试了多种方式。我们有一个makefile但为了让每个人都更容易做到这一点,我将展示命令行构建的结果。我们尝试过:


  1. 推荐的方法是链接 -lnfs (来源 - 一个老问题),这样做会产生一个很好的长而复杂的构建命令:

powerpc-rtems4.9-g++ -g -Wall -g -mcpu=603e -mstrict-align -meabi -msdata -fno-common ... -MANY_PREPROCESSOR_ARGUMENTS ... -MANY_INCLUDE_FILES ... Map=./exe/srvevp。 map -lc -lm --gc-sections -lnfs -mcpu=603e -mstrict-align -meabi ... -MANY_OBJECT_FILES ... ./exe/obj/srvinit.o ... -MANY_MORE_OBJECT_FILES

-lnfs在包含有问题的目标文件 ( ) 之前,我们的编译和链接命令具有, srvinit.o。但是我们仍然得到链接器错误。


  1. 我试图通过路径直接链接到.aand.rel文件。我们通过/c/rtems-4.9/powerpc-rtems4.9/5200/lib/libnfs.a /c/rtems-4.9/powerpc-rtems4.9/5200/lib/nfs.rel在命令行中添加:来做到这一点。我们在有问题的目标文件之前和之后都添加了它。我们还尝试使用-L命令强制按路径链接。所有这些都会导致相同的错误。

其他一些信息

这很难描述,但是当删除libnfs.a文件的直接链接时,即使没有直接使用 nfs,我们也无法构建。IE。内部 RTEMS 文件无法相互链接。这很奇怪,在我看来你应该只需要-lnfs构建命令行选项,但即使没有这个标志它也能成功构建。如果没有直接包含,我们会得到错误:

这是 rtems shell 代码无法链接。如果我们将/c/rtems-4.9/powerpc-rtems4.9/5200/lib/libnfs.a /c/rtems-4.9/powerpc-rtems4.9/5200/lib/nfs.rel加到构建行的末尾,那么一切都会成功。

要重新迭代,构建需要直接包含 nfs.a.rel文件的命令行功能,您不需要使用-lnfs.

问题

所以第一个也是最明显的问题是,为什么这不是链接,即使我明确给出了库文件?我对此的想法是,也许这些文件不包括我正在尝试使用的函数的定义。但这在其他信息部分不可信,因为我需要它们链接 RTEMS 操作系统本身的功能。

我知道这也很难给出直接的答案,因为如果没有安装 PC 和所有编译器等,它将非常无法重现。我如何检查 lib 文件是否包含我的函数的定义并被链接以正确的顺序?该编译器是 RTEMS 为 Power PC 5200 提供的 BSP 特定GCC样式编译器。它接受 GCC/G++ 4.2 可接受的大多数编译器选项。

最后,有什么好的方法可以调试这样的链接器问题吗?.

0 投票
2 回答
526 浏览

c - RTEMS 如何获取 DMA 可访问内存

我正在通过从 Linux 移植它来实现以太网卡的 RTEMS 驱动程序。大部分工作已完成,处理器 IO 模式工作正常,中断处理也正常。现在我在实现 DMA 时遇到问题。

具体来说,在我用作基础的 Linux 驱动程序中,使用了函数 dma_alloc_coherent()。此函数将返回两个不同的地址:一个是驱动程序代码(主机 CPU)将看到的地址,另一个是卡在 DMA 期间通过 PCI 访问同一内存区域的地址。

我在寻找合适的替换功能时遇到问题。首先我想到了使用 malloc() 然后 pci_pci2cpu 将此地址转换为一张卡可以访问的地址,但是 pci_pci2cpu 对于 IO 返回 0xFFFFFFFF ,对于其余两种模式返回 0x0 。

我考虑的第二种方法是使用双端口内存管理器,但我没有找到有用的使用示例。例如,rtems_port_create() 函数需要提供指针 *internal_start 和 *external_start,但我不确定这些指针来自哪里?

我使用 Gaisler RTEMS 4.11 版和 Sparc 架构(LEON3 cpu)。

最好的,伊万

0 投票
1 回答
71 浏览

c - 让 .c 源文件在编译时存储 .txt 信息

我正在使用 C 为给定目标(更具体地说是 LEON 处理器)制作一些 RTEMS 应用程序。

在做各种教程时,我注意到由于无法加载模拟 .txt 文件,解决方案是让 .c 源文件(我们称之为它们inputs.c)保留各种 512x512 全局输入矩阵,并externmain文件。

我正在尝试查找有关此程序的信息,但没有找到。

我的问题:在示例的文档中,他们声明在某些时候他们将inputs.c通过 UART 将全局矩阵从 PC 传输到目标。文件不是inputs.c和所有其他 .c 文件一样加载到 LEON 处理器中吗?