uboot.2015.07移植之驱动DM9000(8)
来源:互联网 发布:苏州远洋数据有限公司 编辑:程序博客网 时间:2024/06/13 13:55
移植u-boot-2015.07之修改程序支持 DM9000 网卡
1.添加DM9000的驱动程序
- 查看 drivers/net/Makefile 文件发现 dm9000x.o 是与 CONFIG_DRIVER_DM9000 这个宏有关的。修改 include/configs/smdk2440.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 /* 此项决定编译 DM9000x.c 文件 */uboot中搜索 CONFIG_DRIVER_DM9000,参考别的板级头文件,添加宏定义如下#define CONFIG_DRIVER_DM9000 /* 此项决定编译 DM9000x.c 文件 */#define CONFIG_DM9000_BASE 0x20000000 /* DM9000 的基地址,与 DM9000 与 S3C2440 的物理连接有关,查看原理图得到 DM9000 连接到 S3C2440 的哪一个片上面,这里是 nGCS4,也就是0x20000000起始地址处 */#define DM9000_IO CONFIG_DM9000_BASE /* DM9000 的 IO,此处等于 DM9000 的起始基地址 */#define DM9000_DATA (CONFIG_DM9000_BASE + 4) /* 与 DM9000 的 CMD 引脚有关,本板子 DM9000 的 CMD 引脚接到 LADDR2,所以要加上 2^2=4 */
2.配置时间参数
配置 BWSCON 以及 BANKCON4 寄存器来对应 DM9000 的设置,这里使用之前的配置 BANKCON4 = 0x00000700,BWSCON = 0x22011110
3.更改驱动程序
- 在 sourceinsight 里面全局搜索 “Net:”,得到在
arch/arm/lib/board.c
以及common/board_r.c
里面有eth_initialize(gd->bd);
eth_initialize(gd->bd); /* 前面我们知道 gd->bd 指向的是 bd_t 结构体,里面存有串口波特率以及ip地址等等 */ board_eth_init(bis) int rc = 0; #ifdef CONFIG_CS8900 rc = cs8900_initialize(0, CONFIG_CS8900_BASE); #endif return rc;
- 将 board/samsung/smdk2440/smdk2440.c里的board_eth_init函数改为
int rc = 0;#ifdef CONFIG_CS8900 rc = cs8900_initialize(0, CONFIG_CS8900_BASE);#endif#ifdef CONFIG_DRIVER_DM9000 rc = dm9000_initialize(bis); /* 好奇的是实际上并没有使用 bis 参数,不知道传入的目的是什么 */#endif return rc;
4.修改网卡初始化配置
- 修改 include/configs/smdk2440.h 里面的
#define CONFIG_NETMASK 255.255.255.0#define CONFIG_IPADDR 10.0.0.110#define CONFIG_SERVERIP 10.0.0.1
改为
#define CONFIG_NETMASK 255.255.255.0#define CONFIG_IPADDR 192.168.2.100 //自己根据需要设置#define CONFIG_SERVERIP 192.168.2.1 //自己根据需要设置#define CONFIG_ETHADDR 00:08:3e:26:0a:5b //自己根据需要设置
由于2015.07版本中的 include/env_default.h 里面的 default_environment 数组里面并没有 “ethaddr=” 字样,所以我们添加一行如下
#ifdef CONFIG_ETHADDR "ethaddr=" __stringify(CONFIG_ETHADDR) "\0"#endif
这里设置完毕之后uboot启动的时候就会自动设置好想要的网络参数了,当然也可以通过uboot内置命令来进行设置
- 为了解决 “ERROR: resetting DM9000 -> not responding” 与 “could not establish link” 输出信息(其实不管它也没有问题,但是就是看着不舒服,而且速度也比较慢)。将 DM9000x.c 里的
dm9000_reset(void)
函数改为
if ((DM9000_ior(DM9000_PIDL) != 0x0) || (DM9000_ior(DM9000_PIDH) != 0x90)) printf("ERROR: resetting DM9000 -> not responding\n");//改变为下面这样i = 0;do{ if(i == 1000) //此数字根据具体情况进行赋值,我的是1000就可以了 { break; } i ++;}while((DM9000_ior(DM9000_PIDL) != 0x0) || (DM9000_ior(DM9000_PIDH) != 0x90));
dm9000_init 函数里面的
i = 0;while (!(dm9000_phy_read(1) & 0x20)) { /* autonegation complete bit */ udelay(1000); i++; if (i == 10000) { printf("could not establish link\n"); return 0; }}
全部注释掉,这样就会直接以100M全速运行。改动到这里就不会出现第一次ping不成功,要快速连ping两次才能成功
测试如下:
U-Boot 2015.07 (Jun 13 2016 - 18:58:30 +0800)CPUID: 32440001FCLK: 400 MHzHCLK: 100 MHzPCLK: 50 MHzDRAM: 64 MiBFlash: 2 MiBNAND: 256 MiBIn: serialOut: serialErr: serialNet: dm9000SMDK2440 # ping 192.168.2.1dm9000 i/o: 0x20000000, id: 0x90000a46 DM9000: running in 16 bit modeMAC: 00:0c:29:c1:01:efoperating at 100M full duplex modeUsing dm9000 devicehost 192.168.2.1 is alive
0 0
- uboot.2015.07移植之驱动DM9000(8)
- 移植DM9000网卡驱动到uboot
- 8(1)、uboot移植——DM9000的移植
- dm9000驱动移植 之二
- mini2440移植之DM9000驱动
- uboot 添加 DM9000支持,作为uboot移植网卡驱动参考
- 网卡(dm9000)驱动移植
- UBOOT-2010.06 移植 支持 DM9000 (七)
- uboot移植DM9000
- uboot-1.1.6中DM9000网卡驱动移植到TQ2440
- uboot.2015.07移植之驱动串口(4)
- uboot.2015.07移植之驱动NOR Flash(6)
- uboot.2015.07移植之驱动NAND Flash(7)
- DM9000 uboot驱动分析
- uboot.2015.07移植之裁剪uboot以及驱动yaffs(9)
- tq210-uboot eth dm9000移植
- s3c2440 DM9000驱动移植
- DM9000网卡驱动移植
- 设计模式【工厂模式】【单例模式】【装饰者模式】
- 使用OpenCV计算图像的轮廓矩的代码!
- java 代码加载顺序
- 磁卡会因手机长时间接触而消磁吗?
- DescriptionResourcePathLocationType ArtifactTransferException: Could not transfer artifact
- uboot.2015.07移植之驱动DM9000(8)
- Android DrawerLayout+NavigationView布局实现左右两边侧滑菜单
- POJ 3258 River Hopscotch [NOIP2015 D2T1] (洛谷 P2678 跳石头)
- 数据类操作之文件存储跟读写
- MongoDB 数据库级锁、建索引导致数据库阻塞、不合理使用嵌入 embed document、不合理使用 Array 字段等4个坑
- .net mvc controler有哪些返回值
- UFLDL Tutorial学习笔记(一)Linear&Logistic&Softmax Regression
- Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)
- java collection大概