注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

男儿当自强的博客

每天进步一点

 
 
 

日志

 
 
 
 

WINCE6.0+S3C2451基于FMD flash架构的BSP移植记录---stepldr.bib、eboot.bib和loader.h  

2012-08-04 17:19:15|  分类: windows CE 驱动 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 

WINCE6.0+S3C2451基于FMD flash架构的BSP移植记录---stepldr.bib、eboot.bib和loader.h

 

备注:基于SMDK2450_WinCE60_PM_REL_1.13_090105的BSP包移植

 

1.       Stepldr.bib

Stepldr.bib的内容如下:

MEMORY

;   Name      Start     Size      Type

;   -------   --------  --------  ----

    STEPLDR    40000000  00002000  RAMIMAGE ;for 2450

    STACK   33ff5800  00001000  RESERVED

    RAM     33ff0000  00005000  RAM

 

CONFIG

         COMPRESSION=ON

         PROFILE=OFF

         KERNELFIXUPS=ON

   

         ROMSTART=40000000

         ROMWIDTH=32

         ROMSIZE=00001000

 

MODULES

;   Name        Path                                                               Memory Type

;   ----------  --------------------------------------------------------------     -----------

nk.exe  $(_TARGETPLATROOT)\target\$(_TGTCPU)\$(WINCEDEBUG)\stepldr.exe     STEPLDR

这里STEPLDR和ROMSTART的值都是40000000,我之前接触过的三星处理器2440、2443、6410此文件这两个值都是00000000,可为什么S3C2451这里确是40000000,我们来看2451处理器NAND FLASH控制器的描述:

WINCE6.0+S3C2451基于FMD flash架构的BSP移植记录---stepldr.bib、eboot.bib和loader.h - 男儿当自强 - 男儿当自强的博客

 

图1

另外,我们可以通过2451文档《IROM_ApplicationNoteRev0.041》的memory map图可以进一步理解:

WINCE6.0+S3C2451基于FMD flash架构的BSP移植记录---stepldr.bib、eboot.bib和loader.h - 男儿当自强 - 男儿当自强的博客

 

图2

结合图1和图2就可知这里为什么STEPLDR的起始地址是0x40000000,但是我发现PM架构BSP的BOOTLOADER\NBL1.LSB\nbl1.bib文件下面这两个值却是0x00000000,在此不解,期望知道的朋友也可以分享一下。

 

2.       eboot.bib文件

我们来看三星原厂BSP包此文件的定义:

MEMORY

;   Name     Start     Size      Type

;   -------  --------  --------  ----

    ARGS     80020800  00000800  RESERVED

    RAM      80021000  0000B000  RAM   

    STACK    8002c000  0000A000  RESERVED

    EBOOT    80038000  00040000  RAMIMAGE

    BINFS    80080000  00021000  RESERVED

 

; Area used to cache nk.bin while programming flash

    FLSCACHE 80200000  01400000  RESERVED

    DISPLAY  80100000  00100000  RESERVED

 

CONFIG

         COMPRESSION=OFF

         PROFILE=OFF

         KERNELFIXUPS=ON

;        ROMOFFSET=25FC8000

         SRE=ON

         ROMSTART=80038000

         ROMWIDTH=32

         ROMSIZE=40000

 

MODULES

;   Name            Path                                                              Memory Type

;   --------------  ----------------------------------------------                    -----------

    nk.exe          $(_TARGETPLATROOT)\target\$(_TGTCPU)\$(WINCEDEBUG)\eboot.exe      EBOOT

由上面的内容看到EBOOT    80038000  00040000  RAMIMAGE,这里表示EBOOT镜像文件EBOOT.bin在运行时将会加载到地址为0x80038000这个内存单元起始的地方,大小为0x00040000(256KB),RAMIMAGE表示这是一块用于加载WINCE镜像文件的内存区域。因为我们的EBOOT.bin接近512KB,那么这里肯定就要做相应的调整,比如,我调整为

EBOOT    80038000  00080000  RAMIMAGE

既然EOOT的镜像文件大小扩大了,那么后面的BINFS肯定也是需要做相应的调整,可以我只移植过程中,就恰好忘记对BINFS这一项做调整。在我们移植eboot的过程中,虽然eboot镜像文件的增加,eboot.bin的大小也由刚开始的237KB继续增加,在继续移植eboot的编译过程中突然发现生成的EBOOT.bin大小为1KB,刚开始还始终搞不清楚是什么问题导致的?就通过分析eboot文件夹下面的build.log文件:

WINCE6.0+S3C2451基于FMD flash架构的BSP移植记录---stepldr.bib、eboot.bib和loader.h - 男儿当自强 - 男儿当自强的博客

 

图3

这里为什么提到的开始地址为0x8003900,而不是0x80038000呢?期望知道的朋友可以分享一下,这里0x49000是指eboot.bin的实际大小, 0x800a1000恰好是BINFS的起始地址0x80080000,大小为0x00021000这镜像文件的所在内存单元后面。由此可以看出实际的ebot.bin的实际大小0x49000+起始地址0x80038000=0x800810000已经大小BINFS的起始地址0x80080000了,这样就和BINFS保留的区域冲突了,为了解决这个问题,把BINFS的起始地址及大小向后偏移256KB,如下:

BINFS    800C0000  00021000  RESERVED

 

3.       loader.h文件

因为我们修改了eboot.bib的配置,所以在eboot\loader.h文件中也要做相应的修改

#define EBOOT_RAM_IMAGE_BASE        0x80038000

//#define EBOOT_RAM_IMAGE_SIZE        0x00040000 //kandi mrk

#define EBOOT_RAM_IMAGE_SIZE        0x00080000 //kandi add

 

// BinFS work area defined in boot.bib

//#define BINFS_RAM_START             (0x80080000 | CACHED_TO_UNCACHED_OFFSET)   // uncached,kandi mark

#define BINFS_RAM_START             (0x800C0000 | CACHED_TO_UNCACHED_OFFSET)   // uncached,kandi add

 

  评论这张
 
阅读(1445)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017