1:獲得.png圖片,可以截圖獲得,千萬注意圖片不能大於lcd屏幕,最好小點,大了有時顯示不了。我幾次沒有顯示就是圖片原因。
2 使用Linux命令將圖片轉換爲ppm圖片:也可以使用logomaker或者linux系統下自帶的JIMP編輯工具使用
# pngtopnm logo_linux_clut224.png > logo_linux_clut224.pnm
# pnmquant 224 logo_linux_clut224.pnm > logo_linux_clut224.pnm
# pnmtoplainpnm logo_linux_clut224.pnm > logo_linux_clut224.ppm
3 將新生成的logo_linux_clut224.ppm替換掉drivers/video/logo/ logo_linux_clut224.ppm,並刪除logo_linux_clut224.c logo_linux_clut224.c logo_linux_clut224.c logo_linux_clut224.o文件。注意不刪除則下次編譯沒有重新進入內核
(3) 重新編譯內核。
1、 將linux啓動logo設置顯示在屏幕中間位置
(1) 修改linux2.../drivers/video/fbmem.c裏面的fb_do_show_logo函數;
static void fb_do_show_logo(struct fb_info *info, struct fb_image *image,
int rotate, unsigned int num)
{
unsigned int x;
int xoff,yoff;
/**for central logo**/
xoff = (info->var.xres - num * (fb_logo.logo->width + 8))>>1; //得到中間x座標
yoff = (info->var.yres - num * (fb_logo.logo->height + 8))>>1; //得到中間y座標
if (rotate == FB_ROTATE_UR) {
for (x = 0;
x < num && image->dx + image->width <= info->var.xres;
x++) {
image->dx = xoff;
image->dy = yoff;
info->fbops->fb_imageblit(info, image);
image->dx += image->width + 8;
}
} else if (rotate == FB_ROTATE_UD) {
for (x = 0; x < num && image->dx >= 0; x++) {
info->fbops->fb_imageblit(info, image);
image->dx -= image->width + 8;
}
} else if (rotate == FB_ROTATE_CW) {
for (x = 0;
x < num && image->dy + image->height <= info->var.yres;
x++) {
info->fbops->fb_imageblit(info, image);
image->dy += image->height + 8;
}
} else if (rotate == FB_ROTATE_CCW) {
for (x = 0; x < num && image->dy >= 0; x++) {
info->fbops->fb_imageblit(info, image);
image->dy -= image->height + 8;
}
}
}
clut224.pnm > linux_logo_clut224.ppm
然linux_logo_clut224.ppm 替換linux-2.6.32.2/drivers/video/logo 中對應的圖像就可以