Linux: tvservice -o lalu tvservice -p hasil dihidupkan pada tampilan tetapi tidak ditampilkan.

Dibuat pada 17 Mar 2015  ·  9Komentar  ·  Sumber: raspberrypi/linux

Saya telah mencoba ini dengan dua tampilan berbeda dan 3.12 dan 3.18.... pada B+ dan rev2 B.

Komentar yang paling membantu

Aplikasi sdl akan membuat framebuffernya sendiri dan akan memiliki pointer ke memori framebuffer, jadi aplikasi ini harus menanganinya sendiri.
Sungguh saya pikir Anda tidak harus mematikan HDMI saat aplikasi menggunakan layar.
Anda dapat gunakan:

vcgencmd display_power 0

dan

vcgencmd display_power 1

yang merupakan cara yang tidak terlalu mengganggu untuk menghilangkan sinyal output HDMI tetapi membiarkan overlay tetap utuh.

Semua 9 komentar

Itu normal. Mematikan akan menghancurkan semua overlay (di mana framebuffer adalah salah satunya).
Anda dapat membuatnya kembali dengan "fbset -depth 8 && fbset -depth 16"

Aplikasi yang saya miliki berbasis sdl dan masih menampilkan ke layar jadi melihat,
17 Mar 14:33:46 raspberrypi user.err fbcp[3318]: Tidak dapat memotret -1. (60)
17 Mar 14:34:00 kernel raspberrypi user.info: [ 326.704707] bcm2708_fb_ioctl 40044620,0 pengembalian=0 p[1]=0x80000001
17 Mar 14:34:00 kernel raspberrypi user.err: [ 326.704940] bcm2708_fb_pan_display(0,0) kembali=16
17 Mar 14:34:46 raspberrypi user.err fbcp[3318]: Tidak dapat memotret -1. (120)
17 Mar 14:35:00 kernel raspberrypi user.info: [ 386.693696] bcm2708_fb_ioctl 40044620,0 pengembalian=0 p[1]=0x80000001
17 Mar 14:35:00 kernel raspberrypi user.err: [ 386.693907] bcm2708_fb_pan_display(0.720) kembali=16

Mencoba memulihkan dengan
(layanan tv -p && tidur 2 && fbset -kedalaman 8 && fbset -kedalaman 16) 2>&1
tidak ada keluaran layar
Mar 17 14:43:26 raspberrypi user.warn kernel: [ 268.637255] mendeteksi kesalahan fb_set_par, kode kesalahan: 16
Mar 17 14:43:26 raspberrypi user.err kernel: [ 268.649473] bcm2708_fb_blank(0) kembali=0 p[1]=0x80000001
17 Maret 14:43:26 kernel raspberrypi user.info: [ 268.821121] bcm2708_fb_ioctl 40044620,0 pengembalian=0 p[1]=0x80000001
17 Mar 14:43:26 kernel raspberrypi user.err: [ 268.821395] bcm2708_fb_pan_display(0,0) kembali=16
17 Maret 14:43:26 kernel raspberrypi user.info: [ 268.972086] bcm2708_fb_ioctl 40044620,0 pengembalian=0 p[1]=0x80000001
17 Maret 14:43:26 kernel raspberrypi user.err: [ 268.972286] bcm2708_fb_pan_display(0.720) kembali=16
17 Maret 14:43:26 kernel raspberrypi user.info: [ 269.105637] bcm2708_fb_ioctl 40044620,0 pengembalian=0 p[1]=0x80000001
17 Mar 14:43:26 kernel raspberrypi user.err: [ 269.105901] bcm2708_fb_pan_display(0,0) kembali=16

mengubah VT pada titik ini menghasilkan pi wedging.

Aplikasi sdl akan membuat framebuffernya sendiri dan akan memiliki pointer ke memori framebuffer, jadi aplikasi ini harus menanganinya sendiri.
Sungguh saya pikir Anda tidak harus mematikan HDMI saat aplikasi menggunakan layar.
Anda dapat gunakan:

vcgencmd display_power 0

dan

vcgencmd display_power 1

yang merupakan cara yang tidak terlalu mengganggu untuk menghilangkan sinyal output HDMI tetapi membiarkan overlay tetap utuh.

Ya aplikasi SDL menggunakan buffer ganda HW yang dialokasikan melalui perangkat kernel fb dan menggeser di antara dua buffer, saya menggambar ulang buffer setelahnya, mengeluarkan set perintah pemulihan. menurut keluaran fbset -i alamat fb tidak berubah setelah melalui siklus daya, tetapi saya tidak berpikir itu dapat dipercaya dan mungkin tidak sinkron karenanya crash pada perubahan vt. Paksa perubahan mode pada saat itu untuk mengalokasikan ulang fb dan memperbarui pointer?

Itu semua mengatakan vcgencmd display_power (minus s pada display) tampaknya akan melakukan apa yang saya inginkan (menerapkan soft off) terima kasih.

Ada versi perpustakaan SDL yang ditambal yang dirujuk dari posting Forum ini (http://www.raspberrypi.org/forums/viewtopic.php?f=38&t=99822&p=692525&hilit=sdl#p692525) yang mengatasi alamat dasar FB berubah pada perubahan resolusi. Mungkin ada baiknya mencoba versi itu untuk melihat apakah itu berperilaku lebih baik.

@pelwell lol ya itu saya, dari halaman itu ;-)

Anda dapat membaca tentang masalahnya di sini - https://github.com/raspberrypi/firmware/issues/354 - Untungnya seseorang bernama pssc telah memperbaiki masalah utama sebagai bagian dari pekerjaan pemerasan mereka, jadi saya memasukkan perbaikan ke dalam pembaruan paket SDL.

LOL memang. Dalam pembelaan saya, itu beberapa waktu yang lalu, dan satu pegangan yang tidak dapat diucapkan terlihat sangat mirip dengan yang lain ...

Memori framebuffer yang dialokasikan tidak dibebaskan saat listrik padam, tetapi elemen dispmanx apa pun akan dihapus. Jika Anda menggunakan backend dispmanx dari sdl, maka urutan dispmanx_element_add yang biasa akan menampilkan framebuffer kembali.
Jika Anda menggunakan back end framebuffer default, maka Anda perlu mengubahnya agar dihapus/ditambahkan. Secara efektif lakukan hal yang sama seperti "fbset -depth 8 && fbset -depth 16" dari dalam SDL (mis., ubah ukuran atau kedalaman).
Namun solusi "vcgencmd display_power" mungkin paling sederhana.

solusi berkode vcgencmd display_power melakukan apa yang saya butuhkan jadi tutup masalah.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat