2010年10月28日 星期四

網卡驅動debug相關資料

驱动接口定义的变化

如:2.4内核中字符设备驱动的注册接口是

int register_chrdev(unsigned int major, const char * name, struct file_operations *fops)

而2.6内核中已经不建议使用这种方法了,改为:

int cdev_add(struct cdev *p, dev_t dev, unsigned count)

又如:2.6.27内核中网卡接口的net_device结构成员和低版本的net_device结构成员也发生了一些变化。

这种接口定义及注册方法带来的变化,发生的并不频繁。解决方案是:参考内核中的代码。这种接口定义及注册方法在内核中非常容易找到,如:字符设备驱动的注册方法及接口定义可以参照内核driver/char/目录下的很多实例。

http://blog.csdn.net/hongtao_liu/archive/2009/07/28/4386375.aspx

--------------------------------------------------------------------------------------

2、移植DM9000遇到的问题1(我已参照相关资料介绍添加了DM9000的驱动):

     前期移植是参照<嵌入式linux应用开发完全手册>441页来改的,

错误1:

     编译内核,下载内核启动后出现“IP-Config: Device `eth0' not found. ”信息。

     分析与解决:此错误说明dm9000未工作。可我确认已经添加驱动了呀,在这晕了半天,后来查资料得知可能是DM9000基地址设置有问题,原来我在移植时书上介绍的说是片选CS4的基地址就是DM9000的基地址。经查资料我的阳初2440开发板DM9000基地址为0x19000300与CS4基地址 0x20000000不同哦.问题根源找到了,修改结构体s3c_dm9k_resource中的DM9000的基址址即可....    这个结构体可能在arch/arm/plat-s3c24xx/common-smdk.c中(我的是这个位置,可用grep命令进行搜索)。

错误2:


       上面问题解决后又出现了“NETDEV WATCHDOG: eth0: transmit timed out” 错误(网卡已工作了),

       分析与解决:刚开始怀疑是NETDEV WATCHDOG的问题,于是把它关了,关后网卡就不工作了,更惨.....

于是就上网查找书查也没解决,后来想到我以前用别人配置的内核能运行 成功的,于是就拿来参照着看,原来是中断号设置有误,晕呀...

把中断改成IRQ_EINT9,OK啦哈!  通过 nfs挂我制作好的根文件系统 ,成功啦,好高兴,毕竟这次是我自己配置的哦。

下面是以上两个问题修改的数据结构s3c_dm9k_resource:

/* DM9000 */
static struct resource s3c_dm9k_resource[] = {
    [0] = {
        .start = S3C2410_CS4,       /* ADDR2=0,发送地址时使用这个地址 */
        .end   = S3C2410_CS4 + 3,
        .flags = IORESOURCE_MEM,
    },
    [1] = {
        .start = S3C2410_CS4 + 4,   /* ADDR2=1,传输数据时使用这个地址 */
        .end   = S3C2410_CS4 + 4 + 3,
        .flags = IORESOURCE_MEM,
    },
    [2] = {
        .start = IRQ_EINT9,         /* 中断号 */
        .end   = IRQ_EINT9,
        .flags = IORESOURCE_IRQ,
    }

};

我已把S3C2410_CS4改为0x19000300了。

附加:

S3C2410_CS4在内核中的位置可通过 grep命令来查找.

方法:在终端通过cd命令进到内核目录,然后执行如下命令即可找到包含该字样的所有文件。

$grep  "S3C2410_CS4" * -R   //*表示查找当前目录下的所有文件、目录,-R表示递归查找子目录。


别笑哦,我今天才学会用这个命令查找 ,用着特爽...

------------------------------------------------------------------------------------

沒有留言:

張貼留言