屏幕闪烁的解决办法

OKMX6关于背光的调节

目前有三种方法:

1. root@imx6qsabresd:~# echo "1" > /sys/class/graphics/fb0/blank   //关闭背光

   root@imx6qsabresd:~# echo "0" > /sys/class/graphics/fb0/blank   //打开背光
2. root@imx6qsabresd:~#echo 1 > /sys/class/backlight/backlight/bl_power   //关闭背光

   root@imx6qsabresd:~#echo 0 > /sys/class/backlight/backlight/bl_power   //打开背光
3. root@imx6qsabresd:~# echo 0 > /sys/class/backlight/backlight/brightness  //关闭背光

   root@imx6qsabresd:~# echo 60 > /sys/class/backlight/backlight/brightness  //打开背光

看下面原理图,看到可以通过两种方式控制背光PWREN 和 PWM3

在这里插入图片描述

​ EN引脚控制屏幕的外部供电,等于1时,导通

​ PWM控制背光亮度调节,等于0时,关闭背光

​ 前两种方法是控制EN引脚控制外部供电,第三种方法是控制pwm输出

OKMX6关于屏幕闪烁问题的解决办法

在drivers/video/fbdev/core/fbmem.c文件相应位置改为如下内容

static int blank_flag = 0; 
int 
fb_blank(struct fb_info *info, int blank) 
{ 
struct fb_event event; 
int ret = -EINVAL, early_ret; 

/* no blank during xorg init */ 
blank_flag = blank;
if(blank_flag==1) return 0; 
blank_flag = 1; 

if (blank > FB_BLANK_POWERDOWN) 
blank = FB_BLANK_POWERDOWN; 
event.info = info; 
event.data = ␣ 
early_ret = fb_notifier_call_chain(FB_EARLY_EVENT_BLANK, &event); 
if (info->fbops->fb_blank) 
ret = info->fbops->fb_blank(blank, info); 
if (!ret) 
fb_notifier_call_chain(FB_EVENT_BLANK, &event); 
else {
/*
* if fb_blank is failed then revert effects of 
* the early blank event. 
*/ 
if (!early_ret) 
fb_notifier_call_chain(FB_R_EARLY_EVENT_BLANK, &event); 
}
return ret; 
}
EXPORT_SYMBOL(fb_blank);

/* no blank during xorg init */ 下面即为添加的代码,修改编译内核之后
即可改善屏幕闪烁现象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北极……星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值