ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

uboot移植之网卡

2020-04-21 11:06:41  阅读:262  来源: 互联网

标签:set uboot dm9000 网卡 DM9000 地址 tftp 移植


经过前面的几节内容,我们的uboot移植已经支持了nor flash启动和nand flash启动了,这一节的内容是让Uboot支持DM9000网卡,就可以使用tftp下载文件了,速度要比串口下载快很多
第一步先找到DM9000的文件–driver/net/dm9000.c,在这个文件的同目录下查看Makefile
在这里插入图片描述
可以看到,要是想编译dm9000.c这个文件,就必须定义CONFIG_DRIVER_DM9000这个宏,在smdk2440.h中定义这个宏
在这里插入图片描述
上面是他原本使用的dm8900网卡的宏定义,我们把它去掉,定义下面的dm9000网卡使用的宏,从2440的原理图上可以看到,dm9000网卡使用的片选信号是nGCS4,在数据手册上找到相应的内存地址范围
在这里插入图片描述
CONFIG_DM9000_BASE的值就是这个内存的基地址,DM9000_IO表示数据寄存器的地址,那么也应该和它是一样的,DM9000_DATA宏表示地址,先通过DM9000_DATA传输要写的寄存器的地址,然后把数据通过DM9000_IO发送过来,
在这里插入图片描述
在dm9000的原理图上,CPU的地址线的LADDR2连接在了dm9000网卡上,所以DM9000_DATA的值就是网卡的基地址+4
然后要设置的就是内存控制器,设置操作dm9000的时序和位宽,BWSCON寄存器的内容如下
在这里插入图片描述
其余的寄存器也是一样的,这些寄存器的值我们在start.s中就已经设置过了,这里就使用这些数据,如果要自己重新来写的话就需要去查看网卡的详细的数据手册,这些内容我会在另一篇中进行介绍,所以,这里就不再多说,
在这里插入图片描述
编译,烧写,然后启动,第一次输出如下的错误信息
Net: No ethernet found
定位到eth_initialize函数
在这里插入图片描述
在这里插入图片描述
在board_eth_init函数里
在这里插入图片描述
这个函数里原来使用的是dm8900网卡的初始化函数,添加dm9000网卡的初始化函数,重新编译,烧写,启动,可以看到已经可以识别到dm9000网卡了
In: serial 1
Out: serial
Err: serial
Net: dm9000

设置ip地址 set ipaddr xxx,ping主机,ping主机,发生错误
could not establish link
ERROR: `ethaddr’ not set

重新设置ip地址和mac地址
set ipaddr 192.168.1.110
set ethaddr 00:0c:29:64:fb:19

再去ping主机就可以ping的通,这时候就可以使用tftp下载程序了,打开工具Tftpd64,设置好tftp的目录,然后设置tftp服务器的ip地址
set serverip 192.168.1.100
tftp 30000000 u-boot.bin

成功下载

标签:set,uboot,dm9000,网卡,DM9000,地址,tftp,移植
来源: https://blog.csdn.net/weixin_41791581/article/details/105621037

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有