u-boot-2016.03在mini2440移植 之DM9000

u-boot默认的网络芯片是CS8900,但开发板上的网络芯片是DM9000,所以为了使用网络功能,就必须进行移植。好在u-boot有DM9000的驱动程序,我们只需要把关于CS8900的部分换成DM9000的部分即可。

首先在include/configs/smdk2410.h 中注释如下语句

#define CONFIG_CS8900          we have a CS8900 on-board
#define CONFIG_CS8900_BASE      0x19000300
#define CONFIG_CS8900_BUS16      the Linux driver does accesses as shorts

再增加如下语句 :

#define CONFIG_DRIVER_DM9000
#define CONFIG_DM9000_NO_SROM                           //not use the dm9000 eeprom
#define CONFIG_NET_RANDOM_ETHADDR                       //set the ethaddr
#define CONFIG_LIB_RAND                                 //random_ethadd need rand function
#define CONFIG_DM9000_BASE      0x20000300
#define DM9000_IO               CONFIG_DM9000_BASE     
#define DM9000_DATA             (CONFIG_DM9000_BASE + 4 ) //data address*/

然后定义缺省的环境变量,先添加MAC地址,再修改开发板以及宿主机的IP地址:

#define CONFIG_NETMASK          255.255.255.0
#define CONFIG_IPADDR           192.168.1.8         //arm board ip
#define CONFIG_SERVERIP         192.168.1.120       // pc ip

打开board/samsung/smdk2410/smdk2410.c 文件中的board_eth_init函数 在133行增加如下内容:

#ifdef CONFIG_DRIVER_DM9000 
        rc= dm9000_initialize(bis);
#endif

完成上述步骤,开发板就能正常的使用网络功能了。

运行结果如图所示:

当看到最后一行“host192.168.1.120 is alive”时,说明网络功能已能正常使用。如果为了去掉“could not establish link”字样,并加快运行速度,可以注释掉drivers/net/dm9000x.c文件中的dm9000_init函数内的下面语句:

i= 0;

while(!(dm9000_phy_read(1) & 0x20)) {   /*autonegation complete bit */

udelay(1000);

i++;

if(i == 10000) {

printf("couldnot establish link\n");

return0;

}

}

/*see what we‘ve got */

lnk= dm9000_phy_read(17) >> 12;

printf("operatingat ");

switch(lnk) {

case1:

printf("10M half duplex ");

break;

case2:

printf("10M full duplex ");

break;

case4:

printf("100M half duplex ");

break;

case8:

printf("100M full duplex ");

break;

default:

printf("unknown:%d ", lnk);

break;

}

时间: 2024-10-04 11:45:29

u-boot-2016.03在mini2440移植 之DM9000的相关文章

uboot.2016.03 在mini2440上norfalsh启动

本人有点懒惰,直接在smdk2410的基础上进行修改 (note :红色字体表示修改内容,蓝色字体表示增加内容) 1. 顶层的makefile 在247行 添加如下两条语句 :   ARCH :=arm     CROSS_COMPILE :=arm-linux- 2 修改始终频率 打开 u-boot-2016.03/arch/arm/cpu/arm920t/start.S 第77行 #if defined(CONFIG_S3C2410) #if defined(CONFIG_S3C2440)

u-boot-2016.03 在mini2440移植之nandflash读写

在“NorFlash启动”一文中,我们把drivers/mtd/nand/s3c2410_nand.c文件复制为s3c2440_nand.c文件,并把该文件内的所有有关“2410”的地方一律改为“2440”.这么修改仅仅是能够让系统编译成功,并没有真正实现NandFlash的读写.在这里,我们就来介绍如何让u-boot支持NandFlash的读写. 由于s3c2410与s3c2440的NandFlash控制器不一样,因此s3c2440_nand.c文件并不能直接应用,需要进行适当的修改,而主要修

mini2440移植uboot 2011.03(上)

参考博文: <u-boot-2011.03在mini2440/micro2440上的移植> 本来我想移植最新版的uboot,但是移植却不太成功,所以先模仿他人的例子重新执行一遍,对uboot更熟悉后再开始新版本的移植. 操作系统: debian 7.4 uboot:   u-boot-2011.03(下载地址) 交叉编译器:arm-linux-gcc 4.4.3(下载地址) 执行过程如下: 移植(一)基本配置: 在boards.cfg下添加一行: mini2440 arm arm920t -

mini2440移植uboot 2011.03(下)

参考博文: <u-boot-2011.03在mini2440/micro2440上的移植> 移植(五)添加nand支持: [email protected]:~/soft/mini2440/u-boot-2011.03$ touch drivers/mtd/nand/s3c2440_nand.c [email protected]:~/soft/mini2440/u-boot-2011.03$ vim drivers/mtd/nand/s3c2440_nand.c 添加下面内容: #inclu

分布式技术一周技术动态 2016.03.20

分布式系统实践 1. 基于Mesos和Docker的分布式计算平台 https://mp.weixin.qq.com/s?__biz=MzAxMDgzOTA2Mw==&mid=402769128&idx=1&sn=cea3ad1357bd9312acf1768c0a493bfd&scene=1&srcid=0318BTuxT0fsFYwPjpeyuDOa&key=710a5d99946419d90fbc1e7600cce055b6e997d6afafc74c

mini2440移植uboot-2008.10 (二) DM9000网卡驱动移植

还是利用 mini2440移植uboot-2008.10 (一)  修改好的代码 通过观察可以发现,mini2400使用的网卡芯片是DM9000,在uboot-2008.10源码中已经支持该芯片的驱动(drivers/net/dm9000.c),但是并不完善 具体原理还不是很清楚,现在只是做一下移植步骤的记录 1.修改uboot配置文件(include/configs/mini2440.h) 53 /* 54 * Hardware drivers 55 */ 56 #if 0 57 #defin

u-boot-2016.03 在mini2440上移植之nandflash 硬件ecc

MINI2440 开发板使用的是8bit,256M blocksize= 128k,pagesize =2k的nandflash. 宽带为8bit ,由S3C2440 datasheet 可知硬件生产的ecc为4byte. S3C2440 硬件ecc 操作流程: 1.先读出NFMECC0寄存器中由硬件生产的ecc data. 2.将读出的ecc数据,进行处理之后,分别写入NFMECCD0和NFMECCD1寄存器, 硬件自动检测,检测结果可从NFESTAT0 寄存器读取. 3. 读取NFESTAT

linux-2.6.32在mini2440开发板上移植之DM9000网卡移植

   移植DM9000 网卡驱动1 设备资源初始化      Linux-2..6.32.2 已经自带了完善的DM9000 网卡驱动驱动(源代码位置:linux-2.6.32.2/drivers/net/dm9000.c),它也是一个平台设备,因此在目标平台初始化代码中,只要填写好相应的结构表即可,具体步骤如下: 首先添加驱动所需的头文件dm9000.h:#include <linux/dm9000.h> 再定义DM9000 网卡设备的物理基地址,以便后面用到:/* DM9000AEP 10/

switch结构2016/03/08

Switch  03/08 一.结构 switch(){  case *: ;break;……default: ;brek;} 练习:输入一个日期,判断这一年第几天? Console.Write("请输入月份"); int m = int.Parse(Console.ReadLine()); Console.Write("请输入几号"); int d = int.Parse(Console.ReadLine()); int m1 = 31, m2 = 28, m3