问题标签 [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 回答
308 浏览

c - 32 位处理器上的 64 位/64 位余数查找算法?

我知道过去曾提出过类似的问题,但经过漫长的过程,我已经实现了算法,以使用重复减法除法正确找到商。但我无法从这种方法中找出其余部分。是否有任何快速简便的方法可以在 32 位处理器上找出64 位/64 位除法中的余数。更准确地说,我正在尝试实施

本文档中引用http://infocenter.arm.com/help/topic/com.arm.doc.ihi0043d/IHI0043D_rtabi.pdf

0 投票
1 回答
2585 浏览

arm - 为 cortex M4 编译时 CPU 架构冲突 1/13

我曾经用 arm-none-eabi-gcc/arm-none-eabi-g++ 编译我的微控制器代码,一切正常。我在 Mac 上使用自制的 Cask gcc-arm-embedded。昨天我更新了它,现在当我为 Cortex M4 架构编译(使用 M3 编译良好)时,我在链接阶段为每个目标文件收到这些错误消息:

查看内容时,一切看起来都很好:

下面是编译 C 文件的命令行:

对于 C++ 文件:

和链接:

查看多库:

有一个与我的参数匹配的配置:

有人知道我的配置有什么问题吗?

0 投票
1 回答
49 浏览

arm - Compiler Implementation Dependency on ABI

As from this Question What is Application binary Interface, ABIs cover details such as

  • data type, size, and alignment;
  • the calling convention, which controls how functions' arguments are passed and return values retrieved;
  • the system call numbers and how an application should make system calls to the operating system;
  • Stack frames (activation records) [not in the above question]

My questions are,

  1. If ABIs define these rule then does the compiler that generates binaries for the target architecture depends on Architecture ABIs??? for example the compiler of ARM has to follow ARM eabi???
  2. Who design these ABIs??? the vendor, architecture designer (core), compiler designers???
0 投票
1 回答
3457 浏览

arm - 如何解释 ELF 中 .ARM.attributes 中的数据以获取架构版本和其他属性?

我最感兴趣的是提取架构版本,即 v5、v5T 等。我一直在参考Elf 的 ARM 架构第 4.3.6 节构建属性,这对我了解这一点很有帮助。我可以找到 .ARM.attributes 部分的开头,并且可以解析信息的第一个关键部分:Format-version、Section-length 和 vendor-name + null 字节,没问题。在那之后我有点失落。下面是我在使用ARMv5T 架构hexdump -vC编译的精灵上运行的快照。arm-linux-gnueabi-gcc -march=armv5t -O myprog.c -o myprog该部分的开始是 77f0b。

在此处输入图像描述

我们可以看到: Format-version: A

节长:0x29

供应商名称:“aeabi”

显然,5T 在 77f1C 以 ASCII 形式提供,但我不确定如何解释我需要解析以获得该值的标签。

注意:是的,我知道我可以使用一些工具来执行此操作,但我需要在我正在编写的应用程序中提取信息。它已经解析了必要的信息以使其达到这一目标。

额外问题:PowerPC 有类似的标签吗?我找不到任何支持文件。

0 投票
0 回答
696 浏览

c - gcc 嵌入式皮质软/硬浮动

提前致谢。

我正在使用 GCC 为STM32F7 ARM Cortex.

不幸的是,我的结果总是包括浮点仿真例程

使用编译标志:

如何禁用链接这些函数并查看它们在我的代码中的位置和原因以仅使用硬单浮点?

如果我只是做 -nostdlib 它会删除完整的标准库。我只想使用 Hard FPU 来提高性能而不是精确的双精度。

谢谢 !

0 投票
3 回答
750 浏览

ada - 在 Ada Last_Chance_Handler 中打印异常消息

我正在使用 AdaCore GPS (GPL) IDE 使用 GNAT 编译器学习 Ada,针对 ARM“裸板”硬件(使用 Ravenscar SFP 运行时的 STM32F4)。

对于我基于 ARM 的嵌入式工作,我来自 C/C++ 背景。

无论如何,我已经实现了一个定义如下的“最后机会处理程序”,

这是实际的过程(文件中的一个片段.adb),

Msg论点记录如下,

Msg 参数是一个 C 以 null 结尾的字符串,表示由编译器生成的 raise 语句的源位置,如果使用了 pragma Suppress_Exception_Locations,则为一个零长度字符串。

我一直在试图弄清楚如何将null终止的Msg字节转换为 Ada 字符串,以便我可以使用调用显示它(调试时我可以通过半主机机制Put_Line()访问这种类型的输出)。

我之前通过将 Ada 记录(表示设备寄存器等)的'Address属性设置为常量值,将其映射到物理内存地址。但是,这是我第一次尝试通过System.Address变量中保存的值访问内存。

谁能建议我如何实施该Address_To_String()程序?

我已经尝试过 Ada 字节数组和它们之间的未经检查的转换,以及System.AddressAda 指针,但到目前为止我还没有取得任何成功。

任何帮助或建议将不胜感激!

非常感谢,

...最大限度

0 投票
0 回答
288 浏览

assembly - 没有硬件 UDIV 指令的 ARM 汇编整除性测试

我在 ARM 汇编中编码时遇到问题,我必须编写一些代码来说明 r0 是否可以被 r1 整除,所以我打算编写模数来表示如果 r0 % r1 == 0 但也许有更好的方法(表演演讲)我想要什么?

我找到了这个主题,但它并没有真正帮助我,因为我的编译器(如果它是编译器 ^^)是 arm-eabi-gcc 告诉我选择的处理器不支持 ARM 模式“udiv”和“mls”

无论如何,正如我刚才所说,我更愿意自己编写代码,因为老师一直告诉我们 mod 和 div 成本很高,所以也许对我的情况有更好的方法:D

0 投票
2 回答
761 浏览

c++ - 无法刷写 ARM 设备 - “英特尔 Hex 文件不以 ':' 开头”

我有一个与 arm-none-eabi-gcc 配合良好的代码库。我想在添加 C++ 时将大部分源文件保留在 C 中。我在编译时遇到了一些问题,但最终似乎为我的设备(Atmel ATSAMG55)成功编译。

但是,当我在 Atmel Studio 中刷机时,出现错误

请注意,我只是通过 Atmel ICE 编程器/调试器和 Atmel 工作室对其进行编程。我正在通过 arm-none-eabi-gcc 和 arm-none-eabi-g++ 以及一个自定义的 make 文件进行编译。

我打开了我的 .hex 输出的十六进制查看器,发现主要是 0x00000000,但在开头和结尾找到了一些“真实”数据。图片如下。

十六进制文件的顶部

十六进制文件的底部

显然,如果编译过程正确发生,它不会大部分是 0x00000000。但是,如果没有任何编译器错误,我有点不知道从哪里开始。下面是我的 make 文件的“核心”的摘录。

上面的大部分内容是变量定义和设置标志。我对此比较有信心,因为这在纯 C 中运行良好。只有当我添加第二组对象/源依赖项时,我才开始遇到问题。

有没有人看到过这样的编译问题并对从哪里开始调试有任何意见?谢谢!

0 投票
2 回答
304 浏览

c - 如何防止使用 arm-none-eabi-gcc 编译器对此函数进行向量操作优化?

我的代码

我正在使用一个在学术项目中使用此功能的简单代码:

我的目标架构

我的代码应该只对“数据”执行这个简单的矩阵运算,并用结果填充“距离”矩阵。然而,在我的学术项目中,我感兴趣的是编译器如何针对我正在使用的 ARM 架构优化这些向量操作。编译的命令行包含以下内容:

我的程序旨在在嵌入式 Xilinx Zynq-7000 设备中运行,其架构包括针对向量操作的 NEON 优化指令集(在这个不错的演示文稿中进行了描述)

我的问题

我必须在有和没有编译器优化的情况下跟踪“calculateDistanceMatrix”函数中向量操作的执行性能。我注意到汇编输出包括用于向量加载和存储操作的共享 NEON 和 VFP 指令(在ARM's Assembler Reference for Version 5.0中有详细说明):

我找不到编译此代码的方法,以便使用这些优化的指令。

你知道任何可以避免这些指令的编译配置或代码技巧吗?感谢有关此问题的任何帮助。

0 投票
1 回答
760 浏览

assembly - 什么是 cfi_adjust_cfa_offset 和 cfi_rel_offset?

我目前正在尝试了解 glibcsyscall函数的内部代码。下面是代码(取自这里)。

我对传递系统调用号和参数的代码有一定的了解,这是函数的核心syscall功能。但我不明白cfi_adjust_cfa_offset指令、cfi_rel_offset指令和cfi_restore指令是做什么的。我知道这些说明与函数的功能关系不大syscall。但是,我仍然想知道这些指令的作用。

谢谢你。