飞凌imx6dl linux4.1.15 uboot2016 lvds闪屏问题记录

最近在用飞凌的imx6dl 开发板做一个医疗项目,屏幕用的时lvds接口

平台: imx6dl
bsp: linux4.1.15, uboot2016, X11, qt5.6.2

问题1:屏幕不亮

开发板手册里只告诉如何连接,我连接好之后背光都不亮,这不是纯纯坑我吗。

原因:

万用表测量发现背光的 LCD_POWER_EN pin一直是低电平,软件上拉高后,背光点亮,屏幕可以显示了


具体改动如下:(需要先设置pinmux, 如何设置请查参照芯片手册)

diff --git a/uboot-2016/board/freescale/mx6sabresd/mx6sabresd.c b/uboot-2016/board/freescale/mx6sabresd/mx6sabresd.c
old mode 100644
new mode 100755
index cf840902e..863b6c33a
--- a/uboot-2016/board/freescale/mx6sabresd/mx6sabresd.c
+++ b/uboot-2016/board/freescale/mx6sabresd/mx6sabresd.c
@@ -90,6 +90,8 @@ DECLARE_GLOBAL_DATA_PTR;#define MIPI_PWR_EN     IMX_GPIO_NR(6, 10)+#define LCD_POWER_EN    IMX_GPIO_NR(3, 0)
+
Binary files /dev/null and b/linux-4.1.15/sound/soc/fsl/imx-wm8960.mod differ
diff --git a/uboot-2016/board/freescale/mx6sabresd/mx6sabresd.c b/uboot-2016/board/freescale/mx6sabresd/mx6sabresd.c
old mode 100644
new mode 100755
index cf840902e..863b6c33a
--- a/uboot-2016/board/freescale/mx6sabresd/mx6sabresd.c
+++ b/uboot-2016/board/freescale/mx6sabresd/mx6sabresd.c
@@ -90,6 +90,8 @@ DECLARE_GLOBAL_DATA_PTR;#define MIPI_PWR_EN     IMX_GPIO_NR(6, 10)+#define LCD_POWER_EN    IMX_GPIO_NR(3, 0)
+void generate_mac_by_uuid(void){u32 inbuf[2];
@@ -121,12 +123,16 @@ int dram_init(void)static iomux_v3_cfg_t const lvds_pads[] = {MX6_PAD_NANDF_CS2__GPIO6_IO15 | MUX_PAD_CTRL(NO_PAD_CTRL),MX6_PAD_SD1_DAT1__GPIO1_IO17 | MUX_PAD_CTRL(PAD_CTL_PUS_100K_DOWN | PAD_CTL_PUE |  PAD_CTL_PKE | PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm),
+        /* Bruce Su 20210719, add LCD_POWER_EN  pinmux, set it as a gpio*/
+        MX6_PAD_EIM_DA0__GPIO3_IO00  | MUX_PAD_CTRL(PAD_CTL_PUS_100K_DOWN | PAD_CTL_PUE |  PAD_CTL_PKE | PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm),};static void enable_lvds_pwr(void){imx_iomux_v3_setup_multiple_pads(lvds_pads, ARRAY_SIZE(lvds_pads));gpio_direction_output(LVDS_PWR_EN, 1);
+        /* Bruce Su 20210719, enable lcd power*/
+        gpio_direction_output(LCD_POWER_EN,1);}static iomux_v3_cfg_t const uart1_pads[] = {

问题2: 闪屏

在启动过程中,有两次闪屏uboot 到kernel 一次,kenrel 进文件系统闪一次

uboot到内核的闪屏

跟踪发现, boot启动kernel 前夕故意拉低了 上图中的PWM3,导致背光熄灭,进了kernel 又开启引起的闪烁。 实测这里不拉低pwm3, 也就是背光常亮会出现另一个问题,短暂的花屏。(如果有解决的大佬,还请告知一下)
具体代码位置:uboot-2016\arch\arm\cpu\armv7\cpu.c

int cleanup_before_linux(void)
{#if 1/* close LCD blacklight */gpio_direction_output(IMX_GPIO_NR(1, 21), 0);gpio_direction_output(IMX_GPIO_NR(1, 17), 0);   // 不知道是飞凌干的还是nxp干的

内核进文件系统的闪屏

我用的bsp 是 x11, qt5.6.2的版本,在进入文件系统后会初始化xorg, 跟踪xorg 代码发现,

tmp\work\cortexa9hf-neon-mx6qdl-poky-linux-gnueabi\xf86-video-imxfb-vivante\3_5.0.11.p8.6-r0\xserver-xorg-video-imx-viv-5.0.11.p8.6\EXA\src\vivante_fbdev\imx_display.c
imx_display.c 中有多次 进行了 FB_BLANK_UNBLANK ./ FB_BLANK_NORMAL 的操作,导致闪屏

    // Turn on frame buffer blanking to setup sys node modeif (0 != ioctl(fd, FBIOBLANK, FB_BLANK_UNBLANK)){xf86DrvMsg(pScrn->scrnIndex, X_ERROR,"unable to blank frame buffer device '%s':%s \n",fPtr->fbDeviceName, strerror(errno));}

我们可以选择,修改xorg的代码移除 blank的操作。
或者直接修改内核,blank操作只做一次,避免没必要的闪屏,内核修改如下:(仅供参考)
linux-4.1.15/drivers/video/fbdev/core/fbmem.c

@@ -1149,13 +1149,19 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)return ret;}EXPORT_SYMBOL(fb_set_var);
-
+static int blank_flag = 0;intfb_blank(struct fb_info *info, int blank)
-{
+{struct fb_event event;int ret = -EINVAL, early_ret;+       /* Bruce Su 20210831 do not blank during Xorg init*/
+
+       if(blank_flag) return 0;
+
+       blank_flag = 1;
+if (blank > FB_BLANK_POWERDOWN)blank = FB_BLANK_POWERDOWN;

飞凌imx6dl lvds闪屏问题记录相关推荐

  1. 利用WinPcap模拟网络包伪造飞秋闪屏报文

    起因 不知道从什么时候开始,同事开始在飞秋上发闪屏振动了,后来变本加厉,成了每日一闪.老闪回去也比较麻烦,作为程序猿呢,有没有什么偷懒的办法呢?(同事负责用户体验,不大懂编程).然后尝试了以下思路: ...

  2. 飞凌 i.MX8MP 板卡概览

    核心板:FETMX8MP-C 开发板:OKMX8MP-C 强大的 i.MX 8M Plus i.MX 8M Plus 是 NXP 推出的一款面向于边缘智能和边缘计算的异构应用处理器,除了高性能的 CP ...

  3. IMX6UL 飞凌 LINUX 学习记录(1)

    声明:本次只是记录本人linux学习中留下的痕迹及问题,顺便监督自己的学习.本次学习是根据正点原子的学习视频.在此,感谢原子哥给予的支持!!!多谢!! 开发环境:Ubuntn 16.04 LTS 开发 ...

  4. 记录炫龙t3 windows10闪屏

    2021.3.25又总是蓝屏难受,不知道什么原因,只能把驱动再次升级一下. 历史 我的电脑是炫龙的,一开始以为翻车了,电脑总是闪屏,因为是双显,然后就把核显给禁用掉,结果还是不断闪屏,有时候看个电影也 ...

  5. 工作笔记:飞凌嵌入式试用记录

    由于公司工作需求,我学习使用了飞凌嵌入式的开发板,现在将使用飞凌开发板的经验和坑记录一下 我使用的开发板为飞凌RK3399,使用的系统为linux 飞凌开发板的一般使用流程 开发板的教程还是很全面的, ...

  6. Linux嵌入式驱动开发07——GPIO驱动过程记录(飞凌开发板)

    文章目录 全系列传送门 1. 在/arch/arm/boot/dts/imx6q-pinfunc.h查找 2. 在设备树配置文件中添加设备节点定义以及其引脚定义 3. 修改设备树文件添加配置 4. d ...

  7. UHD630核显驱动方法及驱动后闪屏严重问题解决记录

    前言 之前我同学在公司申请了一个台式,硬件是由自己挑选,公司购买.于是乎,我和他一起挑选了兼容性较好的黑苹果硬件,前天组装好.然后就在昨天开始安装黑苹果. 同学的电脑硬件配置如下,给大家参考参考: C ...

  8. 在vue项目中 使用swiper轮播图的关于 在ios中图片白边闪屏踩坑记录

    场景描述: 近日,接到一个需求,改善APP首页的布局,需要在顶部添加一个可滚动的栏目导航,以切换栏目然后切换栏目内容类似于唯品会目前的切换效果.如下图 问题描述: 在切换顶部栏目的时候,下面内容页的b ...

  9. 消防安全无小事!飞凌T507国产核心板助力消防疏散系统智能化升级

    文章来源:飞凌嵌入式官网    www.forlinx.com 9月16日下午,位于湖南长沙市区内的中国电信大楼发生火灾,建筑高度218米,现场浓烟滚滚,数十层楼体燃烧剧烈.消防救援人员赶到现场后很快 ...

最新文章

  1. java(x ) 3的值_java中,设x=2,则表达式 (x++)*3的值是多少 设x=2则表达式(x+
  2. Collections集合工具类的方法_addAllshuffle
  3. 关于jasmine里debugElement.query和fixture.detectChanges的依赖关系
  4. iOS9 Storyboard unwind segue反回传递事件时机详细步骤
  5. C#学习日志三(流程控制语句)
  6. 函数式编程语言:LISP/Scheme 小语种简介
  7. java 基本数据类型的自动拆箱与装箱
  8. linux验证db2安装成功_DB2(Linux 64位)安装教程
  9. apache主机的重定向和多域名绑定
  10. PHP 中 strpos(), stripos(),strrpos(), strripos() 的区别
  11. 最新cs1.6服务器ip地址,CS1.6服务器IP地址
  12. 东芝打印机共享怎么设置_东芝 e-studio181怎么设置网络打印机
  13. fms安装教程 linux_[AS3]linux64下安装FMS5.0的方法
  14. 如何解决苹果账号续费时支付失败的问题
  15. 签证者的武林秘笈(一)—-来自太傻的签证哲学
  16. VB编程:取整函数Int、CInt、Fix区别-30
  17. 流量直升机-千牛插件功能列表
  18. 串口的使用–蓝牙模块
  19. 安卓玩机搞机技巧综合资源-----不亮屏幕导资料 有屏幕锁保数据刷机等 多种方式【十五】
  20. Ubuntu 设置默认播放器、浏览器、图片查看器

热门文章

  1. winform 画图的放大和缩小_画错图纸被判3年,罚10万!画图真的需要严谨
  2. 06人月神话读书笔记之二
  3. java舞会配对程序_舞会心动男/女生配对问题
  4. Oracle学习之基础
  5. Google网页搜索
  6. centos6安装GitLab全程详解和常见问题解决
  7. java身体指数计算判定BMI
  8. 摩尔斯电码转换python编码_摩尔斯电码到英文python3
  9. 云终端和瘦客户机的区别
  10. 【英语学习】十二星座Zodiac Signs的词源/词根/示例