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

6410 wince6.0 Eboot无法跳转到NK解决思路

2013-01-26 
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那里的问题了,正在调试中。。。


很大可能是你的NK没有从Nandflash中拷贝到RAM中,所以你跳转到RAM的地址就没反应了。这也就能解释为什么你打印跳转地址的那一段内存都是00的问题

热点排行