![帧缓冲区驱动程序 (altfb) 不适用于 24 位显示器](https://linux22.com/image/199241/%E5%B8%A7%E7%BC%93%E5%86%B2%E5%8C%BA%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%20(altfb)%20%E4%B8%8D%E9%80%82%E7%94%A8%E4%BA%8E%2024%20%E4%BD%8D%E6%98%BE%E7%A4%BA%E5%99%A8.png)
我正在开发一个带有 24 位 LCD 显示屏的嵌入式 Linux 系统。我使用terasic linux-socfpga来编译内核,我想使用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