移植U-BOOT-2016.11到JZ2440详细教程(7)

本文档详细介绍了如何将U-Boot 2016.11移植到JZ2440平台,并支持DM9000C网卡。主要涉及修改配置文件、解决编译错误、设置网卡地址、初始化函数调整以及解决通信中出现的错误提示。通过一系列步骤,最终实现了DM9000C网卡的正常工作并提高了网络通信速度。
摘要由CSDN通过智能技术生成

移植U-boot支持DM9000C网卡

在U-boot原本的程序里面已经支持了DM9000网卡,但是没有编译进去,所以我们来看一下net目录下的Makefile文件

\drivers\net\Makefile,第17行

obj-$(CONFIG_CALXEDA_XGMAC) += calxedaxgmac.o
obj-$(CONFIG_CS8900) += cs8900.o
obj-$(CONFIG_TULIP) += dc2114x.o
obj-$(CONFIG_ETH_DESIGNWARE) += designware.o
obj-$(CONFIG_DRIVER_DM9000) += dm9000x.o
obj-$(CONFIG_DNET) += dnet.o

发现了如果定义了宏CONFIG_CS8900就会编译cs8900网卡,如果定义了CONFIG_DRIVER_DM9000才会编译dm9000网卡,再找一下,发现宏CONFIG_CS8900是在smdk2440.h文件中的,所以我们修改一下头文件:

\include\configs\smdk2440.h,第38行

#if 0
#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 */
#else 
#define CONFIG_DRIVER_DM9000
#endif

然后重新编译一下,发现出现一大堆错误:
在这里插入图片描述
首先来看一下第一个错误的位置,没有定义DM9000_DATA这个变量,再用查找指令

grep -rn "DM9000_DATA" *

在这里插入图片描述
发现其他开发板有用到dm9000网卡,仿照他们,重新修改一下头文件

\include\configs\smdk2440.h,第38行

#if 0
#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 */
#else 
#define CONFIG_DRIVER_DM9000
#define CONFIG_DM9000_BASE              0x08000000
#define DM9000_IO                       (CONFIG_DM9000_BASE)
#define DM9000_DATA                     (CONFIG_DM9000_BASE + 4)
#endif

因为网卡跟内存一样也是可以用内存控制器直接读地址,那这些基地址要怎么设置,这就得看我们的原理图在这里插入图片描述
片选引脚是接在nGS4上,再对应我们S3C2440的芯片手册
在这里插入图片描述
所以网卡的地址就是0x20000000~0x28000000,再看芯片的CMD引脚接在LADDR2上,偏移量为4。最后修改头文件如下:

\include\configs\smdk2440.h,第38行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值