Informasi yang terkandung dalam /proc/cpuinfo saat menggunakan kernel arm64 berisi informasi yang lebih sedikit daripada versi arm 32-bit, yang menyebabkan sistem tidak dikenali sebagai Raspberry Pi, misalnya oleh perpustakaan RPi.GPIO.
Terutama, baris Perangkat Keras/Revisi yang hilang di bawah masing-masing CPU tampaknya menyebabkan masalah, karena digunakan untuk mengidentifikasi model tertentu.
Dari apa yang saya lihat di kode sumber, untuk arm64 cpuinfo berasal dari sini: https://github.com/raspberrypi/linux/blob/rpi-4.12.y/arch/arm64/kernel/cpuinfo.c , sedangkan untuk lengan itu dihasilkan di setup.c (akan https://github.com/raspberrypi/linux/blob/rpi-4.12.y/arch/arm64/kernel/setup.c untuk arm64).
Isi /proc/cpuinfo dengan kernel arm64:
processor : 0
BogoMIPS : 38.40
Features : fp asimd evtstrm crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
... ... ...
Apa yang saya harapkan (berjalan pada kernel arm 32-Bit, serial dihapus):
processor : 0
model name : ARMv7 Processor rev 4 (v7l)
BogoMIPS : 38.40
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
... ... ...
Hardware : BCM2709
Revision : a22082
Serial : 00000000XXXXXXXX
Informasi sistem tambahan:
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=debian
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
HYPRIOT_OS="HypriotOS/arm64"
HYPRIOT_OS_VERSION="v1.1.1"
HYPRIOT_DEVICE="Raspberry Pi 3 64bit"
HYPRIOT_IMAGE_VERSION="v20170303-185520"
$ uname -a
Linux black-pearl 4.9.13-bee42-v8 #1 SMP PREEMPT Fri Mar 3 16:42:37 UTC 2017 aarch64 GNU/Linux
Masalah ini membuat semua skrip Rasberry Pi GPIO dll. tidak dapat digunakan pada arsitektur ini.
/proc/device-tree/system/linux,revision
dan /proc/device-tree/system/linux,serial
, dengan versi yang dapat dibaca manusia di /proc/device-tree/model
dan /proc/device-tree/serial-number
.Ini adalah tidak akan memperbaiki.
Solusi sederhana, meskipun tidak terlalu elegan, untuk ini (tanpa menambal pustaka ruang pengguna atau kernel) adalah dengan mengikat-mount versi palsu /proc/cpuinfo
bila diperlukan; lihat misalnya posting saya di sini .
Dengan kernel rpi-4.19.y
, ini cukup untuk misalnya membuat lib picamera
bekerja (lihat misalnya di sini (kernel 64-bit, ruang pengguna Raspbian 32-bit dalam kasus ini)), dan akan iirc mengizinkan build 64-bit dari wiringpi
untuk menjalankan OK (kernel 64-bit, ruang pengguna 64-bit). YMMV.
Anda dapat menggunakan misalnya mount namespace untuk aplikasi target Anda untuk mencegah solusi ini memengaruhi seluruh sistem Anda (walaupun sebagian besar userland 64-bit yang berperilaku baik tampaknya memeriksa devicetree, daripada
/proc/cpuinfo
, dan seterusnya sepertinya tidak peduli ^-^).
ht,
sakaki
Komentar yang paling membantu
Solusi sederhana, meskipun tidak terlalu elegan, untuk ini (tanpa menambal pustaka ruang pengguna atau kernel) adalah dengan mengikat-mount versi palsu
/proc/cpuinfo
bila diperlukan; lihat misalnya posting saya di sini .Dengan kernel
rpi-4.19.y
, ini cukup untuk misalnya membuat libpicamera
bekerja (lihat misalnya di sini (kernel 64-bit, ruang pengguna Raspbian 32-bit dalam kasus ini)), dan akan iirc mengizinkan build 64-bit dariwiringpi
untuk menjalankan OK (kernel 64-bit, ruang pengguna 64-bit). YMMV.ht,
sakaki