实现uboot到内核logo的持续显示

网上关于Android的logo的资料有很多,如
http://jishublog.iteye.com/blog/1782918
由于我们公司在uboot中是读分区显示logo的,到kernel的时候会有四只企鹅(4核CPU)出现,到Android的动画这一阶段,重新读取分区里的logo数据。在kernel将企鹅屏蔽掉后,显示在uboot中的logo会被刷掉,出现黑屏现象。网上寻找一系列解决方案后,没有发现合适的。看到三星的kernel源码中可以实现在内核中重刷uboot图像方法,这个能将这种解决方案移植到我们现在这个平台上,不就可以解决问题了吗?所以还是要多看看内核源码哦。
原始代码如下

#define bootloaderfb 0x48000000
if (bootloaderfb) {
    u8 *logo_virt_buf;
    logo_virt_buf =ioremap_nocache(bootloaderfb,
                fb->var.yres * fb->fix.line_length);
    memcpy(fb->screen_base, logo_virt_buf,
                fb->var.yres * fb->fix.line_length);
    iounmap(logo_virt_buf);
}

其中bootloaderfb为uboot中lcd的显示基地址。其他代码就不多解释了。开始的时候ioremap_nocache这个函数总是报错。百度一下这个函数http://www.cnblogs.com/dodo-bear/archive/2011/05/04/dodo.html。发现有可能lcd这一段显示内存在进入内核后被占用,造成申请这一段内存失败。这里将uboot中lcd的显示基地址改成内存中的高地址后,该段内存就申请成功了。这样便实现了uboot的图像进入内核后可以持续显示了。这段代码的关键为bootloaderfb这个地址的确定,这个地址为内存的物理地址,可参考芯片手册的内存分布来确定,并设为内存中比较靠后的那段地址(高地址),被申请的可能性较小。另外,拷贝的时候注意一下uboot的显示模式和kernel的是否一致,否则会出现图像偏移的现象。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值