哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处
http://blog.csdn.net/woshixingaaa/archive/2011/02/11/6179100.aspx
今天看了Nandflash部分,感觉不是一时半会儿能搞定的,所以先避实就虚呵呵,搞定了网卡。飞凌TE24440II使用的是双网卡,CS8900和DM9000A。已经有很好的网卡驱动代码,我们只要根据自己的板子适当修改一下就行,所以难度比Nandflash低得多。废话少说,看看怎么改。
首先注释掉跟CS8900有关的部分
//#define CONFIG_DRIVER_CS8900 1 /* we have a CS8900 on-board */
//#define CS8900_BASE 0x19000300
//#define CS8900_BUS16 1 /* the Linux driver does accesses as shorts */
在include/configs/TE2440II.h中添加
#define CONFIG_DRIVER_DM9000 1
#define CONFIG_NET_MULTI 1
#define CONFIG_DM9000_NO_SROM 1
#define CONFIG_DM9000_BASE 0x20000000 //网卡片选地址
#define DM9000_IO CONFIG_DM9000_BASE //网卡命令端口
#define DM9000_DATA (CONFIG_DM9000_BASE+4) //网卡数据端口
//增加ping命令
#define CONFIG_CMD_PING
//MAC地址
#define CONFIG_ETHADDR 08:00:3e:26:0a:5b
#define CONFIG_NETMASK 255.255.255.0
//开发板的IP地址
#define CONFIG_IPADDR 192.168.1.105
//Linux主机的IP地址
#define CONFIG_SERVERIP 192.168.1.103
注释掉以前跟这个重复的。
添加网卡初始化代码: 修改board/samsung/TE2440II/TE2440II.c
#include <net.h>
#include <netdev.h>
#ifdef CONFIG_DRIVER_DM9000
int board_eth_init(bd_t *bis)
{
return dm9000_initialize(bis);
}
#endif
在drivers/net/dm9000x.c中修改(屏蔽掉dm9000_init中的这一部分,不然使用网卡的时候会报“could not establish link”的错误)
#if 0
i = 0;
while (!(phy_read(1) & 0x20)) { /* autonegation complete bit */
udelay(1000);
i++;
if (i == 10000) {
printf("could not establish link\n");
return 0;
}
}
#endif
修改drivers/net/dm9000x.c。屏蔽掉dm9000_halt函数中的内容,否则ping不通。
/*
Stop the interface.
The interface is stopped when it is brought.
*/
static void dm9000_halt(struct eth_device *netdev)
{
//DM9000_DBG("%sn", __func__);
///* RESET devie */
//phy_write(0, 0x8000); /* PHY RESET */
//DM9000_iow(DM9000_GPR, 0x01); /* Power-Down PHY */
//DM9000_iow(DM9000_IMR, 0x80); /* Disable all interrupt */
//DM9000_iow(DM9000_RCR, 0x00); /* Disable RX */
}
重新编译烧录到Norflash就可以了。
这里需要注意的是#define CONFIG_DM9000_BASE 0x20000000 //网卡片选地址。而不是0x20003000,这个是DM9000,而我们使用的是DM9000A。因为CMD接在ADDR2上所以#define DM9000_DATA (CONFIG_DM9000_BASE+4)。因为DM9000A的地址信号和数据信号复用,CMD引脚决定传输的是地址信号还是数据信号。数据手册上说CMD为0时是地址信号所以DM9000_IO CONFIG_DM9000_BASE,CMD为1时,是数据信号,所以#define DM9000_DATA (CONFIG_DM9000_BASE+4)。DM9000A内部有一个4K Dword SRAM,因为数据线和地址线是复用的,所以如果这部分用地址线进行寻址,范围是16KB,所以在 0x20000000~0x20000000+16KB范围内都可以的。所以0x20003000是碰巧在这里的。第一次ping不同,第二次开始就可以ping通了,这个是正常现象。
分享到:
相关推荐
u-boot.bin_tekkaman_2009.11.bz2 参考网站:Tekkaman Ninja github.com/tekkamanninja 直接可用于mini2440开发板 当然在这之前首先必须保证你的开发板上已经有了U-boot。如果没有,就请先烧入一个 已经编译好...
第二步:查看当前系统是否支持arm-linux-gcc 如果不存在 则继续如下步骤: 第三步:在/usr/local创建一个文件夹为arm mkdir /usr/local/arm 第四步:将arm-linux-gcc-4.3.2.bz2解压到/usr/local/arm目录下 sudo tar ...
u-boot最新版本,支持更多的处理器,可以很方便的移植到你自己的开发板 平台。
看了就知道怎么样!移植u-boot-2009.11至广嵌GEC2440开发板
u-boot-2011.09-2012R1-RC4.tar.bz2适用于上海远景bf609开发板,我已按其教程移植过了.这个uboot压缩包我先放到了一个文件夹里,再在xp下压缩为zip压缩包的,所以用的话先在xp下解压后才能得到里面的u-boot-2011.09-...
各种版本的mplaye: 音视频播放器,使用命令即可播放,支持win10和开发板,应用于各种场合,特别是语音识别技术,很多毕设都是用这个做的。 gcc编译工具:arm+linux-gnueabi-5.4.0.tar.xz, 解压命令:tar -zxvf arm+...
移植u-boot-2009.03到友善之臂mini2440开发板
主 机:ubuntu10.04 开发板:Mini2440--256MB Nand, Kernel:2.6.36.1 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2010.03.tar.gz
ARMBoot-1.1.0 在 mini2440 开发板上的移植 之稻草人手记 文章配套源码包3 armboot-org2mini2440.diff:patch补丁包 补丁方法:将原始的armboot程序包armboot-1.1.0.tgz 解开后,将armboot-org2mini2440.diff...
u-boot-2009.03代码,适用于多种开发板,如S3C2440,S3C2410等,为uboot最新的代码
可以移植到arm开发板。操作系统
XILINX FPGA linux内核文件,适用于黑金AX7020开发板,带有黑金的驱动板载的驱动,实测有用
资源包括hfrk2410开发板上移植的u-boot.bin,uImage以及zImage生成uImage所用到的mkimage工具和生成方法,在恒丰锐科2410开发板亲测
个人移植并可以正常使用的uboot,适用于飞凌ok335xd开发板,米尔科技c335x开发板,基于u-boot官方u-boot-2018.05源码移植,并有git记录。 配置文件am335x_ok335xd_defconfig am335x_myd_defconfig
移植u-boot-2010.03以支持JZ2440开发板,该资源为源代码,编译可直接运行于JZ2440开发板
这个是mini2440开发板针对u-boot.2010.03版本的配置与移植教程
u-boot-2013.10 版本u-boot的修改文件,支持realarm210开发板。
本u-boot由本人调通,cpu为s3c2440,开发板pw2440,支持nand启动、读、写,支持yaffs2文件系统下载,支持DM9000A网卡,TFTP下载,引导linux内核,最大特色是支持USB下载内核和文件系统,使你的调试变得快捷方便,复杂...
u-boot-2440-nandflash,2440上的源代码,2440开发板资料
《【原创】u-boot-2011.03在mini2440/micro2440上的移植》一文中的uboot,该文地址为 http://blog.csdn.net/csuwzc/archive/2011/05/29/6453623.aspx 再次提醒:我在发布资源时用的是MACH_TYPE_MICRO2440,之前的...