当前位置:首页 > 技术 > LINUX > 正文内容

更换了800*480的屏幕以后报错[记录]

Watrt2年前 (2024-04-02)LINUX13280

更换了800*480的屏幕以后,报错:

[    0.138371] rockchip-drm display-subsystem: bound ff990000.vop (ops 0xb039a8e4)
[    0.138480] rockchip-drm display-subsystem: bound ff000000.syscon:rgb (ops 0xb039b444)
[    0.139121] rockchip-drm display-subsystem: failed to parse loader memory
[    0.139394] [drm:rockchip_gem_create_object] *ERROR* failed to allocate 1536000 byte dma buffer
[    0.139418] rockchip-drm display-subsystem: [drm:rockchip_drm_fbdev_init] *ERROR* Failed to set initial hw config - -12.
[    0.139819] rockchip-drm display-subsystem: master bind failed: -12
[    0.139913] rockchip-drm: probe of display-subsystem failed with error -12

应该是ARGB的缓存空间800*480*4=1536000


630QX~5{{B$XN3I3`_PUVUL.png

查源代码是这个位置申请的DMA内存

解决方法:

改设备树

reserved-memory {
        #address-cells = <1>;
        #size-cells = <1>;
        ranges;
        linux,cma {
            compatible = "shared-dma-pool";
            inactive;
            reusable;
            size = <0x1000000>;
            linux,cma-default;
        };
        drm_logo: drm-logo@00000000 {
            compatible = "rockchip,drm-logo";
            reg = <0x0 0x0>;
        };
    };


这是设备树中的一部分内容,用于描述保留内存区域和相关设备的配置。让我为你解释一下:

首先,`reserved-memory` 是一个设备树节点,它用于定义保留内存区域。

`#address-cells` 和 `#size-cells` 属性指定了地址单元和大小单元的数量。

`ranges` 属性为空,表示没有定义范围。

`linux,cma` 是关于连续内存分配器(Contiguous Memory Allocator)的配置。`compatible` 属性表示与共享DMA池(Shared DMA Pool)兼容。`inactive` 表示此连续内存未被使用,`reusable` 表示可以重新使用,`size` 属性定义了连续内存的大小,`linux,cma-default` 表示这是默认的连续内存配置。

`drm_logo` 是一个子节点,它描述了一个名为 `drm-logo` 的设备。`compatible` 属性指定了该设备与 Rockchip 平台上的 DRM-Logo 兼容。`reg` 属性定义了该设备的寄存器地址范围。

这段设备树描述了一个保留内存区域和一个 DRM-Logo 设备。


打赏 支付宝打赏 微信打赏
分享给朋友:

相关文章

在Linux中怎么使用cron计划任务

在Linux中怎么使用cron计划任务

没有时间运行命令?使用 cron 的计划任务意味着你不用熬夜程序也可以运行。系统管理员(在许多好处中)的挑战之一是在你该睡觉的时候去运行一些任务。例如,一些任务(包括定期循环运行的任务)需要在没有人使用计算机资源的时候去运行,如午夜或周末。在下班后,我没有时间去运行命令或脚本。而且,我也不想在晚上去启动备份或重大更新。取而代之的是,我使用两个服务功能在我预定的时间去运行命令、程序和任务。cron 和 at 服务允许系统管理员去安排任务运行在未来的某个特定时间。at 服务指定在某个时间去运行一次任...

mpalqyer 播放命令

mpalqyer 播放命令

mplayer -vo fbdev2 -vf scale=1366:768 film.avi /usr/bin/mplayer -x 800 -y 480 -zoom -framedrop aa.avi...

基于 debootstrap 和 busybox 构建 mini ubuntu

基于 debootstrap 和 busybox 构建 mini ubuntu

最近的工作涉及到服务器自动安装和网络部署操作系统,然后使用 ansible 和 saltsatck 进行配置并安装 openstack 。难点在于服务器的自动安装,由于不单只是通过 PXE 安装服务器,还需要能够安装时进行分区、配置网卡等工作,因此需要在开始安装前,必须先收集服务器的硬件信息。调研了一下目前的开源项目中,提供此类功能的有 tinycorelinux 、 puppet razor-el-mk 可做类似的工作。tinycorelinux 是个很好的工具,整个系统在 PXE 之后在内存...

Linux系统信息查看命令大全

Linux系统信息查看命令大全

最近看了一些Linux命令行的文章,在系统信息查看方面学到不少命令。想起以前写过的一篇其实Linux这样用更简单,发现这些系统信息查看命令也可以总结出一篇小小的东西来了。另外这里还有非常多的命令,可以作为参考。系统# uname -a               # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue   # 查看操作系统版本# cat /proc/cpuinfo  ...

LINUX 使用sendmail邮件备份

LINUX 使用sendmail邮件备份

首先安装:sudo apt-get install sendmail然后在终端可以使用mail来发邮件echo "ESP32固件"|mail -s "esp32" -A "./fw.bin" -r "bak@xxx.com" xb100@qq.com注意很有可能收到的邮件在垃圾箱里面。把发件地址加到白 名单中...

利用BusyBox ~私人定制 My LINUX~

利用BusyBox ~私人定制 My LINUX~

前言  我在今天在这里跟大家详细地探讨一下Linux系统的定制过程和实现例如、用户能够远程登录;和Nginx能够稳定地运行在我们私人定制的LINUX系统上、一步一步从头开始定制属于我们自己的系统。正文   首先我们先来简单的介绍一下我们这里定制属于自己的Linux系统的基本元素.   一个定制的linux内核+一个定制的busybox就可以定制一个小型的Linux操作系统了,安装Dropbear和Nginx,Linux的组成 部分包括内核空间和用户空间、而...

[转]《保姆级教程》全志F1C100S/F1C200S spi-flash 启动全流程适配烧录及踩坑指南

[转]《保姆级教程》全志F1C100S/F1C200S spi-flash 启动全流程适配烧录及踩坑指南

转自哇酷网=丨晋丨通过参考荔枝派nano官方和论坛大佬的帖子,总结了烧录 spi-flash 启动的方法。通过搜寻资料,把其中有错误或者做了多余的操作的步骤做了修正,以免大家再次踩坑,耗费青春。以下包括 uboot、kernel、buildroot 和 烧录的详细步骤和需要注意的问题,尽量精简方法,以期容易上手和理解。各种配置项也做了详细注释,要知其然,也知其所以然。最理想的状态应该是是:有的坑,踩的人多了,也便没有了坑。论坛不太好排版,有需要的也可以去我的博客看:P:全志F1C100S/F1C...

修改U-BOOT,输出信息在LCD上显示,并使用USB连接键盘使用控制台

修改U-BOOT,输出信息在LCD上显示,并使用USB连接键盘使用控制台

修改方法:一:修改U-BOOT   include/configs/suniv.h#define CONFIG_BOOTCOMMAND"fatload mmc 0:1 0x80800000 zImage; "  \              &nb...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。