Wince6 Eboot中加入開機畫面

2021-06-20 04:21:09 字數 1232 閱讀 2346

**:

昨天研究了一下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循壞把陣列都拷貝到...

wince5 0 Eboot下USB中斷機制

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