当前位置: 首页 > news >正文

关于全志T113开发板接7寸LCD屏幕显示异常问题的解决方案

在入手全志T113之后,第一时间移植好了之前6ull平台的rootfs。但是在测试QT的过程中发现屏幕最右侧有一部分显示不正常,经过初步推测应该是RGB行场同步时序有问题。本以为在设备树里面稍作修改之后就能OK,但是居然前前后后一共花了至少三个星期的时间。

这里就不给分析经过了,因为是真的真的太漫长了,搞得我头都大了。真的是要吐槽一下全志的代码:

1.函数名字真的看得头疼
在这里插入图片描述

2.代码杂乱无章,大量使用全局变量,让分析各种没头绪。

然后在这里直接给出最终分析的结果:

1.设备树里面timing,除了width、height、lcd_x和lcd_y之外的参数全没有用上(一开始不停的源码里面找这些参数在什么地方配置的,最后发现特么的根本就没有地方使用过这些参数)

在这里插入图片描述

2.width和height主要是用来计算dpi使用的,我这里写的280最终计算出来的dpi大概是97左右,windows标准的是96,反正相差无几我也没有细调了,lcd_x和lcd_y在原来的代码里主要是用来计算内核里面有一张图片的缩放使用的。

3.lcd timing寄存器里面的值是在uboot里面设置好之后在kernel里面直接拿来用的。

4.uboot里面的timing计算方式有问题,应该是百问没有仔细阅读全志文档的原因造成的,这也是使得屏幕显示向左平移了几十个像素的原因
在这里插入图片描述

5.我忘记我要说什么了…

接下来就说怎么处理吧:

1.首先按照全志的文档把设备树里面的timing改了
在这里插入图片描述

2.打开 drivers/video/fbdev/sunxi/disp2/disp/de/disp_lcd.c 然后找到 s32 disp_init_lcd(struct disp_bsp_init_para* para) 函数,在前面加上一段代码

typedef struct
{volatile unsigned int Timing0;volatile unsigned int Timing1;volatile unsigned int Timing2;volatile unsigned int Timing3;
}RegTypeDef;static void set_lcd_timings(unsigned int dwLcdRegBase, struct disp_video_timings* pTimings)
{RegTypeDef* reg;unsigned int dwWidth, dwHeight;unsigned int dwHT, dwHBP;unsigned int dwVT, dwVBP;unsigned int dwHSPW, dwVSPW;reg = (RegTypeDef*)(dwLcdRegBase + 0x48);dwWidth = pTimings->x_res;dwHSPW = pTimings->hor_sync_time;dwHBP = pTimings->hor_back_porch + pTimings->hor_sync_time;	//在官方文档里:hbp = hbp + hspw,然而在全志的代码里面又将hspw其减去,所以在这里需要加回来dwHT = pTimings->hor_total_time;dwHeight = pTimings->y_res;;dwVSPW = pTimings->ver_sync_time;dwVBP = pTimings->ver_back_porch + pTimings->ver_sync_time;dwVT = pTimings->ver_total_time;reg->Timing0 = ((dwWidth - 1) << 16) | (dwHeight - 1);reg->Timing1 = ((dwHT - 1) << 16) | (dwHBP - 1);reg->Timing2 = (((dwVT - 1) * 2) << 16) | (dwVBP - 1);reg->Timing3 = ((dwHSPW - 1) << 16) | (dwVSPW - 1);printk("width: %d, hspw: %d, hbp: %d, ht: %d\n", dwWidth, dwHSPW, dwHBP, dwHT);printk("height: %d, vspw: %d, vbp: %d, vt: %d\n", dwHeight, dwVSPW, dwVBP, dwVT);
}

然后在 s32 disp_init_lcd(struct disp_bsp_init_para* para) 函数的 disp_lcd_init(lcd, lcd->disp); 后面加上

set_lcd_timings(para->reg_base[DISP_MOD_LCD0], &lcd->timings);

3.最后编译烧写进去之后重启就搞定了…

4.uboot我就懒得修改了,凑合用吧

本文转载自:https://bbs.aw-ol.com/topic/3533/

相关文章:

关于全志T113开发板接7寸LCD屏幕显示异常问题的解决方案

在入手全志T113之后&#xff0c;第一时间移植好了之前6ull平台的rootfs。但是在测试QT的过程中发现屏幕最右侧有一部分显示不正常&#xff0c;经过初步推测应该是RGB行场同步时序有问题。本以为在设备树里面稍作修改之后就能OK&#xff0c;但是居然前前后后一共花了至少三个星期…...

SpringMVC第四阶段:Controller中如何接收请求参数

Controller中如何接收请求参数 1、原生API参数类型 1.1、HttpServletRequest类 只需要在Controller的目标方法中, 直接写上HttpServletRequest对象即可获取 原生API的 request对象实例。 RequestMapping(value "/p1") public String param1(HttpServletRequest …...

第三十回: LisvtView响应事件

我们在上一章回中介绍了如何给ListView添加分隔线,本章回中将介绍ListView响应事件相关的知识.闲话休提&#xff0c;让我们一起Talk Flutter吧。 概念介绍 我们在这里说的ListView响应事件主要分两种类型&#xff1a; 一种是滑动ListView时ListView做出响应&#xff0c;我们…...

重磅!用友荣登全球5强

近日&#xff0c;全球权威信息技术研究和顾问公司Gartner发布《Market Share: All Software Markets, Worldwide&#xff0c;2022》报告&#xff0c;用友在EAM&#xff08;资产管理&#xff09;市场再创新高&#xff0c;市场占有率位居全球第五位&#xff0c;亚太第一位&#x…...

计算机组成原理实验报告二-认识汇编语言

实验资料&#xff1a; https://wwpv.lanzoue.com/b05drqjef 密码:d19t 使用txt文档编写下面C源码&#xff0c;文档命名为【学号_hello.c】并使用Mingw工具&#xff08;是 Minimalist GNU for Windows的缩写&#xff09;的bin文件夹下gcc.exe带选项编译&#xff08;&#xff09…...

都说计算机今年炸了,究竟炸到什么程度呢?

近期&#xff0c;最大的计算机领域新闻莫过于Intel CPU严重漏洞曝光。该漏洞被称为“Meltdown”和“Spectre”&#xff0c;几乎涵盖了所有使用Intel芯片的计算机&#xff0c;包括PC、笔记本电脑、服务器和移动设备。 Meltdown漏洞的主要风险是黑客可以利用此漏洞访问操作系统的…...

0Ω的电阻作用

0欧姆电阻即电阻标值为0欧姆的电阻&#xff0c;多用于PCB设计等方面&#xff0c;是一种理想电阻。那0欧姆电阻是表示没有电阻吗&#xff1f;当然不是&#xff0c;0欧姆电阻的阻值不是0欧姆&#xff0c;只是接近0欧姆。 1、调试方便或者兼容设计&#xff1a;可以选择器件、功能…...

02 PostGIS常用空间分析函数

常用的PostGIS空间分析函数清单&#xff1a; 序号函数名描述示例1ST_AsText(geometry)将几何对象转换为文本形式的WKT字符串ST_AsText(ST_GeomFromText(‘POINT(1 2)’)) 返回 ‘POINT(1 2)’2ST_GeometryType(geometry)返回几何对象的类型&#xff0c;如POINT、LINESTRING、P…...

[Golang] 管理日志信息就用Zap包

&#x1f61a;一个不甘平凡的普通人&#xff0c;致力于为Golang社区和算法学习做出贡献&#xff0c;期待您的关注和认可&#xff0c;陪您一起学习打卡&#xff01;&#xff01;&#xff01;&#x1f618;&#x1f618;&#x1f618; &#x1f917;专栏&#xff1a;算法学习 &am…...

【pytest】执行环境切换的两种解决方案

一、痛点分析 在实际企业的项目中&#xff0c;自动化测试的代码往往需要在不同的环境中进行切换&#xff0c;比如多套测试环境、预上线环境、UAT环境、线上环境等等&#xff0c;并且在DevOps理念中&#xff0c;往往自动化都会与Jenkins进行CI/CD&#xff0c;不论是定时执行策略…...

2023国赛tomcat题

环境: 10.10.120.128 安装 tomcaA 10.10.120.129 安装tomcatB 10.10.120.130 安装 nginx 配置dns: 正向解析 反向解析 Tomcat ssl配置 [root@localhost ~]# tar -zxvf jdk-11.0.8_linux-x64_bin.tar.gz [root@localhost ~]# mv jdk-11.0.8 /usr/local/ Vim /etc/profile …...

计算机视觉——day 92 基于跨领域协作学习的单图像去雨

基于跨领域协作学习的单图像去雨 1. Introduction3. Proposed method3.1 网络架构 4. Experiments and results4.1 数据集和指标4.3 合成图像的结果4.8 建模复杂度和运行时间 5. Conclusion 1. Introduction 深度卷积神经网络(DCNN)在图像解析任务中取得了优异的性能。然而&am…...

Java 正则表达式

Java 正则表达式 正则表达式定义了字符串的模式。 正则表达式可以用来搜索、编辑或处理文本。 正则表达式并不仅限于某一种语言&#xff0c;但是在每种语言中有细微的差别。 示例 boolean b String.matches(String regex) ;regex 有2种形式&#xff1a; 字符串 直接就是一…...

Oracle索引知识看这一篇就足够

&#x1f3c6; 文章目标&#xff1a;本篇介绍Oracle索引知识以及案例场景 &#x1f340; Oracle索引知识看这一篇就足够 ✅ 创作者&#xff1a;Jay… &#x1f389; 个人主页&#xff1a;Jay的个人主页 &#x1f341; 展望&#xff1a;若本篇讲解内容帮助到您&#xff0c;请帮忙…...

kafka命令行操作

新老版本kafka命令行操作 啓動Kafka&#xff1a; kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties Kafka命令行操作 查看当前集群中已存在的主题topic 旧的方式 kafka-topics.sh --zookeeper bdphdp01:2181 --list kafka-topics.sh --zookeeper bdphd…...

Pinia 上手使用(store、state、getters、actions)

参考链接&#xff1a;https://juejin.cn/post/7121209657678364685 Pinia官方&#xff1a;https://pinia.vuejs.org/zh/introduction.html 一、安装 npm i pinia -S二、main.js 引入 import { createApp } from "vue" import App from "./App.vue" impor…...

C++小项目之文本编辑器mynote(1.0.0版本)

2023年5月19日&#xff0c;周五晚上&#xff1a; 今天晚上突然想写一个运行在命令行上的文本编辑器&#xff0c;因为平时写文本时老是要创建新的文本文件&#xff0c;觉得太麻烦了。捣鼓了一个晚上&#xff0c;才选出一个我觉得比较满意的。我把这个程序添加到了系统环境变量中…...

人工智能的界面革命,消费者与企业互动的方式即将发生变化。

本文来源于 digitalnative.substack.com/p/ais-interface-revolution 描述了一种社会现象&#xff1a; 随着真实友谊的减少和虚拟友谊的增加&#xff0c;越来越多的人开始将AI聊天机器人视为自己的朋友&#xff0c;甚至建立了深厚的情感纽带。这可能与当前人们越来越孤独的现实…...

深度学习课程:手写体识别示例代码和详细注释

Pytorch 的快速入门&#xff0c;参见 通过两个神经元的极简模型&#xff0c;清晰透视 Pytorch 工作原理。本文结合手写体识别项目&#xff0c;给出一个具体示例和直接关联代码的解释。 1. 代码 下面代码展示了完整的手写体识别的 Python 程序代码。代码中有少量注释。在本文后…...

10-03 单元化架构设计

设计原则 透明 对开发者透明 在做实现时&#xff0c;不依赖于单元划分和部署对组件透明 在组件运行时&#xff0c;不感知其承载单元对数据透明 数据库并不知道为哪个单元提供服务 业务可分片 系统业务复杂度足够高系统可以按照某一维度进行切分系统数据必须可以被区分 业务…...

Coze工作流实战:5分钟搞定AI智能试卷生成(附完整提示词模板)

Coze工作流实战&#xff1a;5分钟打造智能试卷生成系统 每次备课最头疼的就是出试卷&#xff1f;作为一线教师&#xff0c;我完全理解那种面对空白文档的焦虑。去年期末&#xff0c;我曾在凌晨三点还在手动编排选择题选项&#xff0c;直到发现了Coze工作流这个神器。今天要分享…...

漏洞扫描器:常见漏洞模式的自动化检测

漏洞扫描器&#xff1a;常见漏洞模式的自动化检测 在当今数字化时代&#xff0c;网络安全问题日益突出&#xff0c;企业和个人面临着来自黑客、恶意软件等各类威胁。漏洞扫描器作为一种自动化工具&#xff0c;能够高效检测系统中存在的常见漏洞模式&#xff0c;帮助用户提前发…...

掌握类人记忆,解锁AI大模型潜力:小白也能轻松收藏学习!

AI智能体&#xff08;Agent&#xff09;的热度不减&#xff0c;然而许多Agent系统都有一个共同的痛点就是“健忘症”&#xff0c;尤其是上下文过长时&#xff0c;更为明显。这种缺乏长期、连贯记忆的能力&#xff0c;极大地限制了AI智能体的潜力和用户体验。它们很难真正理解用…...

从Claude Code源码泄露看AI编码助手设计:12个可收藏的实用模式解析

Claude Code源码泄露揭示了生产级AI编码助手的内部实现。文章重点分析了其背后的12个可复用设计模式&#xff0c;涵盖记忆与上下文、工作流与编排、工具与权限、自动化四大类。这些模式如持久化指令文件、分层记忆、探索-规划-行动循环、上下文隔离子智能体等&#xff0c;为构建…...

FastAPI子应用挂载:别再让root_path坑你一夜稼

Julia&#xff08;julialang.org&#xff09;由Stefan Karpinski、Jeff Bezanson等在2009年创建&#xff0c;目标是融合Python的易用性、C的高性能、R的统计能力、Matlab的科学计算生态。 其核心设计哲学是&#xff1a; 高性能&#xff1a;编译型语言&#xff08;JIT&#xf…...

信息时代的内容创作者,你离“爆款“只差一个正确的信息入口

说实话&#xff0c;作为一个在互联网内容行业摸爬滚打七八年的老编辑&#xff0c;我早就被各种信息轰炸得有些麻木了。每天早上醒来&#xff0c;手机里躺着十几个App的推送通知&#xff0c;微信群里几百条未读消息&#xff0c;邮箱里塞满了各类资讯订阅。想要快速了解今天发生了…...

为什么92%的LLM项目在Q3前无法通过等保三级?2026奇点大会首次发布《LLM生产安全合规检查清单V2.1》

第一章&#xff1a;2026奇点智能技术大会&#xff1a;LLM生产环境部署指南 2026奇点智能技术大会(https://ml-summit.org) 在真实生产环境中部署大语言模型&#xff0c;需兼顾推理延迟、显存效率、服务可观测性与安全合规性。本次大会实践工作坊基于 Llama-3-70B-Instruct 与 …...

Mysql 11: 存储过程全解——从创建到使用

存储过程&#xff08;Stored Procedure&#xff09;是 MySQL 中预编译在数据库服务器上的 SQL 语句集合&#xff0c;可以封装复杂业务逻辑、减少网络交互、提升执行效率&#xff0c;是数据库开发的核心技能。本文围绕图片中的知识点&#xff0c;从创建、使用、删除到拓展&#…...

NXP MPXHZ6250A压力传感器嵌入式驱动库解析

1. OSS-EC_NXP_MPXHZ6250A_00000057 压力传感器驱动库深度解析NXP MPXHZ6250A 是一款高精度、集成信号调理电路的硅压阻式绝对压力传感器&#xff0c;广泛应用于汽车进气歧管压力&#xff08;MAP&#xff09;、工业过程控制、医疗呼吸设备及环境监测等对稳定性与温漂抑制要求严…...

DS3231高精度RTC驱动开发与工业级可靠性设计

1. DS3231高精度实时时钟芯片深度解析与嵌入式驱动开发实践DS3231 是 Maxim Integrated&#xff08;现为 Analog Devices&#xff09;推出的 IC 接口高精度温补晶体振荡器&#xff08;TCXO&#xff09;集成实时时钟&#xff08;RTC&#xff09;芯片&#xff0c;广泛应用于工业控…...