WINCEシステムebootでは、SDカードからstepldr.nb 0を読み込む際にバージョン情報を検出します.

2727 ワード

WINCEシステムebootでは、SDカードからstepldr.nb 0を読み込む際にバージョン情報を検出します.
 
まず『VS 2005コンソールプログラム改正nb0ファイル』を見ます.
http://blog.csdn.net/loongembedded/article/details/29797783
 
次に私達が実現するのは、ebootがSDカードからstepldr.nb 0を読み込む際にstepldrのバージョン情報を確認し、バージョン情報によって、引き続きアップグレードするかどうかを決定することです.
 
実現過程には2つの方法があります.この2つの方式の考えは同じです.ただ、具体的な細部の違いを実現するために、まず公共の実現部分を説明します.
 
1.     構造体IMG_CHECK_VERION
 
<span style="font-size:14px;">typedef struct_IMG_CHECK_VERSION_
{
       char ImageVersion[VERSION_LEN];
}IMG_CHECK_VERSION,*PIMG_CHECK_VERSION;</span>
ImageVersionは、環境変数から渡されたバージョン情報を記録しています.
 
2.     CheckImageVersion関数
 
この関数は、アップグレードするstepldr.nb 0のバージョン情報と現在実行中のstepldr.nb 0のバージョン情報との比較を担当しています.
<span style="font-size:14px;">BOOLCheckImageVersion(char *pCheckStr, char *pBuf)
{
       IMG_CHECK_VERSION ImgChk;
 
       memcpy((PBYTE)&ImgChk,pBuf,sizeof(IMG_CHECK_VERSION));
       if(strlen(pCheckStr) !=strlen(ImgChk.ImageVersion))
       {
              return FALSE;
       }
 
       if(strcmp(ImgChk.ImageVersion,pCheckStr)< 0)
       {
              return FALSE;
       }
       return TRUE;
}
 </span>
コールコードは以下の通りです.
CheckImageVersion(BSPuNBBT-uVERION,(PBYTE)guuuupDownPt-sizeof(IMGuCHECKuVERION)
 
ここで1番目のパラメータはBSP_です.NBBT_VERIONはsources.cmnと.batファイルに関連した定義があります.
(1)   sources.cmnファイルの定義は以下の通りです.
!IF「$」=「1」
CDEFINES=$(CDEFINES)-DBSP_NBBT_VERION=\"(BSPNBBT<UVERION)\"
!ENDIF
 
(2)  batファイルの定義は以下の通りです.
if/i"%BSPuC 5000_SLC%"=="set BSP_"NBBT_VERION=3.5 0
 
BSP_NBBT_VERIONの定義にはもう一つの方法があります.直接sources.cmnファイルで定義します.以下の通りです.
!IF「$」=「1」
CDEFINES=$(CDEFINES)-DBSP_NBBT_VERION=350
!ENDIF
 
呼び出しコードを
<span style="font-size:14px;">char NbootVersion[VERSION_LEN] ;
FormatString( NbootVersion, "%d.%d",BSP_NBOOT_VERSION/100, BSP_NBOOT_VERSION%100);
CheckImageVersion(NbootVersion,((PBYTE)g_pDownPt - sizeof(IMG_CHECK_VERSION)));
</span>
ここで注意したいのですが、BSP_NBBT_VERION=3.5、
FormathString(Nboot Version、“%d”、BSP NBB TgaVERION);Nboot Versionが出力した0は3.50ではなく、なぜなのか分かりません.だからBSP_に変更するしかないです.NBBT_VERION=350ですが、このような処理方法は私達が定義したバージョン情報とあまり一致していないので、やはり第1種を採用します.
 
3.     makefile.incファイル
コンパイル時に環境変数BSP_NBBT_VERIONの値はSteepldr.nb 0の最後にバージョン情報を追加します.Steepldr\makefile.incファイルに下記の内容を追加する必要があります.
copyドル(℃-PLART FOREMROT)\ドル(℃)\target\$(_TGTFTCPU)\USドル(WINCEBUG)\Stephldr.*(_FLATREASEEDIIR)
    カルルドル(℃)\Files\Add Version.exe(株)\u FLATREASEDIIR)\u 0026 quot;Steldr.nb 0"(BSPuNBBT-uVERION)