enc28j60网卡驱动移植到tcc8900上 -----续

上一篇文章中已经对芯片的针脚进行了初始化配置,编译后在烧写到板子上出现了错误

出现了错误1

cannot find chip      error  -5  (记得不太清楚了,貌似是这几个单词) 说明是i/o 有问题

这个错误出现在enc28j60_chipset_init 函数中,在继续就是enc28j60_hw_init 这个函数有问题。通过打印的方法找到在该函数中

 

reg = locked_regb_read(priv, EREVID); reg 的值为 0。值为255 ,原因是由于中断脚接错了,tcc8900 可以接的外部中断的引脚是固定的,具体的参照tcc8900 datasheet 中121 -122 页,我选用的可用作外部中断的引脚是goipf[13] 在前面已将讲过配置了

按道理讲EREVID 是一个只读寄存器,里面的值是固定的,当然复位后可能要视情况而定。这个值是硬件的一个标示,里面的低5位的值是以太网的版本号,那么是什么使其为0呢

刚开始忽略了spi 总线的cs 片选信号了,在初始化配置时只是把它低电平输出,使其一直有效,这样做可能会造成spi 数据传输的同步有问题。所以我呢,加了一个函数

enc28j60_cs (flag)

{

 

    if(flag)

BITCLRgpio_regs->GPFDAT,Hw17);  flag = 0 ,片选信号无效 ,

else

BITSETgpio_regs->GPFDAT,Hw17);  flag= 1 ,片选为低电平有效

 

}

 

把上面的函数加在了5个位置分别是 :

spi_read_buf   spi_write_buf ,spi_read_op ,spi_write_op ,enc28j60_hw_rx, 五个函数的开头是开启片选enc28j60_cs (1)

,return 之前添加enc28j60_cs (0),关闭片选

这样就没有问题了,reg 返回的值始终是0x 05 如果不是这个值,可能也要出什么问题吧

 

那么继续编译,烧写后又出现另一个错误,大概是中断错误 问题出现在 probe 函数中ret = request_irq(spi->irq, enc28j60_irq, 0, DRV_NAME, priv);

 

这个ret 返回的值是个负值 。我打印出spi->irq 的值后才恍然大悟,spi->irq 什么时候为0 了,所以呢,在这个函数调用之前加一句

spi->irq = INT_EI10, 在上一篇文章中已经讲了,我用的是外部中断10,这样改了之后,reg 返回值为0 。ok

下面就是probe 函数跑完了,enc28j60  驱动注册成功。

 

接下来 烧写到板子上

可以在系统目录/sys/.../下面的我忘记了,可以找到eth0 这个名字,这个就是网卡的硬件名字。

 

测试你的网卡可不可用

先连接网线

 

静态ip配置如下

接下来 启动网卡 :ifconfig eth0 up

会打印 enc28j60  eth0 : link up  (half  双工)默认是半双工通信

设置ip : ifconfig eth0 192.168.1.116

配置网关 : route add default gw 192.168.1.1

ping 192.168.1.113  

可以ping 的通 ,别太高兴,在ping 一下网关试试

ping 192.168.1.1

完蛋出现问题,ping 不通 ,这个别着急,查查路由器那边的ip 是不是设置为静态绑定了

程序中网卡的mac 地址是动态生成的,(说白了,就是一个随机函数),如果路由器那边ip 地址都设置为静态,你的网卡可以ping 的通局域网内其他机器,但是ping 不通网关和外网。如果这样,可以在程序中生成固定的和pc 机相同的mac地址,或者修改路由器那边的设置。

如果一切问题都没了,那就ok 。

ping www.baidu.com 试试,如果不行的话,就设置一下dns

在/etc/rev.conf (单词忘了有没有写对,文件没错的)

前面加上

nameserve 8.8.8.8

nameserve 8.8.4.4

 

具体怎么添加呢,把你烧写到板子上的ramdisk.rom挂载到新建的一个文件夹下,找到/etc/rev.cof 做如上修改

要确认加进去了。有时候可能会由于权限问题,或是忘了 umount 文件夹 而没有加成功。

ping www.baidu.com

 

通了

 

动态配置ip :

还有个自动获取的ip的命令,这个就更简单了。

奖linux.com烧写到板子上后,

先   ifconfig eth0 up

在    udhcpc eth0

ping www.baidu.com

 

有包获取到了。ok

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值