首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同时使用LinuxFB + DirectFB吗?

同时使用LinuxFB + DirectFB吗?
EN

Stack Overflow用户
提问于 2011-02-03 22:17:01
回答 2查看 3.3K关注 0票数 2

我有一个嵌入式plarform,它有两个图形层(/dev/fb0和/dev/fb1)。

我想使用两个独立的进程:一个直接使用/dev/fb0 (raw模式,无视频库)。另一个通过directfb使用/dev/fb1。

我可以启动第一个命令,它工作得很好(我使用linux open函数打开/dev/fb0并直接写入)。

当我尝试启动第二个函数时,它在directfb初始化中卡住了。

如果我尝试使用/dev/fb1,我不明白为什么directFb会锁定/dev/fb0。

根据@shodanex的请求,下面是第二个进程的strace输出:

代码语言:javascript
复制
[pid  1483] open("/etc/directfbrc", O_RDONLY) = 7
[pid  1483] fstat64(7, {st_mode=S_IFREG|0755, st_size=472, ...}) = 0
[pid  1483] old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2f375000
[pid  1483] read(7, "system=fbdev\n#no-vt\n#no-vt-switc"..., 4096) = 472
[pid  1483] write(2, "(!) DirectFB/Config \'depth\': OK!"..., 39(!) DirectFB/Config 'depth': OK!!!! 32
) = 39
[pid  1483] read(7, "", 4096)           = 0
[pid  1483] close(7)                    = 0
[pid  1483] munmap(0x2f375000, 4096)    = 0
[pid  1483] open("/root/.directfbrc", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid  1483] write(2, "\n     =======================|  "..., 270
 =======================|  DirectFB 1.0.1  |=======================
      (c) 2001-2007  The DirectFB Organization (directfb.org)
      (c) 2000-2004  Convergence (integrated media) GmbH
    ------------------------------------------------------------

) = 270
[pid  1483] gettid()                    = 1483
[pid  1483] rt_sigaction(SIGHUP, {0x2a323fc0, [], SA_NOMASK|SA_SIGINFO}, {SIG_DFL}, 8) = 0
[pid  1483] rt_sigaction(SIGINT, {0x2a323fc0, [], SA_NOMASK|SA_SIGINFO}, {SIG_DFL}, 8) = 0
[pid  1483] rt_sigaction(SIGTERM, {0x2a323fc0, [], SA_NOMASK|SA_SIGINFO}, {SIG_DFL}, 8) = 0
[pid  1483] rt_sigaction(SIGABRT, {0x2a323fc0, [], SA_NOMASK|SA_SIGINFO}, {SIG_DFL}, 8) = 0
[pid  1483] rt_sigaction(SIGFPE, {0x2a323fc0, [], SA_NOMASK|SA_SIGINFO}, {0x29d6f860, [], 0}, 8) = 0
[pid  1483] rt_sigaction(SIGILL, {0x2a323fc0, [], SA_NOMASK|SA_SIGINFO}, {0x29d6f860, [], 0}, 8) = 0
[pid  1483] rt_sigaction(SIGQUIT, {0x2a323fc0, [], SA_NOMASK|SA_SIGINFO}, {SIG_DFL}, 8) = 0
[pid  1483] rt_sigaction(SIGSEGV, {0x2a323fc0, [], SA_SIGINFO}, {0x29d6f860, [], 0}, 8) = 0
[pid  1483] rt_sigaction(SIGTRAP, {0x2a323fc0, [], SA_NOMASK|SA_SIGINFO}, {SIG_DFL}, 8) = 0
[pid  1483] rt_sigaction(SIGBUS, {0x2a323fc0, [], SA_NOMASK|SA_SIGINFO}, {0x29d6f860, [], 0}, 8) = 0
[pid  1483] rt_sigaction(SIGXCPU, {0x2a323fc0, [], SA_NOMASK|SA_SIGINFO}, {SIG_DFL}, 8) = 0
[pid  1483] rt_sigaction(SIGXFSZ, {0x2a323fc0, [], SA_NOMASK|SA_SIGINFO}, {SIG_DFL}, 8) = 0
[pid  1483] write(2, "(*) DirectFB/Core: Single Applic"..., 64(*) DirectFB/Core: Single Application Core. (2010-03-25 20:40) 
) = 64
[pid  1483] open("/usr/lib/libdirectfb-1.0.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid  1483] open("/usr/lib/directfb-1.0-0/systems", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 7
[pid  1483] fstat64(7, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid  1483] fcntl64(7, F_SETFD, FD_CLOEXEC) = 0
[pid  1483] getdents(7, /* 10 entries */, 4096) = 288
[pid  1483] open("/usr/lib/directfb-1.0-0/systems/libdirectfb_fbdev.so", O_RDONLY) = 8
[pid  1483] read(8, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0*\0\1\0\0\0\200&\0\0004\0\0\0"..., 512) = 512
[pid  1483] fstat64(8, {st_mode=S_IFREG|0755, st_size=59543, ...}) = 0
[pid  1483] old_mmap(NULL, 115640, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 8, 0) = 0x2f378000
[pid  1483] mprotect(0x2f384000, 65536, PROT_NONE) = 0
[pid  1483] old_mmap(0x2f394000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 8, 0xc000) = 0x2f394000
[pid  1483] close(8)                    = 0
[pid  1483] open("/usr/lib/directfb-1.0-0/systems/libdirectfb_x11.so", O_RDONLY) = 8
[pid  1483] read(8, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0*\0\1\0\0\0\200\35\0\0004\0\0\0"..., 512) = 512
[pid  1483] fstat64(8, {st_mode=S_IFREG|0755, st_size=25273, ...}) = 0
[pid  1483] old_mmap(NULL, 83288, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 8, 0) = 0x2f398000
[pid  1483] mprotect(0x2f39d000, 61440, PROT_NONE) = 0
[pid  1483] old_mmap(0x2f3ac000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 8, 0x4000) = 0x2f3ac000
[pid  1483] close(8)                    = 0
[pid  1483] open("/usr/local/lib/mylibs/libX11.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid  1483] open("/usr/local/lib/libX11.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid  1483] open("/usr/lib/libX11.so.6", O_RDONLY) = 8
[pid  1483] read(8, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0*\0\1\0\0\0\340\205\1\0004\0\0\0"..., 512) = 512
[pid  1483] fstat64(8, {st_mode=S_IFREG|0755, st_size=953468, ...}) = 0
[pid  1483] old_mmap(NULL, 895116, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 8, 0) = 0x2f3b0000
[pid  1483] mprotect(0x2f477000, 65536, PROT_NONE) = 0
[pid  1483] old_mmap(0x2f487000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 8, 0xc7000) = 0x2f487000
[pid  1483] close(8)                    = 0
[pid  1483] open("/usr/local/lib/mylibs/libXext.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid  1483] open("/usr/local/lib/libXext.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid  1483] open("/usr/lib/libXext.so.6", O_RDONLY) = 8
[pid  1483] read(8, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0*\0\1\0\0\0\340)\0\0004\0\0\0"..., 512) = 512
[pid  1483] fstat64(8, {st_mode=S_IFREG|0755, st_size=61440, ...}) = 0
[pid  1483] old_mmap(NULL, 114084, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 8, 0) = 0x2f48c000
[pid  1483] mprotect(0x2f498000, 61440, PROT_NONE) = 0
[pid  1483] old_mmap(0x2f4a7000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 8, 0xb000) = 0x2f4a7000
[pid  1483] close(8)                    = 0
[pid  1483] open("/usr/local/lib/mylibs/libxcb-xlib.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid  1483] open("/usr/local/lib/libxcb-xlib.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid  1483] open("/usr/lib/libxcb-xlib.so.0", O_RDONLY) = 8
[pid  1483] read(8, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0*\0\1\0\0\0\300\5\0\0004\0\0\0"..., 512) = 512
[pid  1483] fstat64(8, {st_mode=S_IFREG|0755, st_size=5786, ...}) = 0
[pid  1483] old_mmap(NULL, 68112, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 8, 0) = 0x2f4a8000
[pid  1483] mprotect(0x2f4a9000, 61440, PROT_NONE) = 0
[pid  1483] old_mmap(0x2f4b8000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 8, 0) = 0x2f4b8000
[pid  1483] close(8)                    = 0
[pid  1483] open("/usr/local/lib/mylibs/libxcb.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid  1483] open("/usr/local/lib/libxcb.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid  1483] open("/usr/lib/libxcb.so.1", O_RDONLY) = 8
[pid  1483] read(8, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0*\0\1\0\0\0\300u\0\0004\0\0\0"..., 512) = 512
[pid  1483] fstat64(8, {st_mode=S_IFREG|0755, st_size=112671, ...}) = 0
[pid  1483] old_mmap(NULL, 144212, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 8, 0) = 0x2f4bc000
[pid  1483] mprotect(0x2f4cf000, 65536, PROT_NONE) = 0
[pid  1483] old_mmap(0x2f4df000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 8, 0x13000) = 0x2f4df000
[pid  1483] close(8)                    = 0
[pid  1483] open("/usr/lib/libXau.so.6", O_RDONLY) = 8
[pid  1483] read(8, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0*\0\1\0\0\0\240\n\0\0004\0\0\0"..., 512) = 512
[pid  1483] fstat64(8, {st_mode=S_IFREG|0755, st_size=10880, ...}) = 0
[pid  1483] old_mmap(NULL, 71644, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 8, 0) = 0x2f4e0000
[pid  1483] mprotect(0x2f4e2000, 61440, PROT_NONE) = 0
[pid  1483] old_mmap(0x2f4f1000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 8, 0x1000) = 0x2f4f1000
[pid  1483] close(8)                    = 0
[pid  1483] open("/usr/lib/libXdmcp.so.6", O_RDONLY) = 8
[pid  1483] read(8, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0*\0\1\0\0\0\0\20\0\0004\0\0\0"..., 512) = 512
[pid  1483] fstat64(8, {st_mode=S_IFREG|0755, st_size=23841, ...}) = 0
[pid  1483] old_mmap(NULL, 80376, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 8, 0) = 0x2f4f4000
[pid  1483] mprotect(0x2f4f8000, 61440, PROT_NONE) = 0
[pid  1483] old_mmap(0x2f507000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 8, 0x3000) = 0x2f507000
[pid  1483] close(8)                    = 0
[pid  1483] getdents(7, /* 0 entries */, 4096) = 0
[pid  1483] close(7)                    = 0
[pid  1483] munmap(0x2f398000, 83288)   = 0
[pid  1483] munmap(0x2f48c000, 114084)  = 0
[pid  1483] munmap(0x2f3b0000, 895116)  = 0
[pid  1483] munmap(0x2f4a8000, 68112)   = 0
[pid  1483] munmap(0x2f4bc000, 144212)  = 0
[pid  1483] munmap(0x2f4e0000, 71644)   = 0
[pid  1483] munmap(0x2f4f4000, 80376)   = 0
[pid  1483] open("/dev/fb1", O_RDWR)    = 7
[pid  1483] fcntl64(7, F_SETFD, FD_CLOEXEC) = 0
[pid  1483] setsid()                    = 1483
[pid  1483] open("/dev/tty0", O_RDONLY|O_NOCTTY) = 8
[pid  1483] ioctl(8, 0x5603, 0x7bbc1d2a) = 0
[pid  1483] ioctl(8, 0x5600, 0x497658)  = 0
[pid  1483] ioctl(7, 0x460f, 0x7bbc1d18) = 0
[pid  1483] fstat64(7, {st_mode=S_IFCHR|0600, st_rdev=makedev(29, 1), ...}) = 0
[pid  1483] ioctl(7, 0x4610, 0x7bbc1c28) = 0
[pid  1483] ioctl(8, 0x5606, 0x2)       = 0

请注意,directfb读取/etc/directfbrc文件(提前检查其内容)。之后将不会打印任何内容。

代码语言:javascript
复制
system=fbdev
fbdev=/dev/fb1
primary-layer=1
no-cursor
bg-color=00000000
disable-module=lirc
disable-module=keyboard
disable-module=ps2mouse
mode=1280x720-60
pixelformat=ARGB
depth=32
hardware
desktop-buffer-mode=backvideo

有什么想法吗?再一次非常感谢你。

EN

回答 2

Stack Overflow用户

发布于 2011-02-03 22:59:55

你能提供更多的信息吗:

  • 在第一个进程未启动时是否直接FB工作?
  • 您如何知道directfb锁定在/dev/fb0上?

Linux是一个内核驱动程序,你可以使用任何你想使用/dev/fb<x>的用户空间程序,比如directFB

DirectFB是一个用户空间库,它与Linux帧缓冲一起工作。

所以答案绝对是肯定的,你可以在/dev/fb0上使用你自己的程序,在/dev/fb1上使用DirectFB程序。也许你应该strace你的directfb程序来理解它被卡住的原因。

票数 1
EN

Stack Overflow用户

发布于 2011-02-04 03:34:14

我发现有必要指示应用程序不要切换图形模式。我设法让这两个应用程序一起运行。不再有锁定情况。

现在我正在尝试运行我的实际程序,然而QT却要了我的命,因为它忽略了nographicsmodeswitch参数。我正在努力,我相信它迟早会起作用的。

如果这里有人是QT专家,我将非常感谢您的帮助。

感谢shodanex,你的策略建议非常有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4887224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档