不使用 udev 初始化帧缓冲区设备

不使用 udev 初始化帧缓冲区设备

我正在尝试使用 Yocto Linux 来减少 Raspberry Pi 4 的启动时间。系统使用SysV init。分别显示使用framebuffer的psplash和使用DRM/eglfs的Qt应用程序。

我决定在应用程序启动后启动 udev,以节省 1 秒以上的时间。这不会影响我的 Qt 应用程序,因为它使用 DRM/eglfs。然而,它会影响 psplash,因为 udev 以某种方式创建/dev/fb0.以下是 dmesg 关于 drm / fb 的摘录:

[    8.825197] [drm] Initialized v3d 1.0.0 20180419 for fec00000.v3d on minor 0     
[    8.849067] initcall v3d_drm_register+0x0/0x1000 [v3d] returned 0 after 45382 use
cs                                                                                  
[    9.093550] calling  vc4_drm_register+0x0/0x1000 [vc4] @ 295                     
[    9.118718] vc4-drm soc:gpu: bound fe600000.firmwarekms (ops vc4_fkms_ops [vc4]) 
[    9.134170] [drm] Initialized vc4 0.0.0 20140616 for soc:gpu on minor 1          
[    9.146065] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).          
[    9.159925] [drm] No driver support for vblank timestamp query.                  
[    9.171742] [drm] Setting vblank_disable_immediate to false because get_vblank_ti
mestamp == NULL                                                                     
[    9.337974] vc4-drm soc:gpu: fb0: DRM emulated frame buffer device 

我找不到处理帧缓冲区的 udev 规则:

    root@raspberrypi4-64:/lib/udev/rules.d# grep -nir "drm"                             
    60-drm.rules:3:ACTION!="remove", SUBSYSTEM=="drm", SUBSYSTEMS=="pci|usb|platform", I
    MPORT{builtin}="path_id"                                                            
    50-udev-default.rules:34:SUBSYSTEM=="drm", KERNEL!="renderD*", GROUP="video"        
    50-udev-default.rules:39:SUBSYSTEM=="drm", KERNEL=="renderD*", GROUP="video", MODE="
    0666" 
    root@raspberrypi4-64:/lib/udev/rules.d# grep -nir "fb" 

事实上,grep -nir "fb"什么也没有给出。

我想确定 udev 如何初始化帧缓冲区设备,并在 psplash 之前初始化它(通过使用 tmpfs、mknod 之类的东西),而无需 udev。我已经尝试过这样做mknod /dev/fb0 c 29 0,创建了 /dev/fb0 但显示屏上没有任何内容。这可能吗?任何帮助表示赞赏。

笔记:如果描述中有任何遗漏,请告诉我。

相关内容