Linux용 arm64/aarch64 또는 여기에서 실행되는 다른 소프트웨어의 다양한 구현 간의 차이점은 무엇입니까? [폐쇄]

Linux용 arm64/aarch64 또는 여기에서 실행되는 다른 소프트웨어의 다양한 구현 간의 차이점은 무엇입니까? [폐쇄]

x86_64 아키텍처 CPU의 경우 Intel, AMD 또는 VIA인지 여부. 이 아키텍처의 소프트웨어는 정상적으로 실행될 수 있습니다.

그러나 arm64/aarch64의 경우(arm64/aarch64의 차이점은여기), 공급업체가 많습니다. arm64/arch64 Linux 배포판에는 여러 가지 방향이 있습니다.

여기Arch Linux ARM의 arm 지원 플랫폼 목록입니다.

이 아니라면더반, 그다지 많은 선택 사항은 아닙니다(arm64만, 리틀 엔디안은 armel만).

Q1. Archlinuxarm이 지원하는 플랫폼의 차이점은 무엇입니까?

Q1을 알아보기 위해 휴대폰으로 시도해보았습니다. 내 휴대폰 아키텍처는 arm64v7el(4*ARMCortex-A73+4*ARMCortex-A53)입니다. 나는 다운로드한다Armv7용 Archlinuxarm - 라즈베리 파이 2. 그리고 .tar.gz 파일을 Termux 홈 디렉터리의 폴더에 추출합니다.

그런 다음 Termux를 열고 다음을 입력했습니다.

proot -r /path/to/my/archlinuxarm/rootfolder/

불행하게도 쉘 인터프리터는 (다른 아키텍처에서는) 실행 가능하지 않다고 합니다.

아마도 이는 엔디안의 차이 때문일 것입니다. 그러나 armv8에는 archlinuxarm에 대한 다운로드 옵션이 있습니다.일반적인.

Q2. 플랫폼 A에서 플랫폼 B로 Archlinuxarm 시스템을 설치하는 경우 최적화를 극대화하는 것이 불가능합니까, 아니면 완전히 호환되지 않습니까?

Q3. Linux 커널을 컴파일할 때 서로 다른 플랫폼의 배포 버전에는 서로 다른 드라이버나 매개변수만 있습니까?

Q4. 나를 혼란스럽게 하는 것은 왜 Archlinuxarm 커뮤니티가 다른 공급업체의 다른 제품 대신 arm64, armel 등에 대해서만 스테이지 rootfs 타르볼을 제공하지 않는 것입니까? 이것은 DragonBoard 410c의 명령 세트가 Raspberry Pi 3과 다르다는 것을 의미합니까? 즉, DragonBoard 410c용 Archlinuxarm을 Raspberry Pi 3에 설치하면 어떻게 됩니까? 정상적으로 부팅이 가능한가요?

답변1

귀하의 질문은 매우 광범위한 것으로 해석될 수 있지만 실제로 질문하시는 내용은 매우 구체적이라고 생각합니다. arm64와 aarch64의 다양한 구현 간의 근본적인 차이점.

문제의 핵심은 서로 다른 CPU가 서로 다른 명령 세트를 제공한다는 것입니다. 나는 보통 다음과 같은 제목의 Wikipedia 페이지를 인용합니다.명령어 세트 목록, 이는 제가 인터넷에서 본 목록 중 가장 완전한 목록이기 때문입니다.

명령어 세트

모든 마이크로프로세서의 핵심은 실행할 수 있는 명령어 세트입니다. 명령어 세트의 인터페이스는 컴파일러가 고급 프로그래밍 언어(예: C/C++)를 기계어 코드로 변환하는 데 사용하는 인터페이스입니다. 이 기계어 코드는 CPU 명령어 세트의 명령어입니다. 그런데 지침 세트의 지침은 일반적으로 다음과 같습니다.

x86 NASM -https://rosettacode.org/wiki/Bitwise_Operations#x86_Assembly
    extern printf
    global main

    section .text
main
    mov eax, dword [_a]
    mov ecx, dword [_b]
    push    ecx
    push    eax

    and     eax, ecx
    mov ebx, _opand
    call    out_ops

노트:어셈블리 언어라는 기계 코드도 듣게 됩니다.

arm64 및 aarch64

두 아키텍처 모두에서 SO에서 다음 답변을 찾을 수 있었습니다.arm64와 aarch64의 차이점, 차이점은 다음과 같습니다.

AArch64는 64비트 상태로 도입되었습니다.Armv8-A 아키텍처. Armv7-A 및 이전 32비트 Arm 아키텍처와 역호환되는 32비트 상태를 AArch32라고 합니다. 따라서 64비트 ISA용 GNU 삼중항은 aarch64입니다. Linux 커널 커뮤니티는 커널을 aarch64 대신 이 아키텍처로 포팅하기로 결정했기 때문에 arm64 사용의 일부가 여기에서 발생합니다.

내가 아는 한, Apple의 aarch64 백엔드는 arm64라고 하며, LLVM 커뮤니티에서 개발한 백엔드는 aarch64라고 합니다(이것이 64비트 ISA의 표준 이름이기 때문입니다). 나중에 두 개가 병합되어 현재 백엔드는 aarch64라고 합니다. .

따라서 aarch64와 arm64는 동일한 것을 참조합니다.

당신의 질문 중 일부

하나의 질문으로 답변하기에는 너무 많은 질문을 제기합니다. 가장 중요한 질문에 답하려고 노력하겠습니다.

Q4. 나를 혼란스럽게 하는 것은 왜 Archlinuxarm 커뮤니티가 다른 공급업체의 다른 제품 대신 arm64, armel 등에 대해서만 스테이지 rootfs 타르볼을 제공하지 않는 것입니까? 이것은 DragonBoard 410c의 명령 세트가 Raspberry Pi 3과 다르다는 것을 의미합니까? 즉, DragonBoard 410c용 Archlinuxarm을 Raspberry Pi 3에 설치하면 어떻게 됩니까? 정상적으로 부팅이 가능한가요?

이에 대한 자세한 내용을 보려면 Arch 커뮤니티에 왜 프로젝트에서 특정 작업을 선택했는지 물어봐야 합니다. Raspberry Pi 3에서 410c용으로 제작된 Archlinuxarm을 실행하는 것과 관련하여 제 조언은 시도해 보는 것입니다.

아래와 같이 두 CPU 모두 ARM 프로세서입니다.

SS1

따라서 내 기대는 두 가지 모두에서 동일한 바이너리를 사용할 수 있다는 것입니다. 마지막으로 Raspberry Pi Stackexchange 사이트에 후속 질문을 할 수도 있습니다. 귀하의 요구 사항에 따라 다음과 같은 많은 질문이 있습니다.

인용하다

관련 정보