问题标签 [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 投票
4 回答
51699 浏览

gcc - arm gcc 工具链作为 arm-elf 或 arm-none-eabi,有什么区别?

当您构建 gcc 工具链时,可以将其构建为 arm-elf 或 arm-none-eabi,但有什么区别?

我今天使用 eabi,但这只是因为其他人似乎都这样做......但因为这是一个非常糟糕的论点,所以理解其中的区别会非常好。

注意:此工具链将为基于 Cortex-M3 的 mcu:s 交叉编译代码,例如 stm32。

谢谢


一些链接

EABI:

精灵:

0 投票
3 回答
23557 浏览

android - armeabi 和 armeabi-v7a 文件夹

我正在开发一个 Android 项目,并且正在使用 NDK 调用本机方法。我有两个库(.so 文件),一个位于libs/armeabi文件夹中,另一个位于libs/armeabi-v7alib 文件夹中。

如果我尝试运行应用程序,那么它不会在/libs/armeabi文件夹中加载库。如果我将库文件移动到文件libs/armeabi-v7a夹中,它会加载库,但 5 到 10 分钟后它会崩溃并给出分段错误错误。

我想知道库的位置(不同的文件夹)是否会导致这个问题。

0 投票
6 回答
50154 浏览

android - ARM EABI v7a系统镜像在android中有什么用?

Android开发中需要ARM EABI v7a系统镜像做什么?该特定图像的目的是什么?

0 投票
3 回答
47435 浏览

arm - ARM ABI 和 EABI 的用途是什么?

我看这个 PDF(ARM 架构的应用程序二进制接口:基本标准)越多,我就越不明白它的含义。另外,我想对Procedure Call Standard for the ARM ArchitectureELF for the ARM Architecture发表一些评论。

0 投票
0 回答
1518 浏览

gnu - Powerpc gnu eabi 寄存器初始化

我创建了一个最小的裸机应用程序,我正在使用 codesourcery gnu powerpc eabi lite 工具链编译它,并使用 USB JTAG TAP 加载到 powerPC 目标上。该应用程序是从一个用于配置硬件和设置 eabi 寄存器的程序集文件、一个包含无限循环的 main.c 文件、一个链接描述文件和一个 Makefile 文件创建的。

我找到了大量关于 powerpc 的启动代码、eabi 的寄存器初始化以及用于创建链接器脚本的 gnu 链接器的文档,并试图密切关注它。

我让应用程序编译并运行,直到它到达 main。我遇到的问题是,当组装例程完成并执行 rfi 时,我看到 PC 转换为 main() 符合预期。但是,执行 main (lis r9, 0) 中的第一条指令会导致异常 0x700(无效指令或 fp 异常)。

汇编程序最初包含使 L1 数据和指令高速缓存无效并禁用它们然后仅启用 L1 指令高速缓存的代码。怀疑其中一些代码不正确,我删除了大部分代码,并且只有最低限度。

可能是我缺少 C 运行时初始化步骤吗?还有其他想法吗?提前感谢您的帮助。

汇编代码现在只包含以下内容:

链接描述文件如下:

0 投票
1 回答
1521 浏览

qt - Qt Arm 远程调试

我正在研究 LPC1768。我想在 qt creator 上使用 arm-none-eabi-gdb 调试 test_ram.elf 文件。我从http://www.yagarto.de/download/yagarto/LPC1768Test.zip下载了代码进行测试

不幸的是,我无法处理远程调试。我想使用 j-link gdbserver 进行调试。

我试过调试->开始调试->附加到远程调试服务器和

进行上述设置后,我收到此警告:

用于调试“未知-未知-未知-未知-未知”类型的二进制文件的首选调试器引擎不可用。调试器引擎“Gdb 引擎”将用作后备。详细信息:CDB 调试引擎不支持 unknown-unknown-unknown-unknown-unknown ABI。

提前致谢

0 投票
3 回答
3002 浏览

gcc - 我可以将 arm-eabi 与 arm-elf 混合使用吗?

我有一个产品,它使用生成“arm-elf”的编译器(gnuarm GCC 4.1.1)编译引导加载程序和应用程序。

引导加载程序和应用程序在链接描述文件中被隔离在不同的 FLASH 存储区中。

该应用程序具有一项功能,可以调用引导加载程序(作为具有 2 个参数的简单 c 函数)。

我需要能够升级世界各地的现有产品,并且我可以使用始终使用相同的编译器安全地做到这一点。

现在我希望能够使用输出 arm-eabi 的新 GCC 版本来编译这个产品应用程序。

对于新产品来说一切都会好起来的,其中应用程序和引导加载程序都是使用相同的工具链编译的,但是现有产品会发生什么?如果我刷新一个使用 GCC 4.6.x 和 arm-none-eabi 编译的新应用程序,我的应用程序是否仍然能够从旧的 arm-elf 引导加载程序调用引导加载程序函数?


此外,与上述问题没有直接关系,我可以将使用 arm-elf 编译的目标文件混合到使用 arm-eabi 编译的二进制文件中吗?


编辑:

我认为很清楚我正在为裸机 ARM7 构建,如果它有什么不同的话......

0 投票
2 回答
787 浏览

gcc - 为 ARM-EABI 编译 Linux 内核但使用 4 字节大类型对齐?

默认情况下,任何大类型(大于 4 字节)在 EABI 上都将对齐到 8 字节。这意味着如果function(u32, u64)调用, u32 进入,并且 u64 在andr0之间分割,不使用。r2r3r1

我怎样才能让编译器将它对齐到 4 字节呢?我理解这个(打破 ABI)或其他的后果,但我并不在乎。也不建议使用 OABI,因为在内核配置中启用 OABI 会禁用对 ARMv7 的支持。

使用 4 字节对齐,u32 仍将进入,r0但 u64 现在将在r1和之间拆分r2

0 投票
1 回答
898 浏览

arm - ARM EABI 工具链

今天,我遇到了 ARM 工具链 EABI(交叉编译器)的一些奇怪问题。

这个问题是当我尝试使用 snwprintf() 将浮点值转换为字符串时,我得到了一些没有实际浮点值的垃圾字符串。

示例代码看起来像这样:

然后我调试了 snwprintf,发现变量参数列表(va_arg)没有指向确切的数据值。通过转储内存,我们能够找到变量参数列表中存在的确切数据。va_arg 应该指向的数据不同。

我不认为这是一个字节序问题,因为整数值工作正常。问题仅在于双值。

任何人都可以在这个问题上帮助我吗?

0 投票
0 回答
774 浏览

arm - ARM EABI 浮点问题

我在使用可变参数的 ARM9 代码中有一个数据转换函数。几年前我一直在使用 arm-elf yagarto 发行版,没有任何问题。最近,我们从 yagarto 站点升级到 arm-eabi-none yagarto 包,我发现我们现在遇到浮点值问题。我最终发现双精度值被强制使用 8 字节边界,而现有的 varargs 浮点处理程序没想到会在 args 中找到间隙。

我可以手动检查指针并强制它达到 8 字节边界(事实上,我这样做了,并且完全解决了问题),但我想知道为什么突然开始发生这种情况。

是否有一个编译器开关指定堆栈上的数据对齐,或在函数调用中,或类似的东西?为什么在 32 位(4 字节)架构上默认为 8 字节边界?

任何人都可以就这些问题提供任何建议或见解,我将不胜感激。

代码很简单:

我们使用的 GCC 版本是 4.7.1

编译选项:

工具链编译选项:

应用程序编译器选项: