原始出處
、作者資訊和本宣告。否則將追究法律責任。
由於bootloader本身大小的限制,不可能將的c陣列放到bootloader中去,要想實現顯示載入的進度,只能對framebuffer進行操作。
在不理解的時候我很土的以為對framebuffer的操作是不太可能的。其實很簡單,無非就是用資料填到framebuffer中的合適位置。我現在用的是水平方向填充的,例如320x240,16位真彩色,那麼一行中需要320x2個byte。這樣就可以很容易實現在framebuffer中畫很簡單的圖了,例如矩形,和填充矩形。進度條無非也就是這樣搞的。
首先要在bootloader的main函式中initdisplay,這個和cfw.c中一樣可以拷貝過來用,如果你的bootloader的main執行是在還沒有使能mmu時,那麼就要修改framebuffer和lcd的控制器等的位址為實體地址才行。
接下來就是在配置好lcd(initdisplay)之後用固定顏色填充整個framebuffer,再在特定的位置填充別的顏色以實現進度條的矩形。
最後就是在bootloader從flash拷貝nk到ram中的實現函式中呼叫矩形填充函式,根據nk的大小和進度條的長度(象素數)決定每拷貝多少個512b填充進度條的一格(bootloader中讀flash是以sector為單位的,1sector=512b);
下面是我實現畫矩形和填充矩形的函式:
void drawprocess()
}
void drawmark(int index)
}
本文出自 「bluefish
」 部落格,請務必保留此出處http://bluefish.blog.51cto.com/214870/58109
WinCE開發中Boot Loader的點點滴滴
wince開發中boot loader的點點滴滴 boot loader是定製windows ce作業系統過程中乙個重要的開發環節。boot loader的作用正如名字中的兩個單詞 boot,既引導系統,如果基於ce的產品採用bios實現硬體初始化和配置,那麼boot loader只需引導軟體系統。...
bootloader中的偽指令分析
偽指令 pseudo instruction 是用於告訴匯程式設計序如何進行彙編的指令。它既不控制機器的操作也不被彙編成機器 只能為匯程式設計序所識別並指導彙編如何進行。比如 ldr r0,0x48000000 由於0x48000000比較簡單,可以表示成立即數 每個立即數由乙個8位的常數迴圈右移偶...
WinCE開發中Boot Loader的點點滴滴
我很慶幸在公司的產品開發過程中並沒有受到boot loader帶來的阻力,因為我們採用msdos loadcepc來啟動ce作業系統。顯然這樣的幸運不是永遠的,所以對boot loader應該有足夠的研究和了解,做到未雨綢繆。boot loader是定製windows ce作業系統過程中乙個重要的開...