Linux: / proc / cpuinfo مفقود في الأجهزة / المراجعة / المسلسل على arm64

تم إنشاؤها على ١١ يوليو ٢٠١٧  ·  4تعليقات  ·  مصدر: raspberrypi/linux

تحتوي المعلومات الواردة في / proc / cpuinfo أثناء استخدام نواة arm64 على معلومات أقل من إصدار arm 32 بت ، مما يؤدي إلى عدم التعرف على النظام باعتباره Raspberry Pi ، على سبيل المثال بواسطة مكتبة RPi.GPIO.

على وجه الخصوص ، يبدو أن خطوط الأجهزة / المراجعة المفقودة أسفل وحدات المعالجة المركزية الفردية تسبب مشكلة ، حيث يتم استخدامها لتحديد طراز معين.

مما يمكنني رؤيته في الكود المصدري ، بالنسبة لـ arm64 ، تأتي معلومات وحدة المعالجة المركزية من هنا: https://github.com/raspberrypi/linux/blob/rpi-4.12.y/arch/arm64/kernel/cpuinfo.c ، بينما arm يتم إنشاؤه في setup.c (سيكون https://github.com/raspberrypi/linux/blob/rpi-4.12.y/arch/arm64/kernel/setup.c لـ arm64).

محتوى / proc / cpuinfo مع نواة 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

... ... ...

ما كنت أتوقعه (يعمل على نواة ذراع 32 بت ، تمت إزالة المسلسل):

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

معلومات النظام الإضافية:

$ 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

التعليق الأكثر فائدة

الحل البسيط ، على الرغم من أنه ليس أنيقًا للغاية ، لهذا (بدون تصحيح مكتبات مساحة المستخدمين أو النواة) هو ربط نسخة زائفة من /proc/cpuinfo عند الحاجة ؛ انظر على سبيل المثال رسالتي هنا .

مع rpi-4.19.y kernel ، هذا كافٍ للحصول على سبيل المثال على picamera lib (انظر على سبيل المثال هنا (64 بت kernel ، مساحة مستخدمي Raspbian 32 بت في هذه الحالة)) ، وسوف تسمح iirc إصدار 64 بت من wiringpi لتشغيل OK (نواة 64 بت ، مساحة مستخدمين 64 بت). YMMV.

يمكنك استخدام ، على سبيل المثال ، مساحة اسم تحميل لتطبيقك المستهدف لمنع هذا الحل البديل من التأثير على بقية النظام (على الرغم من أن معظم عناصر userland ذات 64 بت حسن التصرف يبدو أنها تتحقق من شجرة الأجهزة على أي حال ، بدلاً من /proc/cpuinfo ، وهكذا لا يبدو أنه يهتم ^ - ^).

ح
ساكاكي

ال 4 كومينتر

تجعل هذه المشكلة جميع البرامج النصية لـ Rasberry Pi GPIO وما إلى ذلك غير قابلة للاستخدام في هذه البنية.

  1. نحن لا ندعم إصدارات 64 بت ، على الرغم من أنه إذا كانت هناك أشياء بسيطة يمكننا القيام بها (مثل استضافة defconfigs لـ arm64) فإننا سنفعل.
  2. عندما ندعم arm64 ، فسيكون مع الحد الأدنى المطلق من التغييرات على نواة المنبع (من الناحية المثالية لا شيء) ، ولن يكون محتوى / proc / cpuinfo على رأس قائمة الأولويات. رقم مراجعة المجلس والرقم التسلسلي هما مفاهيم لا يبدو أنها موجودة في بنية arm64 ، لكننا سنستمر في إتاحة هذه المعلومات عبر /proc/device-tree/system/linux,revision و /proc/device-tree/system/linux,serial ، مع إصدارات يمكن قراءتها بواسطة الإنسان /proc/device-tree/model و /proc/device-tree/serial-number .

هذا لن يصلح.

الحل البسيط ، على الرغم من أنه ليس أنيقًا للغاية ، لهذا (بدون تصحيح مكتبات مساحة المستخدمين أو النواة) هو ربط نسخة زائفة من /proc/cpuinfo عند الحاجة ؛ انظر على سبيل المثال رسالتي هنا .

مع rpi-4.19.y kernel ، هذا كافٍ للحصول على سبيل المثال على picamera lib (انظر على سبيل المثال هنا (64 بت kernel ، مساحة مستخدمي Raspbian 32 بت في هذه الحالة)) ، وسوف تسمح iirc إصدار 64 بت من wiringpi لتشغيل OK (نواة 64 بت ، مساحة مستخدمين 64 بت). YMMV.

يمكنك استخدام ، على سبيل المثال ، مساحة اسم تحميل لتطبيقك المستهدف لمنع هذا الحل البديل من التأثير على بقية النظام (على الرغم من أن معظم عناصر userland ذات 64 بت حسن التصرف يبدو أنها تتحقق من شجرة الأجهزة على أي حال ، بدلاً من /proc/cpuinfo ، وهكذا لا يبدو أنه يهتم ^ - ^).

ح
ساكاكي

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات