mooc课程精选,成品人片观看入口众乐乐,久久久久人妻一区精品性色av,苍兰诀大结局是什么,白丝美女被狂躁免费视频网站

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > LINUX 啟動logo 總結

LINUX 啟動logo 總結 時間:2018-09-28      來源:未知

LINUX 啟動logo 總結

 近在imx6上需要調試linux下啟動logo。其實linux啟動logo 以前沒少調,但這次弄了好久,也發現以前調過的沒有積累。

之所以這次logo弄了很久是因為fsl bsp 實現keep uboot logo to kernel ,但又在我使用的BSP上沒有完全弄好。話說那個還是

有很牛逼,簡單來說就是uboot實現好logo,然后kernel 中不需要對相應的顯示時鐘進行重新初始化,還有很多其他的類似一樣

的道理,就是相信uboot中已經弄好了。廢話到此。說說一般的linux 啟動logo。

 

一,企鵝法(224級,或者224色)

企鵝圖片的文件名logo_linux_clut224.ppm,在driver/video/logo目錄下。采用netpbm 工具生成想要替換的logo,這里要注

意一下圖片的尺寸大小 。

例如將PNG格式的圖片轉換成logo_linux_clut224.ppm:

    # pngtopnm my.png > my.pnm

    # pnmquant 224 my.pnm > logo224.pnm

    # pnmtoplainpnm logo224.pnm > logo_linux_clut224.ppm

 

Note: 可能會出現如下錯誤提示

drivers/video/logo/logo_linux_clut224.ppm: Binary PNM is not supported

Use pnmnoraw(1) to convert it to ASCII PNM

這個可能是因為你的ppm 圖片是bin格式,需要轉換成ascii 格式。方法如下:

pnmnoraw logo_linux_clut224.ppm > logo_linux_clut224_ascii.ppm

替換目錄中的文件重新編譯就OK了。當然這時候你會發現顯示位置需要調整。默認是左上角對齊。產品中可能更多是中心對齊。

中心對齊的方法。

1,修改drivers/video/fbmem.c  fb_show_logo_line函數中,修改如下

    //image.dx = 0; //左上角 x起點

   //image.dy = y; //調用時指定的參數 y起點

    image.dx = (info->var.xres / 2) - (image.width / 2);  //中心

    image.dy = (info->var.yres / 2) - (image.height / 2); //中心

    image.width = logo->width;

    image.height = logo->height;

 

Note:info->var.xres和info->var.yres是分辨率大小,image.width,image.height是logo圖片的大小。

起點位置的修改

2,修改drivers/video/console/fbcon.c  fbcon_prepare_logo函數里,修改如下

    logo_height = fb_prepare_logo(info, ops->rotate);

   logo_height += (info->var.yres / 2) - (logo_height / 2);

結束位置的修改

    這里需要補充一點,就是關于boot logo 的配置與光標 cursor的問題(第二種方法里面說吧)。

 

Device Drivers --->    Graphics support --->

    [*]Boot logo --->

       [*] Standard 224-color Linux logo

支持 kernel console,不選看不到 logo:

Device Drivers --->     Graphics support --->

     Console display driver support --->

       <*> Framebuffer Console support

 

二,真彩色TFT LINUX LOGO (使用此方法比較簡單,更能滿足客戶的需求)

顯示圖片可以是rgb565 ,不局限于原來的224色 ,方法相當于直接將要顯示的圖片輸出到Framebuffer。記錄一下方法吧。

  1, 生成貍貓----增加三個文件。

true_lanrry_logo.h //LCD顯示信息,深度及聲明

lanrry_logo_data.h //定義的圖片的數據,我采用ImageLCD工具取模

framebuffer_logo.c //實現打印數據到framebuffer

均放在drivers/video目錄下,并且修改Makefile ,添加framebuffer_logo.c。 

  2,貍貓換太子----修改drivers/video/fbmem.c里的代碼

 

 a,添加 #define TRUE_COLOR

 b,修改如下:

      +#ifdef TRUE_COLOR

      +#include "truecolor_logo.h"

      +#endif

 c,修改函數int fb_show_logo(struct fb_info *info, int rotate)

  {

    //貍貓換太子

    +#ifdef TRUE_COLOR

    +fb_show_truecolor_logo(info);

    +return 1;

    #else

    int y;  

    y = fb_show_logo_line(info, rotate, fb_logo.logo, 0,

                  num_online_cpus());

        num_online_cpus   cpu 數量,linux logo 企鵝數量。

 d,修改fb_prepare_logo函數以改變高度,該函數的后return處改為

 #ifdef TRUE_COLOR

    return fb_prepare_extra_logos(info, YRES, YRES);

 #else

    return fb_prepare_extra_logos(info, fb_logo.logo->height, yres);

 #endif

 重新編譯完之后,就能全部顯示

 

這種方法是采用替換boot logo 。全屏顯示的時候,也是會發現有光標問題。解決方法如下:

修改drivers/video/console/bitblit.c文件的bit_cursor函數,在該函數結尾處的 。

 if (err)

    soft_cursor(info, &cursor);

改為

 if (0)

    soft_cursor(info, &cursor);

上一篇:理解C語言的聲明

下一篇:OpenVPN 服務器搭建

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5,京公海網安備11010802025203號

回到頂部