问题标签 [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.
user-interface - ThreadX 操作系统的嵌入式 wxWidgets
我正在使用 ThreadX 开发嵌入式系统。该项目将涉及一个 GUI。
我正在寻找用于嵌入 ThreadX 操作系统的 wxWidgets 端口。
我的搜索出现了嵌入式 Linux 和 WinCE 的 wxWidgets。
此外,wxWidgets 是否难以移植到新的(不同的)操作系统?
谢谢,
(项目工具是 C++,使用Greenhills编译器和带有ARM9处理器和保守数量的 RAM 和 FLASH 的ThreadX操作系统。)
optimization - GCC 与 ARM 上的 Greenhills
我对 GCC 和Greenhills C编译器之间关于生成代码的内存占用量的任何比较感兴趣,特别是在 ARM 平台上。
这些编译器是否有任何基准或比较?有没有人在这里有任何经验想分享?
embedded - GreenHills - 小数据区溢出
我希望也许有人对此有一个快速的答案,但基本上当我打开优化时,我收到以下错误:
[elxr](错误)小数据区溢出:0xfff9f6fc(有符号)在位置 __sti___13_test_main_cpp_252229d3+0xc 的文件 test_main.o 中执行重定位时不适合 16 位,以引用符号 oe_init_intconn
当我输入此链接器指令时也会发生类似的错误:
-auto_sda
他们的手册没有提到这个链接器错误。我正在使用 Integrity 5.10
c - 使用内联函数乘以定义的链接器错误
链接器报告内联函数的多重定义错误。
我在头文件中有以下代码:
我将头文件包含在多个源 (.c) 文件中。
我希望将上述函数粘贴在任何调用它的地方。
是否有一种技术可以在包含的每个源文件中没有函数的多个定义? 如果是,请举例说明。
我需要嵌入式平台的性能优化。
当在其他翻译单元中定义函数时,编译器或链接器是否足够智能以内联函数?
我在嵌入式 ARM9 平台上使用 Green Hills 编译器 4.2.4。假设 2000 年之前的 C 语言标准。这是 C 代码而不是 C++。
gcc - 使用 gcc 编译并使用 greenhills 调试器进行调试
我是调试的新手。我用 gcc 编译了我的项目,我正在尝试使用 greenhills 调试器对其进行调试。当我尝试调试它时,我在 greenhills 中收到错误“不可读的内存”。任何人都知道为什么以及如何解决此错误?任何帮助将不胜感激。
谢谢。
c++ - Integrity 中 X.cpp/X.hpp 文件的奇怪行为
我有一个可以完美编译的项目gcc
,但无法在 Greenhills Integrity 环境下编译。
问题归结为这三个文件:
MyVector.hpp
包含向量的模板类,并MyVector.cpp
包含与 的模板无关的测试函数MyVector.hpp
。
现在,当我在 中使用MyVector.hpp
的vector
模板时SomeFile.cpp
,不知何故,该函数testVector
被注入到SomeFile.cpp
. 当我停止使用vector
时SomeFile.cpp
(当然,我仍在使用#include
它,我只是没有在那里实例化模板)它工作得很好。
此外,当我在函数中注入警告时testVector
,编译器在编译时显示警告!SomeFile.cpp
此外,SomeFile.cpp
当我在MyVector.cpp
.
当我testVector
从中删除函数MyVector.cpp
并将其移动到新函数时NewFile.cpp
- 它会编译。
不,我没有cpp
错误地包含该文件,老实说,我仔细检查了它,并grep
编辑了我所有的源代码。
我不知道是怎么回事。我会很高兴有任何线索。
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 工具集一起使用,则可以加分。
c++ - 主要针对 C++ 的持续构建基础架构建议;绿山诚信
我需要您对大型(1-2MLOC)软件开发项目的持续构建产品的建议。特征:
- ClearCase 修订控制
- 大约 80% C++;15% 爪哇;5% 脚本或低级
- 为 Green Hills Integrity OS 编译,也为一些窗口和 JVM 块编译
- 主要是嵌入式系统;还包括一些 UI 部分和一些开发支持(模拟工具、配置工具等...)
- 可交付成果的每个概念“版本”都包括许多板、UI 机器等的部署映像……(约 10 个单独的映像;5 个不同的操作系统)
- 需要维护/跟踪许多同步版本,特别是为各种不同的板支持包构建
- 构建周期时间是该项目的一个主要问题,需要支持任何有助于解决此问题的功能(我猜主要需要管理大量构建机器......)
- 在安全的环境中运行(这是一个政府计划)(编辑添加:这是一个机密计划;外包构建基础设施是不可能的。)
对您可能提供的任何最佳实践或外围指导感兴趣。构建自动化问题是该程序中似乎缺少的几个重叠的最佳实践之一,但请尽量将您的答案集中在构建基础设施部分和直接相关的观察上。
成本不是驱动因素。可扩展性和易于改造到现有基础设施是关键。
(编辑以解决@Dan 的评论。;-)
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
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 。它是在链接期间完成的吗?