两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種基于uboot實現(xiàn)用戶界面圖形顯示的方法

文檔序號:6538975閱讀:163來源:國知局
一種基于uboot實現(xiàn)用戶界面圖形顯示的方法
【專利摘要】本發(fā)明公開了一種基于uboot實現(xiàn)用戶界面圖形顯示的方法,通過在uboot中添加LCD驅(qū)動,將用戶圖形界面圖片與uboot源碼中系統(tǒng)默認圖片替換,并且突破uboot文件不能超過240KB的限制,來達到在uboot下通過LCD顯示圖形用戶界面的效果,本方法為uboot提供了良好的用戶交互界面,讓僅僅能夠引導(dǎo)加載程序的uboot程序能夠提供圖形用戶界面,擴展了uboot的適用范圍,具有顯著的效果和很強的實用性。
【專利說明】—種基于uboot實現(xiàn)用戶界面圖形顯示的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計算機系統(tǒng)【技術(shù)領(lǐng)域】,涉及一種基于uboot實現(xiàn)用戶界面圖形顯示的方法。
【背景技術(shù)】
[0002]uboot為bootloader引導(dǎo)加載程序的一種,是系統(tǒng)啟動前最開始執(zhí)行的程序,作用為初始化設(shè)備硬件,引導(dǎo)加載系統(tǒng)程序。在操作系統(tǒng)啟動之后,IXD (Liquid CrystalDisplay,液晶顯示器)才能夠顯示圖形圖像,現(xiàn)有uboot無法通過IXD顯示與用戶交互性能良好的圖形界面,限制了 uboot的使用范圍。
[0003]Uboot作為操作系統(tǒng)啟動的引導(dǎo)程序,并未編寫如LCD驅(qū)動代碼,也就無法通過LCD顯示圖形化的用戶界面,然而很多應(yīng)用場合需要在系統(tǒng)啟動前完成與用戶的交互,如操作系統(tǒng)的選擇性啟動,實時性系統(tǒng)的實時監(jiān)控與操作等都需要在操作系統(tǒng)啟動前完成用戶交互。

【發(fā)明內(nèi)容】

[0004]本發(fā)明提供了一種基于uboot實現(xiàn)用戶界面圖形顯示的方法,其目的在于,解決現(xiàn)有技術(shù)中在操作系統(tǒng)未啟動時,無法為用戶提供LCD方式下uboot圖形化的操作界面。
[0005]一種基于uboot實現(xiàn)用戶界面圖形顯示的方法,其特征在于,包括以下幾個步驟:
[0006]步驟1:擴大uboot啟動大小限制參數(shù);
[0007]uboot啟動大小限制參數(shù)是指啟動uboot所需的可燒寫文件大小參數(shù);
[0008]步驟2:在uboot源碼中添加IXD驅(qū)動代碼和頭文件;
[0009]步驟3:將需要顯示的用戶界面圖形圖片轉(zhuǎn)化為IXD可讀取的圖片,并以數(shù)組存儲形式存儲,設(shè)定圖片數(shù)組名稱為imagedata[];并將圖片數(shù)組imagedata[]替換/include/linux_log0.h 中 uboot 自帶的 Linux 系統(tǒng)圖片數(shù)組 unsigned char linux_logo [];
[0010]步驟4:編譯uboot可燒寫文件,并將可燒寫文件燒寫至開發(fā)板上,開發(fā)板上電啟動uboot,實現(xiàn)圖像用戶界面的顯示;
[0011]步驟2中所述的添加IXD驅(qū)動代碼和文件包括以下幾個部分:
[0012]I)在待顯示的圖片配置頭文件中指定顯示圖片位于IXD中的位置、大小以及支持顯示圖片的類型,同時將串口顯示更改為IXD顯示;
[0013]2)建立處理器平臺幀緩沖設(shè)備寄存器的定義頭文件,從Linux內(nèi)核源碼中直接獲得;
[0014]3)如果LCD的分辨率不屬于uboot源碼定義了的成員,則需要注冊新的分辨率成員,否則,進入下一個步驟4);
[0015]注冊新的分辨率成員:在圖形顯示模塊驅(qū)動的定義文件driver/video/videomodes, c中添加新分辨率的Vesa模式結(jié)構(gòu)體ctfb_vesa_modes與解析結(jié)構(gòu)體ctfb_res_modes成員,同時在負責顯不模塊的videomodes, h文件中將顯不模式修改為對應(yīng)分辨率顯示模式,修改顯示模式計數(shù)(VESA_MODES_COUNT)為所有的顯示模式總數(shù)、修改解析模式計數(shù)(RES_MODES_COUNT)與存在的分辨率成員數(shù)一致、增加新的分辨率的成員宏定義;
[0016]4)在處理器頭文件中增加ELFIN_FB_BASE基址、IXD片選及LCD_SEL掩碼的定義,ELFIN_FB_BASE基址、IXD片選及LCD_SEL掩碼的定義值與2011.06版本的uboot源碼中對
應(yīng)變量的定義值保持一致;
[0017]5)將IXD驅(qū)動實現(xiàn)文件存儲于路徑driver/下,IXD驅(qū)動實現(xiàn)文件完成驅(qū)動IXD顯示圖片。
[0018]IXD驅(qū)動實現(xiàn)文件可以從現(xiàn)有技術(shù)中獲得,如s3c6410_fb.c ;
[0019]所述步驟I中uboot啟動大小限制參數(shù)擴大為IMB以上。
[0020]在所述步驟3中對彩色幀緩沖驅(qū)動控制臺文件中圖片的分辨率參數(shù)進行修改,使得圖片的分辨率參數(shù)LINUX_L0G0_WIDTH、LINUX_L0G0_HEIGHT與存儲器中存儲的圖片分辨率一致,并且圖片分辨率不能夠大于LCD分辨率。
[0021]有益效果
[0022]本發(fā)明提供了一種在uboot中實現(xiàn)圖形用戶界面的方法,通過使用添加了 IXD驅(qū)動和用戶圖形界面圖片的Uboot源碼,成功實現(xiàn)了在操作系統(tǒng)之前啟動的uboot程序中顯示圖形用戶界面的效果,從而解決了 Uboot中無法顯示圖形用戶界面的難題,通過本方法,對于用戶而言,可以在系統(tǒng)啟動之前完成圖形化的操作,達到良好的用戶體驗;對于Uboot而言,傳統(tǒng)的Uboot僅僅用作操作系統(tǒng)的前端引導(dǎo)程序,無法與用戶交互,通過本發(fā)明方法用戶也能夠使用操作系統(tǒng)中熟悉的圖形界面來與Uboot程序交互,將uboot從幕后轉(zhuǎn)向臺前,豐富了 uboot的功能,擴展了 uboot的應(yīng)用范圍,具有較強的實用性與創(chuàng)新性。
【專利附圖】

【附圖說明】
[0023]圖1為本發(fā)明所述方法的流程圖;
[0024]圖2為應(yīng)用本發(fā)明得到的實例效果圖。
【具體實施方式】
[0025]下面將結(jié)合附圖和實施例對本發(fā)明作進一步的說明。
[0026]一種基于uboot實現(xiàn)用戶界面圖形顯示的方法,其特征在于,包括以下幾個步驟:
[0027]步驟1:擴大uboot啟動大小限制參數(shù);
[0028]uboot啟動大小限制參數(shù)是指啟動uboot所需的可燒寫文件大小參數(shù);
[0029]步驟2:在uboot源碼中添加IXD驅(qū)動代碼和頭文件;
[0030]步驟3:將需要顯示的用戶界面圖形圖片轉(zhuǎn)化為IXD可讀取的圖片,并以數(shù)組存儲形式存儲,設(shè)定圖片數(shù)組名稱為imagedata[];并將圖片數(shù)組imagedata[]替換/include/linux_log0.h 中 uboot 自帶的 Linux 系統(tǒng)圖片數(shù)組 unsigned char linux_logo [];
[0031]步驟4:編譯uboot可燒寫文件,并將可燒寫文件燒寫至開發(fā)板上,開發(fā)板上電啟動uboot,實現(xiàn)圖像用戶界面的顯示;
[0032]步驟2中所述的添加IXD驅(qū)動代碼和文件包括以下幾個部分:
[0033]I)在待顯示的圖片配置頭文件中指定顯示圖片位于IXD中的位置、大小以及支持顯示圖片的類型,同時將串口顯示更改為IXD顯示;[0034]2)建立處理器平臺幀緩沖設(shè)備寄存器的定義頭文件,從Linux內(nèi)核源碼中直接獲得;
[0035]3)如果LCD的分辨率不屬于uboot源碼定義了的成員,則需要注冊新的分辨率成員,否則,進入下一個步驟4);
[0036]注冊新的分辨率成員:在圖形顯示模塊驅(qū)動的定義文件driver/video/videomodes, c中添加新分辨率的Vesa模式結(jié)構(gòu)體ctfb_vesa_modes與解析結(jié)構(gòu)體ctfb_res_modes成員,同時在負責顯不模塊的videomodes, h文件中將顯不模式修改為對應(yīng)分辨率顯示模式,修改顯示模式計數(shù)(VESA_M0DES_C0UNT)為所有的顯示模式總數(shù)、修改解析模式計數(shù)(RES_M0DES_C0UNT)與存在的分辨率成員數(shù)一致、增加新的分辨率的成員宏定義;
[0037]4)在處理器頭文件中增加ELFIN_FB_BASE基址、IXD片選及LCD_SEL掩碼的定義,ELFIN_FB_BASE基址、IXD片選及LCD_SEL掩碼的定義值與2011.06版本的uboot源碼中對應(yīng)變量的定義值保持一致;
[0038]5)將IXD驅(qū)動實現(xiàn)文件存儲于路徑driver/下,IXD驅(qū)動實現(xiàn)文件完成驅(qū)動IXD顯示圖片。
[0039]IXD驅(qū)動實現(xiàn)文件可以從現(xiàn)有技術(shù)中獲得,如s3c6410_fb.c ;
[0040]所述步驟I中uboot啟動大小限制參數(shù)擴大為IMB以上。
[0041]在所述步驟3中對彩色幀緩沖驅(qū)動控制臺文件中圖片的分辨率參數(shù)進行修改,使得圖片的分辨率參數(shù)LINUX_L0G0_WIDTH、LINUX_L0G0_HEIGHT與存儲器中存儲的圖片分辨率一致,并且圖片分辨率不能夠大于LCD分辨率。
[0042]本實例硬件采用飛凌公司的0K6410開發(fā)板,此開發(fā)板采用Samsung S3C6410處理器,ARMl176JZF-S 內(nèi)核,主頻 533MHz/667MHz,256M 字節(jié) DDR 內(nèi)存,2G Byte Nand Flash。
[0043]LCD采用0K6410配套的7寸群創(chuàng)FIT-LCD7.0TFT液晶屏,800X480分辨率,系統(tǒng)結(jié)構(gòu)示意圖如圖1所示。
[0044]實施例1
[0045]本實例通過對飛凌公司提供的ubootl.1.6源碼進行移植與修改,并將編譯后的uboot代碼燒寫入0K6410-B開發(fā)板中,uboot啟動后驅(qū)動7寸群創(chuàng)IXD,IXD顯示用戶圖形界面,等待用戶選擇執(zhí)行程序。
[0046]具體步驟如圖1所示:
[0047]步驟1:修改uboot啟動大小限制,在uboot源碼中修改參數(shù),使得啟動的uboot可燒寫文件在大于240KB的時候也能夠成功啟動,此必要條件是設(shè)置的參數(shù)大小必須大于uboot可燒寫文件大??;
[0048]Uboot啟動分為兩個階段:匯編語言階段與C語言階段,匯編語言主要負責初始化硬件,C語言主要負責驅(qū)動硬件設(shè)備,拷貝程序文件至內(nèi)存中。匯編語言執(zhí)行完成后通過執(zhí)行blcopy_uboot_to_ram來將位于nand flash存儲器中uboot程序拷貝至內(nèi)存RAM中執(zhí)行,拷貝程序的大小在Nand_cp.c中通過參數(shù)來控制,uboot默認拷貝240KB大小的文件至內(nèi)存RAM中執(zhí)行。
[0049]具體的,通過修改位于uboot/cpu/s3c64xx目錄下Nand_cp.c (此文件實現(xiàn)將程序從存儲器中拷貝至內(nèi)存中)中拷貝程序大小的參數(shù),來改變Uboot從存儲器中拷貝至內(nèi)存中程序塊的大小,我們將此參數(shù)修改為1MB,此大小能夠滿足要求。[0050]步驟2:添加IXD驅(qū)動,在uboot中并沒有自帶IXD驅(qū)動程序,通過在uboot源碼中添加代碼與文件,實現(xiàn)驅(qū)動IXD顯示;
[0051]在飛凌提供的uboot源碼中,并未提供LCD驅(qū)動程序,此部分需要添加與修改源碼。
[0052]具體的,通過在uboot源碼中添加代碼與文件、修改配置參數(shù)來實現(xiàn)IXD驅(qū)動:
[0053]第一步,在uboot 源碼 include/configs/smdk6410.h (與 CPU 相關(guān)的待顯示的圖片存儲配置頭文件)中配置顯示圖片位于LCD中的位置、大小以及支持顯示圖片的類型、將通過串口顯示的信息改為通過IXD顯示;
[0054]具體的,
[0055]#define C0NFIG_VIDE0_L0G0
[0056]表示圖片由屏幕左上角開始顯示
[0057]#define VIDE0_FB_16BPP_W0RD_SWAP
[0058]表示支持BMP格式圖片顯示
[0059]"Stderr=Serial\0〃
[0060]表示串口信息通過IXD顯示
[0061]第二步,在include/asm-arm/arch_s3c64xx中建立處理器平臺的新模式幀緩沖設(shè)備寄存器(framebuffer register)定義頭文件 regs-fb.h、regs-fb_v4.h,其中regs-fb.h為S3C64XX系列處理器相關(guān)寄存器定義、regs-fb-v4.h代表S3C處理器相關(guān)寄存器定義,此兩個源文件位于linux-3.0.1內(nèi)核源碼目錄linux_3.0.l\arch\arm\plat-samsung\include\plat下,直接拷貝過來即可,建立兩個頭文件的作用在于將寄存器地址映射為具有語義的變量名,方便程序的編寫與閱讀;
[0062]第三步,uboot源碼中存在6種分辨率成員,分別是:640X480、800X600、1024X 768,960X 720,1152X864,1280X 1024,并不包含 800X480 分辨率,添加 800X480分辨率結(jié)構(gòu)體成員需要修改driver/video/videomodes.c (圖形顯示模塊驅(qū)動的定義文件)和driver/video/videomodes.h (與圖形顯示模塊驅(qū)動定義對應(yīng)的聲明頭文件)。
[0063]具體的,需要在videomodes, c文件中,向Vesa模式結(jié)構(gòu)體ctfb_vesa_modes與解析結(jié)構(gòu)體ctfb_res_modes中添加代表800X480分辨率的結(jié)構(gòu)體成員,此步驟的作用在于向uboot注冊800 X 480分辨率成員。
[0064]其中ctfb_vesa_modes結(jié)構(gòu)體定義為:
[0065]
【權(quán)利要求】
1.一種基于uboot實現(xiàn)用戶界面圖形顯示的方法,其特征在于,包括以下幾個步驟: 步驟1:擴大uboot啟動大小限制參數(shù); 步驟2:在uboot源碼中添加LCD驅(qū)動代碼和頭文件; 步驟3:將需要顯示的用戶界面圖形圖片轉(zhuǎn)化為LCD可讀取的圖片,并以數(shù)組存儲形式存儲,設(shè)定圖片數(shù)組名稱為imagedata[];并將圖片數(shù)組imagedata[]替換/include/linux_log0.h 中 uboot 自帶的 Linux 系統(tǒng)圖片數(shù)組 unsigned char linux_logo []; 步驟4:編譯uboot可燒寫文件,并將可燒寫文件燒寫至開發(fā)板上,開發(fā)板上電啟動uboot,實現(xiàn)圖像用戶界面的顯示; 步驟2中所述的添加LCD驅(qū)動代碼和文件包括以下幾個部分: 1)在待顯示的圖片配置頭文件中指定顯示圖片位于LCD中的位置、大小以及支持顯示圖片的類型,同時將串口顯示更改為IXD顯示; 2)建立處理器平臺幀緩沖設(shè)備寄存器的定義頭文件,從Linux內(nèi)核源碼中直接獲得; 3)如果LCD的分辨率不屬于uboot源碼定義了的成員,則需要注冊新的分辨率成員,否貝U,進入下一個步驟4); 注冊新的分辨率成員:在圖形顯示模塊驅(qū)動的定義文件driver/video/videomodes.c中添加新分辨率的Vesa模式結(jié)構(gòu)體ctfb_vesa_modes與解析結(jié)構(gòu)體ctfb_res_modes成員,同時在負責顯示模塊的videomodes, h文件中將顯示模式修改為對應(yīng)分辨率顯示模式,修改顯示模式計數(shù)(VESA_MODES_COUNT)為所有的顯示模式總數(shù)、修改解析模式計數(shù)(RES_M0DES_C0UNT)與存在的分辨率成員數(shù)一致、增加新的分辨率的成員宏定義; 4)在處理器頭文件中增加ELFIN_FB_BASE基址、LCD片選及LCD_SEL掩碼的定義,ELFIN_FB_BASE基址、IXD片選及LCD_SEL掩碼的定義值與2011.06版本的uboot源碼中對應(yīng)變量的定義值保持一致; 5)將IXD驅(qū)動實現(xiàn)文件存儲于路徑driver/下,IXD驅(qū)動實現(xiàn)文件完成驅(qū)動IXD顯示圖片。
2.根據(jù)權(quán)利要求1所述的基于uboot實現(xiàn)用戶界面圖形顯示的方法,其特征在于,所述步驟I中uboot啟動大小限制參數(shù)擴大為IMB以上。
3.根據(jù)權(quán)利要求2所述的基于uboot實現(xiàn)用戶界面圖形顯示的方法,其特征在于,在所述步驟3中對彩色幀緩沖驅(qū)動控制臺文件中圖片的分辨率參數(shù)進行修改,使得圖片的分辨率參數(shù)LINUX_LOGO_WIDTH、LINUX_LOGO_HEIGHT與存儲器中存儲的圖片分辨率一致,并且圖片分辨率不能夠大于LCD分辨率。
【文檔編號】G06F9/44GK103793233SQ201410069024
【公開日】2014年5月14日 申請日期:2014年2月27日 優(yōu)先權(quán)日:2014年2月27日
【發(fā)明者】熊永華, 郭述帆, 吳敏, 張堯?qū)W 申請人:中南大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
靖宇县| 甘南县| 景德镇市| 乌恰县| 木兰县| 桓仁| 肇源县| 天津市| 石景山区| 清丰县| 甘南县| 保亭| 寿光市| 同江市| 洞口县| 杂多县| 大余县| 乌兰察布市| 溧水县| 金堂县| 霍林郭勒市| 施甸县| 桐庐县| 三明市| 深水埗区| 调兵山市| 乐东| 阜阳市| 贡山| 英山县| 元谋县| 神池县| 呼图壁县| 邵武市| 杭锦旗| 镇远县| 大洼县| 丰顺县| 南宫市| 民丰县| 五指山市|