Wince6 Eboot中加入開機畫面

2021-09-30 08:40:34 字數 1439 閱讀 3198

昨天研究了一下 wince開機時加入個性化的畫面,折騰了一上午,不是花屏就是 ce起不來……終於搞定,分享一下經驗吧。。。

wince加入開機畫面方法一般有以下兩種:

1、  在檔案中下定義乙個常量大陣列,幾百 k,如 const ushort screenbitmap ,在顯示的地方利用 for循壞把陣列都拷貝到相應的 buffer中。

2、  把資料存放到 flash的某位置,啟動時使用特定方法把它讀取。

第二種方法實現可能有一定的難度,沒研究過,如有實現的,請告之俺。

第一種方法在啟動的過程中,直接往顯示卡的framebuffer裡面寫資料。這個工作一般在

eboot

裡面做,如果在

os啟動的時候一般就太晚了,如果不加入人為的延時,啟動畫面剛一顯示,就到了

os畫面了,看不到效果。在

eboot

中,有個

initdisplay()

static void initdisplay(void)}注

意到 memcpy((void *)image_framebuffer_ua_base, screenbitmap, lcd_array_size_tft_16bit); 顯示啟動畫面其實就這一句,直接呼叫memcpy

函式,screenbitmap陣列中的影象資料複製到 image_framebuffer_ua_base這個位址這個其實就是直接往顯示卡緩衝區裡面填東西了。 screenbitmap就是乙個常量陣列,可以從網上找一些相關工具來生成,也可以自己寫個工具,把一張bmp轉成 16進製的陣列

到這裡,基本上就實現了開機畫面,但有的會存在一些問題。

我的裝置是解析度是 320*240 ,把一張320*240

的bmp

轉換成陣列後,有500

多kb,boot loader

沒有這麼大的空間(

當然這個是可以修改的)

,再加上生成的eboot.nb0

也很大,通過並口燒入需要很長時間。有什麼辦法可以解決呢?……再笨你也能想到壓縮,是的,壓縮燒入,執行的時候再解壓。在網上搜尋了一下,有的是使用插值演算法。弄一張小,把它插值到320 x 240

。使用別人的乙個演算法,放大4

倍,乙個點變四個點。**也複製過來:

for(i = 0; i < 160 * 120; i++)

自己再準備一張160*120的,轉換、編譯、燒入,成功 。。。

文章原位址

Wince6 Eboot中加入開機畫面

wince6 eboot中加入開機畫面 昨天研究了一下 wince開機時加入個性化的畫面,折騰了一上午,不是花屏就是 ce起不來 終於搞定,分享一下經驗吧。wince加入開機畫面方法一般有以下兩種 1 在檔案中下定義乙個常量大陣列,幾百 k,如 const ushort screenbitmap 在...

Wince6 Eboot中加入開機畫面

昨天研究了一下wince開機時加入個性化的畫面,折騰了一上午,不是花屏就是ce起不來 終於搞定,分享一下經驗吧。wince加入開機畫面方法一般有以下兩種 1 在檔案中下定義乙個常量大陣列,幾百k,如 const ushort screenbitmap 在顯示的地方利用for循壞把陣列都拷貝到相應的b...

wince5 0 Eboot下USB中斷機制

開始在eboot中使用usb的時候很奇怪中斷響應。因為在eboot和stepldr中都沒有看到有對中斷向量表部分的處理。那麼這個中斷是怎麼觸發?最後在usb.c中的isr init找到這句話 pisr unsigned 0xea000000 unsigned isrhandler 0x8000000...