问题标签 [eabi]

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 回答
2096 浏览

gcc - 使用 arm-none-eabi-gcc 从 cpp 生成 elf 文件

我想对嵌入式目标上的 c++ 源代码进行代码覆盖。基本思想是,生成一个精灵以及使用 gcc 打开的 -frofile-arcs -ftest-coverage。将其下载到 ARM 设备上,然后收集数据以使用 gcov 分析代码覆盖率。

如何使用 arm-none-eabi-gcc 命令生成 elf 文件。我已经设置了 GNU ARM 工具链并设置了 env 变量。我可以使用 arm-none-eabi-g++ -c -mthumb -mcpu=cortex-m3 -fprofile-arcs -ftest-coverage filename.cpp -o filename.elf 吗?

提前致谢!

0 投票
0 回答
6911 浏览

gcc - ARM objcopy 导致空的二进制文件

如何arm-none-eabi-objcopy将我的文件复制/翻译.axf.bin适合闪存到设备的文件lm4tools

我有一个 ~20KB 的.axf文件编译并链接到arm-none-eabi-*. 对于任何有兴趣的人,这是与 Stellaris Launchpad 一起使用的。

我正在尝试修改stellaris-launchpad-template-gcc项目提供的示例以使用 C++ 代码进行编译。我已经设法让它生成一个格式的.axf文件elf32-littlearm(根据.lst文件),但是当我尝试做

要将其转换为可编程文件,.bin文件输出的大小为 0 字节。这个问题描述了一个类似的问题。我确信.axf文件是完整的,为什么我的.bin文件没有填充任何内容?如果我删除-O binary,该文件将被很好地复制。该目录是可写的,所有权限都很好。我已经尝试使用各种术语在 SO 和互联网的其余部分上进行搜索,所有这些都没有任何用处。以前好像没有人遇到过这个问题。

运行arm-none-eabi-objdump -D main.axf会在似乎是汇编程序中生成文件转储:

这是正确的,还是我什至没有正确编译,因为这似乎是某种汇编程序?

关于文件的一些信息.axf

运行后arm-none-eabi-readelf -lS main.axf,不返回程序头:

0 投票
1 回答
1875 浏览

android - android NDK:连接时gdb崩溃

作为对此的跟进(我让 gdbserver 正常启动):Android NDK 调试:armeabi-v7a not working

NDK 8c、Eclipse 和 Cygwin、NativeActivity。

我在这里的while循环中设置了一个断点:

...但是连接时gdb崩溃了!它会“填充”大约 10 秒钟,然后崩溃。有一些输出。

这是 gdbserver 的输出:

最后几行是它对 gdb 连接和崩溃的响应。

这是 gdb 输出:

我以前使用 gdb 进行过调试,带有 Java 入口点和“armeabi”。切换到 C++ 入口点 (android_main) 和“armeabi-v7a”后,gdb 崩溃。不知道有没有关系...

对于它的价值,gdb 在我连接的任何其他时间也会崩溃(我在启动时删除了无限的 while 循环)。例如,我遇到了线程问题,所以我的应用程序无缘无故挂起。如果我在挂起时连接,那么 gdb 会以同样的方式崩溃。

0 投票
2 回答
1064 浏览

arm - ARM - 如何使用 armcc 保存 r9 寄存器

阅读 ARM AAPCS (ARM EABI),我发现: 寄存器 r9 的作用是特定于平台的。虚拟平台可以为该寄存器分配任何角色,并且必须记录此用法。例如,它可以在与位置无关的数据模型中将其指定为静态基址(SB),或者在具有线程本地存储的环境中将其指定为线程寄存器(TR)。该寄存器的使用可能要求所保存的值在所有调用中都是持久的。不需要这种特殊寄存器的虚拟平台可以将 r9 指定为附加的被调用者保存的变量寄存器 v6。

我想将 r9 用作我的特定航空电子抢占式操作系统的 PID 保持器,但我不知道如何保存它:armcc C 编译器总是将它用作变量寄存器,因此它的值总是通过应用程序改变。

任何想法 ?armcc 可以吗?海湾合作委员会?戴铂?...

谢谢你的帮助。

问候

克里斯托夫

0 投票
2 回答
4317 浏览

gcc - 如何抑制“警告:控制到达非无效函数的结尾”

我有一些 PowerPC 汇编代码用 gcc 交叉编译器和这个函数翻译:

在 PowerPC EABI 下,它返回在 R3 中计算的值。编译时我得到

有没有办法教 gcc 实际上返回了一个值?或者有没有办法抑制警告(不删除 -Wall 或添加 -Wno-*)?我想非常有选择地仅针对此功能抑制此警告,以使一般警告级别尽可能高。

由于调用者需要计算的值,因此不能使此函数返回 void。

0 投票
1 回答
581 浏览

c - 如何将 gnu C/C++ 工具生成的静态库与用于 arm 的 Microsoft C/C++ 工具一起使用

我有一个由 Linux 环境中的 ARM GNU 工具生成的静态库 (.a),并希望使用 Microsoft ARM 架构工具在 Windows 环境 (Visual Studio 2008) 中使用该库。有什么方法可以将 .a 静态库与 Microsoft 工具一起使用?

我没有源代码,这就是为什么我不能交叉编译 MS 编译器的源代码。

谢谢!

0 投票
1 回答
746 浏览

c - gcc-arm 编译器为同一个源文件生成不同的目标文件

为 ARM (windows) 使用 GCC 编译器:

arm-none-eabi-gcc.exe (Sourcery CodeBench Lite 2012.09-63) 4.7.2版本

我每编译相同的源文件约 5 次就会产生不同的目标文件。

使用了优化级别 3(积极),使用了编译器选项:

-O3 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fshort-wchar -fshort-enums -funsafe-math-optimizations -mvectorize-with-neon-quad

不同目标文件的转储(使用 objdump)显示汇编指令、寄存器和使用的地址有太多差异。

  • 编译器以不同方式优化/编译完全相同的源文件并产生不同的目标文件是否正常?!它是编译器错误吗?

  • 如何在不关闭积极优化的情况下避免这种行为?

编辑:目标文件差异片段:

object_file_dump_A:

object_file_dump_B:

编辑:

源代码 :

0 投票
0 回答
112 浏览

c - 静态测量 C 中方法所需的最大堆栈内存

我有大量用 C 语言编写的方法,分布在多个文件中,所有方法都创建局部变量(主要是结构实例)。在 Windows 上使用 ARM EABI GCC 编译器编译这些文件后,我尝试使用 objdump 检查 .o 目标文件。

我的问题是: 如何计算/检索方法使用的峰值堆栈内存?

这些方法都没有使用 malloc 分配任何动态分配的内存。所以,我希望这会更容易。

我需要这个,因为我需要比较每种方法在使用各种优化选项编译时使用的内存量。这是为了检查是否已执行任何本地内存优化。我也明白,对于一些局部变量,编译器可能会使用寄存器。但是,我只需要知道方法所需的最大堆栈内存是多少,或者是否有办法计算它。

0 投票
1 回答
1450 浏览

gcc - arm-none-eabi-gcc:-march 选项 v/s -mcpu 选项

我一直在关注 atmel 的 j lynch 教程,用于为 at91sam7s256(微控制器)开发小程序。我做了一些修改并使用 arm-none-eabi 而不是 arm-elf(旧的)。默认情况下,我发现 gcc 编译假设 -march=armv4t 即使没有提及任何有关芯片的内容。如果我使用 -mcpu=arm7tdmi 会有多大区别?

即使在谷歌上搜索了很多,我也找不到详细的教程来解释所有可能的命令,如选项,包括单独的链接器选项、汇编器和 objcopy 选项,如 -MAP 等。

你能提供任何解释所有可能性的材料吗?

0 投票
2 回答
917 浏览

c++ - 在 ARM 上为 eCos 构建 C++ 应用程序

我正在寻找在 ARM 处理器上为 eCos 构建 C++ 应用程序。我的程序需要几个标准的 C++ 头文件,例如 vector、iostream、list、...

我的问题是:我怎样才能做到这一点?有没有人有为 eCos 构建和部署 C++ 应用程序的经验?

当我使用 arm-eabi-g++ 编译器编译应用程序时,出现以下错误

意味着不存在 C++ 向量库。

但是,arm-none-eabi-g++ 编译器确实包含这些标准头文件。我确实收到以下错误:

我可以为 eCos 使用 arm-none-eabi-g++ 编译器吗?如果是,我该如何解决这些错误?如果没有,我该怎么办?

提前谢谢了!