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

v3s点RGB屏 40pin 800x480,不一样的点屏,不通过chosen。

一、背景、目的、简介。

一般来说,通过uboot将屏幕参数传给kernel,是通过修改设备树。

uboot和kernel都需要屏幕点亮。uboot侧重于显示一张图片。而kernel则多是动画。

在这里,我先是找到了一个裸机点屏的代码。将其编译成静态库后,给uboot来调用。而不是通过荔枝派已经适配好了的uboot。

这样做,只需要将uboot初始化好了的内存地址传给内核就好了,当然还包括屏幕大小等信息,因为已经提前知道,所以在内核中写死了。然后利于simple-framebuffer,将内容映射为屏幕。然后有了fb0,就可以骚操作了。

二、问题:

但是在实际操作过程中遇到了些问题。比如说将内存地址传给kernel后,内核需要将该物理地址转为虚拟地址。使用ioremap后,不能功,会出错,但还是会显示注册framebuffer成功。

以及成功后,有显示fb0,但是屏幕上有条纹,明显不是fb所指内存中的内容。如果正常的话,uboot已经配置了tcon,tcon将fb里面的数据(先经过了de和mixer处理),自动发送到屏幕上。应该看到random的内容,这内容应该是.text或是全黑屏。但是,实际上是uboot显示的内容会慢慢消失。猜测是tcon被关闭了。

三、解决:

为什么uboot传参后的屏幕显示正常呢?为什么我修改simplefb_probe后,kernel起动时报错?下面的内容全部在/drivers/video/fbdev/simplefb.c中进行。

其实需要修改的不是simplefb_probe这个函数,而是simplefb_parse_dt,这个函数。

99行 simplefb_parse_dt修改为:

static int simplefb_parse_dt(struct platform_device *pdev,struct simplefb_params *params)
{struct device_node *np = pdev->dev.of_node;int ret;const char *format;int i;//ret = of_property_read_u32(np, "width", &params->width);ret = 0;params->width	= 800;if (ret) {dev_err(&pdev->dev, "Can't parse width property\n");return ret;}//ret = of_property_read_u32(np, "height", &params->height);ret	= 0;params->height	= 480;if (ret) {dev_err(&pdev->dev, "Can't parse height property\n");return ret;}//ret = of_property_read_u32(np, "stride", &params->stride);ret	= 0;params->stride	= 3200;if (ret) {dev_err(&pdev->dev, "Can't parse stride property\n");return ret;}//ret = of_property_read_string(np, "format", &format);ret	= 0;if (ret) {dev_err(&pdev->dev, "Can't parse format property\n");return ret;}params->format = NULL;for (i = 0; i < ARRAY_SIZE(simplefb_formats); i++) {//if (strcmp(format, simplefb_formats[i].name))if (strcmp("x8r8g8b8", simplefb_formats[i].name))continue;params->format = &simplefb_formats[i];break;}if (!params->format) {dev_err(&pdev->dev, "Invalid format value\n");return -EINVAL;}return 0;
}

还需要修改设备树:

通过网盘分享的文件:v3s_mini_dts.tar
链接: https://pan.baidu.com/s/1gJZEUVp4DVJMtSWjHNpzpA?pwd=wqvc 提取码: wqvc 
--来自百度网盘超级会员v3的分享

/{panel: panel {#address-cells = <1>;#size-cells = <0>;compatible = "urt,umsh-8596md-t", "simple-panel";port@0 {reg = <0>;//backlight = <&backlight>;#address-cells = <1>;#size-cells = <0>;panel_input: endpoint@0 {reg = <0>;remote-endpoint = <&tcon0_out_lcd>;};};};
}&tcon0_out {tcon0_out_lcd: endpoint@0 {reg = <0>;remote-endpoint = <&panel_input>;};
};chosen {#address-cells = <1>;#size-cells = <1>;ranges;simplefb_lcd: framebuffer@0 {compatible = "allwinner,simple-framebuffer","simple-framebuffer";allwinner,pipeline = "de0-lcd0";clocks = <&ccu CLK_BUS_TCON0>, <&display_clocks 0>,<&display_clocks 6>, <&ccu CLK_TCON0>;status = "disabled";};};

四、其它问题

还遇到过什么问题吧,比如,使用mplayer播放视频,但是只显示第一帧,然后报错,说无法得到第2个缓存。这个问题是,只使用了 compatible = "urt,umsh-8596md-t", "simple-panel";这是一个drm,但是simple-framebuffer没有配置好,不能用导致。将simple-framebuffer配置好就可以了。

五、uboot传参,对kernel设备树还是有影响的:

比如我将fdt_simplefb里的设置修改,本来显示设备是在chosen里的,但是被我改成了在/节点下。

那么问题又来了,framebuffer的地址也是uboot传入的,修改其值,会有影响吗?

经过测试,@其它数值,没有什么变化。

六、实物实拍:

好想做个小电视呀,微缩模型放城堡里..._哔哩哔哩_bilibili

相关文章:

v3s点RGB屏 40pin 800x480,不一样的点屏,不通过chosen。

一、背景、目的、简介。 一般来说&#xff0c;通过uboot将屏幕参数传给kernel&#xff0c;是通过修改设备树。 uboot和kernel都需要屏幕点亮。uboot侧重于显示一张图片。而kernel则多是动画。 在这里&#xff0c;我先是找到了一个裸机点屏的代码。将其编译成静态库后&#x…...

某科技局国产服务器PVE虚拟化技术文档

环境介绍 硬件配置 服务器品牌&#xff1a;黄河 型号&#xff1a;Huanghe 2280 V2 Cpu型号&#xff1a;kunpeng-920 磁盘信息 :480SSD * 2 ,4T*4 网卡&#xff1a;板载四口千兆 如下表 四台服务器同等型号配置&#xff0c;均做单节点虚拟化&#xff0c;数据保护采用底层r…...

中科岩创边坡自动化监测解决方案

行业现状 由于边坡不稳定性因素&#xff0c;可能会造成斜坡上的岩土体沿着某个面不均匀向下向外滑动&#xff0c;形成滑坡&#xff1b;陡峭山坡上岩土体在重力作用下&#xff0c;发生陡然倾落运动&#xff0c;造成崩塌&#xff1b;在沟谷或山坡上产生的夹带大量泥沙、石块等固体…...

GPT-O3:简单介绍

GPT-O3&#xff1a;人工智能领域的重大突破 近日&#xff0c;OpenAI发布了其最新的AI模型GPT-O3&#xff0c;这一模型在AGI评估中取得了惊人的成绩&#xff0c;展现出强大的能力和潜力。GPT-O3的出现标志着人工智能领域的重大进步&#xff0c;预计将在2025年实现更大的突破。 …...

cudnn版本gpu架构

nvcc --help 可以看 --gpu-architecture 写到的支持的架构 NVIDIA 的 GPU 架构是按代次发布的&#xff0c;以下是这些架构的对应说明&#xff1a; NVIDIA Hopper: 这是 NVIDIA 于 2022 年推出的架构之一&#xff0c;面向高性能计算&#xff08;HPC&#xff09;和人工智能&…...

数据库安全-redisCouchdb

1.redis未授权访问 默认端口:6379 1.1 Redis沙盒逃逸漏洞RCE-CVE-2022-0543 介绍&#xff1a;Redis 是一套开源的使用 ANSI C编写、支持网络、可基于内存亦可持久化的日志型、键值存储数据库&#xff0c;并提供多种语言的API。Redis 如果在没有开启认证的情况下&#xff0c;…...

ubuntu22.04安装PaddleX3

PaddleOCR 安装过程可以参考PaddleX本地安装教程 我的电脑环境配置&#xff1a; ubuntu22.04 cuda11.8&#xff08;之前安装的是12.4没有匹配的paddle-gpu;这里改成11.8&#xff09; 一、安装基础环境 1、 conda create -n ppx1 python3.10 2、 conda activate ppx1 3、…...

Flutter 实现全局悬浮按钮学习

Flutter 代码如何实现了一个全局悬浮按钮&#xff0c;当点击按钮时&#xff0c;会显示一个可以拖动并且通过长按可以移除的悬浮控件。 前置知识点学习 Offset Offset 是 Flutter 中的一个类&#xff0c;用于表示二维平面中的位置或位移。它通常用于描述坐标系中的一个点&…...

14-C语言多文件编程

一、各种变量 在学习多文件编程之前&#xff0c;先要了解清楚各种变量的作用范围以及生命周期。 1.普通变量 1.1普通局部变量 定义形式&#xff1a;在复合语句{}里面定义的变量为普通局部变量&#xff1b;作用范围&#xff1a;在复合语句{}里面有效&#xff1b;生命周期&am…...

基于Springboot的在线问卷调查系统【附源码】

基于Springboot的在线问卷调查系统 效果如下&#xff1a; 系统主页面 问卷列表页面 个人中心页面 系统登陆页面 管理员主页面 问卷管理页面 研究背景 随着互联网技术的飞速发展&#xff0c;传统的问卷调查方式因其时间和地点的限制&#xff0c;难以高效地收集到足够的数据。…...

Redis热点数据管理全解析:从MySQL同步到高效缓存的完整解决方案

1. 引言 1.1 背景介绍&#xff1a;MySQL与Redis在高性能场景下的结合 在现代互联网应用中&#xff0c;MySQL作为关系型数据库&#xff0c;承担了大量业务数据的存储任务。然而&#xff0c;随着业务的增长&#xff0c;海量数据的查询性能成为一个瓶颈。为了应对高并发和低延迟…...

【图书介绍】】几本Linux C\C++编程图书

Linux C\C编程&#xff0c;是IT领域比较稳定的职业发展方向&#xff0c;本文介绍几本Linux开发方面的图书。 《Linux C与C一线开发实践&#xff08;第2版&#xff09;》 《Linux C与C一线开发实践&#xff08;第2版&#xff09;&#xff08;Linux技术丛书&#xff09;》(朱文…...

MFC/C++学习系列之简单记录7

MFC/C学习系列之简单记录7 前言句柄的介绍句柄的使用AFX开头的函数都是干什么用的&#xff1f;总结 前言 在MFC的使用中发现了句柄&#xff0c;今天来详细学习一下MFC中如何使用句柄吧&#xff01; 句柄的介绍 句柄的使用是资源管理和传递的关键机制&#xff0c;通过句柄将系…...

使用GPT进行SCI论文润色常用语句

声明&#xff1a;本文仅作为本人记录学习使用。 You are now a professional academic touch-up specialist. Please polish the English draft I am sending you next. After analyzing the paragraph, give suggestions for polishing in terms of sentence structure, gram…...

Redis密码设置与访问限制(网络安全)

现在用redis缓存热数据越来越常见了&#xff0c;甚至一些配置&#xff0c;开关等等的东西也写到redis里。原因就是redis简单高效。redis里的数据也越来越重要了&#xff0c;例如一些业务的中间数据会暂时存放在redis里&#xff0c;所以限制redis的访问还是很有必要。 本文通过…...

php的线程安全与非线程安全版本的区别

PHP的线程安全&#xff08;Thread Safe&#xff0c;简称TS&#xff09;与非线程安全&#xff08;Non-Thread Safe&#xff0c;简称NTS&#xff09;版本主要在多线程环境下的行为特性、性能、以及适用场景上存在差异。以下是两者的详细对比&#xff1a; 一、定义与概念 线程安…...

标贝科技受邀出席2024ADD数据应用场景大会 共议数据要素发展新契机

12月13日&#xff0c;由北京市通州区人民政府主办&#xff0c;通州区经济和信息化局、通州区台湖镇人民政府承办的2024-ADD数据应用场景大会成功举办。标贝科技作为AI数据领域代表企业受邀出席大会&#xff0c;与数据要素创业者、投资人一起走进通州台湖&#xff0c;共话数据要…...

electron-vite打包后图标不生效问题

在electron-builder.yml中&#xff0c;通过icon配置自己的图标&#xff0c;以下是正确代码 win:executableName: 名称icon: build/icon.ico nsis:artifactName: ${name}-${version}.${ext}shortcutName: ${productName}uninstallDisplayName: ${productName}createDesktopShor…...

systemverilog中的unique if

1 基本概念 在 SystemVerilog 中&#xff0c;unique if是一种条件判断结构。它用于检查多个互斥的条件&#xff0c;以确保在给定的情况下只有一个条件分支被执行。这有助于提高代码的可读性和可维护性&#xff0c;同时也能帮助发现潜在的逻辑错误&#xff0c;报错原因有以下两个…...

【MySQL篇】事务的认识以及四大特性

何为事务&#xff1f; 事务&#xff08;Transaction&#xff09;是指一组操作的集合&#xff0c;这些操作要么全部执行成功&#xff0c;要么全部不执行。事务通常用于保证数据库的一致性、完整性和可靠性&#xff0c;确保数据的完整性与正确性。 有效避免部分执行&#xff0…...

安装对中不到位,丝杆升降机越用越费!5大严重后果必看

在设备安装现场&#xff0c;经常能看到这样的场景&#xff1a;工人用卷尺大概量一下电机座和升降机输入轴的距离&#xff0c;然后用锤子把联轴器敲进去&#xff0c;螺栓拧紧就完事了。他们不知道&#xff0c;这种“差不多”的对中操作&#xff0c;正在为丝杆升降机埋下致命隐患…...

Claude Code 从零复刻教程 - 完整大纲

Claude Code 从零复刻教程 - 完整大纲 本教程面向有 JavaScript 基础的开发者&#xff0c;通过 12 篇系列文章&#xff0c;从零构建一个类似 Claude Code 的 AI 编程助手 CLI 工具。 目录 教程简介技术栈系列大纲每篇教程结构学习路径 教程简介 什么是 Claude Code&#xff1…...

3步颠覆微信数据管理:让87%用户告别聊天记录丢失烦恼

3步颠覆微信数据管理&#xff1a;让87%用户告别聊天记录丢失烦恼 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChat…...

OpenAI API 报错 insufficient_quota 怎么办?4 种方案实测,最后一种最省心

上周五晚上十一点半&#xff0c;我正用 GPT-5 的 API 跑一个批量文本分类任务&#xff0c;跑到一半控制台突然刷屏红色报错&#xff1a;You exceeded your current quota, please check your plan and billing details. 错误码 insufficient_quota&#xff0c;HTTP 状态码 429。…...

Ostrakon-VL-8B在零售场景落地实操:商品全扫描与空缺检测实战

Ostrakon-VL-8B在零售场景落地实操&#xff1a;商品全扫描与空缺检测实战 1. 零售场景的痛点与解决方案 在传统零售行业中&#xff0c;货架管理和商品盘点一直是耗时费力的工作。店员需要手动检查每个货架&#xff0c;记录商品库存情况&#xff0c;识别缺货位置。这个过程不仅…...

CSS如何实现动态间距调整_通过CSS变量控制padding与margin值

CSS变量可动态修改padding/margin&#xff0c;需以--开头、设默认值如var(--space-md, 12px)&#xff0c;响应式通过media更新变量值&#xff0c;注意margin塌陷、命名规范及单位一致性。怎么用CSS变量动态改padding和margin直接在根元素或组件上定义--space-sm、--space-md这类…...

JTAG接口原理与调试实战指南

1. JTAG接口基础解析与核心功能JTAG&#xff08;Joint Test Action Group&#xff09;作为现代数字系统开发中不可或缺的调试接口&#xff0c;其重要性往往被工程师们低估。这个诞生于1985年的IEEE 1149.1标准&#xff0c;最初是为了解决PCB板级互联测试难题&#xff0c;如今已…...

别再只用CardView做卡片了!解锁Android Material Design中CardView的5个隐藏用法与实战技巧

解锁Android CardView的5个高阶玩法&#xff1a;从交互动画到性能调优 在Material Design的世界里&#xff0c;CardView早已超越了简单的阴影和圆角容器角色。当大多数开发者还在用基础属性构建静态卡片时&#xff0c;真正的高手已经在探索这些隐藏能力&#xff1a;如何让卡片像…...

小白程序员必看:收藏这份大模型学习指南(Agent/MCP全解析)

引言 – 随着生成式人工智能的兴起&#xff0c;“智能体&#xff08;Intelligent Agent&#xff09;”、“Agent”以及“Model Context Protocol (MCP)”这些名词频频出现。但它们之间的边界往往模糊&#xff1a;有人把 Agent 当作“智能体”&#xff0c;有人又提到 MCP 协议&a…...

国产化工控机浪潮下:C#上位机统信UOS+鲲鹏架构全栈适配零踩坑指南

去年给天津滨海新区某汽车零部件工厂做工控系统国产化改造&#xff0c;客户的硬指标没有任何商量余地&#xff1a;原有Windows平台的C#焊接上位机系统&#xff0c;必须无缝迁移到统信UOS 20专业版鲲鹏920工控机&#xff0c;724小时稳定运行&#xff0c;满足等保2.0三级要求&…...