2011年(11)
分类: 嵌入式
2011-10-09 21:38:24
----------------------------------------------------------------
本文系作者原创, 欢迎大家转载!
转载请注明出处:netwalker.blog.chinaunix.net
---------------------------------------------------------------- |
1. LINUX FLASH分区问题
看到linux在启动的时候打印出:
所以bootloader应该是0x00000000-0x00040000,大小256k,但是为何文档中升级uboot的时候更新的是0x100000大小的FLASH空间?
后在LINUX中dump出来/dev/mtdblock1和写入zImage比较发现前一部分是uboot的东西,之所以系统可以加载Rootfs成功是因为0x00400000-0x05400000和文档中的根文件系统是一致的。所以这里需要更改内核分区的大小,位于linux2.6.28/arch/arm/plat-s3c/include/ plat/partition.h
此时在内核启动时输出的信息与实际NAND Flash的分区情况是一致的了。
0x00000000-0x00100000 : "Bootloader"
0x00100000-0x00400000 : "Kernel"
0x00400000-0x05400000 : "Rootfs"
0x05400000-0x80000000 : "File System"
2.如何实现tftp uboot升级
这个网上有DM9000A的驱动,只要替换对应的driver/dm9000.c 和driver/dm9000.h即可,但是发现只有在使用ping命令(发送数据包)的时候,对应的网卡才会激活,而一旦ping结束后,那么网卡就会自动断掉,查看代码发现在do_ping时会做eth_init,而结束后会做eth_close动作
所以在start_armboot函数中加入初始化动作:eth_init(gd->bd); 并注释掉eth_close动作即可。