程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 6410 wince IROM引導SD升級 回憶

6410 wince IROM引導SD升級 回憶

編輯:C++入門知識

前段時間,需要把IROM這個搞一下。主要是因為要更換Nandflash,而飛凌提供的IROM只支持2G的,不支持4G的。所以需要自己把這個給搞出來

IROM是一個nb0二進制文件,主要是固化到SD卡上,然後在開機的時候,由IROM啟動方式進入。CPU會跳轉到SD卡上的IROM,進行引導升級Stepldr、Eboot和NK。


由於我用的飛凌6410開發板並不提供這個源碼,所以只能自己搞一個。

通過別人提供的友堅6410的這個Eboot.SDFuser和NBL1.IROM_SD。來進行移植IROM。

至於IROM的啟動結構,這裡就不多說了。網上很多例子,這裡提供一個網址:點擊打開鏈接


移植這個的時候,碰到很多問題,如:

友堅的Eboot.SDFuser裡面用到了EBOOT.WHIMORY架構,而我使用的飛凌BSP裡面是沒有這玩意的。再加上我這個Nandflash使用的MLC,而不是SLC,這個就增加了移植的難度。


我這裡移植後,生成的IROM文件名為:IROM_SD_EBOOT.nb0

主要由Eboot.SDFuser和NBL1.IROM_SD和組合而成。(我這裡的Eboot.SDFuser改名為EBOOT.YSD)

EBOOT.YSD              --->  eboot_ysd
NBL1.IROM_SD       --->  Stepldr_IROM_SD
eboot_ysd.nb0 + stepldr_IROM_SD.nb0  --> IROM_SD_EBOOT.nb0
就是這樣生成這個IROM文件了。(組合生成文件這些,主要在對應的makefile.inc配置)


一開始,我是先把NBL1.IROM_SD 這個移植過來,這個相對比較容易。然後開始移植EBOOT.YSD(原來叫Eboot.SDFuser)

EBOOT.YSD主要由 BLCOMMON + EBOOT + FAT_LIB + SDMMC_LIB 組合而成。
關鍵點在於Eboot部分。我這裡直接使用我BSP仲的Eboot,因為Eboot.SDFuser中的Eboot使用到了EBOOT.WHIMORY裡面的很多東西,非常的不好移植。

這個Eboot會先刷寫Stepldr,然後刷寫Eboot,最好進行分區,刷寫NK。刷寫完可以Launch進入系統,也可以死等停在那裡。

移植這部分的時候,還需要注意顯示控制部分。

在格式化的時候,需要注意,低格會耗費很多時間的,可以把相應部分給屏蔽掉。

分區的時候有個需要注意的地方,如果分的區小余NK的大小的話,會導致無法進入系統的問題。

根據情況,裡面的Eboot的bib文件也是需要相應修改的。

 

NBL1.IROM_SD的makefile.inc:
[cpp]
!if 0 
Copyright (c) Microsoft Corporation.  All rights reserved. 
!endif 
!if 0 
Use of this source code is subject to the terms of the Microsoft end-user 
license agreement (EULA) under which you licensed this SOFTWARE PRODUCT. 
If you did not accept the terms of the EULA, you are not authorized to use 
this source code. For a copy of the EULA, please see the LICENSE.RTF on your 
install media. 
!endif 
!if 0 
 
 
Module Name: 
 
    makefile.inc 
 
    romimage $(ROMIMAGE_FLAGS) stepldr_irom_sd.bib 
 
!endif 
 
stepldr_romimage: 
!IF "$(NOLINK)" == "" 
    romimage $(ROMIMAGE_FLAGS) stepldr_irom_sd.bib 
     
  
#   copy /y/b $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\eboot_sdfuser.nb0 + $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\stepldr_IROM_SD.nb0 $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\IROM_SD_EBOOT.nb0 
    copy /y/b $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\eboot_ysd.nb0 + $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\stepldr_IROM_SD.nb0 $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\IROM_SD_EBOOT.nb0 
 
!IF "$(WINCEREL)"=="1" 
    copy $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\IROM_SD_EBOOT.* $(_FLATRELEASEDIR) 
    copy $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\stepldr_IROM_SD.* $(_FLATRELEASEDIR) 
!ENDIF 
 
 
!ENDIF 

EBOOT.YSD的makefile.inc:
[cpp] 
!if 0 
Copyright (c) Microsoft Corporation.  All rights reserved. 
!endif 
!if 0 
Use of this source code is subject to the terms of the Microsoft end-user 
license agreement (EULA) under which you licensed this SOFTWARE PRODUCT. 
If you did not accept the terms of the EULA, you are not authorized to use 
this source code. For a copy of the EULA, please see the LICENSE.RTF on your 
install media. 
!endif 
!IF 0 
 
 
Module Name: 
 
    makefile.inc 
 
!ENDIF 
 

# Take the eboot.exe that resulted from the standard build and generate eboot.bin from it. 

EbootImage: 
!IF "$(NOLINK)" == "" 
    romimage eboot_ysd.bib 
 
#   copy /y/b $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\eboot_ysd.nb0 + $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\stepldr_IROM_SD.nb0 $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\IROM_SD_EBOOT.nb0 
 
!IF "$(WINCEREL)"=="1" 
    copy $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\eboot_ysd.nb0 $(_FLATRELEASEDIR) 
    copy $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\eboot_ysd.bin $(_FLATRELEASEDIR) 
    copy $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\eboot_ysd.sre $(_FLATRELEASEDIR) 
!ENDIF 
!ENDIF 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved