九鼎创展论坛

标题: 开机logo.bmp图片到initlogo.rle切换 [打印本页]

作者: hanping1020911    时间: 2016-12-9 09:37
标题: 开机logo.bmp图片到initlogo.rle切换
本帖最后由 hanping1020911 于 2016-12-9 09:39 编辑

大家好,在修改android开机动画的时候,发现在开机logo.bmp图片到initlogo.rle切换之间会有一段时间屏幕是花的,这个是什么原因?需要如何修改这个问题,可以避开这个问题呢?
我在看串口打印信息的时候,发现程序在启动kernel的时候,会打印下面的打印信息:
   0.361000] Unpacking initramfs...                                          
[    0.386000] Initramfs unpacking failed: junk in compressed archive           
[    0.433000] Freeing initrd memory: 16384K                                    
[    0.438000] Disply Reset Status : On                                         
[    0.442000] Display LCD register operation                                   
[    0.446000] Display.0 fps=57 (17 ms), wait=19 jiffies, Pixelclk=48750000hz   
[    0.454000] LCD : [1]=LCD connect to [5]=SYNCGEN0                           
[    0.458000] Display LVDS register operation                                 
[    0.463000] Display.0 fps=57 (17 ms), wait=19 jiffies, Pixelclk=48750000hz   
[    0.470000] LVDS: [4]=LVDS connect to [5]=SYNCGEN0                           
[    0.475000] Display MiPi register operation                                 
[    0.479000] Display.0 fps=57 (17 ms), wait=19 jiffies, Pixelclk=48750000hz   
[    0.486000] MIPI: [3]=MiPi connect to [5]=SYNCGEN0                           
[    0.492000] audit: initializing netlink socket (disabled)                    
[    0.497000] type=2000 audit(0.496:1): initialized                           
[    0.512000] NFS: Registering the id_resolver key type                        
[    0.517000] fuse init (API version 7.18)                                    
[    0.522000] msgmni has been set to 1616                                   
[    0.527000] Block layer SCSI generic (bsg) driver version 0.4 loaded (major )
[    0.535000] io scheduler noop registered                                    
[    0.539000] io scheduler deadline registered                                 
[    0.543000] io scheduler cfq registered (default)                           
[    0.548000] display.0 connected to fb.0  ...                                 
[    0.553000] nxp-fb.0: dma addr = 0x74000000, buf[0xb3134dc0]                 
[    0.559000] nxp-fb.0: dma addr = 0x74258000, buf[0xb3134f00]                 
[    0.565000] nxp-fb.0: dma addr = 0x744b0000, buf[0xb3136040]                 
[    0.603000] nxp-fb 0: out[0], 1024 * 600 - 32 bpp (phys:74000000 virt:0xb400)
[    0.619000] Console: switching to colour frame buffer device 128x37
[    0.634000] uart-pl011 uart-pl011.0: no DMA platform data                    
[    0.639000] uart-pl011 uart-pl011.1: no DMA platform data                    
[    0.645000] uart-pl011 uart-pl011.2: no DMA platform data      
图片显示如下图所示

q2.jpg (95.02 KB, 下载次数: 308)

第二幅

第二幅

q1.jpg (90.82 KB, 下载次数: 303)

第三幅

第三幅

q0.jpg (135.42 KB, 下载次数: 301)

第一幅

第一幅

作者: wjlahau    时间: 2016-12-12 16:22
你好,我遇到的问题是这样子的。uboot logo -->kernel logo --> android initlogo (显示1秒钟左右,然后黑屏4秒钟左右)-->接着就是android 开机动画!不知道你的有没有遇到过这样的问题!我的是android 5.0.2 系统!希望大家可以一起进行交流!我的QQ号是:249558307
作者: hanping1020911    时间: 2016-12-15 10:59
我用android4.4的系统也有这样的问题,我的程序里面没有换initlogo图片,黑屏4s是我这里的initlogo图片没有显示出来。朋友,你的initlogo图像是怎样生成的,我这里生成的图像不正常,所以就没有添加。程序代码在Init.c (z:\home\x4418\system\core\init)       
static int console_init_action(int nargs, char **args)
作者: jjj    时间: 2016-12-15 11:37
这个是tty驱动导致的,如果真想解决这个问题,可以关闭tty驱动,然后使用内核的logo以及android的启动动画
作者: hanping1020911    时间: 2016-12-17 15:31
要解决这个问题 ,tty驱动涉及到串口设备也是tty驱动,在显示rle图像的时候,还需要打开tty0通道来显示图像。有没有别的方法,可以不关闭tty驱动,有可以没有花屏,还能让图像从kernel的bmp图像到rle图像可以不闪屏的情况,显示出来呢?
作者: swet123    时间: 2016-12-23 22:20
去年调试linux这个黑屏恶心死我了.  uboot logo --> kernel logo --> 黑屏(如楼主的花屏图) --> UI图像.


作者: swet123    时间: 2016-12-23 22:23




最终定位到函数位置为:
kernel/arch/arm/mach-s5p4418/prototype/module/nx_mlc.c
void nxp_soc_disp_rgb_set_address(int module, int layer,
                                unsigned int phyaddr, unsigned int pixelbyte, unsigned int stride,
                                int waitvsync)
{
        DISP_MULTILY_RGB(module, prgb, layer);
        DBGOUT("%s: %s, pa=0x%x, hs=%d, vs=%d, wait=%d\n",
                __func__, prgb->name, phyaddr, pixelbyte, stride, waitvsync);
        if (prgb->clipped) {
                int xoff = prgb->left * pixelbyte;
                int yoff = prgb->top * (prgb->width * prgb->pixelbyte);
                phyaddr += (xoff + yoff);
                stride = (prgb->width - prgb->left) * prgb->pixelbyte;
                NX_MLC_SetPosition(module, layer,
                                prgb->pos_x, prgb->pos_x, prgb->right-1, prgb->bottom-1);
        }
        prgb->address = phyaddr;
        prgb->pixelbyte = pixelbyte;
        prgb->stride = stride;
        NX_MLC_SetRGBLayerStride (module, layer, pixelbyte, stride);
        //NX_MLC_SetRGBLayerAddress(module, layer, phyaddr);
        NX_MLC_SetDirtyFlag(module, layer);
        disp_syncgen_waitsync(module, layer, waitvsync);
}

NX_MLC_SetRGBLayerAddress 这个函数一旦执行logo就消失了。注释了后,LOGO会一直存在,但是qt就不能使用屏幕了。。。。

经过查找,这里填写的是Multi layer controler。
怀疑是否是填错了。或者有其他的层将logo层给遮挡了。
再搞吧


2016-02-23 11:49:16


2016-4-11 11:31:45








作者: swet123    时间: 2016-12-23 22:25
把内核配置中的 CONFIG_VT 取消掉 就OK了.
作者: swet123    时间: 2017-5-19 11:35
2017-05-19 11:35:13
现在调试X4418 的vga1080P 设置好后, 进入到系统后黑屏了.
作者: lxz    时间: 2017-5-19 15:34
将内核配置里面的V4L2关掉就可以了




欢迎光临 九鼎创展论坛 (http://bbs.9tripod.com/) Powered by Discuz! X3.2