把图形写入linux内核,如何在linux内核启动时添加显示图片

内核版本为2.6.30.4

为了实现了在linux内核启动时不仅仅是只显示一个静态的全屏logo, 而是显示能够表示内核正在启动的进度条,因此需要能够在启动过程中直接操纵framebuffer的功能。 而进度条则可以很简单的使用多次贴图来实现。

既然在启动时能够显示logo,那么按照自己的要求来贴图也就是可能的。关于logo的显示可以参考fbmem.c和logo.c文件。

在fbmem.c中fb_prepare_logo()调用logo.c中的fb_find_logo()获得struct linux_logo指针,该结构体中包含了logo显示的数据和各种参数如高宽。

然后fbmem.c中fb_show_logo()函数中调用fb_show_logo_line()进行实际的显示操作。不需要管fb_show_extra_logos(),一般这个函数不会有用处的。

在fb_show_logo_line()函数中,根据struct linux_logo中的数据,主要是clut信息,设置好fb_info中的调色板;其次创建一个struct fb_image结构体,该结构体为实际用于显示的变量。将fb_image的数据指向linux_logo中的数据,然后设置到fb_image的显示位置和高宽,最后调用函数fb_do_show_logo()。

fb_do_show_logo()中实际上是调用fb_info中的fb_ops的fb_imageblit()函数将fb_image表示的图像写入到framebuffer中,然后显示出来。

至此,一个logo的显示便完成了。由此看出,如果要显示自己的图像,需要准备和设置的东西包括:图像数据、设置fb_image的各个参数以及设置调色板。

图像数据的获得和自制linux的logo的过程一样ÿ

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值