LCD画面を組み込みLinux(ARM9)システムに統合する必要があります。LCDは縦向き320x480で、画面を横向き480x320で実行する必要があります。LCD構成レジスタを使用して、ハードウェアで回転できるため、(x、y)(0,0)が90度回転します。ここから問題が始まります。画面の広い側が480ピクセルから320ピクセルに狭くなり、画像の長い側が画面の外に出ます。これは、フレームバッファのサイズをAFAIKに変更することで修正する必要がありますが、いくつかの方法を試しましたが、まだ成功していません。fbsetを使用して、以下はポートレートの設定です。
mode "480x320-55"
# D: 9.091 MHz, H: 18.182 kHz, V: 55.096 Hz
geometry 480 320 480 320 16
timings 110000 4 4 4 4 12 2
rgba 5/0,6/5,5/11,0/0
endmode
コマンドの送信:
fbset --geometry 480 320 480 320 16
結果:
mode "480x320-55"
# D: 9.091 MHz, H: 18.182 kHz, V: 55.096 Hz
geometry 480 320 480 320 16
timings 110000 4 4 4 4 12 2
rgba 5/0,6/5,5/11,0/0
endmode
これにより、画像が数回表示されて重なりますが、画面の幅が狭すぎます。
仮想xresとyresの画面サイズを2倍にしようとしましたが、変更はありません。
fbset --geometry 480 320 960 640 16
また、ウェブ「saFbdevRotation.c」で見つけたFB IOCTLを使用するfb回転機能を使用してみましたが、アクティブな画面サイズが正しくありません。
90度回転します。出力を参照してください
$> ./fb_rotate -r 90
## Before rotation
### Fix Screen Info:
Line Length - 640
Physical Address = 81a00000
Buffer Length = 1048576
### Var Screen Info:
Xres - 320
Yres - 480
Xres Virtual - 320
Yres Virtual - 480
Bits Per Pixel - 16
Pixel Clk - 110000
Rotation - 0
## after rotation
### Fix Screen Info:
Line Length - 960
Physical Address = 81a00000
Buffer Length = 1048576
### Var Screen Info:
Xres - 480
Yres - 320
Xres Virtual - 480
Yres Virtual - 320
Bits Per Pixel - 16
Pixel Clk - 110000
Rotation - 90
また、システムが空きメモリで非常に制限されていることを追加することもできます。これにより、fbが新しいバッファを割り当てない可能性がありますか?ただし、dmesgにエラーはありませんでした。
あなたのアドバイスに感謝します。