当前位置: 代码迷 >> WinCE >> 烧写eboot.nb0后系统仍从之前的xip.nb0启动解决思路
  详细解决方案

烧写eboot.nb0后系统仍从之前的xip.nb0启动解决思路

热度:126   发布时间:2016-04-28 13:36:14.0
烧写eboot.nb0后系统仍从之前的xip.nb0启动
最近发现一个很奇怪的问题:在使用DNW烧写系统时,先将xip.nb0烧写进去,然后烧写eboot.nb0.但此时系统会自动重启并且加载的还是之前的xip.nb0
初步分析发现eboot下的BootloaderMain();函数根本就没被执行
如下是异常时和成功时的串口信息:
1.异常情况
###### Select Menu ######
[0] Download & Run
[1] Download Only
[2] Test SDRAM
[3] Change The Console UART Ch.
[4] Clear unused area in SDRAM

Download Only is selected.
Enter temporary download address,if not input,Defualt=0x32001000
Enter temporary download address:

The temporary download address is 0x32001000.

USB host is connected. Waiting a download.

Now, Downloading [ADDRESS:32001000h,TOTAL:30408714]
RECEIVED FILE SIZE:30408714
(919.8KB/S,33.1S)
Download O.K.


###### Select Menu ######
[0] Download & Run
[1] Download Only
[2] Test SDRAM
[3] Change The Console UART Ch.
[4] Clear unused area in SDRAM

Download&Run is selected.

USB host is connected. Waiting a download.

Now, Downloading [ADDRESS:30038000h,TOTAL:262154]
RECEIVED FILE SIZE: 262154
(879.9KB/S,0.3S)
Download O.K.
2.正常情况
###### Select Menu ######
 [0] Download & Run
 [1] Download Only
 [2] Test SDRAM 
 [3] Change The Console UART Ch.
 [4] Clear unused area in SDRAM 

Download Only is selected.
Enter temporary download address,if not input,Defualt=0x32001000
Enter temporary download address:

The temporary download address is 0x32001000.

USB host is connected. Waiting a download.

Now, Downloading [ADDRESS:32001000h,TOTAL:30408714]
RECEIVED FILE SIZE:30408714
(926.3KB/S,32.8S)
Download O.K.


###### Select Menu ######
 [0] Download & Run
 [1] Download Only
 [2] Test SDRAM 
 [3] Change The Console UART Ch.
 [4] Clear unused area in SDRAM 

Download&Run is selected.

USB host is connected. Waiting a download.

Now, Downloading [ADDRESS:30038000h,TOTAL:262154]
RECEIVED FILE SIZE: 262154
(884.0KB/S,0.3S)
Download O.K.


Microsoft Windows CE Ethernet Bootloader Common Library Version 1.1 Built Sep 30 2007 16:01:20
Microsoft Windows CE Bootloader for the QT2440 Version 2.4 Built Sep 3 seconds. 
Ethernet Boot Loader Configuration:

0) IP address: 0.0.0.0
1) Subnet mask: 255.255.255.0
2) DHCP: Disabled
3) Boot delay: 5 seconds
4) Reset to factory default configuration
5) Startup image: LAUNCH EXISTING
6) Program disk image into SmartMedia card: Enabled
7) Program CS8900 MAC address (00:00:00:00:00:00)
8) Kernel Debugger: ENABLED
9) Format Boot Media for BinFS
A) Mark bootloader sectors as reserved
F) Low-level format the Smart Media card
D) Download image now
L) LAUNCH existing Boot Media image
R) Read Configuration 
W) Write Configuration Right Now
X) FS1610 PMIC Menu

Enter your selection: X

------解决方案--------------------
EBOOT和XIP分别是两样东西,一个是bootloader,一个是os,你只更新了eboot,OS当然还是之前的了,所以肯定还是以前的XIP。
------解决方案--------------------
两个问题:1 确定是在烧写而不是用2440MON下载到内存运行?
2 开发板的启动方式?NOR ? NAND ?


------解决方案--------------------
按你的意思还是解决了的嘛
至于原因,你这里是XIP,是不是实现的MULTIBIN呢?XIP本来就是在本地执行的意思。也就是说你已经下载到flash里面了。
这里面还有几点疑问:
1.你说的“如果我将新的内核和之前原始的eboot.nb0结合一起烧录时机器上的系统就是新的内核”这句话应该怎么理解?先烧写eboot.nb0再烧写xip.nb0嘛?还是什么顺序或者组合呢?
2..nb0是raw型数据,也就是原始型二进制数据快照,只能烧写进RAM不能下载到flash的。这个你要看看DownloadImage函数吧。你有没有生成.bin的文件呢?或许可以尝试一下eboot.bin烧写xip.bin,个人意见!呵呵~~