以下信息是从NAND FLASH启动时,过一段时间串口没有输入则直接拷贝FLASH中WINCE系统数据到SDRAM中并运行
USB: IN_ENDPOINT:1 OUT_ENDPOINT:3
FORMAT: +++
NOTE: 1. Power off/on or press the reset button for 1 sec
in order to get a valid USB device address.
2. For additional menu, Press any key.
USB host is not connected yet.
Read chip id = ec76
Nand flash status = c0
Undefined instruction exception!!!
这是从FLASH启动时输出的异常信息,在这个异常处应该是输出load kernel,然后开始从FLASH将系统加载到SDRAM中,还没有进WINCE.
还有一个调试信息如下:
###### Select Menu ######
[0] Download & Run
[1] Download Only
[2] Download From UART
[3] Write File to SST39VF160
[4] Write File to NAND Flash
[5] Boot OS
[6] Erase NAND Flash Partition
[7] Config parameters
[8] Relocate NK.bin
Found single BIN signature.
Image start is 0x80200000, length is 0x01150270
REC start 0x80200000, length 0x4
Dabort exception!!!
这是我从USB下载NK.BIN文件到SDRAM后开始解压出现的错误.
我再过一遍整个BOOT从64M改动到128M的整个流程,看到底有什么纰漏
1、由于是在BANK6将64扩到128,硬件上仅将内存的BANK选择线由地址线24 25调整为25 26
2、软件对于扫描位数调整为10位,时序由于是从K4S561632切换成MT48LC32M16A2TG-75,因此仔细比过这两个手册,都是75的,时序要设置的几个参数是一样的,仅有一个有1ns误差,但是在误差范围内。
3、堆栈地址,堆地址以及ISR等地址都针对128M进行改动。这个在OPTION.H以及option.inc都进行了调整。
4、BOOT初始化时SDRAM的擦写由64M变为128M,但这段是按键方才执行,因此没什么影响
5、其中对于CL=3,CL=2都进行过尝试,没有什么改善
6、MMU初始化针对BANK6进行调整
就以上这些,其余和64M控制一样。
但是使用ADS12调试这个BOOT,全速运行就可以,不会出现上述异常。
并且也进行过断点调试,在程序中分配的堆也确实在0x37ff0000以后。在程序中加内存测试代码写SDRAM,然后观察实际数据确实与写的相同。
注: 进行过以下测试,就是在ADS运行BOOT时,在是否要拷贝FLASH内容到SDRAM中强行拷贝,到是出现一个现象,应该是拷贝128K数据,但是拷贝了两页就直接跳到拷贝完成的地址了,看汇编代码应该是正确的代码,不是下载到SDRAM出现数据错误.
再实验一下.............