色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

主要描述u-boot源碼中對開機logo的常規

嵌入式小生 ? 來源:嵌入式小生 ? 作者:iriczhao ? 2022-11-10 09:14 ? 次閱讀

一、導讀

使用嵌入式linux作為設備的操作系統,當設備上電啟動后,希望顯示開機logo。一般會經歷以下幾個階段:

(1)運行芯片內部引導程序。

(2)運行引導加載程序(u-boot較為常用)。

(3)運行linux內核。

(4)運行用戶根文件系統,在這個階段,就會根據項目特征運行具體的程序或者服務,最后則會進入一個人機交互軟件終端。

本文以u-boot作為引導加載程序,在運行時候,可以設置u-boot的啟動logo,本文主要描述這個話題

二、獲取u-boot源碼

u-boot是一款在嵌入式領域常使用的引導加載程序。一般情況下,我們不會使用u-boot官方維護的源碼,而是使用芯片原廠或者硬件板卡提供商提供的u-boot源碼,因為官方維護的u-boot源碼的使用對象是芯片原廠,他們會根據自己的芯片特征做第一手的u-boot源碼移植,以支持自家芯片,然后發布給硬件板卡提供商或者第三方的合作伙伴。最后交到軟件開發人員手里的就是已經可以直接編譯使用的u-boot源碼了。

本文主要描述u-boot源碼中對開機logo的常規(有些芯片原廠可能會有所修改)支持。

三、修改u-boot源碼

3-1 準備開機logo

根據自己設備顯示屏幕的大小制作一張文件格式為bmp的圖片,此處筆者使用PS軟件制作了一張開機logo:

21918920-6090-11ed-8abf-dac502259ad0.png

(就顯示了幾個字,哈哈)

將其導出為bmp格式的文件后,然后將導出文件復制到u-boot源碼下的tools/logos目錄路徑下,并命名為mylogo.bmp(可以隨便命名)。

3-2 修改makefile

在u-boot源碼下的tools目錄中的makefile文件中,找到以下內容:

#GeneratedLCD/videologo
LOGO_H=$(objtree)/include/bmp_logo.h
LOGO_DATA_H=$(objtree)/include/bmp_logo_data.h
LOGO-$(CONFIG_LCD_LOGO)+=$(LOGO_H)
LOGO-$(CONFIG_LCD_LOGO)+=$(LOGO_DATA_H)
LOGO-$(CONFIG_VIDEO_LOGO)+=$(LOGO_H)
LOGO-$(CONFIG_VIDEO_LOGO)+=$(LOGO_DATA_H)

#Genericlogo
ifeq($(LOGO_BMP),)
LOGO_BMP=$(srctree)/$(src)/logos/denx.bmp

#Useboardlogoandfallbacktovendor
ifneq($(wildcard$(srctree)/$(src)/logos/$(BOARD).bmp),)
LOGO_BMP=$(srctree)/$(src)/logos/$(BOARD).bmp
else
ifneq($(wildcard$(srctree)/$(src)/logos/$(VENDOR).bmp),)
LOGO_BMP=$(srctree)/$(src)/logos/$(VENDOR).bmp
endif
endif

endif#!LOGO_BMP

將其修改為:

#GeneratedLCD/videologo
LOGO_H=$(objtree)/include/bmp_logo.h
LOGO_DATA_H=$(objtree)/include/bmp_logo_data.h
LOGO-$(CONFIG_LCD_LOGO)+=$(LOGO_H)
LOGO-$(CONFIG_LCD_LOGO)+=$(LOGO_DATA_H)
LOGO-$(CONFIG_VIDEO_LOGO)+=$(LOGO_H)
LOGO-$(CONFIG_VIDEO_LOGO)+=$(LOGO_DATA_H)

#Genericlogo
ifeq($(LOGO_BMP),)
LOGO_BMP=$(srctree)/$(src)/logos/mylogo.bmp#修改為自己的開機logo圖片

#Useboardlogoandfallbacktovendor
ifneq($(wildcard$(srctree)/$(src)/logos/$(BOARD).bmp),)
LOGO_BMP=$(srctree)/$(src)/logos/$(BOARD).bmp
else
ifneq($(wildcard$(srctree)/$(src)/logos/$(VENDOR).bmp),)
#LOGO_BMP=$(srctree)/$(src)/logos/$(VENDOR).bmp
LOGO_BMP=$(srctree)/$(src)/logos/mylogo.bmp#修改為自己的開機logo圖片
endif
endif

endif#!LOGO_BMP

在上述修改中,為了防止編譯中參數控制對logo編譯的影響,故做了兩處修改。

3-4 添加宏定義

然后在具體對應板卡的描述頭文件中添加兩個宏定義:

#defineCONFIG_VIDEO_LOGO
#defineCONFIG_VIDEO_BMP_LOGO

由于小生使用的是imx6ull的處理器平臺,所以在include/mx6ullevk.h文件中添加(此處需要根據具體情況而定)

21bb62f4-6090-11ed-8abf-dac502259ad0.png

3-5 logo居中顯示

修改drivers/video/cfb_console.c文件中的static void *video_logo(void)函數,具體修改如下:

staticvoid*video_logo(void)
{
...
splash_get_pos(&video_logo_xpos,&video_logo_ypos);
/*增加代碼,設置圖片居中顯示*/
if(video_logo_xpos&&video_logo_ypos)
{
video_logo_xpos=(VIDEO_VISIBLE_COLS-BMP_LOGO_WIDTH)>>1;
video_logo_ypos=(VIDEO_VISIBLE_ROWS-BMP_LOGO_HEIGHT)>>1;
}

#ifdefCONFIG_SPLASH_SCREEN

3-6 隱藏版本信息

同樣修改drivers/video/cfb_console.c文件中的static void *video_logo(void)函數,注釋掉該函數中的一些內容,具體修改如下:

if(board_cfb_skip())
return0;
/*注釋開始*/
//sprintf(info,"%s",version_string);

//space=(VIDEO_COLS-VIDEO_INFO_X)/VIDEO_FONT_WIDTH;
//len=strlen(info);

//if(len>space){
//intxx=VIDEO_INFO_X,yy=VIDEO_INFO_Y;
//uchar*p=(uchar*)info;
//while(len){
//if(len>space){
//video_drawchars(xx,yy,p,space);
//len-=space;

//p=(uchar*)p+space;

//if(!y_off){
//xx+=VIDEO_FONT_WIDTH;
//space--;
//}
//yy+=VIDEO_FONT_HEIGHT;

//y_off++;
//}else{
//video_drawchars(xx,yy,p,len);
//len=0;
//}
//}
//}else
//video_drawstring(VIDEO_INFO_X,VIDEO_INFO_Y,(uchar*)info);
/*注釋結束*/
#ifdefCONFIG_CONSOLE_EXTRA_INFO

通過以上步驟,就將u-boot源碼修改好了,可以進行交叉編譯構建了,然后運行修改好的u-boot即可。

四、開機logo編譯構建本質

在u-boot編譯構建過程中,實則會編譯出一個名為bmp_logo的宿主機上運行的工具:

21e017de-6090-11ed-8abf-dac502259ad0.png

該工具會將我們的bmp格式的開機logo圖片轉換成include/bmp_logo.h、include/bmp_logo_data.h。在include/bmp_logo.h文件中,聲明了兩個圖片數據數組:

21fc4968-6090-11ed-8abf-dac502259ad0.png

在include/bmp_logo_data.h文件中,則定義了這兩個數組(數據會根據具體的圖片生成很多數據)。bmp_logo_palette數組:

22135ae0-6090-11ed-8abf-dac502259ad0.png

bmp_logo_bitmap數組:

22bccefe-6090-11ed-8abf-dac502259ad0.png

在實際使用中,可以查看是否生成了bmp_logo工具和include/bmp_logo.h文件,來判斷u-boot的開機logo部分是否被編譯進u-boot鏡像中。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5082

    文章

    19104

    瀏覽量

    304817
  • Linux系統
    +關注

    關注

    4

    文章

    593

    瀏覽量

    27392
  • u-boot
    +關注

    關注

    0

    文章

    121

    瀏覽量

    38222

原文標題:嵌入式linux | 修改u-boot啟動logo

文章出處:【微信號:嵌入式小生,微信公眾號:嵌入式小生】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    U-boot的基本介紹

    從本文開始,將陸續推送“手把手教你移植U-boot”系列文章,目標是由淺入深地講解U-boot的工作流程、原理、配置方法和移植方法,手把手教你完成U-boot的移植工作,默認硬件開發平臺為ARM,操作系統為Linux。
    發表于 07-14 16:52 ?2867次閱讀
    <b class='flag-5'>U-boot</b>的基本介紹

    U-boot的執行流程

    本文主要講述了U-boot的執行流程。
    發表于 07-14 16:58 ?698次閱讀
    <b class='flag-5'>U-boot</b>的執行流程

    u-boot源碼

    哪位大大有最新的u-boot源碼啊,現在正在學習u-boot,想要一份源碼,怎奈官方下載地址不能下。誰有發一下。804569645@qq.com非常感謝
    發表于 07-12 16:11

    淺析rk3399 u-boot修改開機logo以及開機動畫和開機視頻

    1、rk3399 u-boot修改開機logo以及開機動畫和開機視頻  首先分析了一下uboot啟動流程
    發表于 10-26 17:43

    U-Boot的啟動及移植分析

    bootloader 開發是嵌入式系統必不可少而且十分重要的部分,U-Boot 為功能強大的bootloader 開發軟件。本文詳細分析了U-Boot 的啟動流程,并結合其源碼,闡述了U-Bo
    發表于 09-01 16:34 ?27次下載

    Porting U-Boot to the Control

    In this paper, the way of porting U-Boot to Control Computer Based MPC8349 will beintroduced
    發表于 01-25 15:45 ?13次下載

    一種在U-BOOT嵌入千兆網絡功能的方法

    一種在U-BOOT嵌入千兆網絡功能的方法摘 要:U-BOOT是一種開放源碼的、用于多種嵌入式微處理器的引導加載程序,目前U-BOOT僅支持
    發表于 02-05 17:38 ?17次下載

    u-boot的Makefile分析

    u-boot的Makefile分析 U-BOOT是一個LINUX下的工程,在編譯之前必須已經安裝對應體系結構的交叉編譯環境,這里只針對ARM,編譯器系列軟件為arm-linux-*。 U-BOOT的下載
    發表于 05-17 09:16 ?2064次閱讀

    U-Boot結構功能介紹

      U-Boot,全稱 Universal Boot Loader,是遵循GPL條款的開放源碼項目。從FADSROM、8xxROM、PPCBOOT逐步發展演化而來。其源碼目錄、編譯形式
    發表于 07-30 09:17 ?1178次閱讀
    <b class='flag-5'>U-Boot</b>結構功能介紹

    基于S3C2440的U-Boot開機logo的設計

    在對U-Boot進行深入分析的基礎上,同時對S3C2440的LCD控制器原理以及INNOLUX 7寸LCD的成像原理進行分析,最后結合系統軟硬件特性實現基于U-Boot開機logo
    發表于 12-06 15:14 ?96次下載
    基于S3C2440的<b class='flag-5'>U-Boot</b><b class='flag-5'>開機</b><b class='flag-5'>logo</b>的設計

    u-boot簡介

    演化而來。其源碼目錄、編譯形式與Linux內核很相似,事實上,不少U-Boot源碼就是根據相應的Linux內核源程序進行簡化而形成的,尤其是一些設備的驅動程序,這從U-Boot
    發表于 10-14 11:17 ?3560次閱讀

    如何在U-Boot實現對Yaffs鏡像的設計?

    U-Boot是目前廣泛使用的嵌入式操作系統通用引導程序,具有功能豐富強大,支持多種操作系統和CPU體系,易于功能擴展和移植,源碼開放等多種優點。U-Boot,全稱 Universal Boot
    的頭像 發表于 08-29 05:02 ?3726次閱讀
    如何在<b class='flag-5'>U-Boot</b><b class='flag-5'>中</b>實現對Yaffs鏡像的設計?

    u-boot中使用ethernet的方法

    KV260 petalinux BSP在u-boot device treedisable了GEM3,也就是說ethernet在u-boot不建議使用ethernet。
    的頭像 發表于 07-21 10:25 ?3911次閱讀

    創建自定義的u-boot命令

    為什么會有這篇文章,因為小生被u-boot源碼的設計所吸引了(源碼對命令的處理過程)。自定義u-boot命令屬于u-boot
    的頭像 發表于 08-08 14:46 ?1100次閱讀

    u-boot armv8鏈接腳本

    u-boot armv8鏈接腳本 在進行源碼分析之前,首先看看u-boot的鏈接腳本,通過鏈接腳本可以從整體了解一個u-boot的組成,并且可以在啟動分析中知道某些邏輯是在完成什么工作
    的頭像 發表于 12-07 11:19 ?663次閱讀
    主站蜘蛛池模板: 男女高潮又爽又黄又无遮挡| 黄色网址在线看| 国产女合集第六部| 国产伊人自拍| 久久精选视频| 女教师二十三岁| 三级网站午夜三级| 胸大美女又黄的网站| 亚洲综合免费视频| 女教师公车痴汉在线播放| 欧美又粗又大AAAA片| 四虎影院网红美女| 亚洲青青草原| 性与肉体电影免费观看| 亚洲精品久久久无码一区二区 | 青青草原伊人| 小xav导航| 最近2019年日本中文免费字幕| ae58老司机福利| 97亚洲狠狠色综合久久位| 绑着男军人的扒开内裤| 国产精品久久久久久精品...| 国产51麻豆二区精品AV视频| 国产亚洲色婷婷久久精品99| 老熟女毛茸茸浓毛| 十分钟视频影院免费| 一区二区中文字幕在线观看 | 试看2分钟AA片| 一抽一出BGM免费50分动漫| a级毛片黄免费a级毛片| 国产精品久久久久影院嫩草| 精品亚洲国产熟女福利自在线 | 色久悠悠无码偷拍自怕| 野草视频在线观看| 超碰超碰视频在线观看| 精品无码久久久久久动漫| 强被迫伦姧惨叫VIDEO| 亚洲高清在线mv| yellow日本高清在线| 久久ZYZ资源站无码中文动漫| 秋霞伦理电影在线看|