亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3285 | 回復(fù): 0
打印 上一主題 下一主題

[應(yīng)用] 新手請(qǐng)教:如何編寫測試程序,控制LCD背光的開啟和關(guān)閉 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2014-08-27 20:58 |只看該作者 |倒序?yàn)g覽
本帖最后由 Lethe_Ascetic 于 2014-08-27 21:21 編輯

論文里的各位大蝦好,小弟最近在做一個(gè)項(xiàng)目,關(guān)于LCD背光的控制問題,勞煩大神們幫我仔細(xì)看看。
下面我詳細(xì)敘述下我的情況:

ARM板:Te6410的ARM 11核心板
Linux內(nèi)核:linux-3.0.1

問題:想編寫一個(gè)測試程序,實(shí)現(xiàn)對(duì)LCD的背光燈的控制(開啟和關(guān)閉)

為了寫測試程序,我先仔細(xì)看了下linux中LCD驅(qū)動(dòng)的架構(gòu)。先把我了解的LCD驅(qū)動(dòng)的架構(gòu)情況簡單介紹下,如有理解上的錯(cuò)誤,勞煩您指出:

/linux-3.0.1/inculde/fb.h文件中聲明了lcd使用的framebuffer結(jié)構(gòu)體;
/linux-3.0.1/arch/arm/plat-s3c64xx中的mach-smdk6410中有l(wèi)cd驅(qū)動(dòng)相關(guān)的平臺(tái)設(shè)備信息,并注冊(cè)了平臺(tái)設(shè)備

/linux-3.0.1/drivers/video/fbmem.c向上給應(yīng)用程序 “提供并實(shí)現(xiàn)“ 了完善的設(shè)備文件操作接口。文件中聲明了對(duì)應(yīng)的file_operation結(jié)構(gòu)體如下:



因此我個(gè)人認(rèn)為,當(dāng)我在應(yīng)用程序中執(zhí)行  open("/dev/fb0",xxx), ioctl(fd,xxx,xxx)  時(shí),就是調(diào)用了fbmem.c中定義的file_operation結(jié)構(gòu)體中對(duì)應(yīng)的函數(shù)

其中的ioctl()函數(shù)如下,其調(diào)用了do_fb_ioctl函數(shù):

static long fb_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{
        struct fb_info *info = file_fb_info(file);

        if (!info)
                return -ENODEV;
        return do_fb_ioctl(info, cmd, arg);
}

追蹤do_fb_ictol()函數(shù),其部分代碼如下,可見其調(diào)用了fbmem.c中定義的fb_blank函數(shù):

        case FBIOBLANK:
                if (!lock_fb_info(info))
                        return -ENODEV;
                console_lock();
                info->flags |= FBINFO_MISC_USEREVENT;
                ret = fb_blank(info, arg);
                info->flags &= ~FBINFO_MISC_USEREVENT;
                console_unlock();
                unlock_fb_info(info);
                break;

fbmem.c中的fb_blank函數(shù)最終會(huì)調(diào)用硬件驅(qū)動(dòng)層中的fb_blank函數(shù)(該函數(shù)在/linux-3.0.1/drivers/video/samsung的s3cfb.c文件中定義),其代碼如下:

static int s3cfb_blank(int blank_mode, struct fb_info *info)
{
        DPRINTK("blank(mode=%d, info=%p)\n", blank_mode, info);

        switch (blank_mode) {
        case VESA_NO_BLANKING:        /* lcd on, backlight on */
                s3cfb_set_lcd_power(1);
                s3cfb_set_backlight_power(1);
                break;

        case VESA_VSYNC_SUSPEND: /* lcd on, backlight off */
        case VESA_HSYNC_SUSPEND:
                s3cfb_set_lcd_power(1);
                s3cfb_set_backlight_power(0);
                break;

        case VESA_POWERDOWN: /* lcd and backlight off */
                s3cfb_set_lcd_power(0);
                s3cfb_set_backlight_power(0);
                break;

        default:
                return -EINVAL;
        }

        return 0;
}
代碼不難看懂,就是根據(jù)輸入的參數(shù),執(zhí)行對(duì)背光的集中不同的控制。

按照上述的理解,我覺得只要在測試程序中,1、fd=open("/dev/fb0",O_RDWD),打開設(shè)備;2、執(zhí)行ioctl(fd,FBIOBLANK,val),通過不同的val值,控制背光燈即可

我按此想法,編寫了測試程序,代碼很短。但是失敗了。
網(wǎng)上有關(guān)于ioctl(fd,FBIOGET_VSCREENINFO,&val)的操作介紹,是用來讀取LCD屏的參數(shù),并對(duì)LCD屏設(shè)置顏色的。我執(zhí)行了網(wǎng)上的這個(gè)程序,是可以成功執(zhí)行的
附地址:http://blog.csdn.net/lonlycorner520/article/details/8035378


但是網(wǎng)上沒有LCD的” FBIOBLANK “的使用介紹,有哪位大神懂的,真心求教,F(xiàn)在讀碩士,之前師兄沒人做arm-linux開發(fā)的。沒人請(qǐng)教,很痛苦。

您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP