博客專欄

        EEPW首頁 > 博客 > iTOP-4412開發板-驅動-linux開機logo的修改方法

        iTOP-4412開發板-驅動-linux開機logo的修改方法

        發布人:daybydayi 時間:2019-07-08 來源:工程師 發布文章

        本文檔介紹 itop4412 開發板的內核啟動 LOGO,請注意如果要修改的屏幕分辨率小于

        480x640,請參考另外的獨立文檔“iTOP-4412-內核-4.3 寸屏幕-logo 修改_V1.0”。

        本文檔 LOGO 修改方法支持迅為除 4.3 寸屏幕以外所有屏幕。

        首先要準備一張 480x640 分辨率的圖片,作者使用的是美圖秀秀修改圖片的分辨率,覺

        得挺好用,這里推薦給大家使用。另外如果圖片顯示方向不對,在保證分辨率為 640x480 的

        情況下,可以使用上下左右翻轉功能處理圖片。

        然后使用轉換工具 Img2Lcd(在壓縮包中)把圖片轉換成數組文件,工具配置如下,如

        下圖所示。

        01.jpg

        如下圖所示,轉化的數組文件內容,一定要保證數組長度為 921600。

        02.jpg

        在內核源碼文件中“drivers/video/samsung/iTop-4412.h”,如下圖所示。

        03.jpg

        如上圖所示的內核文件中有兩個數組,需要用到的是 iBitmapData_q 數組,將其中的內

        容使用前面圖片導出數組內容替換。

        替換完成之后,重新編譯生成新的內核鏡像,重新燒寫到開發板中之后,就可以完成內核

        啟動 LOGO 的更新了。

        有可能我們自己制作的 logo 沒有顯示在屏幕的最中央,那我們需要修改下文件

        “drivers/video/samsung/s3cfb_ops.c”,在這個文件找到函數:s3cfb_draw_logo

        int s3cfb_draw_logo(struct fb_info *fb)

        {

        #ifdef CONFIG_FB_S5P_SPLASH_SCREEN

        struct fb_fix_screeninfo *fix = &fb->fix;

        struct fb_var_screeninfo *var = &fb->var;

        #if 0

        struct s3c_platform_fb *pdata = to_fb_plat(fbdev->dev);

        memcpy(fbdev->fb[pdata->default_win]->screen_base,

        LOGO_RGB24, fix->line_length * var->yres);

        #else

        //u32 height = var->yres / 3;

        u32 line = fix->line_length;

        u32 i, j;

        u32 index;

        u32 top,left;

        const unsigned char *pLog =NULL;

        memset(fb->screen_base, 0x00, var->yres * line);

        printk("\n CPU type: \n");

        if(soc_is_exynos4412()){

        printk(" Exynos 4412\n");

        pLog = iBitmapData_q;

        }else{

        printk("Exynos 4212\n");

        pLog = iBitmapData;

        }

        top = 170;

        left = 230;

        index = 0;

        for (i = 0; i < 480; i++) {

        for (j = 0; j < 640; j++) {

        memset(fb->screen_base + (i + top) * line + (j + left) * 4 + 0, pLog[index], 1);//B

        memset(fb->screen_base + (i + top) * line + (j + left) * 4 + 1, pLog[index+1], 1);//G

        memset(fb->screen_base + (i + top) * line + (j + left) * 4 + 2, pLog[index+2], 1);//R

        memset(fb->screen_base + (i + top) * line + (j + left) * 4 + 3, 0x00, 1);

        index += 3;

        }

        }

        #endif

        #endif

        return 0;

        }

        修改這個函數里面的 top 和 left 就可以控制圖片在屏幕顯示的位置了。


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞:

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 双桥区| 同心县| 大竹县| 花莲县| 达州市| 常德市| 黄龙县| 青铜峡市| 四会市| 桐梓县| 高阳县| 米泉市| 西盟| 阿巴嘎旗| 大石桥市| 乡宁县| 隆化县| 宜宾市| 霍邱县| 根河市| 冕宁县| 甘南县| 洛扎县| 襄樊市| 武安市| 南安市| 藁城市| 炎陵县| 裕民县| 清水河县| 梁平县| 岐山县| 元朗区| 阿拉善右旗| 长宁县| 元谋县| 城口县| 定西市| 元阳县| 治县。| 义马市|