23

For x86_64 architecture CPU, no matter it is made by Intel, AMD or VIA. The software for this architecture can run on it properly.

However, as for arm64/aarch64(the difference of arm64/aarch64 is here), there are a lot of vendors. For Linux distributions for arm64/arch64 there is a lot of orientation.

Here is the list of arm support platforms of Arch Linux ARM.

But for Debian, there is no such many choice(only arm64 and for little endian there is only armel).

Q1. What is the difference of those support platform of Archlinuxarm?

In order to figure out Q1, I use my mobile phone to try those. My mobile phone's architecture is arm64v7el (4*ARMCortex-A73+4*ARMCortex-A53). I download Archlinuxarm for armv7 - Raspberry Pi 2. And extract the .tar.gz file to a folder in Termux home directory.

Then I open Termux and typed:

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

Unfortunately, it is said that shell interpreter is not executable(in different architecture).

Maybe, it is because the difference of Endian. However, for armv8, there is a download option of archlinuxarm which is Generic.

Q2. If I install a archlinuxarm system for A platform to B platform. Is it just can't be maximum optimized or completely not compatible?

Q3. Are there distribution for different platform just different in their driver or the difference of parameters when compiling Linux kernels?

Q4. What makes me confused is the reason why archlinuxarm community doesn't provide stage rootfs tarball for only arm64 armel and etc. instead of different vendors' different products? Is it means that for example instruction set in DragonBoard 410c is different from Raspberry Pi 3? Or in other word, If I install Archlinuxarm for DragonBoard 410c to Raspberry Pi 3, What will happen? Can it boot properly?

2

1 Answer 1

20

Your question could be interpreted as pretty broad, but I think what you're actually asking about is extremely specific. The fundamental difference between the different implementations of arm64 vs. aarch64.

At the heart of your question is that different CPUs provide different instruction sets. I typically reference this Wikipedia page titled: List of instruction sets, since it's the most complete list I've ever seen on the Internet.

Instruction sets

At the heart of every microprocessor is a set of instructions that it can perform. The interface to the instruction sets is what compilers convert higher level programming languages, such as C/C++, down to machine code. This machine code is the instructions from a CPU's instruction set. Incidentally instructions in an instruction set typically look like this:

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

NOTE: You'll also hear machine code referred to as assembly language.

arm64 vs. aarch64

With these 2 architectures I was able to find this answer from SO: titled: Differences between arm64 and aarch64, which stated the difference as follows:

AArch64 is the 64-bit state introduced in the Armv8-A architecture. The 32-bit state which is backwards compatible with Armv7-A and previous 32-bit Arm architectures is referred to as AArch32. Therefore the GNU triplet for the 64-bit ISA is aarch64. The Linux kernel community chose to call their port of the kernel to this architecture arm64 rather than aarch64, so that's where some of the arm64 usage comes from.

As far as I know the Apple backend for aarch64 was called arm64 whereas the LLVM community-developed backend was called aarch64 (as it is the canonical name for the 64-bit ISA) and later the two were merged and the backend now is called aarch64.

So aarch64 and arm64 refer to the same thing.

Some of your questions

You're asking questions that are too numerous to answer in a single question. I'll try and answer the most important though.

Q4. What makes me confused is the reason why archlinuxarm community doesn't provide stage rootfs tarball for only arm64 armel and etc. instead of different vendors' different products? Is it means that for example instruction set in DragonBoard 410c is different from Raspberry Pi 3? Or in other word, If I install Archlinuxarm for DragonBoard 410c to Raspberry Pi 3, What will happen? Can it boot properly?

For the specifics on this, you'd have to ask the Arch community why they opt to do things within that project. In terms of your question about running Archlinuxarm built specifically for the 410c on a Raspberry Pi 3, my suggestion would be to try it.

Both of those CPUs are ARM processors as shown here:

ss1

So my expectation would be that you'd be able to use the same binaries on both. Lastly I'd likely as a follow-up question on the Raspberry Pi Stackexchange site. There are numerous questions along the lines of what you're asking there, for example:

References

4
  • @davmos - is this what you're looking for?
    – slm
    Commented Aug 8, 2018 at 2:16
  • 1
    Thanks so much for reply. However it is still not exactly what I am seeking. I conclude my confusion in Q4 in my post. Wish you can help me.
    – davmos
    Commented Aug 8, 2018 at 2:25
  • Thanks quite a lot, those help me a lot. Archlinuxarm I mentioned is just for example. Because ARM itself doesn't produce semiconductors there is a great amount of chip vendors for giant amount board for uncountable usage situation. So the relationship in ARM architecture is significantly more complicated than x86 family. I am a beginner, it makes me confusing.
    – davmos
    Commented Aug 8, 2018 at 4:00
  • @davmos - I've been dealing w/ this stuff for 20yrs and it's confusing to me as well 8-).
    – slm
    Commented Aug 8, 2018 at 4:01

Not the answer you're looking for? Browse other questions tagged .