WinCE Eboot中的OEM Flash函式

2021-04-22 01:44:51 字數 2299 閱讀 8373

1. bool oemisflashaddr(dword dwaddr)

#define flash_start      0

#define flash_length     0x02000000

bool oemisflashaddr(dword dwaddr)

return(false); }

2. bool oemstarteraseflash(dword dwstartaddr, dword dwlength)

該函式用於初始化flash的擦除,dwstartaddr表示要擦除的起始位址,dwlength為長度。通過這兩個引數計算flash中要被擦除的起始block和最後乙個block,以及要擦除多少個block,給個微軟的例子:

bool oemstarteraseflash (dword dwstartaddr, dword dwlength)

//確認該起始位址是block對齊的

if (dwstartaddr % flash_block_size)

//確認長度是4位元組對齊

if (dwlength & 0x03)

//根據flash的基位址和flash的block大小計算要擦除的起始block和最後乙個

//block以及多少個block

gnstartblock = (dwstartaddr - flash_base) / flash_block_size;

gnendblock   = ((dwstartaddr + dwlength + (flash_block_size - 1) - flash_base) / flash_block_size);

gnblocks     = (int)(gnendblock - gnstartblock);

gnblockcount = gnstartblock;

edbgoutputdebugstring("erasing flash blocks: start block = %d  end block = %d/r/n", gnstartblock, gnendblock);

return(true); }

3. void oemcontinueeraseflash (void)

void oemcontinueeraseflash(void)

++gnblockcount;

--nerasecount;

} return; }

4. bool oemfinisheraseflash (void)

該函式用於確認flash中所有的block都被擦除完成,給個微軟的例子:

bool oemfinisheraseflash(void)

return(true); }

5. bool oemwriteflash(dword dwimagestart, dword dwimagelength)

bool oemwriteflash(dword dwimagestart, dword dwimagelength)

//確認起始位址是block位元組對齊的

if (dwimagestart % flash_block_size)

//計算要寫入的block數量

nnumblocks   = (uchar)(dwimagelength / flash_block_size);

dwextrabytes = (dwimagelength % flash_block_size);

dwflashaddr  = dwimagestart;

pbcache      = oemmapmemaddr (dwimagestart, dwflashaddr);

//寫flash 

while(nnumblocks)

dwflashaddr += flash_block_size;

pbcache = oemmapmemaddr (dwimagestart, dwflashaddr);

--nnumblocks;

} //將額外的資料寫入flash中

if (dwextrabytes) }

return(true); }

上面的5個函式用於在eboot中支援flash操作功能。一般在開發bsp的時候,如果需要在eboot中實現flash的功能,會在eboot中建立乙個flash.c檔案,在該檔案中實現上述這些函式。建議看看blcommon.c中的downloadimage函式,可以幫助理解。

WinCE Eboot中的OEM控制函式

在eboot中有很多以oem開頭的函式,這些函式都會直接或間接的被blcommon模組呼叫,來完成相應的功能。這些oem函式就是我們需要根據自己的平台來實現的。可以說,實現了這些oem函式,eboot的功能就完成了。在eboot中有很多oem函式,有些是必須實現的,有些是不必實現的,而有些是根據你的...

WinCE Eboot中的OEM控制函式

在eboot中有很多以oem開頭的函式,這些函式都會直接或間接的被blcommon模組呼叫,來完成相應的功能。這些oem函式就是我們需要根據自己的平台來實現的。可以說,實現了這些oem函式,eboot的功能就完成了。在eboot中有很多oem函式,有些是必須實現的,有些是不必實現的,而有些是根據你的...

筆記本磁碟中OEM分割槽的使用

1 開機進入系統前,按f8,進入windows 10的高階啟動選項,選擇 修復計算機 2 選擇鍵盤輸入方法。3 如果有管理員密碼,需要輸入 如果沒有設定密碼,直接 確定 即可。4 進入系統恢復選項後,選擇 dell datasafe 還原和緊急備份 6 選擇 還原我的計算機 點選 下一步 7 選擇正...