在友坚给的wince开发BSP包中,只有三个文件Eboot.Whimory,NBL1.LSB,NBL2如果要生成IROM_SD_EBOOT.nb0 文件,用SD卡引导,还需要在加入几个文件,这里参考另外一家开发板厂家的BSP包,将需要的文件移植到友坚的开发板上。还需要几个文件
BLCOMMON
NBL1.IROM_SD
SDMMC_LIB
uuid
首先将缺的这几个文件拷贝到友坚开发板的Src\Bootloader目录下,然后在修改dirs文件
DIRS= \
sdmmc_lib \
uuid \
Eboot.Whimory \
NBL1.LSB \
NBL2 \
NBL1.IROM_SD \
而在编译过程中需要SD卡库文件的支持,需要将FAT_LIB目录全部拷贝到Src\Bootloader\Eboot.Whimory这个目录下,并且需要将读写SD卡的文件SDInterface2.c也拷贝到这个目录下,
然后在修改\Src\Bootloader\Eboot.Whimorysources文件
!IF "$(BSP_TYPE)"=="$(BSP_SMDK2416)",将需要的库文件全部加入
$(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\oal_cache_s3c2416_926.lib \
$(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\uuid_lib.lib \
.\FAT_LIB\FAT_LIB.lib \
$(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\HSMMCEBOOT_LIB.lib \
!ENDIF
注意添加的位置,不然后出现编译报错的问题
然后在wince5.0开发环境下单独编译bootloader目录,会出现很多的错误,主要是结构体定义不准确,如
需要S3C2450_IOPORT_REG改为S3C2416_IOPORT_REG,因为友坚提供的BSP包中没有定义S3C2450的接口,只需将提到S3C2450的地方改为S3C2416即可
然后在重新编译,就不会出现错误信息了。
注意需要将编译生成的一些工具拷贝到target目录下,如
IROM_SD.exe文件等
编译完成后就会生成
block0img.nb0,EBOOT.bin,IROM_SD.bin等文件,但是不会生成IROM_SD_EBOOT.nb0 这个文件
这个文件生成是需要几个文件一起压缩合成的,需要更改一个目录下的Src\Bootloader\NBL1.IROM_SD\makefile.inc文件
!IF "$(BSP_SMDK2416_CFG)"=="1"
# copy /y/b $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\eboot_sdfuser.nb0 + $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\IROM_SD.nb0 $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\IROM_SD_EBOOT.nb0
copy /y/b $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\eboot.nb0 + $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\IROM_SD.nb0 $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)\IROM_SD_EBOOT.nb0
!ENDIF
其实就是将BSP_SMDK2450_CFG改成BSP_SMDK2416_CFG就可以执行包含的语句,即是生成SD卡引导文件的命令。
在全部重新编译一次,就可以生成IROM_SD_EBOOT.nb0文件了。
转载请注明