u-boot移植-支持DM9000_第1页
u-boot移植-支持DM9000_第2页
u-boot移植-支持DM9000_第3页
u-boot移植-支持DM9000_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、U-boot 移植 5-支持 DM9000开发板的原理图中得知:C3<?0.1 uFc"玷 1T*LADDftLDA/TAJS LDijftTF LDATJU3LgT5 ifLDATJUD L口兀9LOATABvnmmv9VSA9 DGND IMTM M Bwacklp FW R5T. DGND SD15 WJ4 SD13 SD12 SD11 SD10 SD9 SDM DVDD tO:fi CMD SA4 SAS SA6 SAT第二阶段从在lib_arm的board.c的start_armboot函数开始,其中有一个是跳到网卡初始 化的eth_initialize 函数(在ne

2、t/eth.c中)(上面的宏 CONFIG_NET_MULTI ,等会要实现)1、 在eth_initialize (文件中有两个,代码较长的那个)的#if defined(CONFIG_MII) | (CONFIG_COMMANDS & CFG_CMD_MII) miiphy_init();#endif后面添加上下面的代码if (board_eth_init(bis) < 0)cpu_eth_init(bis);并在本文件前面增加如下代码:static int _def_eth_init(bd_t *bis)return -1;int cpu_eth_init(bd_t *bi

3、s) _attribute_(weak, alias("_def_eth_init");2、在 mao2440.c 中添加上面函数的实现#include <net.h>extern int dm9000_initialize(bd_t * bd);#ifdef CONFIG_DRIVER_DM9000int board_eth_init(bd_t *bis) return dm9000_initialize(bis);#endif3、在 include/configs/mao2440.h 中注释 CS8900 的代码,如下:(62 行)#if 0#define

4、CONFIG_DRIVER_CS8900 1/* we have a CS8900 on-board */#define CS8900_BASE0x19000300#define CS8900_BUS161 /* the Linux driver does accesses as shorts */#end if并添加 DM9000的宏,由上图知 DM9000 在BANK4 上,所以定义为 0x20000300 如下:#define CONFIG_DRIVER_DM90001#define CONFIG_DM9000_BASE0x20000300#define DM9000_IOCONFIG_

5、DM9000_BASE#define DM9000_DATA(CONFIG_DM9000_BASE+4)#define CONFIG_DM9000_USE_16BIT1#define CONFIG_NET_MULTI14、网上说要修改 dm9000x.c的eth_init(bd_t * bd)的内容,此步我的板不用eth_init(bd_t * bd)(/* Set Node address */*for (i = 0; i < 6; i+)(u16 *) bd->bi_enetaddr)i = read_srom_word(i);*/char *tmp = getenv (&qu

6、ot;ethaddr");char *end;for (i=0; i<6; i+) (bd->bi_enetaddri = tmp ? simple_strtoul(tmp, &end, 16) : 0;if (tmp)tmp = (*end) ? end+1 : end;#if 0i = 0;#endifreturn 0;红色的字符 是要做的修改:功能是屏蔽原有获取MAC地址的语句,替换成从U - Boot的参数区读取数据并存到bd->bi_enetaddri 中功能是屏蔽无用的语句。其实被屏蔽的语句是 MII接口用的,放在这显然是错误的,无端的浪费 了

7、10秒钟5、再修改dm9000x.c里的函数: 因为里面的四个函数跟include.h/net.h 中的定义的结构eth_device参数不同,所以eth_init,eth_halt,eth_send,eth_rx每个函数增加一个参数struct eth_device *dev ,且作为第一个参数;并把函数名改为:dm9000_init,dm9000,dm9000_send,dm9000_rx 。因为include/net.h中已经声明了 net/eth.c 中的这些函数。接着删掉 dm9000x.c 的函数 eth_initfirst ()。6、接着添加默认地址如下:#define CONF

8、IG_ETHADDR#define CONFIG_NETMASK#define CONFIG_IPADDR#define CONFIG_SERVERIP7、添加ping命令在宏 CONFIG_COMMANDS08:00:3e:26:0a:5b255.255.255.0192.168.1.230192.168.1.2中增加 CFG_CMD_PING如下:#define CONFIG_COMMANDS (CONFIG_CMD_DFL| CFG_CMD_CACHE| CFG_CMD_PING | CFG_CMD_NAND| 结果U-Boot 1.1.6 (Jan 22 2 011 - 19:03:5

9、U)DRAM: g IIBFlash: 2 HBHAND: 25fi MiBIn:serialOut: serialErr:serialNet:Hit any hey to stop autoboot:0MA02UJI0 tt>Uboot-2009.08 中:第二阶段从在lib_arm 的board.c的start_armboot 函数开始,其中有一个是跳到网卡初始化的eth_initialize函数(在net/eth.c中),此函数又调用 bord_eth_init函数,此函数需自己实现并调用相应的网卡驱动函数。DM9000的驱动在initdrivers/net/dm9000x.c ,

10、入口函数是 dm9000_initialize。故 mao2440.c 中添加 bord_eth 的实现函数如下:#include <net.h>#include <netdev.h>extern int dm9000_initialize(bd_t *bis);#ifdef CONFIG_DRIVER_DM9000int board_eth_init(bd_t *bis)return dm9000_initialize(bis);#endif在mao2440.h中添加相应的宏#define CONFIG_DRIVER_DM90001#define CONFIG_NET_MULTI 1#define CONFIG_DM9000_NO_SROM1#define CONFIG_DM9000_BASE 0x20000300#define DM9000_IOCONFIG_DM9000_BASE#define DM9000_DATA(CONFIG_DM9000_BASE + 4)并注释掉cs8900的代码还有:#define CONFIG_CMD_PING1#define CONFIG CMD NET1设置IP等,如上结果:U-Boot 2009.OS < 1链 22 2011 - 10:22:09)D

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论