打印
[嵌入式linux]

dm9000aep ping不通的问题

[复制链接]
1240|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
云帆沧海|  楼主 | 2014-5-8 10:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 云帆沧海 于 2014-5-8 10:50 编辑

近来在调试dm9000驱动,使用电脑ping 2440板子,能够接收中断,但是进入中断判断数据包是否接收完成时,总是检测没有完成。(驱动使用的是友善之臂提供的(版本linux2.6.32.2))
#define DM9000_PKT_RDY 0x1
具体出问题的地方如下:

static void
dm9000_rx(struct net_device *dev)
{
        board_info_t *db = netdev_priv(dev);
        struct dm9000_rxhdr rxhdr;
        struct sk_buff *skb;
        u8 rxbyte, *rdptr;
        bool GoodPacket;
        int RxLen;
        /* Check packet ready or not */
        do {
                ior(db, DM9000_MRCMDX);        /* Dummy read */

                /* Get most updated data */
                rxbyte = readb(db->io_data);
                /* Status check: this byte must be 0 or 1 */
                if (rxbyte & DM9000_PKT_ERR) {
                        dev_warn(db->dev, "status check fail: %d\n", rxbyte);
                        iow(db, DM9000_RCR, 0x00);        /* Stop Device */
                        iow(db, DM9000_ISR, IMR_PAR);        /* Stop INT request */
                        printk("%s exit!---%d\n",__func__,__LINE__);
                        return;               
                }
printk("rxbyte:0x%x\n",rxbyte);//打印出接收的数据总是0x08或则其他的数据
                if (!(rxbyte & DM9000_PKT_RDY))//(在这一步总是检测接收到的数据包没有完成,程序直接跳出)
                {
                        printk("%s exit!---%d\n",__func__,__LINE__);
                        return;
                }
不知道上述出现是什么原因,望大家指点,谢谢

相关帖子

沙发
云帆沧海|  楼主 | 2014-5-8 11:32 | 只看该作者
哎。。。。

使用特权

评论回复
板凳
ic12580| | 2014-5-23 10:49 | 只看该作者
是DM9000EP吗?100脚的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

19

帖子

0

粉丝