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

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

Watrt2年前 (2024-04-02)LINUX16560

更换了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 设备。


打赏 支付宝打赏 微信打赏

相关文章

mpalqyer 播放命令

mpalqyer 播放命令

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

mkfs 参数

mkfs 参数

#mkfs.jffs2 -r rootfs -o fs.jffs2 -e 0x20000 --pad=0x500000 -s 0x800 –n -l即可生成 rootfs.jffs2Mkfs.jffs2各参数的意义如下:-r:指定要做成image的目录名。-o:指定输出image的文件名。-e:每一块要擦除的block size,默认是64KB.要注意,不同的flash, 其block size会不一样,三星的K9F2G08U0A的block size为0x20000(从其datasheet里可...

使用buildroot构建根文件系统

使用buildroot构建根文件系统

使用buildroot构建根文件系统buildroot可用于构建小型的linux根文件系统。大小最小可低至2M,与内核一起可以放入最小8M的spi flash中。buildroot中可以方便地加入第三方软件包(其实已经内置了很多),省去了手工交叉编译的烦恼。下载安装首先安装一些依赖,比如linux头文件:apt-get install linux-headers-$(uname -r)然后下载安装:wget https://buildroot.org/do...

关于CentOS 下 httpd 修改默认的目录后 403 错误的 解决

关于CentOS 下 httpd 修改默认的目录后 403 错误的 解决

step 1 : 首先改你要设置的目录权限       chmod -R 755 /home/html          -------------->>  /home/html   是你存放你的页面的目录   这里我顺便记录下关于selinux 的命令吧    getenforce=>查看 selinux的状态&nbs...

Deepin Linux修复grub引导

Deepin Linux修复grub引导

环境说明:一直使用的是Win7+Deepin 15.5。后来全新安装了Win 10,需要修复grub第一步:在Windows操作系统下使用深度官方的U盘启动制作器 制作U盘第二步:开机U盘启动进入Deepin linux安装界面,待进入到安装界面选择语言时,按住Crtl+Alt+F2/F1进入Linux tty终端。并执行以下命令完成修复sudo fdisk -l/*根据查询结果确定deepin 的/目录和/boot目录所在的分区编号*/sudo mount&nbs...

荔枝派Nano 全流程指南

荔枝派Nano 全流程指南

u-boot 初体验安装交叉编译链首先需要安装交叉编译链:# 此处为获取7.2.1版本,您可获取其他版本或者通过链接直接下载 wget http://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabi/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz tar -vxJf gcc-li...

利用BusyBox ~私人定制 My LINUX~

利用BusyBox ~私人定制 My LINUX~

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

 Debian 9.9 (stretch) 文件系统制作

Debian 9.9 (stretch) 文件系统制作

0. 准备工作:sudo apt install qemu-user-static -y sudo apt install debootstrap -y mkdir rootfs1. debootstrapdebootstrap --foreign --verbose --arch=armhf  stretch rootfs http...