搜索
bottom↓
回复: 13

linux下基于SPI的ENC424J600网卡驱动,实现modbus tcp,关于中断...

[复制链接]

出5入42汤圆

发表于 2013-5-28 12:34:23 | 显示全部楼层 |阅读模式
前一阵子的工作有了阶段性的进步,已经成功的将ENC424J600网卡芯片挂到linux下了,CPU使用的AT91SAM9G45,使用的是SPI1总线。

请看图:

启动之后,通过ifconfig -a也看到了eth0及eth1,前者是DM9161网卡,在/sys/class/net下也有eth0及eth1。

现在有几个问题想请教一下坛内的ARM老手指导指导。

就是同样的内核映像文件烧到nand中(ENC4242的驱动作为built-in方式集成在内核文件中),同样的硬件,上电之后,有时能够顺利的初始化网卡,有时则不能(驱动函数probe都跑不完,返回的错误提示是I/O错误)

如图:

所以就很奇怪,(DM9161则很稳定,都是照搬公版和官方代码),按道理讲,程序只要在硬件上跑通一次,那么程序则应该是没有问题的,现在只能怀疑是不是硬件有问题,而ENC424与CPU之间的连接又非常简单,4根SPI线,晶振波形也很漂亮。

我试过不动硬件和软件,反复的断电重启,无法识别网卡占多数,较少能正常初始化。所以才想购买一台逻辑分析仪去排查硬件问题。

软件部分,我也将最近的学习体会总结一下,想开发的可以学习,有什么问题也请指教。

1.内核使用的2.6.30
2.ENC的驱动程序是移植一个老外写的,基于microchip和linux下enc28j60改的,需要学习源码的点这里,现在版本最新是1.30
3.驱动程序中没有硬件连线的初始化,需要在内核文件的/linux-2.6.30/arch/arm/mach-xxx/board-xxx.c中,添加SPI结构体信息,因为网卡是基于SPI的。
如图:
4.以上的代码作用是指定哪条SPI总线,片选脚,最大频率,SPI工作模式等,而另外几根通信线在同样的目录下XXX_device.c中是现成的,不需要做任何修改,
如图:
5.至于ENC的驱动程序,之前一直以为直接挂到内核里面就足够了,后来查了一些资料,发现在SPI传输的时候,没有去管CS信号线的翻转,因此我在老外的这个驱动程序中,只要涉及到SPI的都在函数路口加入了CS低,return之前加入了CS拉高(同时我也疑问,在内核文件中,基于SPI的芯片的驱动文件,里面貌似都没有CS信号的处理,为啥?谁知道?)
6.在ENC的驱动文件中,也没有看到基于INT中断的ISR函数,我研究了一下驱动文件,貌似根本没有启用芯片本身的中断信号处理,而是通过SPI总线中断进行的,这个不太明白,难道需要轮询数据包吗?通过中断标志数据的收发不是更高效吗?谁知道?
如图:

现在问题还有,就是即使内核启动之后,ENC424网卡仍然没有正常通行起来,不知道哪里还未处理好,PHY层是OK的,因为插上网线之后,GREEN和YELLOW LED均闪烁了。

谁做过相关移植工作的,请指导一下,不胜感激啊,小弟已经快hold不住了,搞了2个月了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出5入42汤圆

 楼主| 发表于 2013-5-28 13:06:03 | 显示全部楼层
来人啊,难道大家都午睡吗。
头像被屏蔽

出0入0汤圆

发表于 2013-5-28 13:53:10 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2013-5-28 14:24:31 | 显示全部楼层
9x35就是双网卡

出0入0汤圆

发表于 2013-5-28 14:24:49 | 显示全部楼层
错了是9x25

出5入42汤圆

 楼主| 发表于 2013-5-29 09:58:53 | 显示全部楼层
luck851 发表于 2013-5-28 14:24
错了是9x25

我来研究一下,希望能获得圣光之灵

出0入0汤圆

发表于 2013-5-29 15:10:02 | 显示全部楼层
努力呀,向你老学习

出5入42汤圆

 楼主| 发表于 2013-5-30 01:10:21 来自手机 | 显示全部楼层
linux里面,怎么注册中断的?看了一下手册是配置aic寄存器。

有点不明就里,而驱动程序中使用的是spi1的总线上的中断,疑问的是enc424片子上本身是有2个中断输出的,wol就不管了,而int信号我是直接连到arm的irq引脚上,谁知道怎么注册啊?

而且驱动程序中说明了,不使用外部中断做任何isr,实在有点搞不懂了 。

出0入0汤圆

发表于 2013-8-14 08:19:15 来自手机 | 显示全部楼层
mark……
顶一个…

出0入0汤圆

发表于 2014-1-24 14:20:41 | 显示全部楼层
本帖最后由 xl_1120 于 2014-1-24 14:23 编辑

接收寄存器没做好,我也在搞424j600驱动,一直解决不了接收的问题,开启了全部数据包接收,一旦有乱的数据,会把网卡的接收弄死,无法进接收中断。

出0入0汤圆

发表于 2014-10-27 20:23:42 来自手机 | 显示全部楼层
luck851 发表于 2013-5-28 14:24
错了是9x25

9x25已带两个网卡,如果再扩展两个网卡是否可行?

出0入0汤圆

发表于 2014-10-27 20:30:24 来自手机 | 显示全部楼层
spi扩展速率很慢的,直接用总线扩展啊

出0入0汤圆

发表于 2016-6-17 20:57:44 | 显示全部楼层
先检查硬件吧,看看硬件接线有没有问题。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 10:37

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表