`
helloyesyes
  • 浏览: 1305941 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

ARM+LINUX移植攻略(五)U-boot-2009.08移植TE2440II开发板--支持DM9000A

阅读更多

哈尔滨理工大学软件工程专业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通了,这个是正常现象。

6

分享到:
评论

相关推荐

    u-boot-2012.04.01移植到TQ2440详细过程

    在本文中,我们将深入探讨如何将u-boot-2012.04.01版本移植到TQ2440开发板上。这个过程对于理解嵌入式系统的引导加载程序(bootloader)以及硬件平台的初始化至关重要。u-boot是一个广泛应用的开源引导加载程序,而...

    u-boot-tiny6410-sd.tar.gz

    【标题】"u-boot-tiny6410-sd.tar.gz"是一个针对Samsung S5PV210(Tiny6410)处理器的定制版U-Boot启动加载器,它被设计用来支持从SD卡进行启动。这个压缩包是基于"u-boot-mini6410-20101106.tar.gz"版本进行修改和...

    移植好的u-boot2009.08

    《移植好的u-boot2009.08在mini2440/micro2440平台的应用详解》 u-boot作为嵌入式系统的重要组成部分,是设备启动时执行的第一段代码,它负责加载操作系统内核,进行硬件初始化,以及提供用户交互界面。本文将深入...

    u-boot移植过程详细笔记

    u-boot移植过程是指将u-boot移植到特定的开发板上,使其能够正确地运行和启动。这个过程需要对u-boot的源码进行修改,以适应特定的硬件平台。 整个移植过程可以分为以下几个步骤: 1. 准备u-boot的源码:首先需要...

    arm-linux-gcc.4.3.2.rar

    第二步:查看当前系统是否支持arm-linux-gcc 如果不存在 则继续如下步骤: 第三步:在/usr/local创建一个文件夹为arm mkdir /usr/local/arm 第四步:将arm-linux-gcc-4.3.2.bz2解压到/usr/local/arm目录下 sudo tar ...

    arm-linux-gnueabihf-gcc-linaro-7.5.0-x86_64.tar.xz.zip

    标题中的"arm-linux-gnueabihf-gcc-linaro-7.5.0-x86_64.tar.xz.zip"是一个针对ARM架构的Linux交叉编译工具链的压缩包,它由Linaro组织提供。Linaro是一个非营利组织,专注于优化和维护开源软件在ARM处理器上的性能...

    u-boot-dm9000-patch.rar

    u-boot是一个开源的、可移植的微内核引导加载程序,广泛应用于各种嵌入式系统,如基于ARM架构的开发板。它的主要任务是在操作系统启动前加载并初始化硬件,如内存控制器、CPU设置、设备驱动等,并提供简单的命令行...

    u-boot-2010.06移植到mini2440(实录)

    在本文中,我们将深入探讨如何将u-boot-2010.06版本移植到Mini2440开发板上,这是一个基于S3C2440处理器的嵌入式平台。移植工作涉及到多个关键组件,包括对不同类型的闪存(如NOR Flash和NAND Flash)的支持以及网络...

    u-boot.bin_tekkaman_2009.11.bz2

    u-boot.bin_tekkaman_2009.11.bz2 参考网站:Tekkaman Ninja github.com/tekkamanninja 直接可用于mini2440开发板 当然在这之前首先必须保证你的开发板上已经有了U-boot。如果没有,就请先烧入一个 已经编译好...

    u-boot 2009.11移植手册

    本手册详细介绍了如何为基于S3C2440芯片的开发板移植u-boot 2009.11版本, 包括环境搭建、调试方法的选择、移植步骤的具体操作等。通过遵循这些步骤, 初学者可以顺利地完成u-boot的移植, 并掌握相关的嵌入式系统开发...

    u-boot 2011.12 移植

    【u-boot 2011.12 移植】涉及的知识点主要集中在嵌入式Linux系统的引导加载器u-boot的移植过程,特别是针对S3C2440处理器的移植。下面将详细介绍这些内容: 1. **配置编译环境**: - 首先,你需要从指定FTP服务器...

    u-boot-2018.05.tar.bz2

    个人移植并可以正常使用的uboot,适用于飞凌ok335xd开发板,米尔科技c335x开发板,基于u-boot官方u-boot-2018.05源码移植,并有git记录。 配置文件am335x_ok335xd_defconfig am335x_myd_defconfig

    u-boot-2009.01-rc1.tar.bz2.rar_U-Boot2009._u-boot 2009.01_uboot-

    6. **多平台兼容**:U-Boot支持广泛的处理器架构,如ARM、PowerPC、MIPS、X86等,以及众多嵌入式开发板。 7. **源代码开放**:作为开源项目,U-Boot的源代码可供开发者研究、定制和改进,促进社区的持续发展。 在...

    u-boot-2011.09-forlinx.tar.rar

    这个名为“u-boot-2011.09-forlinx”的压缩包,显然是为Linux平台定制的一个u-boot版本,发布于2011年9月。 一、u-boot概述 u-boot的诞生是为了满足嵌入式设备的多样性和灵活性需求。它支持多种处理器架构,包括ARM...

    linux-xlnx-xilinx-v2017.4.tar.gz

    Linux-xlnx-xilinx-v2017.4.tar.gz 是一个针对Xilinx FPGA设备的Linux内核定制版本,特别优化以适应黑金AX7020开发板的需求。这个压缩包包含了完整的软件堆栈,使得用户能够在Xilinx FPGA硬件平台上运行Linux操作...

    移植U-Boot-2010.03.到友善之臂mini2440_himrce_mini2440_U-Boot_dull3lc_

    到友善之臂mini2440_himrce_mini2440_U-Boot_dull3lc_”表明这是一个关于将U-Boot 2010.03版本移植到友善之臂( FriendlyARM)Mini2440开发板上的过程。在这个过程中,我们可能会涉及到多个关键知识点,包括U-Boot的...

    arm-linux-gcc-4.4.3.tar.gz

    标题中的"arm-linux-gcc-4.4.3.tar.gz"是一个针对ARM架构Linux系统的交叉编译工具链的压缩包,版本为4.4.3。这个工具链包含了用于构建和编译针对ARM处理器应用程序的GCC(GNU Compiler Collection)和其他必要的库和...

    u-boot-2010.03.tar.bz2

    u-boot最新版本,支持更多的处理器,可以很方便的移植到你自己的开发板 平台。

Global site tag (gtag.js) - Google Analytics