全志V3S嵌入式驱动开发(屏幕花屏问题的解决)

news2024/11/25 4:35:10

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        之前我们测试过lcd屏幕驱动以及触控驱动时,当时确实是成功的。但是由于这个屏幕是直接从旗舰店买的,价格略贵,有点超出成本。后来,陆陆续续从其他店家买了3块lcd,测试的时候,发现有的时候屏幕是没问题的,有的时候是有问题的,整个故障没有一定的规律。

        正确显示的时候,屏幕略暗。如果出现花屏,就会立马出现很多的花屏图案,整个显示的过程是非常杂乱无章的。就如下面截图所示,

        为了解决这个问题,我们不得不修改内核设备树、修改内核代码、测量时钟频率、升级内核版本,通过各种各样的办法寻找解决问题的可能性。 

1、尝试修改时钟频率

        相对而言,lcd屏幕的显示不算太复杂。一般就是长*宽*帧率,这样算出来一个时钟带宽。看之前sun8i-v3s.dtsi文件中的assigned-clock-rates已经被修改成了60m,想想是不是如果换成了24m就好了,这也是通常的一个做法。但是很遗憾的是,结果失败的,屏幕有的时候还会出现花屏。

2、尝试修改代码解决

        配置文件修改没有对,下面我们就尝试修改内核代码试试。目前关于v3s显示这部分,主要是由driver/gpu/drm/sunxi这部分的代码来完成的。而时钟处理的部分,又是由sun4i_dotclock.c处理的。所以,这里也对clock做了修改,也就是把sun4i_dclk_round_rate的起步从6变成了1,这样可以尽可能匹配我们设置的频率。不过很遗憾,问题并没有解决。

3、升级内核

        之前,我们为了解决网络的问题,升级了一下内核,当时是把内核从4.10升级到了4.14。看分支信息上说,目前很多人已经升级到5.*、6.*。为了解决屏幕的问题,当然不必那么冒进,能解决问题就好,所以还是选择了5.2.y。此外,我们还参考上面的1和2,对时钟进行了修改。但是5.2.y中代码的位置发生了变化,我们尝试在sun4i_tcon.c中把tcon->dclk_min_div = 6修改成tcon->dclk_min_div = 6=1。本以为按照别人的方法,就可以一下子解决问题,但是还是很失望,问题没有解决。

4、无心插柳的发现

        从2-3月份第一次发现问题,到现在差不多由4个多月了,这个问题一直陆陆续续发生,有的时候花屏,有的时候又不发生,实在是令人懊恼的很,网上的方案,大部分和自己发生的情况又不太一样。这个时候,我们不得不重新整理一下,从发生问题到现在,分析一下什么情况比较容易出现这种情况,什么情况下又不太容易出现这种情况。

        经过统计,我们惊讶地发现,出现问题的时候,基本usb转232的串口都连在电脑上面,而似乎稳定可以显示的时候,串口是没有插上的。有了这个想法之后,马不停蹄地把后来买的三块板子找过来进行验证,果然发现了这个规律真的具有普适性。

        插上usb转232串口之后,lcd屏幕起来,有可能是好的,也有可能是不好的,这中间有一定的概率。但是如果没有usb串口,那么lcd屏幕肯定是好的,不管重启多少次,结果都是一样的。想来想去,之前我们clock也调试过了,那么目前唯一能解释的原因,就是这个usb串口,对lcd屏幕的信号产生了干扰。之前厂家的屏幕做的比较好,这种干扰几乎可以忽略不计,但是后面买的屏幕,可能由于成本的原因,或者是工艺方面不达标,在这方面就差一点,一旦外界有一些干扰的话,就会产生花屏。

        至此,电路方面虽然还没有修改,至少找到了原因,提供一种新的解决办法,不会像之前一样束手无策了。

5、问题总结

        硬件本身由于种类多、门类多,出问题的原因也是五花八门。有电压的,有频率的,有信号完整性的,基本就是这样。对于开发者来说,稳定复现的故障往往是最好解决的,那种接触不良,一会有、一会没有的问题最麻烦。不过这个时候不要灰心,还是要回归问题的起点,所有做过的实验都用笔记下来,尝试重新找出规律,哪怕一开始找不到,只要不放弃,肯定会慢慢找出最终的解决办法的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/648278.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3+vite+element-plus创建项目,修改主题色

element-plus按需引入,修改项目的主题色 根据官方文档安装依赖 ​npm install -D unplugin-vue-components unplugin-auto-import vite.config.js配置 // vite.config.ts import { defineConfig } from vite import AutoImport from unplugin-auto-import/vite …

Flutter - 命令行工具源码调试环境搭建

文章目录 前言开发环境环境搭建运行测试调试测试最后 前言 开发Flutter项目时难免会遇到各种问题,源码调试对于问题的解决不可或缺。 对于Flutter框架项目的源码调试,如果是Flutter核心库调试,只需要创建一个Flutter项目并在项目中使用需要…

中级前端笔试面试题总结

typeof null 的结果是什么,为什么? typeof null 的结果是Object。 在 JavaScript 第一个版本中,所有值都存储在 32 位的单元中,每个单元包含一个小的 类型标签(1-3 bits) 以及当前要存储值的真实数据。类型标签存储在每个单元的…

AI大模型落地不远了!首个全量化Vision Transformer的方法FQ-ViT(附源代码)

点击蓝字 关注我们 关注并星标 从此不迷路 计算机视觉研究院 公众号ID|计算机视觉研究院 学习群|扫码在主页获取加入方式 论文地址:https://arxiv.org/pdf/2111.13824.pdf 项目代码:https://github.com/megvii-research/FQ-ViT 计…

自研算法提升文本图像篡改检测精度,抖音技术团队获 ICDAR2023 分类赛道冠军...

动手点关注 干货不迷路 近日,抖音 CV 技术团队在 ICDAR 2023 的“Detecting Tampered Text in Images”比赛中,利用自研的“CAS”算法从 1267 个参赛队伍中脱颖而出,获得分类赛道的第一名。 ICDAR(International Conference on Do…

开源反分裂与数字大同世界

这是一篇报告的读后感,这篇报告是由Linux基金会研究部门发布的,名为《助力全球协作——开源代码的领导者如何面对分裂的挑战》。 这份报告的主要内容包括: - 开源代码开发中的分裂及其利弊- 开源的国际化,以及项目领导者如何克服参…

[Halcon3D] 3D鞋点胶的点云边界提取

📢博客主页:https://loewen.blog.csdn.net📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢本文由 丶布布原创,首发于 CSDN,转载注明出处🙉📢现…

Springboot整合Camunda工作流引擎实现审批流程实例

环境&#xff1a;Spingboot2.6.14 camunda-spring-boot-starter7.18.0 环境配置 依赖配置 <camunda.version>7.18.0</camunda.version> <dependency><groupId>org.camunda.bpm.springboot</groupId><artifactId>camunda-bpm-spring-boo…

OpenCV 项目开发实战--用 (C++ / Python)实现伪着色

文末附相关测试代码下载链接 在本教程中,我们将首先展示一种使用 OpenCV 的预定义颜色图对灰度图像进行伪彩色/伪彩色 的简单方法。如果您更愿意使用自己的颜色图,我们还将展示一种定义自定义颜色图的方法。 行星和太空中其他物体的灰度图像通常是伪彩色的,以显示细…

基于在线光度校准的混合稀疏单目视觉里程计

文章&#xff1a;Hybrid sparse monocular visual odometry with online photometric calibration 作者&#xff1a;Dongting Luo, Yan Zhuang and Sen Wang 编辑&#xff1a;点云PCL 代码&#xff1a;https://github.com/luodongting/HSO.git 欢迎各位加入知识星球&#xff0c…

小破站上线了!

作者 | 磊哥 来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09; 转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09; 为了给大家更好的阅读体验&#xff0c;磊哥搞了一个专业的技术网站&#xff0c;整理并总结了 Java 中比较经典的文章&…

管理类联考——英语——知识篇——作文题材说明

小作文题材 一、题材&#xff1a;小作文的内容&#xff08;写什么&#xff09; 1.疫情相关的主题&#xff1a;&#xff08;以信件方式出题可能性60%&#xff0c;对生活影响大&#xff09; (1)停学、复学&#xff1a;线上或线下停学和复学( go back to class/ school )&#x…

绕过激活锁 ,拯救一台旧手机iphone

一台旧的iphone忘了apple id账号和密码了&#xff0c;导致锁住了 某宝上解锁要花50&#xff0c; 不是舍不得花钱&#xff0c;作为一个搞技术的&#xff0c;实在觉得花钱有点丢人 经过一番探索 最终确定了有用的流程 并贴出来 亲测可用 最终实现了趟再床上就可以打卡 1、 刷机 …

拯救者2022款 y9000k 安装ubuntu20.04 休眠后无法唤醒(成功解决)

拯救者2022款 y9000k 安装ubuntu20.04 休眠后无法唤醒 一.建议在安装新的 NVIDIA 显卡驱动之前卸载原有的驱动程序。这样可以确保新驱动程序的安装过程更加干净和稳定。以下是卸载原有驱动的步骤&#xff1a;1.进入命令行界面&#xff1a; 按下 Ctrl Alt F3 进入文本模式的命…

IDEA Build Artifacts 功能使用总结

文章目录 创建Artifact步骤Build Artifact步骤 打开IDEA&#xff0c;在没有创建Artifact时&#xff0c;菜单"Build -> Build Artifacts…“是灰色的&#xff0c;不可用状态。 所以&#xff0c;第一步是进入"File -> Project Structure…”&#xff0c;创建Arti…

10. python从入门到精通——模块

目录 模块的概述 自定义模块 Python中的包 以主程序的形式执行 引用其他模块 模块的概述 什么是模块&#xff1a;在python中模块就是python程序&#xff0c;一个模块就是一个*.py的文件&#xff0c;通常情况下把能够实现某一特定功能的代码放置在一个文件中作为一个模块&…

基于Java实验室耗材管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

如何理解gic控制器中的originating PE Banked和target PE Banked

【问题】 如何理解originating PE Banked和target PE Banked&#xff0c;下面gicv2/gicv3的banked如何理解&#xff1f; 【回答】 GICv2 中&#xff0c;SGI 对于 originating PE&#xff08;即生成中断的处理器&#xff09;和 target PE&#xff08;即接收中断的处理器&#…

【JVM】命令行工具的基本使用--JVM常用指令

文章目录 背景一、Java 性能诊断工具简介二、简单命令行工具2.1、jps2.2、jinfo2.3、jstat2.4、jstack2.5、jmap2.6、jhat 三、图形化综合诊断工具3.1、JVisualvm3.2、JProfiler3.3、JConsole 背景 性能诊断是软件工程师在日常工作中需要经常面对和解决的问题&#xff0c;在用…

few-shot / one shot / zero shot object counting论文汇总

文章目录 2021OBJECT COUNTING: YOU ONLY NEED TO LOOK AT ONE 2022Scale-Prior Deformable Convolution for Exemplar-Guided Class-Agnostic CountingCounTR: Transformer-based Generalised Visual CountingFew-shot Object Counting with Similarity-Aware Feature Enhance…