问题标签 [greenhills]

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 投票
2 回答
1075 浏览

user-interface - ThreadX 操作系统的嵌入式 wxWidgets

我正在使用 ThreadX 开发嵌入式系统。该项目将涉及一个 GUI。

我正在寻找用于嵌入 ThreadX 操作系统的 wxWidgets 端口。

我的搜索出现了嵌入式 Linux 和 WinCE 的 wxWidgets。

此外,wxWidgets 是否难以移植到新的(不同的)操作系统?

谢谢,

(项目工具是 C++,使用Greenhills编译器和带有ARM9处理器和保守数量的 RAM 和 FLASH 的ThreadX操作系统。)

0 投票
2 回答
6222 浏览

optimization - GCC 与 ARM 上的 Greenhills

我对 GCC 和Greenhills C编译器之间关于生成代码的内存占用量的任何比较感兴趣,特别是在 ARM 平台上。

这些编译器是否有任何基准或比较?有没有人在这里有任何经验想分享?

0 投票
3 回答
8405 浏览

embedded - GreenHills - 小数据区溢出

我希望也许有人对此有一个快速的答案,但基本上当我打开优化时,我收到以下错误:

[elxr](错误)小数据区溢出:0xfff9f6fc(有符号)在位置 __sti___13_test_main_cpp_252229d3+0xc 的文件 test_main.o 中执行重定位时不适合 16 位,以引用符号 oe_init_intconn

当我输入此链接器指令时也会发生类似的错误:

-auto_sda

他们的手册没有提到这个链接器错误。我正在使用 Integrity 5.10

0 投票
5 回答
3213 浏览

c - 使用内联函数乘以定义的链接器错误

链接器报告内联函数的多重定义错误。

我在头文件中有以下代码:

我将头文件包含在多个源 (.c) 文件中。

我希望将上述函数粘贴在任何调用它的地方。
是否有一种技术可以在包含的每个源文件中没有函数的多个定义? 如果是,请举例说明。

我需要嵌入式平台的性能优化。
当在其他翻译单元中定义函数时,编译器或链接器是否足够智能以内联函数?

我在嵌入式 ARM9 平台上使用 Green Hills 编译器 4.2.4。假设 2000 年之前的 C 语言标准。这是 C 代码而不是 C++。

0 投票
1 回答
712 浏览

gcc - 使用 gcc 编译并使用 greenhills 调试器进行调试

我是调试的新手。我用 gcc 编译了我的项目,我正在尝试使用 greenhills 调试器对其进行调试。当我尝试调试它时,我在 greenhills 中收到错误“不可读的内存”。任何人都知道为什么以及如何解决此错误?任何帮助将不胜感激。

谢谢。

0 投票
3 回答
783 浏览

c++ - Integrity 中 X.cpp/X.hpp 文件的奇怪行为

我有一个可以完美编译的项目gcc,但无法在 Greenhills Integrity 环境下编译。

问题归结为这三个文件:

MyVector.hpp包含向量的模板类,并MyVector.cpp包含与 的模板无关的测试函数MyVector.hpp

现在,当我在 中使用MyVector.hppvector模板时SomeFile.cpp,不知何故,该函数testVector被注入到SomeFile.cpp. 当我停止使用vectorSomeFile.cpp(当然,我仍在使用#include它,我只是没有在那里实例化模板)它工作得很好。

此外,当我在函数中注入警告testVector,编译器在编译时显示警告SomeFile.cpp

此外,SomeFile.cpp当我在MyVector.cpp.

当我testVector从中删除函数MyVector.cpp并将其移动到新函数时NewFile.cpp- 它会编译。

不,我没有cpp错误地包含该文件,老实说,我仔细检查了它,并grep编辑了我所有的源代码。

我不知道是怎么回事。我会很高兴有任何线索。

0 投票
5 回答
746 浏览

c - 如何声明一个占用内存部分中所有可用空间的 C 数组?

假设我有一个 128KB 的内存区域。在我的链接器指令中,我将此区域分为三个部分:

  • .section_text
  • .section_data
  • .section_bss

每个部分的大小在编译前是未知的,但我已经限制 .section_bss 在分配 .section_text 和 .section_data 后使用内存区域内的所有剩余空间。

有什么方法可以声明一个用完 .region_bss 中所有可用空间的 C 数组?假设它是唯一使用 .region_bss 的东西,因此它可以安全地使用整个区域。出于示例目的但显然是错误的:

这是我对一些预期反应的预先回答。首先,我知道 sizeof() 不能这样工作。我只是用它来获得一个想法。其次,假设这必须用数组而不是指针来完成(用指针解决是可能的并且相当简单)。第三,我知道我可以获得 .region_bss 的开始和结束地址,但我不知道有什么方法可以使用它们来调整我的数组大小。至少不是任何在 C 中有效的方式。

很可能没有办法做到这一点,但我希望那里的一些天才已经弄清楚了。如果您可以使其与 Green Hills 工具集一起使用,则可以加分。

0 投票
3 回答
884 浏览

c++ - 主要针对 C++ 的持续构建基础架构建议;绿山诚信

我需要您对大型(1-2MLOC)软件开发项目的持续构建产品的建议。特征:

  • ClearCase 修订控制
  • 大约 80% C++;15% 爪哇;5% 脚本或低级
  • 为 Green Hills Integrity OS 编译,也为一些窗口和 JVM 块编译
  • 主要是嵌入式系统;还包括一些 UI 部分和一些开发支持(模拟工具、配置工具等...)
  • 可交付成果的每个概念“版本”都包括许多板、UI 机器等的部署映像……(约 10 个单独的映像;5 个不同的操作系统)
  • 需要维护/跟踪许多同步版本,特别是为各种不同的板支持包构建
  • 构建周期时间是该项目的一个主要问题,需要支持任何有助于解决此问题的功能(我猜主要需要管理大量构建机器......)
  • 在安全的环境中运行(这是一个政府计划)(编辑添加:这是一个机密计划;外包构建基础设施是不可能的。)

对您可能提供的任何最佳实践或外围指导感兴趣。构建自动化问题是该程序中似乎缺少的几个重叠的最佳实践之一,但请尽量将您的答案集中在构建基础设施部分和直接相关的观察上。

成本不是驱动因素。可扩展性和易于改造到现有基础设施是关键。

(编辑以解决@Dan 的评论。;-)

0 投票
1 回答
2066 浏览

c - 如何在 Greenhills 编译器的内联汇编中使用全局变量?

我想在内联汇编中使用全局变量。

asm("LDR R0,g_TsInitStackPointerAddress");

这里 g_TsInitStackPointerAddress 是一个全局变量。编译时没有显示任何错误。

但是在链接时显示以下错误

[elxr](错误)超出范围:在地址 0x10013e0 从 InitStack+0x20 (drv.o(.text)+0x1a4) 到 g_TsInitStackPointerAddress 执行重定位类型 R_ARM_POOL (4) 时,0x1001326(无符号)不适合 12 位+0x0 ((普通)+0xb6)

这里我的函数名是 InitStack,文件名是 drv。我无法理解错误。

使用的处理器:Cortex R4
编译器:Greenhills

0 投票
1 回答
394 浏览

linker - ARM DCD 从 RAM 工作和执行

我正在使用 MBD9F126(ARM Cortex R4)微控制器。在那里我将代码闪存到 ROM 中,然后在 RAM 复制后从 RAM 执行代码。我正在使用 Green hills 编译器。在 RAM 复制之前,我正在执行基本的板初始化代码。

Start_PreInit 是板卡初始化函数。如果我在 BLX 之后这样给出,它将分支到 RAM 位置。由于 RAM 复制尚未完成,因此它会进入未知区域。

而不是这个如果我在写

它工作正常,将进入代码的 ROM 位置。我不明白为什么编译器会有这样的行为?
还有 ADDRESS_START_PREINIT:DCD Start_PreInit 。它是在链接期间完成的吗?