Forum: Mikrocontroller und Digitale Elektronik Raspberry Pi 3 ARM v7 oder v8?


von Felix L. (flex)


Lesenswert?

Hallo,

ich habe immer wieder gelesen, dass der neue Raspberry Pi 3 einen ARM v8 
Kern hat. Wenn ich aber nun mit
1
cat /proc/cpuinfo
 die CPU Information auslese, steht da folgendes:
1
pi@raspberrypi:~ $ cat /proc/cpuinfo
2
processor       : 0
3
model name      : ARMv7 Processor rev 4 (v7l)
4
BogoMIPS        : 38.40
5
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
6
CPU implementer : 0x41
7
CPU architecture: 7
8
CPU variant     : 0x0
9
CPU part        : 0xd03
10
CPU revision    : 4
11
12
processor       : 1
13
model name      : ARMv7 Processor rev 4 (v7l)
14
BogoMIPS        : 38.40
15
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
16
CPU implementer : 0x41
17
CPU architecture: 7
18
CPU variant     : 0x0
19
CPU part        : 0xd03
20
CPU revision    : 4
21
22
processor       : 2
23
model name      : ARMv7 Processor rev 4 (v7l)
24
BogoMIPS        : 38.40
25
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
26
CPU implementer : 0x41
27
CPU architecture: 7
28
CPU variant     : 0x0
29
CPU part        : 0xd03
30
CPU revision    : 4
31
32
processor       : 3
33
model name      : ARMv7 Processor rev 4 (v7l)
34
BogoMIPS        : 38.40
35
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
36
CPU implementer : 0x41
37
CPU architecture: 7
38
CPU variant     : 0x0
39
CPU part        : 0xd03
40
CPU revision    : 4
41
42
Hardware        : BCM2709
43
...

Ist es also doch ein v7?

Das gleiche ist mir auch bei XBMC aufgefallen.

Grüße
Felix

von blabla (Gast)


Lesenswert?

Der läuft im "v7 mode" es gibt noch kein AArch64 system für den Pi3
Siehe:
https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-3

Ich hoffe ich täusche mich und mit der Weile gibt es das schon irgendwo 
ich habe es noch nicht gefunden ;-)

von foobar (Gast)


Lesenswert?

Afaik ist Raspbian immer noch für 32-Bit compiliert, deswegen ARMv7

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Der verwendete SoC kann v8 und v7, ist somit umschaltbar.

von Martin (Gast)


Lesenswert?

Ich springe noch einmal in diesen älteren Thread ...

Das heißt, wenn ich einen Compiler für einen ARMv8 nutze laufen die 
Programme nicht weil der Kernel für ARMv7 ist?

blabla schrieb:
> Der läuft im "v7 mode" es gibt noch kein AArch64 system für den Pi3
> Siehe:

Ist ARMv8 zwingend 64Bit?

von S. R. (svenska)


Lesenswert?

Martin schrieb:
> Das heißt, wenn ich einen Compiler für einen ARMv8 nutze laufen die
> Programme nicht weil der Kernel für ARMv7 ist?

Es läuft ein 32-Bit-Betriebssystem, also kannst du 64-Bit-Programme 
nicht laufen lassen. Ähnlich wie "Windows x86" keine Programme für 
"Windows x64" ausführen kann, umgekehrt aber geht das.

> blabla schrieb:
> Ist ARMv8 zwingend 64Bit?

Ja. ARMv8 ist ein 64-Bit-Befehlssatz.

von Wolfgang (Gast)


Lesenswert?

S. R. schrieb:
> Es läuft ein 32-Bit-Betriebssystem, also kannst du 64-Bit-Programme
> nicht laufen lassen. Ähnlich wie "Windows x86" keine Programme für
> "Windows x64" ausführen kann, umgekehrt aber geht das.

Ist schon klar.

S. R. schrieb:
> Ja. ARMv8 ist ein 64-Bit-Befehlssatz.

Das war mit nicht klar. Das beantwortet natürlich auch die erste Frage.

Danke!

von (prx) A. K. (prx)


Lesenswert?

Wer 64-Bit auf einem RasPi >= 3 haben will, kann Ubuntu nehmen.

von Martin (Gast)


Lesenswert?

Es scheint so zu sein, dass ARMv8 nicht zwingend 64Bit heißt. Ich habe 
auf einem Raspi 3B mal ein paar Test gemacht :
1
uname -a
2
Linux raspi 5.4.83-v7+ #1379 SMP Mon Dec 14 13:08:57 GMT 2020 armv7l GNU/Linux
1
lscpu
2
Architecture:        armv7l
3
Byte Order:          Little Endian
4
CPU(s):              4
5
On-line CPU(s) list: 0-3
6
Thread(s) per core:  1
7
Core(s) per socket:  4
8
Socket(s):           1
9
Vendor ID:           ARM
10
Model:               4
11
Model name:          Cortex-A53
12
Stepping:            r0p4
13
CPU max MHz:         1200,0000
14
CPU min MHz:         600,0000
15
BogoMIPS:            38.40
16
Flags:               half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
Ich habe also ein Raspi mit Cortex-A53 welcher ein ARMv8 ist obwohl oben 
armv7l steht. Der Kernel ist also wohl für einen ARMv7 erstellt worden. 
Ich habe nun mal ein Hello World Programm geschrieben und es mit
1
gcc helloworld.c -o helloworld-raspi8 -march=armv8-a
kompiliert. Das Ergebnis ist ein 32Bit Programm für ARMv8 welches auch 
auf dem Raspi läuft.
1
file helloworld-raspi8
2
helloworld-raspi8: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=dd425965122ac2e56f9ac85581f1b1a121efcd6a, with debug_info, not stripped
1
readelf -A helloworld-raspi8
2
Attribute Section: aeabi
3
File Attributes
4
  Tag_CPU_name: "8-A"
5
  Tag_CPU_arch: v8
6
  Tag_CPU_arch_profile: Application
7
  Tag_ARM_ISA_use: Yes
8
  Tag_THUMB_ISA_use: Thumb-2
9
  Tag_FP_arch: VFPv2
10
  Tag_ABI_PCS_wchar_t: 4
11
  Tag_ABI_FP_rounding: Needed
12
  Tag_ABI_FP_denormal: Needed
13
  Tag_ABI_FP_exceptions: Needed
14
  Tag_ABI_FP_number_model: IEEE 754
15
  Tag_ABI_align_needed: 8-byte
16
  Tag_ABI_align_preserved: 8-byte, except leaf SP
17
  Tag_ABI_enum_size: int
18
  Tag_ABI_VFP_args: VFP registers
19
  Tag_CPU_unaligned_access: v6
20
  Tag_MPextension_use: Allowed
21
  Tag_Virtualization_use: TrustZone and Virtualization Extensions
Ich habe das Hello World auch mal auf einem PC mit ARMv8-gcc kompiliert. 
Das Programm läuft auch auf dem Raspi. Das sind noch ein paar andere 
Optimierungen vom Compiler her.
1
readelf -A helloworld-crossarmv8
2
Attribute Section: aeabi
3
File Attributes
4
  Tag_CPU_name: "8-A"
5
  Tag_CPU_arch: v8
6
  Tag_CPU_arch_profile: Application
7
  Tag_ARM_ISA_use: Yes
8
  Tag_THUMB_ISA_use: Thumb-2
9
  Tag_FP_arch: FP for ARMv8
10
  Tag_Advanced_SIMD_arch: NEON for ARMv8
11
  Tag_ABI_PCS_wchar_t: 4
12
  Tag_ABI_FP_rounding: Needed
13
  Tag_ABI_FP_denormal: Needed
14
  Tag_ABI_FP_exceptions: Needed
15
  Tag_ABI_FP_number_model: IEEE 754
16
  Tag_ABI_align_needed: 8-byte
17
  Tag_ABI_align_preserved: 8-byte, except leaf SP
18
  Tag_ABI_enum_size: int
19
  Tag_ABI_VFP_args: VFP registers
20
  Tag_CPU_unaligned_access: v6
21
  Tag_MPextension_use: Allowed
22
  Tag_Virtualization_use: TrustZone and Virtualization Extensions

von S. R. (svenska)


Lesenswert?

Martin schrieb:
> Es scheint so zu sein, dass ARMv8 nicht zwingend 64Bit heißt.
> Ich habe auf einem Raspi 3B mal ein paar Test gemacht

Ich habe dem "Wolfgang" schon mitgeteilt, dass man auf einem Computer 
mit x64-fähigen Prozessor (64 Bit) auch Programme und Betriebssysteme 
für x86 (32 Bit) ausführen kann.

Genauso ist das bei ARMv8 auch: Der Prozessoren kann auch ARMv7-Code 
ausführen.

Wenn du natürlich ein 32-Bit-Betriebssystem auf deinem 
64-Bit-Prozessor-der-beides-kann laufen lässt, dann hast du von den 64 
Bit nichts. Aber dann nutzt du auch kein vollständiges ARMv8.

Was deinen Test betrifft: Ein ARMv8-Prozessor hat auch dann ein paar 
Erweiterungen zu einem ARMv7-Prozessor, wenn er im ARMv7-Modus läuft. 
Aber ARM hat dem Kind m.W. keinen eigenen Namen gegeben, also nennt der 
gcc das auch ARMv8. Ist aber effektiv ARMv7+bisschen Kleinzeug.

Ähnlich wie bei x86: Auf einer x64-fähigen CPU hast du bestimmte Dinge 
garantiert (z.B. SSE2), die eine CPU ohne x64 möglicherweise nicht kann. 
Da nennt man es nur anders.

: Bearbeitet durch User
von Martin (Gast)


Lesenswert?

Danke für deinen Komentar.

Ich brauche auf dem Raspi kein 64Bit System. Mir geht es nur um das 
Verstehen. Oben habe ich es so verstanden, dass wenn ich etwas für einen 
ARMv8 kompiliere ist das zwingend 64bit. Das ist aber nicht so. Es wird 
ein ARMv8 32Bit Binary erstellt, das ist für mich ausreichend. Auch ein 
ARMv7 Binary ist ausreichend.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.