问题标签 [armv8]

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

c - 如何构建 ARMv8 aarch32 二进制文件?

我正在使用 Mediatek X20 开发板和gcc-linaro-6.3.1-2017.05版本进行基准测试aarch64aarch32.

所以我想将二进制文件构建为两种类型的aarch32abi : lp64, ilp32.

来自 gcc 手册,(@ [toolchain_path]/share/doc/gcc/AArch64-Options.html)

它说我可以选择和ilp32选项。lp64-mabi

但是当我使用-mabi=lp64or 时-mabi=ilp32gcc会出现如下错误。

如何制作ilp32lp64格式化二进制文件?

以及如何检查二进制文件的格式?

感谢您的回复 :)

0 投票
0 回答
255 浏览

c - ARMv8 设备上的 Pthread:32 位二进制运行良好,但 64 位二进制中止。有什么具体原因吗?

我正在测试一个涉及在我的 ARMv8 设备上创建线程的小代码。

当我将代码编译成 32 位可执行文件并在设备上运行时,它似乎运行良好。

但是当我将它构建为 64 位可执行文件时,我得到以下输出:

据我所知,ARMv8 是完全向后兼容的。但是在这里,32 位二进制文​​件运行,而 64 位二进制文​​件挂起。

除此之外,在尝试事物时,我发现将 fun() 更改为:

32 位和 64 位二进制文​​件都运行良好。

我查看了这篇文章: Pthread:为什么人们会费心使用 pthread_exit?并且没有得到太多关于问题可能出在哪里的信息。

以下是有关我的设备的更多信息:

所以这是我的问题:

  1. 在 ARMv8 设备上运行 64 位二进制文​​件时运行 32 位二进制文​​件有什么原因吗?
  2. 当我替换为 时,此错误如何pthread_exit(0)解决return 0
  3. 还有什么我可能在这里遗漏的吗?

小更新:

我尝试更改等待时间并在所有可能的地方进行各种组合,pthread_join()但无济于事。这是我能提供的最简单的版本。pthread_detach()pthread_exit()

0 投票
1 回答
408 浏览

android - 如何为与 armeabi 不同的架构构建和使用 PJSIP?

我成功地为 Android 编译了 PJSIP 库。当我为默认架构 armeabi 构建时,示例项目可以正常工作。现在我尝试为 arch 编译库,例如 armeabi-v7a 和 arm64-v8a。不幸的是,当我在适当的文件夹(jnLibs/armeabi-v7a 和 jniLibs/arm64-v8a)中将库添加到项目时,应用程序没有启动......

要为不同的拱门设置构建,我使用以下命令:

应用启动时出现此错误:

谢谢你的帮助!:)

0 投票
1 回答
1046 浏览

operating-system - 我在哪里可以找到一个模拟器来测试我的 ARMv8 操作系统?

我目前正在编写基于 ARMv8 处理器的操作系统。我想找到一个像处理器一样工作的模拟器,这样我就可以看到我的操作系统是否工作并检查我的工作。

我在windows 10上。有推荐的模拟器吗?

我搜索了,但没有答案。谢谢。

0 投票
1 回答
726 浏览

linux - Linux for armv8 - 避免所有空闲处理器状态

我有一个 ARMv8 (Cortex A57) 平台。我想执行一些性能测量。为此,我想避免处理器具有的所有可能的电源空闲状态。是否可以将任何类型的内核配置添加到我的 .config 中以完全避免空闲|省电状态?

0 投票
1 回答
712 浏览

ios - Clang 是否缺少 ARMv8/Aarch64 的 CRC32?

我正在尝试为我们的 Xcode 交叉编译设置 CI。交叉编译测试了 ARMv7 和 ARMv8。事情看起来不错,除非需要链接 ARMv8:

我们显然不运行输出工件cryptest.exe。我们只是编译和链接来测试东西。

该代码在 LLVM Clang 下测试良好。

所有 ARMv8/Aarch64 机器都有 CRC-32 和 CRC-32C;但加密扩展是可选的。该错误没有多大意义。

Clang 是否缺少 ARMv8/Aarch64 的 CRC32?


以下是导致错误的代码。

0 投票
1 回答
868 浏览

ios - 如何在 iOS 运行时确定 ARMv8 功能?

我正在尝试确定 iOS 运行时何时可以使用可选的 ARMv8 cpu 功能。在 OS X 桌面上,例如 i686、x86_64、PPC 和 PPC64,我们可以使用sysctl. 例如,请参阅PR 3108,MacOS X 上的无 SIGILL 处理器功能检测

无 SIGILL 处理器功能”部分很重要,因为SIGILL基于 SIGILL 的功能会探测 Apple 平台上的损坏内存。我关注的至少三个项目都遇到了问题,包括 Crypto++ 和 OpenSSL。问题的另一部分是诸如Apple Clang 在 Xcode 10 下是否缺少 ARMv8/Aarch64 的 CRC32 之类的问题?,其中应该存在的核心 ARMv8 功能似乎缺失或不受支持。

我一直在寻找与 OS X 桌面等效的 iOS,但我找不到它们(见下文)。

我们真的更喜欢避免使用像 CommonCrypto 这样的 Apple 框架。我们努力保持与平台无关。我们不使用 CommonCrypto,但如果没有可用的不可知论(我正在编造它们),我会考虑使用如下所示的 Apple 函数:

Apple 是否发布了一种在运行时确定 CPU 功能的方法?

我们如何在 iOS 运行时确定 cpu 特性?


这些可能是相关的,但我不确定这是否是我们拥有的最好的东西,或者这是我们唯一拥有的东西,或者是否有其他方法可以解决它。


下面我正在寻找 CRC-32、CRC-32C、AES、PMULL、SHA1 和 SHA2 功能。我没有看到任何类似于我正在寻找的命中。Apple 从 Xcode 7 开始支持 ARMv8,因此 8.2 支持 CPU。

0 投票
1 回答
1979 浏览

system-calls - Armv8 的 Linux 系统调用约定

有谁知道我在哪里可以找到 ArmV8 中 Linux 系统调用的约定?必须传入什么寄存器参数以及返回值存储在哪里。

0 投票
1 回答
9186 浏览

arm - 如何调试 aarch64 翻译错误?

我正在用 armv8 (aarch64) 编写一个简单的内核。

MMU 配置:

  • 48 VA 位 (T1SZ=64-48=16)
  • 4K 页面大小
  • 所有物理 RAM 平面映射到内核虚拟内存(在 TTBR1_EL1 上)(MMU 在 TTBR0_EL1=0 时处于活动状态,所以我只使用 0xffff<addr> 中的地址,所有平面映射到物理内存)

我正在将一个新的地址空间(从 1<<40 开始)映射到某个空闲的物理区域。当我尝试访问地址 1<<40 时,出现异常(类型为“使用 SP1 的 EL1,同步”):

检查其他寄存器,我有:

因此,基于 ARM Architecture Reference Manual for ARMv8(ARMv8-A profile):

  • ESR(异常综合症寄存器)转换为: Exception Class=100101(Data abort without a change in exception level) on page D7-1933 sq.;WnR=1(错误指令是写);第 D7-1958 页上的DFSC=0b000100(级别 0 的转换错误);
  • FAR_EL1 是故障地址;它表示使用了 TTBR1_EL1(因为高位全为 1)。VA 前 9 位为 0b000000010,表示表中使用了条目 2;
  • 表中的条目 2 表示物理地址 0x82003000 处的下一级表(低位 0b11)。

因此,翻译在不应该的级别 0 处失败。

我的问题是:我做错了什么吗?我是否遗漏了一些可能导致翻译错误的信息?而且,更一般地说,如何调试翻译错误?

更新:
当我在启用 MMU 之前写入表时,一切正常。
每当我在启用 MMU 之后(通过平面映射表区域)写入表时,映射永远不会起作用。我想知道为什么会这样。

我还尝试手动写入选定的表(以消除我的映射函数的任何副作用):相同的结果(在 MMU 开启之前完成写入时,它可以工作;之后,它会失败)。

我尝试了做tlbidsb sy指示,然后是isb,没有效果。此时只有一个 CPU 正在运行,因此缓存应该不是问题 - 写入指令和 MMU 与相同的缓存通信(但我将在接下来对其进行测试)。

0 投票
1 回答
446 浏览

assembly - ARMv8 NEON 向量置换

考虑内存布局,以便读取八个连续的 4 字节块[abcdefgh]。我将它们加载到两个寄存器v0.4sv1.4s,所以我得到了v0.4s = [abcd]v1.4s = [efgh],其中每个字符代表一个 32 位块。我想对它们重新排序以获得[abef]两个[cdgh](可能不同的)寄存器。

我目前的方法是首先反转 64 位的一半[efgh]以获得[ghef]. 然后我可以使用 extract 来获取[abef]and [ghcd]。然后,我终于可以再次反转 64 位的一半[ghcd]来获得[cdgh].

谁能告诉一个更好的方法?