精华内容
下载资源
问答
  • jdk-11.0.10_linux-aarch64_bin.rpm aarch64 aarch64 aarch64 rpm rpm rpm
  • aarch64扩展 二进制忍者AArch64模块现已开放源代码: : 。 这项工作将慢慢进行,并且该存储库不再接受贡献。 AArch64的Binary Ninja IL提升扩展 CSINC 乌姆 中国国际数控 BFI ROR 太太 MSR FMOV 惯导 STR...
  • AArch64 是什么

    万次阅读 2016-12-23 15:59:55
    AArch64是ARMv8 架构的一种执行状态。

    查看Android设备的CPU架构信息,可以使用命令来完成:

    1、adb shell  
    2、cat  /proc/cpuinfo
    
    ➜  ~ adb shell
    shell@hennessy:/ $ cat  /proc/cpuinfo
    Processor	: AArch64 Processor rev 2 (aarch64) //cpu架构
    processor	: 0
    BogoMIPS	: 26.00
    
    //核心数
    Features	: fp asimd aes pmull sha1 sha2 crc32
    CPU implementer	: 0x41
    CPU architecture: AArch64
    CPU variant	: 0x0
    CPU part	: 0xd03
    CPU revision	: 2
    
    Hardware	: MT6795 //品牌
    shell@hennessy:/ $
    

    AArch64是ARMv8 架构的一种执行状态。

    为了更广泛地向企业领域推进,需要引入 64 位构架。同时也需要在 ARMv8 架构中引入新的 AArch64 执行状态。AArch64 不是一个单纯的 32 位 ARM 构架扩展,而是 ARMv8 内全新的构架,完全使用全新的 A64 指令集。这些都源自于多年对现代构架设计的深入研究。更重要的是, AArch64 作为一个分离出的执行状态,意味着一些未来的处理器可能不支持旧的 AArch32 执行状态。 虽然最初的 64 位 ARM 处理器将会完全向后兼容,但我们大胆且前瞻性地将 AArch64 作为在 ARMv8 处理器中唯一的执行状态。我们在这些系统中将不支持 32 位执行状态, 这将使许多有益的实现得到权衡,如默认情况下,使用一个较大的 64K 大小的页面,并会使得纯净的 64 位 ARM 服务器系统不受遗留代码的影响。立即进行这种划分是很重要的,因为有可能在未来几年内将出现仅支持 64 位的服务器系统。没有必要在新的 64 位架构中去实现一个完整的 32 位流水线,这将会提高未来 ARM 服务器系统的能效。这样回想起来, AArch64 作为在 Fedora ARM 项目中被支持的 ARM 构架是一个很自然的过程: armv5tel、armv7hl、aarch64。新的架构被命名为:aarch64,这同 ARM 自己选择的主线命名方式保持一致,同时也考虑到了 ARM 架构名与 ARM 商标分开的期望。

    ARMv8-A 将 64 位架构支持引入 ARM 架构中,其中包括:

    • 64 位通用寄存器、SP(堆栈指针)和 PC(程序计数器)
    • 64 位数据处理和扩展的虚拟寻址

    两种主要执行状态:

    • AArch64 - 64 位执行状态,包括该状态的异常模型、内存模型、程序员模型和指令集支持
    • AArch32 — 32 位执行状态,包括该状态的异常模型、内存模型、程序员模型和指令集支持

    这些执行状态支持三个主要指令集

    • A32(或 ARM):32 位固定长度指令集,通过不同架构变体增强部分 32 位架构执行环境现在称为 AArch32。
    • T32 (Thumb) 是以 16 位固定长度指令集的形式引入的,随后在引入 Thumb-2 技术时增强为 16 位和 32 位混合长度指令集。部分 32 位架构执行环境现在称为 AArch32。
    • A64:提供与 ARM 和 Thumb 指令集类似功能的 32 位固定长度指令集。随 ARMv8-A 一起引入,它是一种 AArch64 指令集。
      ARM ISA 不断改进,以满足前沿应用程序开发人员日益增长的要求,同时保留了必要的向后兼容性,以保护软件开发投资。在 ARMv8-A 中,对 A32 和 T32 进行了一些增补,以保持与 A64 指令集一致。

    传送门:
    https://fedoraproject.org/wiki/Architectures/ARM/AArch64/zh-cn#.E4.BB.8B.E7.BB.8D

    https://www.arm.com/zh/products/processors/instruction-set-architectures/armv8-architecture.php

    展开全文
  • please use this: https://github.com/quantum6/openjdk8-aarch64-arm64 https://github.com/AdoptOpenJDK/openjdk-aarch64-jdk8u
  • Embree-aarch64是Embree库(版本3.x)到AARCH64平台(包括Android arm64-v8a)的移植。 马丁·张(Martin Chang)的令人敬畏的Embree-arm努力使用类似的方法完成了移植。 Embree-aarch64也可以用于x86-64目标。 ...
  • 〜#chmod + x SARPi64.SlackBuild-gcc-10.2-aarch64-cc.sh 〜#./SARPi64.SlackBuild-gcc-10.2-aarch64-cc.sh 您可以在任意位置安装交叉编译器,只要可以由普通用户(即不是“ root”)访问。 默认值为/tm
  • aarch64-裸机-qemu qemu 上的简单 aarch64 裸机“Hello World” 由于之前没有在ARMv8/aarch64上写过裸机程序,所以就做一个吧。 从开始似乎是个好主意 工具链不同,我们需要aarch64交叉编译工具链。 我认为 linux...
  • 食谱:Aarch64汇编程序教程 David You( )撰写
  • 算法-AArch64_Assembly 该存储库包含出于教育目的在AArch64 Assembly中实现的算法和数据结构。 贡献 您可以为该存储库做出愉快的贡献。 请确定该存储库的目录结构和总体代码样式。 如果您想提出问题或提出建议,请...
  • syscalls-table-aarch64 从Linux源生成aarch64的JSON和HTML系统调用表。 仍在制品。 托管在 。 生成JSON 安装ctags( ) npm install :teacup_without_handle: 和利润!
  • tensorflow-aarch64 适用于aarch64 / ARMv8 / ARM64的轮(WHL)和aarch64映像 安装 pip install tensorflow -f https://tf.maku.ml/whl/stable.html 备份链接: pip install torch -f ...
  • android_prebuilts_gcc_linux-x86_aarch64_aarch64-linux-android-4.9
  • android_prebuilts_gcc_darwin-x86_aarch64_aarch64-linux-android-4.9
  • openjdk-aarch64-jdk8u:OpenJDK上aarch64 jdk8u商业森林的镜像
  • 首发极术社区 如对Arm相关技术感兴趣,欢迎私信aijishu20加入技术微信群。 概述 近年来 Arm 服务器的发展势头很猛,但大部分人的个人电脑还是 x86 环境,...读者可以通过 AARCH64 开发环境准备 这一节提供的命令进入 .

    首发极术社区
    作者:Zhiyuan zhu
    如对Arm相关技术感兴趣,欢迎私信aijishu20加入技术微信群。

    概述

    近年来 Arm 服务器的发展势头很猛,但大部分人的个人电脑还是 x86 环境,开发上存在不便。
    本文介绍了如何在 x86 环境下,基于 Qemu 和 Docker 快速搭建 AARCH64 开发环境。

    从 docker-hub 可以下载到一个名字叫dev4arm64/aarch64:ubuntu_19.04_sve 的 docker image,
    读者可以通过 AARCH64 开发环境准备 这一节提供的命令进入 AARCH64 开发环境。也可以通过附录提供的方法,手动创建开发环境。

    到目前为止,官方 release 的 gcc 还不支持 SVE intrinsics ,
    但 github上 的 gcc-mirror 仓包含了一个 aarch64/sve-acle-branch 的分支,通过 sve acle 分支的源代码,可以手动编译出一个支持 SVE intrinsics 的 gcc 编译器,
    更多的信息见参考文献 [2]。
    本文的 AARCH64 开发环境中内置了一个手动编译的 gcc,用来支持对 SVE intrinsics 的编译。

    支持 SVE intrinsics 的编译器,放在了开发环境的 /home/dev/bin/gcc_sve/ 目录下面。
    下文中提到的所有测试代码、支持 SVE intrinsics 的 gcc 编译器,都已经内置在了dev4arm64/aarch64:ubuntu_19.04_sve docker image 中。本文是 AARCH64 开发系列文章的第一篇。以下假定所有代码存放于 ~/work 目录下。

    AARCH64 开发环境准备

    准备一台安装有 ubuntu18.04 (更高版本或者近似版本都可以) 的 x86 电脑,运行如下命令进入 AARCH64 开发环境。

    sudo apt-get install qemu-user
    wget "https://raw.githubusercontent.com/qemu/qemu/master/scripts/qemu-binfmt-conf.sh"
    sudo chmod u+x qemu-binfmt-conf.sh
    sudo ./qemu-binfmt-conf.sh --qemu-path /usr/bin
    sudo docker pull dev4arm64/aarch64:ubuntu_19.04_sve                              # get docker image
    sudo docker run --rm -v ~/:/mnt -it dev4arm64/aarch64:ubuntu_19.04_sve su - dev  # enter development env
    

    以下所有内容都是在 AARCH64 开发环境中的操作,
    本文的实验代码可以从参考文献 [5] 下载。
    AARCH64 基本汇编编译运行

    切换到目录 ~/work/aarch64_asm,有一个内置的 aarch64 的基本汇编测试程序,如下

    $ cat hello.S
            .arch armv8-a
            .text
            .align  2
    
            .global main
            .type   main, %function
    main:
            stp     x29, x30, [sp, -16]!
    
            adrp    x0, hello_str
            add     x0, x0, :lo12:hello_str
            bl      printf
            mov     x0, 0
    
            ldp     x29, x30, [sp], 16
            ret
    
            .section        .rodata
            .align  4
    hello_str:
            .string "hello aarch64\n"
    

    执行 makefile 文件可以得到如下结果

    $ make run clean
    gcc     hello.S   -o hello
    ./hello
    hello aarch64
    rm -f hello *.o
    

    AARCH64 Neon 编译运行

    Neon 的测试代码在目录 ~/work/neon 下面。
    AARCH64 Neon 汇编编译运行

    这是一个批量处理16个 unsigned char 类型数据做加法运算的例子,运行 make run_asm clean 结果如下

    $ make run_asm clean
    cc    -c -o neon_add3.o neon_add3.S
    cc -g -Wall -march=armv8.2-a -O2   -c -o neon_add3_test.o neon_add3_test.c
    cc   neon_add3.o neon_add3_test.o   -o neon_add3
    ./neon_add3
    name: data
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    name: data (new)
    3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
    rm -f *.o neon_add3 neon_hello
    

    AARCH64 Neon intrinsics 编译运行

    这是一个用neon计算 1,2,3 … 加到99 的例子,运行 make run_intrinsics clean 结果如下

    $ make run_intrinsics clean
    cc -g -Wall -march=armv8.2-a -O2   -c -o neon_hello.o neon_hello.c
    cc   neon_hello.o   -o neon_hello
    ./neon_hello
    sum=4950
    rm -f *.o neon_add3 neon_hello
    

    AARCH64 SVE 编译运行

    SVE 的测试代码在目录 ~/work/sve 下面。

    AARCH64 SVE 汇编编译运行

    这是通过sve指令计算字符串长度的例子,运行 make run_asm clean 结果如下

    注意: arm sve 指令是 armv8.2 开始支持的,因此 -march 后面的参数是: armv8.2-a+sve

    $ make run_asm clean
    cc    -c -o sve_strlen.o sve_strlen.S
    /home/dev/bin/gcc_sve/bin/aarch64-linux-gnu-gcc -g -Wall -march=armv8.2-a+sve -O2 -c -o sve_strlen_test.o sve_strlen_test.c
    cc   sve_strlen.o sve_strlen_test.o   -o sve_strlen
    ./sve_strlen
    len=9 of "hello sve"
    rm -f *.o sve_strlen sve_hello
    

    因为这个例子的代码量比较少,因此贴出 source code 的源代码,更多内容,
    见参考文献 [6]

    $ cat sve_strlen.S
    // reference: https://alastairreid.github.io/papers/sve-ieee-micro-2017.pdf
            .arch armv8.2-a+sve
            .text
            .align  2
    
            .global sve_strlen
            .type   sve_strlen, %function
    
    sve_strlen:
            mov x1, x0
            ptrue p0.b
    .loop:
            setffr
            ldff1b z0.b, p0/z, [x1]
            rdffr p1.b, p0/z
            cmpeq p2.b, p1/z, z0.b, #0
            brkbs p2.b, p1/z, p2.b
            incp x1, p2.b
            b.last .loop
            sub x0, x1, x0
    ret
    

    AARCH64 SVE intrinsics 编译运行

    这是一个通过 sve intrinsics 做批量运算的例子,运行 make run_intrinsics clean 结果如下

    $ make run_intrinsics clean
    /home/dev/bin/gcc_sve/bin/aarch64-linux-gnu-gcc -g -Wall -march=armv8.2-a+sve -O2 -c -o sve_hello.o sve_hello.c
    cc   sve_hello.o   -o sve_hello
    ./sve_hello
    0.988095 0.988095 0.988095, 0.000000, 0.988095
    1.488095 1.488095 1.488095, 0.500000, 0.988095
    1.654762 1.654762 1.654762, 0.666667, 0.988095
    1.738095 1.738095 1.738095, 0.750000, 0.988095
    1.788095 1.788095 1.788095, 0.800000, 0.988095
    1.821429 1.821429 1.821429, 0.833333, 0.988095
    1.845238 1.845238 1.845238, 0.857143, 0.988095
    1.863095 1.863095 1.863095, 0.875000, 0.988095
    1.876984 1.876984 1.876984, 0.888889, 0.988095
    1.888095 1.888095 1.888095, 0.900000, 0.988095
    rm -f *.o sve_strlen sve_hello
    

    附录

    下载附件:ubuntu-19.04-dockerfile 和 docker-build.sh,
    在命令行上输入如下命令,等待一段时间,环境就会创建成功。

    ./docker-build.sh
    

    参考文献

    [1] SVE in QEMU’s linux-user mode

    [2] 交叉编译支持SVE ACLE的gcc

    [3] qemu-user-static release

    [4] ARM64编译工具链下载

    [5] AARCH64 sample code

    [6] Alastair Reid’ page

    展开全文
  • aarch64异常(一)aarch64异常简介

    千次阅读 2020-04-15 22:32:38
    Aarch64中异常的基本概念 异常发生时硬件做了哪些事情? 异常的处理 Aarch64中异常的基本概念 在aarch64中,将中断、系统调用、数据指令异常等等情况统称为异常。异常会中断当前cpu执行流,转而执行具有更高...

    目录

     

    Aarch64中异常的基本概念

    异常发生时硬件做了哪些事情?

     

    异常的处理


    Aarch64中异常的基本概念

    在aarch64中,将中断、系统调用、数据指令异常等等情况统称为异常。异常会中断当前cpu执行流,转而执行具有更高权限的代码,即exception handler。当异常处理完毕后cpu会再次返回到之前的被中断的代码流继续执行。

    常见的异常有中断、系统调用、数据指令失效访问等等。虽然异常类型各种各样,但aarch64将异常分为同步异常(synchronous exception)和异步异常(asynchronous exception)两类。

    • asynchronous exception的特点:

    1异常发生的时机无法预料,与CPU执行的指令无关; 

    2异常处理的返回地址并非是产生异常时的那一条指令。

    IRQ、FIQ和SError interrupt属于asynchronous exception。

    • synchronous exception的特点:

    1 异常的产生是和CPU执行的指令或者试图执行的指令有关; 

    2 异常处理的返回地址就是产生异常的那一条指令所在的地址。 

     

    异常发生时硬件做了哪些事情?

    • 异常返回地址保存到ELR_ELn寄存器中

    PE会根据异常的类型选择一个合适返回地址保存到ELR_ELn中,n的含义和签名SPSR_ELn类似。等到异常处理完毕、软件主动调用ERET指令,这个指令会将ELR_ELn的内容更新到PC指针,实现异常的返回跳转。

    • 将当前PE状态保存到SPSR_ELn寄存器中

    其中n表示target exception level。例如,在linux中用户态任务(EL0)执行时触发一个数据访问异常,此时target exception level就是EL1。

    待异常处理完毕后,软件会主动调用ERET指令,这个指令的一个功能就是将SPSR_ELn恢复到PSATE寄存器中(严格来说PSTATE不是一个寄存器,是一组表示PE状态寄存器的组合)。

    • 更新PE状态寄存器进入目标EL

    发生异常,PE进入要给全新的执行状态,因而PSATE寄存器的各个状态域也会随之更新。

    其中DAIF域的各个位都会被mask,从而禁止在此cpu上这些异常事件的发生;因而异常处理过程中除非软件显示的unmask DAIF中的bit位,否则这些异常一直处于禁止状态,知道ERET指令执行时DAIF的值从SPSR_ELn寄存器恢复到异常前的状态。

    • 堆栈指针SP_ELn的切换

    程序运行在EL0时使用的是SP_EL0;其他Exception level下,可以使用SP_EL0或者当前Exception level所对应的SP_ELn寄存器;具体使用SP_EL0还是SP_EL1是由PSTATE.SP决定,对应的寄存器是Spsel。若Spsel==0,那么强制使用SP_EL0,否则使用用SP_ELn。在linux中Spsel默认位1。因而异常发生时,默认会切换到SP_ELn。

    • 视情况更新ESR_ELn寄存器

    如果发生的是同步异常或者SError异常,则将异常原因信息更新到ESR_ELn寄存器中。其他FIQ、IRQ异常则不会更新此寄存器。

    • 视情况更新FAR_ELn寄存器

    FAR_ELn寄存器全称叫Fault Address Registe。在指令或者数据 Aborts异常、非对齐异常时,这个寄存器保存引发异常的地址。

     

    异常的处理

    根据发生在内核态还是用户态,中断还是异常, cpu会自动跳转到异常向量表中的el1_sync,el1_irq,el0_sync,el0_irq处;

    异常处理完毕后软件通过执行ERET指令返回异常,这条指令完成:将SPSR_ELn寄存器的值恢复到PSTATE中;

    如图所示(下图来自):

                              

     

    参考:

    https://static.docs.arm.com/100933/0100/aarch64_exception_and_interrupt_handling_100933_0100_en.pdf

    《ARM® Cortex®-A Series Programmer’s Guide for ARMv8-A》

     

     

     

    展开全文
  • pytorch-aarch64 用于aarch64 /ARMv8/ARM64设备的 、、、和轮 (whl) 和aarch64图像 ( ) | | 安装 pip install torch -f https://torch.kmtea.eu/whl/stable.html 备份链接: pip install torch -f ...
  • <div><p>Currently, we only support cross-compiling <code>aarch64</code> version of OSv kernel on <code>x64</code> Fedora builds machine/container. GIven these days there is cheaper yet powerful arm64 ...
  • xbyak_aarch64-源码

    2021-05-15 00:46:02
    Xbyak_aarch64; C ++用于AArch64 CPU的JIT汇编器 抽象的 Xbyak_aarch64是一个C ++库,可使用Arm:registered:v8-A体系结构的AArch64指令集进行运行时汇编编码。 Xbyak_aarch64基于由MITSUNARI Shigeo为x86_64 CPU开发...
  • 适用于Android arm64-v8a(ARM aarch64)SQLite预编译二进制文件 $ wget https://github.com/rojenzaman/sqlite3-arm-aarch64/blob/main/sqlite3 $ chmod +x sqlite3 $ ./sqlite3 --version
  • aarch64 tensorflow 安装包

    2019-04-22 16:19:24
    aarch64 tensorflow 安装包,编译很久才编好的。aarch64 tensorflow 安装包,编译很久才编好的。
  • aarch64.el7 - nfs依赖包

    2020-12-21 15:44:51
    gssproxy-0.7.0-29.el7.aarch64.rpm libini_config-1.3.1-32.el7.aarch64.rpm libverto-libevent-0.2.5-4.el7.aarch64.rpm keyutils-1.5.8-3.el7.aarch64.rpm libnfsidmap-0.25-19.el7.aarch64.rpm nfs-utils-1.3.0-...
  • 在TX1板卡上移植开源库出现如下错误 ... Invalid configuration `aarch64-linux': machine `aarch64' not recognized 系统环境 ubuntu@tegra-ubuntu:/$ file /bin/busybox /bin/busybox: ELF 64-bit LS...
    /*********************************************************************
    * Author          :     lile
    * Modified        :     2019年12月28日星期六  10:16:13
    * Email           :     roger0212@163.com
    * HomePage        :     lile777.blog.csdn.net
    * CopyRight       :     该文章版权由lile所有。
    *                       保留原文出处链接和本声明的前提下,可在非商业目的下任意传播和复制。
    *                       对于商业目的下对本文的任何行为需经作者同意。
    *********************************************************************/
    

    现象

    在TX1板卡上移植开源库出现如下错误

    checking build system type... Invalid configuration `aarch64-linux': machine `aarch64' not recognized
    

    系统环境

    ubuntu@tegra-ubuntu:/$ file /bin/busybox 
    /bin/busybox: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, for GNU/Linux 3.7.0, BuildID[sha1]=e31196f09f5c22fbc94e653b40d7b0f07309cf5c, stripped
    ubuntu@tegra-ubuntu:/$ cat /proc/version 
    Linux version 3.10.96+ (tegra-ubuntu@ubuntu) (gcc version 5.4.1 20170404 (Linaro GCC 5.4-2017.05) ) #1 SMP PREEMPT Tue Jul 24 20:52:13 PDT 2018
    ubuntu@tegra-ubuntu:/$ lsb_release -a
    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 16.04 LTS
    Release:        16.04
    Codename:       xenial
    ubuntu@tegra-ubuntu:/$ 
    

    搜索了一圈发现这个方法是靠谱的

    https://blog.csdn.net/amds123/article/details/53258495

    思路:

    1, 下载最新的配置文件

    wget -O config.guess 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD'
    wget -O config.sub 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD'
    
    

    2, 查找当前库文件的位置

    find . -name "config.guess"
    find . -name "config.sub"
    
    

    3,删除旧文件,更新 最新文件

    展开全文
  • Alpinelinux最新版本3.7为raspberrypi 3构建的aarch64持久映像。我用于该映像的构建环境是具有Gentoo aarch64的raspberrypi 3,而内核是使用aarch64-unknown-linux-gnu交叉编译的。 -内核:4.10.17-v8 +-已安装的...
  • aarch64.zip

    2021-04-14 15:07:56
    可交叉编译aarch64程序
  • Hi请问aarch64-linux-android-clang++ 支持neon 指令集编译吗?用neon指令集 写了一个算法, 相同的代码用aarch64-linux-android-gcc 可以编译过,aarch64-linux-android-clang++ 一直出错:pengfei@ubuntu:/mnt/...
  • 修改后安装在rock64上(带有ubuntu 18.04的aarch64) 此自述文件是原始NCSDK存储库的修改版本 此英特尔:registered:Movidius:trade_mark:神经计算软件开发套件(NCSDK)为:registered:Movidius (Intel:registered:...
  • libsigar-aarch64-linux.rar

    2020-04-29 16:31:09
    sigar官方提供的动态库默认不支持aarch64平台。该libsigar-aarch64-linux.so库支持aarch64平台。
  • openEuler aarch64 mongo rpm

    2020-10-27 18:28:35
    openEuler 20.03 aarch64系统编译出来得对应版本得mongo 4.0.12版本得aarch64
  • aarch64_curl.zip

    2021-04-08 11:58:41
    curl aarch64交叉编译 gcc 6.5.0

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,093
精华内容 7,637
关键字:

aarch64