问题标签 [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 - 如何获取库函数的内存位置?
我正在使用 SPARC RTEMS C 编译器编译 C 程序。
使用 Xlinker -M 选项,我可以获得一个包含很多我不认识的东西的大内存映射。
我还尝试使用 RCC nm 实用程序,它返回一个更易读的符号表。我假设这个实用程序为 printf 提供的位置是 printf 在内存中的位置,并且每个调用 printf 的程序都将在执行期间到达该位置。这是一个有效的假设吗?
有没有办法获取所有库/系统功能的位置列表?此外,当链接完成时,它是只链接可执行文件调用的函数,还是链接库中的所有函数?考虑到我在符号表和内存映射中找到的东西的数量,在我看来是后者。我可以让它只链接所需的功能吗?
谢谢你的帮助。
gcc - 使用 GCC 在 EEPROM 中创建自定义部分时写入操作的意外行为
这是我的问题,
我正在开发嵌入在我们为太空项目制造的电路板中的应用程序。该板使用 LEON2 处理器,它是 SPARC v8 的衍生产品,我们还使用 RTEMS 作为操作系统。
在这个应用程序中,我们必须在 EEPROM 中保存各种 FS 表的默认值,以便用户可以根据需要修改它们,而不必每次都这样做。
为此,我简单地创建了一个新部分 (.eeprom_data),并将其放置在 EEPROM 中的地址 0x6007cc40 处。这是通过使用规范文件和自定义链接描述文件完成的,该脚本将节定位在正确的地址,并告诉编译器将某些变量放在同一节中。
在这方面它似乎工作得很好。这是该部分和一个特定 var 的 objdump 的摘录:
唯一的问题是它似乎没有完全工作。我的应用程序可以正常运行,没有问题,但是像这样进行简单的测试只能部分工作:
应该在 EEPROM 中写入 0x789A 的写操作绝对没有任何作用。然而,读操作完美地工作并正确返回存储在内存中的数据。
我真的不知道如何解决这个问题,所以我希望有人能帮帮我。
谢谢,莱奥。
gcc - GCC - 链接不成功
对不起我的英语不太好。我会尽力的 :)
我正在尝试用 C 为我的卡西欧图形计算器编译一个插件。使用官方 SDK 时,这可以正常工作。因为它只适用于 Windows,所以我想使用 gcc。
所以我得到了sh-rtems-gcc和它来自 macports 的 binutils 并试图根据这个指令编译我的程序。我复制粘贴了描述的addin.ld和crt0.s并将我的main.c和libfxsys.a(来自与上述说明相同的人)放在同一目录中。子目录包含包含 fxsys 的标头。我用 nm 验证了 .a 文件中库的所有功能是否存在。
使用此命令进行编译时:
一切正常。但后来我试图链接:
并得到以下错误:
所有缺少的符号都在libfxsys.a中。我已经用 nm 验证了这一点。
我已经在命令中使用了库的位置,因为在 google 中找到的其他帖子中,这经常被称为失败的根源,但没有成功。我还尝试添加和删除上述说明中使用的-lgcc选项,但没有成功。
我的主机是 Intel Mac,OS X 10.6
因为我不知道如何解决这个问题,并开始编译我的程序,所以我不得不问:我做错了什么?如何在不使用 SDK 的情况下编译我的程序?
提前致谢, xythobuz
编辑:
我也尝试过链接:
但它产生与上面相同的输出。
open-source - 寻求高覆盖率的项目
我想知道是否有任何覆盖率要求高的项目。更准确地说,我正在寻找:
- 开源项目,我需要访问代码
- 任何类别的软件,例如库、操作系统、gui
- 所达到的覆盖率数据。这里的覆盖可以表示为语句覆盖、分支、MC/DC
- 任何语言
我已经有这样的例子了。它是一个免费的开源 RTOS,RTEMS。你还有其他例子吗?
先感谢您。
concurrency - 处理器并发 PCI 读取
我正在开发一个使用 LEON2 (SparcV8) 处理器的项目,并且我们有一个连接其他 FPGA 和处理器的 PCI 总线。
在此运行我们有一个使用 RTEMS 并用 C 编写的多任务应用程序。
现在我对处理器和 pci 架构一点也不熟悉,这就是我来找你们寻求启发的原因。
问题是这样的:考虑我们有一个 RTEMS 任务,它在 PCI 总线上执行内存读取。在我们的板上,PCI 访问大约有 2us 长。现在我的一位同事提出了一个问题,如果在 PCI 读取期间 RTEMS 的任务调度程序决定是时候触发另一个任务,并且该任务作业也执行 PCI 读取。他的观点是,在任务切换之前执行的第一次 PCI 读取将被第二次 PCI 读取破坏,第二次 PCI 读取将在执行第一个任务之前由第二个任务执行。
这种情况会发生吗?
我的观点是这个问题不应该发生,因为对我来说,PCI读取就像任何其他内存读取一样,只是我们读取地址0xA020'0000而不是读取例如地址0x4000'0000的本地RAM然后处理器将其转换为 PCI 总线上的地址,并通过总线执行此读取。当然这个读取比本地内存读取要长,但是这个过程在中间不应该是可中断的。我的理解很可能完全错误,在这种情况下,请随时纠正我!
cross-compiling - 开源交叉编译器支持 Ada 多任务 RTOS
Ada 有哪些 RTOS 提供开源/免费的交叉编译器,支持多任务/多线程?
我有一个 Atmel AT90USB162 芯片,我想使用 Ada 对其进行编程。我的第一个选择是使用 AVR-Ada 对其进行编程,但由于它没有任务支持,因此无法选择(现在我不知道如何支持它进行任务)。所以我需要一个更强大的方法。我考虑过使用 QNX,但它比我的芯片支架复杂得多。
我得到了 AVR 芯片支持 uC/OS-II 和 FreeRTOS 的信息。是否有适用于 FreeRTOS 或 uC/OS-II 的免费 Ada 交叉编译器?
谢谢。
upgrade - 用于 rtem 安装的 gnu fileutils 升级
要安装 RTEMS 和所有要求,我需要安装箱才能正常工作,但似乎并非如此。
事实上,当我尝试“install -c -d tmp/foo/bar”时,它并没有按应有的方式创建目录。
在 RTEMS 文档中,他们说我需要升级 GNU fileutils,但我应该怎么做呢?我已经搜索了互联网,但什么也没找到...
您可以在此处查看相关的 RTEMS 入门页面。
我正在运行一个centos 6.3 虚拟机。
谢谢,纪尧姆
operating-system - 如何在 Eclipse IDE 上执行示例 rtems 程序?
我在 Eclipse 平台上安装了 rtems、mingw、msys、grmon 并在环境变量中指定了路径。我尝试执行给定的示例 rtems 程序,但它显示一个错误 * 启动 rtems 遇到问题 * 错误说明进程无法运行程序和“C:\workspace\rtems\debug\rtems”:启动失败。还有一个问题是:rtems 会生成一个可执行文件吗?还告诉我在windows xp平台上安装和运行rtems程序的过程??
c - 帮我找出错误?
我正在研究用于 aeroflex gaisler 硬件(RTEMS 操作系统和 leon2 处理器)和桌面终端之间通信的接口(RS232)。我写了一个代码用于它们之间的通信。我在所有函数调用中都遇到了错误,如果有人遇到过这种问题,请帮助我解决它。
注意:我无法在此处上传我的代码。
代码:
头文件:
头文件包含一个函数调用和我在函数调用中遇到的错误。代码包含函数体,我还在代码中包含了头文件。还包括所有剩余头文件的路径。
gcc - 哪个 gcc O2 标志可能导致 fp 计算失败?
我使用 GCC O2 级别的优化在 pc386 系统上编译了 paranoia 浮点测试套件并遇到了几次失败,但随后使用相同的 GCC 编译它而没有优化并得到正确的结果。我读到了 O2 中启用的标志,但似乎都没有问题。可能是什么原因?偏执狂代码可以在这里找到,这是 O2 优化的输出: