web-dev-qa-db-ja.com

fbcon-ブートコンソールにAndroid / MSMフレームバッファーデバイスを使用する

XサーバーとLinuxフレームバッファブートコンソールで実行されているDebianでルート化されたNexus5(msm 8974チップセット)デバイスを使用しようとしています。デフォルトのAndroidハンマーヘッドカーネル(CONFIG_FB_MSM_MDSS=yCONFIG_FB_MSM=yを使用)を再コンパイルし、フレームバッファーコンソールのオプションを有効にしました(プライマリディスプレイに割り当て、フォントでコンパイルして使用します)。このカーネルでは、fastboot boot -c "console=tty0,115200 fbcon=font:VGA8x8" kernel-fbcon.imgを使用してAndroid正常に起動できますが、起動中はフレームバッファーコンソールはなく、Googleロゴとそれに続く起動アニメーションのみが表示されます。

Androidフレームワーク(stop)を停止し、ADB経由でルートシェルを使用してフレームバッファー(/dev/graphics/fb0)でさまざまなことを試してテストしました。

# cat /dev/urandom > /dev/graphics/fb0      # does not affect the screen
cat: write error: No space left on device

画面がオンのときにcon2fbmap 1 0を使用しても効果はなく、コンソールtty0にあるテキストの表示や表示は変更されません。また、コマンドFRAMEBUFFER=/dev/graphics/fb0 Xorg vt1を使用してディスプレイ上でXorgを実行しようとしました。これは、エラーなしで通常どおり実行および終了しますが、最後に画面に表示されたもののごく短いフラッシュを除いて、画面には何も表示されませんXは終了します(シェルではctrl + c)。 Xorgは、デフォルトのfbdevドライバーを使用するように構成されています。

これらの問題は、MSMフレームバッファーデバイスの非標準実装が原因であると思われます(Nexusの場合、これはkernel_source/drivers/video/msm/mdss/mdss_fb.cにあります)。多くの新しいAndroidデバイスには、フレームバッファーデバイスが期待どおりに機能しないというこの問題があります。

フレームバッファードライバーを変更したり、デバイスの起動時にフレームバッファーにブートコンソールが表示されるようにカーネルを構成したりできるかどうかを知りたいのですが。

助けてくれる人に感謝します。

編集:この問題はNexus 5に非常に固有のようです。GoogleNexusシリーズの他のデバイスは、フレームバッファグラフィックスとブートコンソールに問題がないようです。

2
Javacow

Nexus4でも同じ問題が発生しました。これはそれを解決しました:

cat /sys/class/graphics/fb0/modes > /sys/class/graphics/fb0/mode

1
max1220

Dtsファイルでそのようなエントリを確認してください:qcom,cont-splash-enabled

--- a/Arch/arm/boot/dts/msm8226-sec-matissewifi-r03.dtsi
+++ b/Arch/arm/boot/dts/msm8226-sec-matissewifi-r03.dtsi
@@ -752,5 +752,5 @@
 };
 &dsi2lvds_wxga_vid_r01 {
-   qcom,cont-splash-enabled;
+
 };
1
sub77