关于在应用层为何不能设置分辨率的问题

问题的描述:之前在测试fb的驱动程序的时候,试图在应用层通过ioctl函数设置LCD的分辨率,但是并没有设置成功,原因何在?

定位问题:肯定是驱动中的事情

进一步定位问题:因为我们是通过ioctl函数来进行设置的,而应用层的ioctl函数最终会调用到驱动中的ioctl函数,所以问题出在驱动中的ioctl函数中

在  drivers\video\fbmem.c  文件中:

fbmem_init

register_chrdev(FB_MAJOR,"fb",&fb_fops)      // ioctl函数就封装在fb_fops这个file_operations结构体变量中

分析ioctl函数的实现:

fb_ioctl

do_fb_ioctl

fb_set_var

info->fbops->fb_check_var (对应的就是s3cfb.c中的s3cfb_check_var函数)

{

if (var->xres > lcd->width)   // 如果需要设置的水平分辨率大于LCD本身的水平分辨率则让他等于LCD本身的水平分辨率

var->xres = lcd->width;

if (var->yres > lcd->height)  // 如果需要设置的垂直分辨率大于LCD本身的垂直分辨率则让他等于LCD本身的垂直分辨率

var->yres = lcd->height;

if (var->xres_virtual < var->xres) // 如果需要设置的虚拟水平分辨率小于要设置的水平分辨率则让他等于水平分辨率

var->xres_virtual = var->xres;

if (var->yres_virtual > var->yres * CONFIG_FB_S3C_NR_BUFFERS) // 如果需要设置的虚拟垂直分辨率大于要设置的垂直分辨率的2倍则让他等于垂直分辨率的两倍

var->yres_virtual = var->yres * CONFIG_FB_S3C_NR_BUFFERS;

..........

}

所以从上面我们可以知道,我们要设置的FB的可变参数是需要在内部进行检查确认的,并不是我们想把某个参数设置成多少就能够设置成多少,而是要看这个参数值是不是符合

人家驱动中的规定,可不能瞎胡乱搞。

时间: 2024-10-13 16:13:56

关于在应用层为何不能设置分辨率的问题的相关文章

virtulbox安装win10 64bit不能正常设置分辨率1366*768的解决方案

2015.07.29 win10正式版发布,为了尝鲜,个人在virtualbox里面安装了一个虚拟机进行实验,但是在安装完增强包之后发现分辨率还是跟没有安装增强包之前一样,所以只使用那么一点点小屏幕那个揪心啊. 经过查阅资料,virtulbox在GUI里面没有提供自定义设置分辨率这个接口,但是命令行是有相关设置的,在这里记录一下: /usr/bin/VBoxManage setextradata "win10" CustomVideoMode1 1366x768x32 解析:"

cocos2dx-3.2 笔记 - 设置分辨率

这个很简单 glview->setDesignResolutionSize(1280,720, ResolutionPolicy::SHOW_ALL); 具体最后那个参数宏可以参考源码解释 cocos2dx-3.2 笔记 - 设置分辨率

【转】苹果电脑怎么设置分辨率和调节字体大小

原文网址:https://jingyan.baidu.com/article/95c9d20da2a25eec4f75614c.html 在苹果电脑中,用户可能对系统的字体和分辨率的设置不太满意,就需要自己调大小了,那么mac系统怎么设置分辨率和调节字体大小呢?下午特意写了一个详细的图文教程叫大家如何分辨率和调节字体大小,接下来我就教大家怎么设置. 工具/原料 苹果电脑一台 方法/步骤 首先点击在桌面底部的dock栏,找到“系统偏好设置”.   然后在打开的系统偏好设置找到显示器选项.   进入

ubuntu下如何查看和设置分辨率 (转载)

转自:http://blog.csdn.net/jcgu/article/details/8650423 在ubuntu下可以使用xrandr来设置自己需要的分辨率.大致步骤如下: 1.使用xrandr命令查看屏幕分辨率,这里我使用的是显示器(LVDS1),分辨率为1366*768 2.使用cvt命令生成一个新的modeline 3.新建一个分辨率模式 4.将新建的分辨率模式添加到显示器上 5.应用新的分辨率模式

ubuntu下如何查看和设置分辨率

在ubuntu下可以使用xrandr来设置自己需要的分辨率.大致步骤如下:  www.2cto.com 1.使用xrandr命令查看屏幕分辨率,这里我使用的是显示器(LVDS1),分辨率为1366*768 2.使用cvt命令生成一个新的modeline  www.2cto.com 3.新建一个分辨率模式 4.将新建的分辨率模式添加到显示器上 5.应用新的分辨率模式

虚拟机窗口太小_设置分辨率(win8/win7)

虚拟机安装了WIN7和WIN8系统后,安装了VMware Tools后窗口还是较小,需要调整虚拟机系统中的分辨率. 桌面右键->屏幕分辨率->设置成与主机显示器分辨率相近的即可.

quick code ide设置分辨率

默认是640*960的分辨率,但是我的设计分辨率是480*800 所以得改改 在config.lua里的改成 -- design resolutionCONFIG_SCREEN_WIDTH = 480CONFIG_SCREEN_HEIGHT = 800 config.json里的改成 "init_cfg":{ "isLandscape":false, "isWindowTop":false, "name":"sDis

设置分辨率

cvt 1920 1080 >>>Modeline "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsyncxrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsyncxrandr>>> Virtual1

Ubuntu12.04设置屏幕分辨率

Ubuntu屏幕分辨率设置 Table of Contents 1 概述 2 设置前 3 设置 4 参考 1 概述 我的Ubuntu12.04不知道被我怎么折腾了一番,屏幕的分辨率错乱了,没有办法找到全屏的分辨率.本文简单总结下 我设置分辨率的过程,方便以后查阅. 2 设置前 设置前我的分辨率如下: [email protected]:~$ xrandr Screen 0: minimum 64 x 64, current 1280 x 1024, maximum 16384 x 16384 V