亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Windows CE 6.0 LOGO的實現(xiàn)與優(yōu)化

        2010-01-29 07:19:02羅小華
        電子設(shè)計工程 2010年10期
        關(guān)鍵詞:代碼啟動控制器

        蔡 昌,羅小華,鄧 娜

        (重慶郵電大學(xué) 通信與信息工程學(xué)院,重慶 400065)

        Windows CE是微軟開發(fā)的專注于嵌入式領(lǐng)域的一款操作系統(tǒng),它提供了眾多強大工具,用戶利用它可以快速開發(fā)出下一代的智能化小體積設(shè)備。特別是在便攜式的電子類產(chǎn)品開發(fā)過程中,LCD液晶顯示屏由于其可視化強,強大的人機友好界面操作等特點,已經(jīng)逐漸成為工業(yè)控制系統(tǒng)、消費電子產(chǎn)品中客戶體驗(QoE)的重要環(huán)節(jié)。在基于Windows CE的硬件平臺上開發(fā)嵌入式產(chǎn)品時,LOGO啟動的實現(xiàn)和算法研究就顯得非常重要?,F(xiàn)在比較流行的做法是在LCD控制器初始化后加入一段完整啟動輸出畫面的代碼,以達(dá)到在系統(tǒng)啟動過程中輸出畫面的效果。該方法的優(yōu)點是方法簡單,易于實現(xiàn);而缺點是對圖片的大小有嚴(yán)格要求,如果太大,將會引起LCD顯示花屏,嚴(yán)重者甚至造成系統(tǒng)的不穩(wěn)定。在此基礎(chǔ)之上,提出一種采用線性插值法改進(jìn)LOGO的算法。該方法能夠?qū)λ迦氲腖OGO圖片進(jìn)行相應(yīng)放大和縮小,大大降低了對圖片大小的限制。同時由于其穩(wěn)定性好,移植性強,可以適用于多種具有同類操作系統(tǒng)的硬件平臺。

        1 系統(tǒng)原理

        該設(shè)計的開發(fā)平臺是基于Platform Builder 6.0操作系統(tǒng),該工具集成了微軟新一代基于ARM的設(shè)備仿真器,可以仿真ARMV4I指令集,為開發(fā)者的操作系統(tǒng)和應(yīng)用程序的開發(fā)、構(gòu)建和測試提供了極大方便[1]。Eboot(通過以太網(wǎng)口從開發(fā)機下載操作系統(tǒng)鏡像得到目標(biāo)設(shè)備與運行于Platform Builder 6.0的開發(fā)平臺通信,從而進(jìn)行下載操作系統(tǒng)鏡像和配置調(diào)試服務(wù)[2]。

        LOGO啟動的具體實現(xiàn)是在系統(tǒng)啟動的過程中,在Windows CE內(nèi)核啟動階段完成對LCD控制器初始化后加入一段完整啟動輸出畫面的代碼?;蛘呖梢院唵蔚乩斫鉃樵贚CD控制器初始化后直接往LCD的Framebuffer(幀緩存空間)里面寫輸出畫面的數(shù)據(jù)。這個工作一般在Eboot中進(jìn)行,如果在OS(操作系統(tǒng))啟動時一般就太晚了,如果不加入人為的延時,啟動畫面剛一顯示,就到了OS畫面了,看不到效果。因此,選擇在Bootloader中初始化LCD后添加啟動LOGO的代碼,從而實現(xiàn)開機畫面的顯示。

        2 Bootloader啟動LOGO實現(xiàn)

        2.1 Bootloader簡介

        Bootloader是建立在操作系統(tǒng)內(nèi)核運行之前的一小段程序,通過這段小程序,可以初始化硬件設(shè)備,建立系統(tǒng)的內(nèi)存空間映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個已知的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。最終,Bootloader把操作系統(tǒng)內(nèi)核映像加載到RAM中,并將系統(tǒng)控制權(quán)傳遞給它[3]。

        2.2 Bootloader啟動分析

        Bootloader的控制流程如圖1所示。

        圖1 Bootloader的控制流程圖Fig.1 Flow chart of Bootloader control

        當(dāng)打開電源或者復(fù)位時,CPU首先執(zhí)行Startup函數(shù),Startup函數(shù)通常由匯編語言代碼編寫,主要用來建立存儲器訪問和初始化緩存。然后Startup函數(shù)跳轉(zhuǎn)到blcommon框架的blcommonMain函數(shù)。Blcommon框架被實現(xiàn)為blcommon.lib庫,并與平臺特定的Bootloader代碼進(jìn)行鏈接[4]。

        BootLoaderMain函數(shù)中主要調(diào)用OEMDebugInit、OEMPlatformInit、 OEMPreDownLoader、 DownloaderImage 和OEMLaunch等主要函數(shù),其中OEMPlatformInit函數(shù)是BootLoader最重要的OEM函數(shù),所有與BootLoader所需硬件功能相關(guān)的目標(biāo)板級外設(shè)如以太網(wǎng)接口、Flash存儲器等都應(yīng)該在這里進(jìn)行初始化,也可以初始化嵌入式CPU芯片內(nèi)置的外設(shè),這里還涉及到S3C6410內(nèi)置的LCD控制器[5]。因為BootLoader中LOGO的實現(xiàn)就是通過OEMPlatformInit函數(shù)調(diào)用InitializeDisplay函數(shù)初始化S3C6410的LCD控制器使之在BootLoader啟動時顯示[6]。

        2.3 Eboot啟動LOGO具體實現(xiàn)

        通常的做法是在%_WINCEROOT%PlatformSrcBootloaderEboot文件夾的main.c文件中找到InitializeDisplay函數(shù),在其為LCD配置完時序參數(shù)之后,也就是完成了LCD的初始化工作之后,加入一段完整啟動輸出畫面的代碼[7]:

        2.3.1 制作Logo.C

        首先用軟件工具實現(xiàn)圖片到數(shù)組文件的轉(zhuǎn)換[8],這里使用StartLogo圖片制作工具。StartLogoMaker是由Linux Logo制作工具LogoMaker移植而來,是一款“綠色軟件”,將其直接復(fù)制到Windows XP平臺即可運行。它可以把bmp,jpg等格式的圖片轉(zhuǎn)換為BSP(板級支持包)所需要的數(shù)組文件StartLogo.c,使用新生成的文件替換BSP中的同名文件,即可方便地更換Windows CE的啟動畫面[9]。StartLogo.c數(shù)組的頭部內(nèi)容如下:

        生成的默認(rèn)文件名稱為StartLogo.c,將其修改為Logo.c,并將其前兩個數(shù)組元素(這里是240,320)刪除,這樣做的目的只是方便代碼實現(xiàn)的簡化(下同),同時保存該文件到%_WINCEROOT%PlatformSrcBootloaderEboot文件夾目錄下。

        2.3.2 Eboot中相關(guān)函數(shù)的實現(xiàn)

        在%_WINCEROOT%PlatformSrcBootloaderEboot文件夾的main.c文件中的InitializeDisplay函數(shù)中添加頭文件:

        #include

        2.3.3 啟動調(diào)試

        將生成的映像文件下載到開發(fā)板中,重新啟動系統(tǒng),會發(fā)現(xiàn)在系統(tǒng)啟動的過程中出現(xiàn)了如圖2所示的畫面。

        圖2 啟動中的LOGO畫面Fig.2 LOGO screen in booting

        3 Eboot啟動LOGO的優(yōu)化

        從圖2可以清楚地看出,圖片模糊,失真。造成這個問題的原因是在目錄%_WINCEROOT%PLATFORMSMDK6410SrcBootloaderEboot下的eboot.bib有如下定義:

        從上面的MEMORY段可以看出Eboot的大小為512 KB,而Logo.c文件的大小卻是768 KB,加入LOGO后大小超過512 KB,導(dǎo)致生成的文件數(shù)據(jù)丟失。是否會超過了顯示緩存的大小呢?再看%_WINCEROOT%PLATFORMSMDK6410Filesconfig.bib有如下定義:

        系統(tǒng)定義了一個顯存的起始地址為0x86800000,大小為12 MB,顯然幀緩存的大小是足夠的。因此,可以認(rèn)為是顯示圖片過大導(dǎo)致eboot.bin超出規(guī)定大小的范圍。解決的辦法就是用算法將圖片進(jìn)行壓縮,然后在Eboot里面用相關(guān)代碼對縮小的圖片進(jìn)行相應(yīng)地放大。

        3.1 圖片縮放算法的思想

        在圖像進(jìn)行放大縮小的過程中,一般采用最近鄰法和線性插值法。如果采用最近鄰法,在把圖像放大較大倍數(shù)時會產(chǎn)生馬賽克形狀,放大倍數(shù)越大,這種現(xiàn)象越發(fā)明顯[10]。

        本文為了得到更好的放大圖像的質(zhì)量,采用線性插值法。如圖3所示,當(dāng)求出的地址與格子點不一致之時,先求出與其相鄰的4個格子點的距離之比,用該比率對近鄰4像素的濃度值進(jìn)行插值處理。計算該濃度值的公式:

        其中,[x],[y]分別為不超過 x,y 的整數(shù),d(x,y)表示坐標(biāo)(x,y)處的濃度值。[x],[y]分別代表不超過它的最大整數(shù)。采用線性插值法處理的圖像可以在即時放大的場合,沒有馬賽克形狀,也變得比較圓滑柔順。

        圖3 線性插值法(從鄰近4個點進(jìn)行線性插值)Fig.3 Linear interpolation(Linear interpolation from the nearest four points)

        線性插值法不僅可以采用鄰近4點,也可以采用鄰近9點或者16點進(jìn)行高次插值法。在進(jìn)行嚴(yán)密的縮小處理時,需要預(yù)先進(jìn)行前置濾波處理。

        3.2 圖片縮放算法的實現(xiàn)

        用photoshop等圖形處理軟件,將圖片縮小1倍,由于這里使用的屏幕為 240×320,因此,將圖片縮小為 120×160,取名為Logo.jpg。使用StartLogo工具將Logo.jpg轉(zhuǎn)換成相應(yīng)的數(shù)組文件Logo.c。將新生成的文件替換BSP中的同名文件。其他步驟和上述常規(guī)做法一致。最后給出在main.c文件中的InitializeDisplay函數(shù)中添加采用線性插值法進(jìn)行圖像擴大的主要代碼:

        3.3 調(diào) 試

        重新生成映像并下載到硬件平臺中,在系統(tǒng)啟動的過程中出現(xiàn)如圖4所示的LOGO畫面。

        經(jīng)過算法的優(yōu)化之后,可以清楚地看見圖像顯示效果明顯有了提升,而Eboot.bin的大小卻沒有超過512 KB,數(shù)據(jù)也不會因此而丟失。

        實驗證明,線性插值算法對于縮放比例較小的情況是完全可以接受的。在通常情況下,縮小0.5倍以上或放大3.0倍以下對于任何圖像都是可以接受的。

        圖4 算法優(yōu)化后的LOGO啟動畫面Fig.4 LOGO screen after optimized algorithm

        4 結(jié) 論

        本文提出一種普遍適用的基于Windows CE6.0操作系統(tǒng)的啟動LOGO畫面的制作和優(yōu)化。該方法具有良好的可讀性和移植性,凡是相同系統(tǒng)的產(chǎn)品實現(xiàn)開機啟動LOGO畫面,均可采用本文提出的方法。該設(shè)計方法已在IPTV手持式測試儀中應(yīng)用,可以非常清晰地顯示開機啟動LOGO的畫面,性能穩(wěn)定,運行良好。

        [1]張冬泉,譚南林.Windows CE開發(fā)實例精粹[M].北京:電子工業(yè)出版社,2008.

        [2]張飛,白瑞林,陸林.WinCE 5.0 Bootloader的設(shè)計與實現(xiàn)[J].計算機工程,2009,35(7):232-234.ZHANG Fei,BAI Rui-lin,LU Lin.Design and implemention of WinCE 5.0 Bootloader[J].Computer Engineering,2009,35(7):232-234.

        [3]張東泉,譚南林,王雪梅,等.WINDOWS CE實用開發(fā)技術(shù)[M].2版.北京:電子工業(yè)出版社,2008.

        [4]李大為.Windows CE工程實踐完全解析[M].北京:中國電力出版社,2008.

        [5]周建設(shè).Windows CE設(shè)備驅(qū)動及BSP開發(fā)指南[M].北京:中國電力出版社,2009.

        [6]Pavlov S,Belevsky P.Windows Embedded CE 6.0 Fundamentals[M].Microsoft Press,2008.

        [7]李昊華,鄭文曦.Windows CE中BootLoader啟動畫面的設(shè)計與實現(xiàn)[J].自動化與儀表,2008,23(11):8-10.LI Hao-hua,ZHENG Wen-xi.Design and implementation of Boot Logo in Windows CE Boot Loader[J].Automation and Instrumentation,2008,23(11):8-10.

        [8]楊霄雪,王力虎,葉佳寧,等.U-Boot啟動logo制作的研究[J].電腦知識與技術(shù),2009,5(3):1731-1733.YANG Xiao-xue,WANG Li-hu,YE Jia-ning,et al.Research on the implementation of U-Boot start Logo[J].Computer Knowledge and Technology,2009,5(3):1731-1733.

        [9]友善之臂公司.ARM9 MINI2440用戶手冊[EB/OL].(2010-02-04)[2010-04-29].http://www.arm123.com.cn/mini2440/mini2440-um-20100204.rar.

        [10]井上誠喜,八木伸行,林正樹,等.C語言實用數(shù)字圖像處理[M].白玉林,譯.北京:科學(xué)出版社,2003.

        猜你喜歡
        代碼啟動控制器
        創(chuàng)世代碼
        動漫星空(2018年11期)2018-10-26 02:24:02
        創(chuàng)世代碼
        動漫星空(2018年2期)2018-10-26 02:11:00
        創(chuàng)世代碼
        動漫星空(2018年9期)2018-10-26 01:16:48
        創(chuàng)世代碼
        動漫星空(2018年5期)2018-10-26 01:15:02
        霧霾來襲 限產(chǎn)再次啟動
        安發(fā)生物啟動2017
        西部最大規(guī)模云計算中心啟動
        俄媒:上合組織或9月啟動擴員
        模糊PID控制器設(shè)計及MATLAB仿真
        MOXA RTU控制器ioPAC 5542系列
        自動化博覽(2014年9期)2014-02-28 22:33:17
        成人综合亚洲欧美一区h| 亚洲精品蜜夜内射| 欧美最大胆的西西人体44| 亚洲精品国产综合一线久久| 无码啪啪人妻| 国产高清人肉av在线一区二区| 五月四房播播| 亚洲av中文无码字幕色三| 亚洲欧洲日产国码久在线| 亚洲一区二区自偷自拍另类| av网站可以直接看的| 国产亚洲精品在线视频| 免费观看羞羞视频网站| 免费大片黄在线观看| 欧美一级鲁丝片免费一区| 亚洲精品第四页中文字幕| 久久天堂综合亚洲伊人hd妓女| 日本www一道久久久免费榴莲| 杨幂国产精品一区二区| 人妻少妇精品视中文字幕免费| 精品无码无人网站免费视频| 亚洲在AV极品无码天堂手机版| 亚洲女同同性少妇熟女| 一区二区三区四区中文字幕av| 久久综合九色综合97欧美| 欧美激情αv一区二区三区| 一本无码av一区二区三区| 日本黄色高清视频久久| 国产内射一级一片内射视频| 久久夜色精品国产噜噜亚洲av | 国产免费av片在线观看播放| 成人综合激情自拍视频在线观看| 日日噜噜夜夜狠狠视频| 午夜福利麻豆国产精品| 亚洲国产一区二区三区亚瑟| 69搡老女人老妇女老熟妇| 国产精品国产三级久久| 无码人妻av免费一区二区三区| 亚洲mv国产精品mv日本mv| 少妇我被躁爽到高潮在线影片| 国产成人精品亚洲日本在线观看|