6410 wince IROM引导SD升级 回忆

前段时间,需要把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:

!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:

!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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值