**:
昨天研究了一下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...