首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

6410 wince6.0 Eboot没法跳转到NK

2012-10-13 
6410 wince6.0 Eboot无法跳转到NK坏境:6410板子,wince6.0系统,4G MLC Nandflash情况描述:1、SD启动方式下,

6410 wince6.0 Eboot无法跳转到NK
坏境:6410板子,wince6.0系统,4G MLC Nandflash
情况描述:
1、SD启动方式下,可以进行stepldr、Eboot、NK等下载,下载完后,可Launch进入到系统
2、拨到Nandflash启动,插入SD卡,可进入到Eboot,有NK的情况下,可引导进入升级NK,升级完后,可Launch进入到系统(Eboot已实现读取SD卡中是否有NK,有NK则进行升级,该功能在2G的Nandflash下测试通过)。
若不插入SD卡,或SD卡中没有NK,则应该直接从Eboot那边Launch到NK。但发现到了跳转的那个地方就停住了。

调试信息如下:
System ready!
Preparing for download...
waitforconnect
INFO: using TOC[1] dwJumpAddress: 0x80157a2c
INFO: OEMLaunch: Jumping to Physical Address 0x50157A2Ch (Virtual Address 0x80157A2Ch)...

使用ViewBin工具查看NK,看到跳转的地址是0x80157a2c,长度为0x027c8c6c
config.bib中的部分配置如下:
#define NKNAME NK
;#define NKSTART 80100000
;#define NKSTART 80105000
#define NKSTART 80150000 ; gjl 80145400  
;
;#define NKLEN 03F00000 ; 63MB (Max size, to match image_cfg.* files. This will be auto-sized)
;#define NKLEN 02800000 ; 40MB
#define NKLEN 027FB000 ; 40MB


#define RAMNAME RAM

;#define RAMSTART 83200000 ; 84000000
;#define RAMLEN 05000000 ; 05000000--OK 01D00000 29MB (Will be auto-sized from the end of NK)

#define RAMSTART 86800000 ;88000000--ok
#define RAMLEN 09800000 ; 09800000 08000000--OK 08000000 128MB


从上述情况来看,跳转地址没错,NK大小也没有超过定义的最大值。理论上应该是可以的,但实际却是不行。
SD的IROM固化程序是自己移植的,一直在怀疑这个创建分区部分有问题,其中代码如下:
  hPart = BP_OpenPartition( (IMAGE_START_BLOCK+1)*PAGES_PER_BLOCK, // next block of MBR
  0x19000, //SECTOR_TO_BLOCK_SIZE(FILE_TO_SECTOR_SIZE(dwBINFSPartLength))*PAGES_PER_BLOCK, // align to block
  PART_BINFS,
  TRUE,
  PART_OPEN_ALWAYS);
这个调用时WriteOSImageToBootMedia()函数里面的。

请大家帮忙分析下,这个到底是怎么回事?为什么无法由Eboot跳转到NK(Nandflash启动方式下直接进入系统)



[解决办法]
既然LZ排除了NK的问题和跳转地址的问题,那么LZ可以看看跳转的时候是否有跳到NK的startup.s那里。如果没有跳到这里的话,说明在Eboot那边从Nandflash中读取NK到RAM中就有问题了。
[解决办法]

探讨
引用:

既然LZ排除了NK的问题和跳转地址的问题,那么LZ可以看看跳转的时候是否有跳到NK的startup.s那里。如果没有跳到这里的话,说明在Eboot那边从Nandflash中读取NK到RAM中就有问题了。


已经确认没有跳到NK的startup.s那里,添加的点灯没有反应。看来是Eboot那里的问题了,正在调试中。。。

热点排行