今天拿出板子,开始玩一玩u-boot,板子上的Nor Flash 型号是:AM29LV160DB-90EC,NAND Flash型号是:K9F1208U0B,SDRAM型号是:HY57V561620FTP-H。
按照网上的方法开始移植过程,基本都比较顺利,但使用ping测试CS8900A的时候,总是提示:
CS8900 Ethernet chip not found?!
在网上找了很多方法,测试还是不成功,最后打开vivi源码,对比CS8900.c,在u-boot的cs8900.c中添加:
- #define rBWSCON (*(volatile unsigned *) 0x48000000 )
- #define rBANKCON3 (*(volatile unsigned *) 0x48000010 )
并在eth_init()函数中添加:
- printf(" rBWSCON 0x%08X \n",rBWSCON );
- rBWSCON = ( rBWSCON & ~(0xf<<12)) | (0xd << 12);
- printf(" rBWSCON 0x%08X \n",rBWSCON );
- rBANKCON3 = ( 3<<11)|(0x7<<8)|(0x1<<6)|(0x3<<4)|(0x3<<2);
重新编译下载到SDRAM中,ping一下主机,令人欣喜的打印出现:
- MY2440 # ping 192.168.3.49
- rBWSCON 0x22111112
- rBWSCON 0x2211D112
- host 192.168.0.10 is alive
这说明在某个地方BWSCON被修改过,导致读取CS8900A的ID错误,所以会出现上面的错误。具体原因有时间的时候再查找,如果哪位遇到同样的问题并找出原因请告知我。
可以ping通之后接下来试试tftp,问题又出现了,不断的出现以下信息:
- TFTP from server 192.168.3.49; our IP address is 192.168.3.52
- Filename 'testttt'.
- Load address: 0x32000000
- Loading: T T T T T T T T T T
- Retry count exceeded; starting again
于是又开始在网上查找解决办法,还好这个问题有前人遇到过,解决方法如下:
把net/tftp.c中
- #define TIMEOUT 5000UL /* Millisecs to timeout for lost pkt */
改为
- #define TIMEOUT 60000UL /* Millisecs to timeout for lost pkt */
再次测试:
- MY2440 # tftp 0x33000000 testttt
- rBWSCON 0x2211D112
- rBWSCON 0x2211D112
- TFTP from server 192.168.3.49; our IP address is 192.168.3.52
- Filename 'testttt'.
- Load address: 0x33000000
- Loading: #################################################################
- #################################################################
- #################################################################
- #################################################################
- ###################################
- done
- Bytes transferred = 4317184 (41e000 hex)
解决这个问题参考了以下博文:
阅读(1727) | 评论(0) | 转发(0) |