This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

psplash 显示logo, /dev.fb0 尚未创建

想用 psplash来显示logo,结果发现, 启动它的service 找不到 /dev/fb0 . 如果延后启动,意义就不是很大了.有没有用过的,给点提示

  • 你是改了他的位置?还是怎么个意思?找不到这个,这时候LCD frame buffer还没初始化?

    正常启动的话,应该不会出现这个问题才对。

  • 你打算在什么位置添加logo?U-boot阶段?

  • 是u-boot启动之后, 应用起来之前。也就是linux内核启动的过程中,我只有pslash的源代码,是自己创建了一个service,用systemd来启动的。 

    请问一下,正常启动pspfalsh是怎么启动, 有什么package或者脚本吗?

  • 我是放在initramfs 中的。

    Starting kernel ...

    [ 0.001298] clocksource_probe: no matching clocksources found
    [ 2.192255] wkup_m3_ipc 44e11324.wkup_m3_ipc: could not get rproc handle
    [ 2.350077] omap_voltage_late_init: Voltage driver support not added
    [ 2.357871] PM: Cannot get wkup_m3_ipc handle
    [ 2.473706] bone_capemgr bone_capemgr: slot #0: No cape found
    [ 2.517700] bone_capemgr bone_capemgr: slot #1: No cape found
    [ 2.561696] bone_capemgr bone_capemgr: slot #2: No cape found
    [ 2.591513] bone_capemgr bone_capemgr: Invalid signature 'ffffffff' at slot 3
    [ 2.598710] bone_capemgr bone_capemgr: slot #3: No cape found
    Loading, please wait...
    start psplash whatever
    Error opening /dev/fb0: No such file or directory
    rootfs: clean, 294476/943488 files, 2055577/3817472 blocks
    Error opening /dev/fb0: No such file or directory
    [ 7.996499] systemd[1]: console-setup.service: Job console-setup.service/start deleted to break ordering cycle starting with basic.target/start
    [ 8.010581] systemd[1]: rpcbind.service: Job rpcbind.service/start deleted to break ordering cycle starting with basic.target/start
    [ 19.518317] rc.local[1020]: rc.local finished

  • 其实, 如果显示 LOGO 如果只是一张,不做变动的话,可以在 UBOOT 进行显示 LOGO 。当然 LCD 的初始化也要在 UBOOT 显示 LOGO 之前完成初始化。

    当 UBOOT 进入内核的时候,LCD 不让他再次初始化就可以,LCD 就会一直保持下去,直到你的系统起来,去刷新数据

  • 谢谢回复。

    我也想这样做,可是现在的现象是u-boot启动内核后,内核会再次 初始化LCD。 从什么地方可以禁止内核初始化LCD呢? 

  • 发现当内核输出这些内容时,frame buffer就会设置好,有没有办法把这些逻辑提前呢。

    [ 34.786027] backlight supply power not found, using dummy regulator
    [ 36.901905] omap-sham 53100000.sham: hw accel on OMAP rev 4.3
    [ 37.347214] backlight supply power not found, using dummy regulator
    [ 37.354328] omap-aes 53500000.aes: OMAP AES hw accel rev: 3.2
    [ 37.534397] backlight supply power not found, using dummy regulator
    [ 37.687010] [drm] Initialized pvr 1.14.3699939 20110701 on minor 0
    [ 37.941663] backlight supply power not found, using dummy regulator
    [ 41.361819] backlight supply power not found, using dummy regulator
    [ 41.420082] backlight supply power not found, using dummy regulator
    [ 41.512512] TI-am335x-tsc TI-am335x-tsc: ti,charge-delay not specified
    [ 41.540790] backlight supply power not found, using dummy regulator
    [ 41.555534] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
    [ 41.562362] [drm] No driver support for vblank timestamp query.
    [ 41.796999] input: ti-tsc as /devices/platform/ocp/44e0d000.tscadc/TI-am335x-tsc/input/input1
    [ 42.252947] tilcdc 4830e000.lcdc: tilcdc_crtc_irq(0x00000004): Sync lost
    [ 42.267852] tilcdc 4830e000.lcdc: tilcdc_crtc_irq(0x00000004): Sync lost
    [ 42.362947] Console: switching to colour frame buffer device 100x30
    [ 43.766595] tilcdc 4830e000.lcdc: fb0: frame buffer device
    [ 44.305378] [drm] Initialized tilcdc 1.0.0 20121205 on minor 1

  • 嗯,为之前也是遇到进入内核的时候,LCD 的 reset 管教被复位了,只需要进行设置,board-am335xevm.c 使得对应管教不被复位就可以了,你可以参考为以前发的帖子 : http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/p/123320/345144.aspx#345144

  • 有参考过这篇文档么:

    http://processors.wiki.ti.com/index.php/Customizing_the_SDK_Splash_Screen

  • 谢谢,我学习过这个帖子. 

  • 我这边是Beagle Bone Black , TI的内核, 代码不是太一样,但是原理应该是相同的,我试一下,再来报告结果. 

    另外, 这里的GPIO是控制时钟的吗?所谓的不reset,是指对时钟不reset吗?我看了一下,我的lcd芯片,没有reset管脚. 

    P8.28 , GPIO2_24, 是下面这段代码吗?

    struct omap_hwmod am33xx_gpio1_hwmod = {
    .name = "gpio2",
    .class = &am33xx_gpio_hwmod_class,
    .clkdm_name = "l4ls_clkdm",
    .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
    .main_clk = "l4ls_gclk",
    .prcm = {
    .omap4 = {
    .modulemode = MODULEMODE_SWCTRL,
    },
    },
    .opt_clks = gpio1_opt_clks,
    .opt_clks_cnt = ARRAY_SIZE(gpio1_opt_clks),
    .dev_attr = &gpio_dev_attr,
    };

  • 这应该就是单纯的对GPIO进行初始化吧。

  •     不是对 时钟进行 reset。而是 LCD 控制器引出的 IO 口,有一个管脚是 reset 管脚。所以,在进入内核的时候,会对 IO 口进行初始化。所以,应该对  LCD 所对应的复位管脚进行设置呢,使得进入内核的时候,不再进行复位。其实,就是讲上面的 flags 添加  HWMOD_INIT_NO_RESET ,实现