九鼎创展论坛中文版English
登录 | 立即注册 设为首页收藏本站 切换到宽版
查看: 7063|回复: 10
打印 上一主题 下一主题

开机logo.bmp图片到initlogo.rle切换

[复制链接]
跳转到指定楼层
楼主
发表于 2016-12-9 09:37:38 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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, 下载次数: 290)

第二幅

第二幅

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

第三幅

第三幅

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

第一幅

第一幅
回复

使用道具 举报

沙发
发表于 2016-12-12 16:22:08 | 只看该作者
你好,我遇到的问题是这样子的。uboot logo -->kernel logo --> android initlogo (显示1秒钟左右,然后黑屏4秒钟左右)-->接着就是android 开机动画!不知道你的有没有遇到过这样的问题!我的是android 5.0.2 系统!希望大家可以一起进行交流!我的QQ号是:249558307
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2016-12-15 10:59:38 | 只看该作者
我用android4.4的系统也有这样的问题,我的程序里面没有换initlogo图片,黑屏4s是我这里的initlogo图片没有显示出来。朋友,你的initlogo图像是怎样生成的,我这里生成的图像不正常,所以就没有添加。程序代码在Init.c (z:\home\x4418\system\core\init)       
static int console_init_action(int nargs, char **args)
回复 支持 反对

使用道具 举报

地板
发表于 2016-12-15 11:37:50 | 只看该作者
这个是tty驱动导致的,如果真想解决这个问题,可以关闭tty驱动,然后使用内核的logo以及android的启动动画
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2016-12-17 15:31:30 | 只看该作者
要解决这个问题 ,tty驱动涉及到串口设备也是tty驱动,在显示rle图像的时候,还需要打开tty0通道来显示图像。有没有别的方法,可以不关闭tty驱动,有可以没有花屏,还能让图像从kernel的bmp图像到rle图像可以不闪屏的情况,显示出来呢?
回复 支持 反对

使用道具 举报

6#
发表于 2016-12-23 22:20:29 | 只看该作者
去年调试linux这个黑屏恶心死我了.  uboot logo --> kernel logo --> 黑屏(如楼主的花屏图) --> UI图像.

回复 支持 反对

使用道具 举报

7#
发表于 2016-12-23 22:23:31 | 只看该作者




最终定位到函数位置为:
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







回复 支持 反对

使用道具 举报

8#
发表于 2016-12-23 22:25:24 | 只看该作者
把内核配置中的 CONFIG_VT 取消掉 就OK了.
回复 支持 反对

使用道具 举报

9#
发表于 2017-5-19 11:35:38 | 只看该作者
2017-05-19 11:35:13
现在调试X4418 的vga1080P 设置好后, 进入到系统后黑屏了.
回复 支持 反对

使用道具 举报

10#
发表于 2017-5-19 15:34:30 | 只看该作者
将内核配置里面的V4L2关掉就可以了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳市九鼎创展科技官方论坛 ( 粤ICP备11028681号-2  

GMT+8, 2024-4-25 20:05 , Processed in 0.022125 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表