X11
如何為帶觸摸屏的嵌入式 i.MX6 板配置 X11?
我計劃使用適用於 UDOO Neo 的官方 st1232 7’’ 觸摸屏套件在我的 UDOO Neo i.MX6 板上執行Electron應用程序。我使用Poky (thud 分支)創建了一個自定義 Linux 發行版,以便能夠建構“準備啟動”映像。我啟用了“x11-base”圖像功能以擁有所有 Xorg 包,並且我擁有提供更新檔的元飛思卡爾層,以便擁有與硬體 (Vivante) 完全兼容的發行版。但是,在引導過程結束時,我從.
xinit
這是我的
/etc/X11/xorg.conf
文件:Section "Device" Identifier "i.MX Accelerated Framebuffer Device" Driver "vivante" Option "fbdev" "/dev/fb0" Option "vivante_fbdev" "/dev/fb0" Option "HWcursor" "false" Option "DisplayEngine" "pxp" EndSection Section "ServerFlags" Option "BlankTime" "0" Option "StandbyTime" "0" Option "SuspendTime" "0" Option "OffTime" "0" EndSection Section "InputClass" Identifier "Touchscreen" MatchProduct "st1232-touchscreen" Driver "evdev" Option "Calibration" "3 794 476 0" EndSection
它是由元飛思卡爾層添加的,我手動添加了 st1232 觸摸屏 InputClass。
文件的輸出
/var/log/Xorg.0.log
:X.Org X Server 1.20.1 X Protocol Version 11, Revision 0 [ 63.243] Build Operating System: Linux 4.15.0-72-generic x86_64 [ 63.244] Current Operating System: Linux 4.1.15+2.0.x-udoo+g34f88fa2766c #1 SMP PREEMPT Mon Jan 6 14:51:20 UTC 2020 armv7l [ 63.244] Kernel command line: console=ttymxc0,115200,115200 root=/dev/mmcblk0p1 rootwait rw rootfstype=ext4 uart_from_osc clk_ignore_unused cpuidle.off=1 consoleblank=0 [ 63.257] Build Date: 07 January 2020 10:34:32AM [ 63.257] [ 63.258] Current version of pixman: 0.34.0 [ 63.258] Before reporting problems, check http://wiki.x.org to make sure that you have the latest version. [ 63.258] Markers: (--) probed, (**) from config file, (==) default setting, (++) from command line, (!!) notice, (II) informational, (WW) warning, (EE) error, (NI) not implemented, (??) unknown. [ 63.260] (==) Log file: "/var/log/Xorg.0.log", Time: Tue Jan 7 11:51:16 2020 [ 63.288] (==) Using config file: "/etc/X11/xorg.conf" [ 63.288] (==) Using system config directory "/usr/share/X11/xorg.conf.d" [ 63.297] (==) No Layout section. Using the first Screen section. [ 63.297] (==) No screen section available. Using defaults. [ 63.297] (**) |-->Screen "Default Screen Section" (0) [ 63.297] (**) | |-->Monitor "<default monitor>" [ 63.298] (==) No device specified for screen "Default Screen Section". Using the first device section listed. [ 63.298] (**) | |-->Device "i.MX Accelerated Framebuffer Device" [ 63.298] (==) No monitor specified for screen "Default Screen Section". Using a default monitor configuration. [ 63.298] (**) Option "BlankTime" "0" [ 63.298] (**) Option "StandbyTime" "0" [ 63.298] (**) Option "SuspendTime" "0" [ 63.298] (**) Option "OffTime" "0" [ 63.298] (==) Automatically adding devices [ 63.298] (==) Automatically enabling devices [ 63.298] (==) Automatically adding GPU devices [ 63.298] (==) Max clients allowed: 256, resource mask: 0x1fffff [ 63.299] (WW) The directory "/usr/share/fonts/X11/misc/" does not exist. [ 63.299] Entry deleted from font path. [ 63.299] (WW) The directory "/usr/share/fonts/X11/TTF/" does not exist. [ 63.299] Entry deleted from font path. [ 63.299] (WW) The directory "/usr/share/fonts/X11/OTF/" does not exist. [ 63.299] Entry deleted from font path. [ 63.299] (WW) The directory "/usr/share/fonts/X11/Type1/" does not exist. [ 63.299] Entry deleted from font path. [ 63.299] (WW) The directory "/usr/share/fonts/X11/100dpi/" does not exist. [ 63.299] Entry deleted from font path. [ 63.299] (WW) The directory "/usr/share/fonts/X11/75dpi/" does not exist. [ 63.299] Entry deleted from font path. [ 63.299] (==) FontPath set to: [ 63.299] (==) ModulePath set to "/usr/lib/xorg/modules" [ 63.299] (II) The server relies on udev to provide the list of input devices. If no devices become available, reconfigure udev or disable AutoAddDevices. [ 63.299] (II) Loader magic: 0x54cd6d78 [ 63.300] (II) Module ABI versions: [ 63.300] X.Org ANSI C Emulation: 0.4 [ 63.300] X.Org Video Driver: 24.0 [ 63.300] X.Org XInput driver : 24.1 [ 63.300] X.Org Server Extension : 10.0 [ 63.301] (II) xfree86: Adding drm device (/dev/dri/card0) [ 63.301] (II) no primary bus or device found [ 63.301] falling back to /sys/devices/platform/Vivante GCCore/drm/card0 [ 63.301] (II) LoadModule: "glx" [ 63.326] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so [ 63.463] (II) Module glx: vendor="X.Org Foundation" [ 63.463] compiled for 1.20.1, module version = 1.0.0 [ 63.463] ABI class: X.Org Server Extension, version 10.0 [ 63.463] (II) LoadModule: "vivante" [ 63.467] (II) Loading /usr/lib/xorg/modules/drivers/vivante_drv.so [ 63.478] (II) Module vivante: vendor="X.Org Foundation" [ 63.478] compiled for 1.20.1, module version = 1.0.0 [ 63.478] ABI class: X.Org Video Driver, version 24.0 [ 63.478] (II) VIVANTE: fb driver for vivante: VivanteGC500, VivanteGC2100, VivanteGCCORE [ 63.479] (--) using VT number 1 [ 63.482] (WW) Falling back to old probe method for vivante [ 63.482] (II) Loading sub module "fbdevhw" [ 63.482] (II) LoadModule: "fbdevhw" [ 63.482] (II) Loading /usr/lib/xorg/modules/libfbdevhw.so [ 63.484] (II) Module fbdevhw: vendor="X.Org Foundation" [ 63.484] compiled for 1.20.1, module version = 0.0.2 [ 63.484] ABI class: X.Org Video Driver, version 24.0 [ 63.484] (II) VIVANTE(0): using default device [ 63.484] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support [ 63.485] (WW) VIVANTE(0): Cannot get device preferred mode '/sys/class/graphics/fb0/mode (Not a directory)' [ 63.485] (II) VIVANTE(0): Creating default Display subsection in Screen section "Default Screen Section" for depth/fbbpp 16/16 [ 63.485] (==) VIVANTE(0): Depth 16, (==) framebuffer bpp 16 [ 63.485] (==) VIVANTE(0): RGB weight 565 [ 63.485] (==) VIVANTE(0): Default visual is TrueColor [ 63.485] (==) VIVANTE(0): Using gamma correction (1.0, 1.0, 1.0) [ 63.485] (DB) xf86MergeOutputClassOptions unsupported bus type 0 [ 63.485] (**) VIVANTE(0): mExaHwType:1 [ 63.485] (II) VIVANTE(0): checking modes against framebuffer device... [ 63.485] (II) VIVANTE(0): checking modes against monitor... [ 63.485] (II) VIVANTE(0): Virtual size is 0x0 (pitch 0) [ 63.485] (==) VIVANTE(0): DPI set to (96, 96) [ 63.485] (II) Loading sub module "fb" [ 63.485] (II) LoadModule: "fb" [ 63.485] (II) Loading /usr/lib/xorg/modules/libfb.so [ 63.493] (II) Module fb: vendor="X.Org Foundation" [ 63.493] compiled for 1.20.1, module version = 1.0.0 [ 63.493] ABI class: X.Org ANSI C Emulation, version 0.4 [ 63.493] (II) Loading sub module "exa" [ 63.493] (II) LoadModule: "exa" [ 63.495] (II) Loading /usr/lib/xorg/modules/libexa.so [ 63.499] (II) Module exa: vendor="X.Org Foundation" [ 63.499] compiled for 1.20.1, module version = 2.6.0 [ 63.499] ABI class: X.Org Video Driver, version 24.0 [ 63.500] (II) VIVANTE(0): printing discovered frame buffer 'fb0' supported modes: [ 63.501] (II) VIVANTE(0): Modeline "U:800x480p-60"x0.0 33.66 800 850 1000 1056 480 500 502 525 -hsync -vsync -csync (31.9 kHz e) [ 63.501] (II) VIVANTE(0): Output mxs-lcdif1 has no monitor section [ 63.501] (II) VIVANTE(0): Printing probed modes for output mxs-lcdif1 [ 63.501] (II) VIVANTE(0): Modeline "U:800x480p-60"x60.7 33.66 800 850 1000 1056 480 500 502 525 -hsync -vsync -csync (31.9 kHz e) [ 63.501] (II) VIVANTE(0): Output mxs-lcdif1 connected [ 63.502] (II) VIVANTE(0): Using sloppy heuristic for initial modes [ 63.502] (II) VIVANTE(0): Output mxs-lcdif1 using initial mode U:800x480p-60 +0+0 [ 63.502] (II) VIVANTE(0): imxDisplayPreInit: virtual set 800 x 480, display width 0 [ 63.502] (II) VIVANTE(0): VivPreInit: adjust display width 800 [ 63.502] (II) VIVANTE(0): reserve 4177920 bytes for on screen frame buffer; total fb memory size 33554432 bytes; offset of shadow buffer 4177920 [ 63.504] (II) VIVANTE(0): hardware: mxs-lcdif1 (video memory: 32768kB) [ 63.512] (II) VIVANTE(0): FB Start = 0x7458d000 FB Base = 0x7458d000 FB Offset = (nil) [ 63.513] (II) VIVANTE(0): test Initializing EXA [ 63.817] (II) EXA(0): Driver allocated offscreen pixmaps [ 63.817] (II) EXA(0): Driver registered support for the following operations: [ 63.817] (II) Solid [ 63.817] (II) Copy [ 63.817] (II) Composite (RENDER acceleration) [ 63.817] (II) UploadToScreen [ 63.817] (==) VIVANTE(0): Backing store enabled [ 63.818] (==) VIVANTE(0): DPMS enabled [ 63.820] drmOpenDevice: node name is /dev/dri/card0 [ 63.821] drmOpenDevice: open result is 11, (OK) [ 63.821] drmOpenDevice: node name is /dev/dri/card0 [ 63.821] drmOpenDevice: open result is 11, (OK) [ 63.821] drmOpenByBusid: Searching for BusID platform:Vivante GCCore:00 [ 63.821] drmOpenDevice: node name is /dev/dri/card0 [ 63.821] drmOpenDevice: open result is 11, (OK) [ 63.821] drmOpenByBusid: drmOpenMinor returns 11 [ 63.821] drmOpenByBusid: drmGetBusid reports platform:Vivante GCCore:00 [ 63.821] (II) [drm] DRM interface version 1.4 [ 63.821] (II) [drm] DRM open master succeeded. [ 63.821] (II) VIVANTE(0): [drm] Using the DRM lock SAREA also for drawables. [ 63.821] (II) VIVANTE(0): [drm] framebuffer handle = 0xac100000 [ 63.821] (II) VIVANTE(0): [drm] added 1 reserved context for kernel [ 63.821] (II) VIVANTE(0): X context handle = 0x1 [ 63.821] (EE) VIVANTE(0): [drm] failed to setup DRM signal handler [ 63.821] (EE) VIVANTE(0): [dri] DRIScreenInit failed. Disabling DRI. [ 63.822] (II) Initializing extension Generic Event Extension [ 63.822] (II) Initializing extension SHAPE [ 63.822] (II) Initializing extension MIT-SHM [ 63.822] (II) Initializing extension XInputExtension [ 63.825] (II) Initializing extension XTEST [ 63.825] (II) Initializing extension BIG-REQUESTS [ 63.825] (II) Initializing extension SYNC [ 63.825] (II) Initializing extension XKEYBOARD [ 63.825] (II) Initializing extension XC-MISC [ 63.825] (II) Initializing extension XFIXES [ 63.825] (II) Initializing extension RENDER [ 63.825] (II) Initializing extension RANDR [ 63.825] (II) Initializing extension COMPOSITE [ 63.825] (II) Initializing extension DAMAGE [ 63.825] (II) Initializing extension MIT-SCREEN-SAVER [ 63.825] (II) Initializing extension DOUBLE-BUFFER [ 63.825] (II) Initializing extension DPMS [ 63.825] (II) Initializing extension Present [ 63.825] (II) Initializing extension DRI3 [ 63.825] (II) Initializing extension X-Resource [ 63.826] (II) Initializing extension XVideo [ 63.826] (II) Initializing extension XVideo-MotionCompensation [ 63.826] (II) Initializing extension GLX [ 63.826] (II) AIGLX: Screen 0 is not DRI2 capable [ 63.974] (II) IGLX: Loaded and initialized swrast [ 63.974] (II) GLX: Initialized DRISWRAST GL provider for screen 0 [ 63.974] (II) Initializing extension XFree86-VidModeExtension [ 63.974] (II) Initializing extension XFree86-DGA [ 63.974] (II) Initializing extension XFree86-DRI [ 63.974] (II) Initializing extension DRI2 [ 63.974] (II) Initializing extension vivext [ 63.974] (II) VIVANTE(0): Setting screen physical size to 211 x 127 [ 64.295] (II) config/udev: Adding input device 20cc000.snvs:snvs-powerkey (/dev/input/event0) [ 64.295] (**) 20cc000.snvs:snvs-powerkey: Applying InputClass "evdev keyboard catchall" [ 64.296] (**) 20cc000.snvs:snvs-powerkey: Applying InputClass "libinput keyboard catchall" [ 64.296] (II) LoadModule: "libinput" [ 64.297] (II) Loading /usr/lib/xorg/modules/input/libinput_drv.so [ 64.323] (II) Module libinput: vendor="X.Org Foundation" [ 64.323] compiled for 1.20.1, module version = 0.28.0 [ 64.323] Module class: X.Org XInput Driver [ 64.323] ABI class: X.Org XInput driver, version 24.1 [ 64.323] (II) Using input driver 'libinput' for '20cc000.snvs:snvs-powerkey' [ 64.323] (**) 20cc000.snvs:snvs-powerkey: always reports core events [ 64.323] (**) Option "Device" "/dev/input/event0" [ 64.323] (**) Option "_source" "server/udev" [ 64.324] (II) event0 - 20cc000.snvs:snvs-powerkey: is tagged by udev as: Keyboard [ 64.324] (II) event0 - 20cc000.snvs:snvs-powerkey: device is a keyboard [ 64.325] (II) event0 - 20cc000.snvs:snvs-powerkey: device removed [ 64.360] (**) Option "config_info" "udev:/sys/devices/soc0/soc/2000000.aips-bus/20cc000.snvs/20cc000.snvs:snvs-powerkey/input/input0/event0" [ 64.360] (II) XINPUT: Adding extended input device "20cc000.snvs:snvs-powerkey" (type: KEYBOARD, id 6) [ 64.362] (II) event0 - 20cc000.snvs:snvs-powerkey: is tagged by udev as: Keyboard [ 64.362] (II) event0 - 20cc000.snvs:snvs-powerkey: device is a keyboard [ 64.365] (II) config/udev: Adding input device st1232-touchscreen (/dev/input/event1) [ 64.365] (**) st1232-touchscreen: Applying InputClass "Touchscreen" [ 64.365] (II) LoadModule: "evdev" [ 64.366] (II) Loading /usr/lib/xorg/modules/input/evdev_drv.so [ 64.372] (II) Module evdev: vendor="X.Org Foundation" [ 64.372] compiled for 1.20.1, module version = 2.10.6 [ 64.372] Module class: X.Org XInput Driver [ 64.372] ABI class: X.Org XInput driver, version 24.1 [ 64.372] (II) Using input driver 'evdev' for 'st1232-touchscreen' [ 64.372] (**) st1232-touchscreen: always reports core events [ 64.372] (**) evdev: st1232-touchscreen: Device: "/dev/input/event1" [ 64.373] (II) evdev: st1232-touchscreen: Using mtdev for this device [ 64.373] (--) evdev: st1232-touchscreen: Vendor 0 Product 0 [ 64.378] (--) evdev: st1232-touchscreen: Found absolute axes [ 64.378] (--) evdev: st1232-touchscreen: Found absolute multitouch axes [ 64.378] (II) evdev: st1232-touchscreen: No buttons found, faking one. [ 64.378] (II) evdev: st1232-touchscreen: Forcing relative x/y axes to exist. [ 64.379] (II) evdev: st1232-touchscreen: Configuring as mouse [ 64.379] (**) evdev: st1232-touchscreen: YAxisMapping: buttons 4 and 5 [ 64.379] (**) evdev: st1232-touchscreen: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200 [ 64.379] (**) Option "config_info" "udev:/sys/devices/soc0/soc/2100000.aips-bus/21a0000.i2c/i2c-0/0-0055/input/input1/event1" [ 64.379] (II) XINPUT: Adding extended input device "st1232-touchscreen" (type: MOUSE, id 7) [ 64.379] (II) evdev: st1232-touchscreen: initialized for relative axes. [ 64.379] (WW) evdev: st1232-touchscreen: ignoring absolute axes. [ 64.381] (**) st1232-touchscreen: (accel) keeping acceleration scheme 1 [ 64.381] (**) st1232-touchscreen: (accel) acceleration profile 0 [ 64.381] (**) st1232-touchscreen: (accel) acceleration factor: 2.000 [ 64.381] (**) st1232-touchscreen: (accel) acceleration threshold: 4 [ 64.384] (II) config/udev: Adding input device FreescaleGyroscope (/dev/input/event2) [ 64.384] (II) No input driver specified, ignoring this device. [ 64.384] (II) This device may have been added with another device file. [ 64.385] (II) config/udev: Adding input device FreescaleAccelerometer (/dev/input/event3) [ 64.385] (II) No input driver specified, ignoring this device. [ 64.385] (II) This device may have been added with another device file. [ 64.386] (II) config/udev: Adding input device FreescaleMagnetometer (/dev/input/event4) [ 64.386] (II) No input driver specified, ignoring this device. [ 64.386] (II) This device may have been added with another device file. [ 64.431] (EE) [ 64.432] (EE) Backtrace: [ 64.432] (EE) [ 64.433] (EE) Segmentation fault at address 0x4 [ 64.434] (EE) Fatal server error: [ 64.440] (EE) Caught signal 11 (Segmentation fault). Server aborting [ 64.440] (EE) [ 64.441] (EE) Please consult the The X.Org Foundation support at http://wiki.x.org for help. [ 64.442] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information. [ 64.442] (EE) [ 64.447] (EE) Server terminated with error (1). Closing log file.
我的 Xorg 配置正確嗎?為了使 Xorg 工作,什麼是重要的?我聽說過
export DISPLAY=:0
很多,但執行它並不能解決我的問題。
我只是將這個更新檔添加到我的圖層中,現在它可以工作了。
必須下載vivante 5.0.11驅動版本,因為6.2是針對DRM的,不支持imx6。可以看參考: https ://lists.yoctoproject.org/g/meta-freescale/topic/68840298#24216 https://community.nxp.com/thread/526149