Linux: tvservice -o ثم tvservice -p تظهر النتائج مدعومة على dipslay ولكن لا يتم عرض شيء.

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

لقد جربت ذلك باستخدام شاشتين مختلفتين و 3.12 و 3.18 .... على B + و rev2 B.

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

سيكون تطبيق sdl قد أنشأ مخزن الإطارات الخاص به وسيحتوي على مؤشر لذاكرة الإطارات الاحتياطية ، لذلك سيتعين عليه التعامل مع هذا بنفسه.
أعتقد حقًا أنه لا يجب إيقاف تشغيل HDMI عندما تستخدم التطبيقات الشاشة.
يمكنك استخدام:

vcgencmd display_power 0

و

vcgencmd display_power 1

وهي طريقة أقل تدخلاً لإزالة إشارة خرج HDMI ولكنها تترك التراكبات سليمة.

ال 9 كومينتر

هذا أمر طبيعي. يؤدي إيقاف تشغيل وحدة التخزين المؤقت إلى تدمير أي تراكبات (من بينها المخزن المؤقت للإطار).
يمكنك إعادة إنشائه باستخدام "fbset -depth 8 && fbset -depth 16"

التطبيق الذي أستخدمه يستند إلى sdl ولا يزال يتم إخراجه على الشاشة حتى أراه ،
17 مارس 14:33:46 raspberrypi user.err fbcp [3318]: تعذر التقاط لقطة -1. (60)
17 مارس 14:34:00 raspberrypi user.info kernel: [326.704707] bcm2708_fb_ioctl 40044620،0 إرجاع = 0 p [1] = 0x80000001
17 مارس 14:34:00 raspberrypi user.err kernel: [326.704940] bcm2708_fb_pan_display (0،0) يعود = 16
17 مارس 14:34:46 raspberrypi user.err fbcp [3318]: تعذر التقاط لقطة -1. (120)
17 مارس 14:35:00 raspberrypi user.info kernel: [386.693696] bcm2708_fb_ioctl 40044620،0 إرجاع = 0 p [1] = 0x80000001
17 مارس 14:35:00 raspberrypi user.err kernel: [386.693907] bcm2708_fb_pan_display (0،720) يعود = 16

حاولت الاستعادة مع
(خدمة التلفزيون - p && sleep 2 && fbset - العمق 8 && fbset - العمق 16) 2> & 1
لا يوجد خرج الشاشة
17 مارس 14:43:26 مستخدم raspberrypi.warn kernel: [268.637255] تم اكتشاف خطأ fb_set_par ، رمز الخطأ: 16
17 مارس 14:43:26 raspberrypi user.err kernel: [268.649473] bcm2708_fb_blank (0) يعود = 0 p [1] = 0x80000001
17 مارس 14:43:26 raspberrypi user.info kernel: [268.821121] bcm2708_fb_ioctl 40044620،0 عوائد = 0 p [1] = 0x80000001
17 مارس 14:43:26 raspberrypi user.err kernel: [268.821395] bcm2708_fb_pan_display (0،0) يعود = 16
17 مارس 14:43:26 raspberrypi user.info kernel: [268.972086] bcm2708_fb_ioctl 40044620،0 إرجاع = 0 p [1] = 0x80000001
17 مارس 14:43:26 raspberrypi user.err kernel: [268.972286] bcm2708_fb_pan_display (0،720) يعود = 16
17 مارس 14:43:26 raspberrypi user.info kernel: [269.105637] bcm2708_fb_ioctl 40044620،0 إرجاع = 0 p [1] = 0x80000001
17 مارس 14:43:26 raspberrypi user.err kernel: [269.105901] bcm2708_fb_pan_display (0،0) يعود = 16

أدى تغيير VT في هذه المرحلة إلى انحناء pi.

سيكون تطبيق sdl قد أنشأ مخزن الإطارات الخاص به وسيحتوي على مؤشر لذاكرة الإطارات الاحتياطية ، لذلك سيتعين عليه التعامل مع هذا بنفسه.
أعتقد حقًا أنه لا يجب إيقاف تشغيل HDMI عندما تستخدم التطبيقات الشاشة.
يمكنك استخدام:

vcgencmd display_power 0

و

vcgencmd display_power 1

وهي طريقة أقل تدخلاً لإزالة إشارة خرج HDMI ولكنها تترك التراكبات سليمة.

نعم ، استخدم تطبيق SDL مخزنًا مؤقتًا مزدوجًا HW مخصصًا عبر جهاز kernel fb والمقالي بين المخزنين المؤقتين ، وسأعيد رسم المخزن المؤقت بعد ذلك ، وأصدر مجموعة أوامر الاستعادة. وفقًا لإخراج fbset -i ، لا يتغير عنوان fb بعد المرور بدورة الطاقة ، لكنني لا أعتقد أن هذا أمر قابل للتصديق وربما يكون خارج المزامنة ومن ثم التعطل عند تغيير vt. فرض تغيير الوضع في تلك المرحلة لإعادة تخصيص fb وتحديث المؤشرات؟

كل ما قيل من vcgencmd display_power (مطروحًا منه على شاشات العرض) يبدو أنه يفعل ما أريد (تنفيذ إيقاف بسيط) شكرًا لك.

توجد نسخة مصححة من مكتبة SDL مشار إليها من منشور المنتدى هذا (http://www.raspberrypi.org/forums/viewtopic.php؟f=38&t=99822&p=692525&hilit=sdl#p692525) يتوافق مع العنوان الأساسي لـ تغيير FB عند تغيير القرار. قد يكون من المفيد تجربة هذا الإصدار لمعرفة ما إذا كان يتصرف بشكل أفضل.

pelwell لول نعم كان هذا أنا ، من تلك الصفحة ؛-)

يمكنك أن تقرأ عن المشكلة هنا - https://github.com/raspberrypi/firmware/issues/354 - لحسن الحظ ، قام شخص ما يسمى pssc بالفعل بإصلاح المشكلة الرئيسية كجزء من عمل الضغط الخاص به ، ولذا قمت بدمج الإصلاح في تحديث محدث حزمة SDL.

حقا لول. في دفاعي ، كان ذلك منذ فترة ، ومقبض لا يمكن نطقه يشبه إلى حد كبير الآخر ...

لا يتم تحرير ذاكرة التخزين المؤقت للإطار المخصصة عند انقطاع التيار الكهربائي ، ولكن ستتم إزالة أي عناصر ديسبمانكس. إذا كنت تستخدم الواجهة الخلفية لـ dispmanx لـ sdl ، فإن تسلسل dispmanx_element_add المعتاد سيعيد تخزين الإطارات على الشاشة.
إذا كنت تستخدم الواجهة الخلفية لمخزن الإطارات الافتراضي ، فستحتاج إلى تغييره حتى تتم إزالته / إضافته. افعل نفس الشيء بشكل فعال مثل "fbset -depth 8 && fbset -depth 16" من داخل SDL (مثل تغيير الحجم أو العمق).
ومع ذلك ، فإن حل "vcgencmd display_power" ربما يكون أبسط حل.

يقوم الحل المشفر vcgencmd display_power بما أحتاجه حتى يتم إغلاق المشكلة.

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