嵌入式Linux之我行——u-boot-2009.08在2440上的移植详解(四)
- 主
机:VMWare--Fedora 9 - 开发板:Mini2440--64MB Nand,Kernel:2.6.30.4
- 编译器:arm123.com.cn/linux/arm-linux-gcc-4.3.2.tgz" target="_blank">arm-linux-gcc-4.3.2.tgz
- u-boot:u-boot-2009.08.tar.bz2
二、移植步骤
上接:u-boot-2009.08在2440上的移植详解(三)
在这一篇中,我们首先让开发板对CS8900或者DM9000X网卡的支持,然后再分析实现u-boot怎样来引导Linux内核启动。因为测试u-boot引导内核我们要用到网络下载功能。
7)u-boot对CS8900或者DM9000X网卡的支持。
u-boot-2009.08版本已经对CS8900和DM9000X网卡有比较完善的代码支持(代码在drivers/net/目录下),而且在S3C24XX系列中默认对CS8900网卡进行配置使用。只是在个别地方要根据开发板的具体网卡片选进行设置,就可以对S3C24XX系列中CS8900网卡的支持使用。代码如下:
#gedit include/configs/my2440.h |
#define |
首先,我们看看drivers/net/目录下有关DM9000的代码,发现dm9000x.h中对CONFIG_DRIVER_DM9000宏的依赖,dm9000x.c中对CONFIG_DM9000_BASE宏、DM9000_IO宏、DM9000_DATA等宏的依赖,所以我们修改代码如下:
#gedit include/configs/my2440.h |
//添加u-boot对DM9000X网卡的支持 #define CONFIG_DRIVER_DM9000 //#define CONFIG_DM9000_USE_16BIT 1 注意: //给u-boot加上ping命令,用来测试网络通不通 #define CONFIG_CMD_PING //恢复被注释掉的网卡MAC地址和修改你合适的开发板IP地址 #define CONFIG_ETHADDR #define CONFIG_SERVERIP |
添加板载DM9000网卡初始化代码,如下:
#gedit board/samsung/my2440/my2440.c |
#include #ifdef CONFIG_DRIVER_DM9000 |
修改MD9000网卡驱动代码,如下:
#gedit drivers/net/dm9000x.c |
#if |
然后重新编译u-boot,下载到Nand中从Nand启动,查看启动信息和环境变量并使用ping命令测试网卡,操作如下:
可以看到,启动信息里面显示了Net:dm9000,printenv查看的环境变量也和include/configs/my2440.h中设置的一致。但是现在有个问题就是ping不能通过。
经过一段时间在网上搜索,原来有很多人都碰到了这种情况。出现问题的地方可能是DM9000网卡驱动中关闭网卡的地方,如是就试着修改代码如下:
#gedit drivers/net/dm9000x.c |
static |
结果,只是第一次ping不通,以后都是可以ping通的(据网友们说这是正常的),如下图:
好了,现在只剩下一个问题了,就是使用tftp进行下载。关于tftp服务器在Linux中的安装和配置,这里我就不讲了,在网上搜一下很多的。然而,在tftp下载时又遇到了问题,总是出现传送不完整又重新传送的现象,不断的循环,如下图:
困惑好久的tftp问题现在终于搞定啦,心情真是爽啊!!首先分析上面
Linuxu-boot244 相关文章:
- 嵌入式Linux之我行——u-boot-2009.08在2440上的移植详解(六)(11-20)
- 嵌入式Linux之我行——u-boot-2009.08在2440上的移植详解(五)(11-20)
- 嵌入式Linux之我行——u-boot-2009.08在2440上的移植详解(一)(11-20)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)