当前位置: 首页 > 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…...

Windows 11 安装 Dify 完整指南 非docker环境

# Windows 11 安装 Dify 完整指南## 前置要求- Python 3.11 - Node.js 18 - PostgreSQL 14 - Redis for Windows - Git - Ollama (可选&#xff0c;用于本地模型)## 详细安装步骤### 1. 安装必要软件1. **Python 3.11**- 从 https://www.python.org/downloads/release/python-…...

电子电气架构 --- 什么是EPS?

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 所谓鸡汤&#xff0c;要么蛊惑你认命&#xff0c;要么怂恿你拼命&#xff0c;但都是回避问题的根源&…...

12寸半导体厂等保安全的设计思路

等级保护(等保)二级和三级的主要区别在于安全要求的严格程度、所需部署的安全措施和设备、以及对安全事件响应和处理的能力。以下是等保二级和三级之间的一些关键区别: 一、 安全要求严格程度: - 等保二级:适用于需要较高安全保护的信息系统,要求能够防范轻微的恶意攻击…...

【Chrome Extension】一、CSDN计时扩展设计

【Chrome Extension】一、CSDN计时扩展设计 重点内容内容脚本 content_scripts 文件目录1、整体目录2、manifest.json3、scripts/content.js4、css/content.css 重点内容 内容脚本 content_scripts 1、manifest.json文件配置 {"manifest_version": 3, # *依赖Chro…...

C语言——数据在内存中的存储

目录 前言 一数据类型 类型归类 二整形在内存中的存储 原反补码 大小端 相关练习题 三浮点数在内存中的储存 浮点数储存规则 前言 只有取学习数据在内存中的存储&#xff0c;我们在以后才能定义好&#xff08;用好&#xff09;各种类型的数据&#xff01; 一数据类型…...

Python(二)str、list、tuple、dict、set

string name abcdefprint(name[0]) #a # 切片&#xff1a;取部分数据 print(name[0:3]) # 取 下标为0,1,2的字符 abc print(name[2:]) # 取 下标为2开始到最后的字符 cdef print(name…...

如何在谷歌浏览器中设置邮件客户端

在日常生活和工作中&#xff0c;电子邮件已经成为不可或缺的沟通工具。对于使用谷歌浏览器的用户来说&#xff0c;将Chrome设置为默认邮件客户端可以带来诸多便利。本文将详细介绍如何在谷歌浏览器中设置邮件客户端&#xff0c;帮助大家轻松实现这一目标。 在谷歌浏览器中设置邮…...

Robot Framework搭建自动化测试框架

1.配置环境 需要安装jdk8&#xff0c;andrid sdk&#xff08;安装adb&#xff09;&#xff0c;pycharm编译环境以及软件 安装Robot Framework 首先&#xff0c;你需要安装Robot Framework&#xff0c;可以使用 pip 进行安装&#xff1a; pip install robotframework安装所需的…...

Linux——字符设备驱动控制LED

目录 驱动模块的加载和卸载 驱动程序Makefile编写 字符设备注册与注销 字符设备驱动模板 应用程序对驱动读写操作 iounmap函数 LED寄存器物理地址映射到虚拟地址 应用程序代码编写 Linux驱动的两种运行方式&#xff1a; 1、将驱动编译进Linux内核中&#xff0c;也就是zIm…...

云边端架构的优势是什么?面临哪些挑战?

一、云边端架构的优势 降低网络延迟&#xff1a;在传统集中式架构中&#xff0c;数据需传输到云计算中心处理&#xff0c;导致网络延迟较高。而云边端架构将计算和存储推向边缘设备&#xff0c;可在离用户更近的地方处理数据&#xff0c;大大降低了网络延迟&#xff0c;提升了用…...