以下内容源于朱有鹏《物联网大讲堂》课程的学习,如有侵权,请告知删除。
5、在应用程序中设置分辨率
(1)可视分辨率(即实际分辨率)、虚拟分辨率
(2)实验及结果
vinfo.xres = 1024;
vinfo.yres = 600;//不可以修改vinfo.xres_virtual = 1024;
vinfo.yres_virtual = 1200;//可以修改ret = ioctl(fd, FBIOPUT_VSCREENINFO, &vinfo);
- 实验结果是只能修改虚拟分辨率,不能修改可见分辨率。
- 原因要去驱动里找,正确的做法是在驱动中去修改参数,然后重新编译运行,才能解决。
一、问题描述
试图在应用层设置分辨率失败了,原因何在?
(1)定位问题:肯定是驱动的事儿
(2)进一步驱动中定位:应用层的ioctl对应驱动ioctl的那部分
二、fb的ioctl部分
(1)fb是典型的字符设备驱动
(2)ioctl分为2部分,在驱动框架部分和驱动部分各有一半
(3)一路追踪找问题
fbmem.c
fbmem_init
register_chrdev
fb_fops
fb_ioctl
do_fb_ioctl
fb_set_var
info->fbops->fb_check_var检验应用层设置的参数的合法性(s3cfb.c中的s3cfb_check_var)
三、让自己的开发板正常显示
移植的核心是lcd参数的更改:主要是在mach-x210.c文件中