Buildroot显示kernel logo

buildroot开机时DSI屏幕变成跟uart一样输出log,现在想显示logo 

1、failed to show loader logo 

[    2.467479]  mmcblk1: p1 p2 p3 p4 p5 p6 p7 p8 p9
[    2.468827] rockchip-drm display-subsystem: can't not find any loader display
[    2.468859] rockchip-drm display-subsystem: failed to show loader logo
[    2.472110] rockchip-vop ff8f0000.vop: [drm:vop_crtc_atomic_enable] Update mode to 1024x600p75, type: 16
[    2.472439] dw-mipi-dsi ff960000.dsi: [drm:dw_mipi_dsi_encoder_enable] final DSI-Link bandwidth: 504 x 4 Mbps
[    2.474823] panel_simple_prepare p->prepared=1
[    2.474828] sn65dsi84_is_connected  sn65dsi84 connect = 0
[    2.474834] panel_simple_enable p->enabled=1

static void show_loader_logo(struct drm_device *drm_dev) 

添加打印看看情况

@@ -993,21 +993,27 @@ static void show_loader_logo(struct drm_device *drm_dev)state->acquire_ctx = mode_config->acquire_ctx;for_each_child_of_node(root, route) {
-               if (!of_device_is_available(route))
+               if (!of_device_is_available(route)) {
+                       dev_warn(drm_dev->dev, "route->name=%s not available, route->type=%s, route->full_name=%s\n", route->name, route->type, route->full_name);continue;
+               }set = of_parse_display_resource(drm_dev, route);
-               if (!set)
+               if (!set) {
+                       dev_warn(drm_dev->dev, "route->name=%s not set\n", route->name);continue;
+               }if (setup_initial_state(drm_dev, state, set)) {drm_framebuffer_put(set->fb);INIT_LIST_HEAD(&set->head);list_add_tail(&set->head, &mode_unset_list);
+                       dev_warn(drm_dev->dev, "route->name=%s add to mode_unset_list\n", route->name);continue;}INIT_LIST_HEAD(&set->head);list_add_tail(&set->head, &mode_set_list);
+               dev_warn(drm_dev->dev, "route->name=%s add to mode_set_list\n", route->name);}/*
@@ -1020,6 +1026,7 @@ static void show_loader_logo(struct drm_device *drm_dev)list_for_each_entry_safe(set, tmp_set, &mode_set_list, head) {if (set->crtc == unset->crtc) {
+                               dev_warn(drm_dev->dev, "find_used_crtc:%s\n", set->crtc->name);find_used_crtc = 1;continue;}
@@ -1031,6 +1038,7 @@ static void show_loader_logo(struct drm_device *drm_dev)struct rockchip_drm_private *priv =drm_dev->dev_private;+                       dev_warn(drm_dev->dev, "unset crtc:%s\n", crtc->name);if (unset->hdisplay && unset->vdisplay) {if (priv->crtc_funcs[pipe] &&priv->crtc_funcs[pipe]->loader_protect)

 加了打印后就有了这些输出,不过还是没看到kernel的logo,继续查找Console: switching

 2、Console: switching

[    2.443211] rockchip-drm display-subsystem: route->name=route-dsi add to mode_set_list
[    2.467159] Freeing drm_logo memory: 260K
[    2.482948] Console: switching to colour frame buffer device 128x37
[    2.497465] usb 3-1: New USB device found, idVendor=05e3, idProduct=06Populating /dev using udev: 10, bcdDevice=93.11
[    2.497480] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    2.497492] usb 3-1: Product: USB2.1 Hub
[    2.497502] usb 3-1: Manufacturer:
[    2.502957] rockchip-drm display-subsystem: fb0:  frame buffer device

 添加dump_stack()查看调用过程

+++ b/drivers/tty/vt/vt.c
@@ -3562,6 +3562,8 @@ static int do_bind_con_driver(const struct consw *csw, int first, int last,clear_buffer_attributes(vc);}+       dump_stack();
+pr_info("Console: switching ");
[    2.452309] Freeing drm_logo memory: 260K
[    2.468135] CPU: 4 PID: 43 Comm: kworker/4:1 Not tainted 4.19.193 #17
[    2.468138] Hardware name: ASUS Tinker Board 2Populating /dev using udev: /2S (DT)
[    2.468152] Workqueue: events deferred_probe_work_func
[    2.468156] Call trace:
[    2.468163]  dump_backtrace+0x0/0x188
[    2.468167]  show_stack+0x24/0x30
[    2.468173]  dump_stack+0x8c/0xb4
[    2.468179]  do_bind_con_driver+0x140/0x2f4
[    2.468182]  do_take_over_console+0x194/0x1d8
[    2.468186]  do_fbcon_takeover+0x78/0xe0
[    2.468189]  fbcon_event_notify+0x458/0x898
[    2.468194]  notifier_call_chain+0x70/0x90
[    2.468197]  __blocking_notifier_call_chain+0x58/0x84
[    2.468201]  blocking_notifier_call_chain+0x3c/0x4c
[    2.468206]  fb_notifier_call_chain+0x30/0x3c
[    2.468209]  register_framebuffer+0x2b4/0x2ec
[    2.468214]  __drm_fb_helper_initial_config_and_unlock+0x2b8/0x360
[    2.468218]  drm_fb_helper_initial_config+0x3c/0x50
[    2.468223]  rockchip_drm_fbdev_init+0xf0/0x120
[    2.468227]  rockchip_drm_bind+0x550/0x1958
[    2.468232]  try_to_bring_up_master+0x224/0x270
[    2.468235]  component_add+0xe4/0x13c
[    2.468238]  cdn_dp_probe+0x1b0/0x1c0
[    2.468242]  platform_drv_probe+0x58/0xa4
[    2.468245]  really_probe+0x2a8/0x3a4
[    2.468248]  driver_probe_device+0x124/0x134
[    2.468251]  __device_attach_driver+0xc8/0x100
[    2.468254]  bus_for_each_drv+0xb0/0xd4
[    2.468257]  __device_attach+0xdc/0x16c
[    2.468260]  device_initial_probe+0x24/0x30
[    2.468262]  bus_probe_device+0x38/0x98
[    2.468265]  deferred_probe_work_func+0xb8/0xcc
[    2.468269]  process_one_work+0x200/0x330
[    2.468272]  worker_thread+0x258/0x2fc
[    2.468275]  kthread+0x120/0x130
[    2.468279]  ret_from_fork+0x10/0x18
[    2.468281] Console: switching to colour frame buffer device 128x37

从rockchip_drm_bind分析,刚好执行完show_loader_logo后就到rockchip_drm_fbdev_init 

 

执行到nb->notifier_call(nb, val, v);也就是fbcon_event_notify(struct notifier_block *self, unsigned long action, void *data) 

kernel/drivers/video/fbdev/core/Makefile有CONFIG_FRAMEBUFFER_CONSOLE宏用来编译fbcon.o的,直接屏蔽

@@ -796,4 +796,4 @@ CONFIG_VT=yCONFIG_DUMMY_CONSOLE=yCONFIG_DUMMY_CONSOLE_COLUMNS=80CONFIG_DUMMY_CONSOLE_ROWS=25
-CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE is not set

 3、正常显示

buildroot显示kernel logo

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

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

相关文章

Windows Service 2008 r2的安装

创建虚拟机–(操作非常简单,跟着图片的数据下一步即可) 选择自己要安装的虚拟机版本 在这里可以更改虚拟机存放的位置 这里的40个G并不会马上占用,当虚拟机里的东西到40个G的大小就不会再存储东西了 选择和自己虚拟…

春运倒计时,AR 引领铁路运输安全新风向

根据中国交通新闻网发布最新消息,今年春运全国跨区域人员流动量预计达 90 亿人次。 随着春运期间旅客数量不断创下新高,铁路运输面临着空前的挑战与压力。 图源:pixabay 聚焦铁路运输效率与旅客安全保障问题,本期行业趋势将探讨 …

51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读

今天要分享的是基于BEV的多模态、多任务、端到端自动驾驶模型FusionAD,其专注于自动驾驶预测和规划任务。这项工作首次发表于2023年8月2日,性能超越了2023 CVPR最佳论文UniAD模型。论文题目是FusionAD: Multi-modality Fusion for Prediction and Planni…

记录一些随机约束的控制方法

文章目录 前言一、内嵌约束控制二、控制rand变量是否随机三、选择随机控制的变量四、控制约束块是否随机五、约束的嵌套控制总结 前言 在运用UVM验证过程中,经常会用到大量的随机,这个时候我们需要控制随机约束的打开或者关闭,来实现不同模式…

linux显示系统内存使用情况--free命令

free 命令是Linux系统中用于显示系统内存使用情况的一个常用工具。通过该命令,用户可以轻松了解系统的内存分配、使用情况以及性能状况。本文将深入介绍free命令的各个方面,并提供详细的示例。 安装与基本用法 通常来说,free命令已经预装在大…

基于Python实现人脸识别相似度对比

目录 引言背景介绍目的和意义 人脸识别的原理人脸图像获取人脸检测与定位人脸特征提取相似度计算 基于Python的人脸相似度对比实现数据集准备人脸图像预处理特征提取相似度计算 引言 背景介绍 人脸识别技术是一种通过计算机对人脸图像进行分析和处理,从而实现自动识…

2023.1.17 关于 Redis 持久化 AOF 策略详解

目录 引言 AOF 策略 实例演示一 缓冲区 重写机制 手动触发 自动触发 AOF 重写流程 实例演示二 引言 Redis 实现持久化的两大策略 RDB ——> Redis DataBase(定期备份)AOF ——> Append Only File(实时备份) 注意&…

JavaEE:多线程(2):线程状态,线程安全

目录 线程状态 线程安全 线程不安全 加锁 互斥性 可重入 死锁 死锁的解决方法 Java标准库中线程安全类 内存可见性引起的线程安全问题 等待和通知机制 线程饿死 wait notify 线程状态 就绪:线程随时可以去CPU上执行,也包含在CPU上执行的…

漏洞补丁修复之openssl版本从1.1.1q升级到1.1.1t以及python版本默认2.7.5升级到2.7.18新版本和Nginx版本升级到1.24.0

​ 一、Openssl升级 1、查看Openssl安装的版本 openssl version 2、查看Openssl路径 which openssl 3、上传openssl安装包到服务器:openssl-1.1.1t.tar.gz,并且解压,安装: mv /usr/local/openssl /usr/local/backup_openssl_1.1.1q_20240120 mkdir /usr/local/openssl tar…

强化学习:MuJoCo机器人强化学习仿真入门

声明:我们跳过mujoco环境的搭建,搭建环境不难,可自行百度 下面开始进入正题(需要有一定的python基础与xml基础): 下面进入到建立机器人模型的部分: 需要先介绍URDF模型文件和导出MJCF格式 介绍完…

K8S--安装Nginx

原文网址:K8S--安装Nginx-CSDN博客 简介 本文介绍K8S安装Nginx的方法。 1.创建Nginx目录及配置文件 mkdir -p /work/devops/k8s/app/nginx/{config,html} 在config目录下创建nginx.conf配置文件,内容如下: # events必须要有 events {wo…

PALWORLD linux centos7开服教程

开放端口8211 iptables -A INPUT -p udp -p tcp --dport 8211 -j ACCEPT iptables -A INPUT -p udp -p udp --dport 8211 -j ACCEPT yum -y install glibc.i686 libstdc.i686 screen libcurl.i686 yum install glibc-devel.i686 yum install libstdc-devel.i686 yum -y ins…

逆序对数量(归并排序做法)

先给出上一篇文章归并排序模板-CSDN博客里的归并排序模板&#xff1a; #include<iostream> using namespace std;const int N 100010;int n; int q[N], temp[N];void merge_sort(int q[], int l, int r) {if(l > r) return;int mid (lr) >> 1;merge_sort(q, …

爬虫安居客新房

一、首先看网址 后面有全部代码 https://hf.fang.anjuke.com/loupan/baohequ/p3 这种形式很好分析&#xff0c;https://hf.fang.anjuke.com/loupan/行政区域页码 xinfang_area ["feixixian", "baohequ", "shushanqu", "luyangqu",…

#GPU|LLM|AIGC#集成显卡与独立显卡|显卡在深度学习中的选择与LLM GPU推荐

区别 核心区别&#xff1a;显存&#xff0c;也被称作帧缓存。独立显卡拥有独立显存&#xff0c;而集成显卡通常是没有的&#xff0c;需要占用部分主内存来达到缓存的目的 集成显卡&#xff1a; 是集成在主板上的&#xff0c;与主处理器共享系统内存。 一般会在很多轻便薄型的…

机械臂雅可比矩阵的矢量积理解和matlab实现

雅可比矩阵的第Ji列&#xff1a; 关于一些基本概念可以参考博客&#xff0c;部分细节如下&#xff1a; 每个移动关节&#xff0c;Ji可以这样计算&#xff1a; 每个旋转关节&#xff0c;Ji这样计算&#xff1a; 有时候要求按照末端执行器坐标系{n}来执行一些位移旋转之类的…

uniapp中vue2项目导入高德地图

1、看官网新手入门链接导入原生高德地图&#xff1a; JS API 结合 Vue 使用-基础-进阶教程-地图 JS API 2.0|高德地图API (amap.com) 具体步骤&#xff1a; 第一步&#xff0c;安装插件 npm i amap/amap-jsapi-loader --save 第二步&#xff0c;在vue组件中写代码显示地图…

[数据结构]顺序表

1、顺序表的概念及结构 1.1 线性表 线性表&#xff08; linear list &#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是⼀种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#…

品牌价值的累积与倍增:指数函数的含义及其在企业运营中的应用

品牌的价值日益凸显。品牌价值的累积与倍增不仅是企业追求的目标&#xff0c;也是市场竞争的重要标志。指数函数作为一种数学模型&#xff0c;对于描述品牌价值的增长具有重要意义。本文将深入探讨指数函数的含义及其在企业运营中的应用&#xff0c;并分析如何通过持续创新、品…

【DevOps】Jenkins Extended E-mail 邮件模板添加自定义变量

文章目录 1、配置Jenkins邮箱2、配置告警模板1、配置Jenkins邮箱 略 2、配置告警模板 自定义变量:DYSK_PYTEST_STATUS // Uses Declarative syntax to run commands inside a container. pipeline {agent {kubernetes {cloud "kubernetes" //选择名字是kuberne…