私は24ビットLCDディスプレイを備えた組み込みLinuxシステムを開発しています。 terasic linux-socfgaを使用してカーネルをコンパイルし、altfbドライバを使用してデスクトップをLCDに表示しようとしています。これを行うには、Linuxドライバ(https://github.com/coliby/terasic_MTL/blob/master/drivers/video/altfb.c)を私のカーネルコードに追加し、コードを正常にコンパイルしました。ところで、モニターが正常に動作しません。
数日間試したところ、デスクトップは正常に表示されましたが、ピクセル値が正しく表示されませんでした。最後に、下の画像のような内容を正常に表示しました。そのためにコードを次のように変更しました。
writel(fbdev->info->var.xres * fbdev->info->var.yres/(fbdev->mem_word_width/32)
到着
writel(fbdev->info->var.xres * fbdev->info->var.yres/(fbdev->mem_word_width/24)
ただし、ディスプレイは添付の図のように表示されます。トラブルシューティングにご協力いただきありがとうございます。
https://rocketboards.org/foswiki/Projects/TouchScreenLCDForAlteraSoC
https://github.com/coliby/terasic_MTL/blob/master/drivers/video/altfb.c