写驱动时碰到的问题——内核与驱动不匹配

今天第一次编写驱动程序,心里有些激动,但跟多的是惶恐,我相信很多同学和我一样,当你开始接触一个新的领域时,心中的惶恐很可能会大于兴奋。所以我们一步一步的跟着老师的视频做,唯恐在哪里出现一点错误而导致真个程序运行不下去。但有时候当我们按着老师的步骤一步一步走下来,发现还是出错了。还是走不下去。今天我就碰到了这样的情况。现在与大家分享一下,希望后面的人不要饭跟我一样的错误。首先声明一下,我是按着韦东山老师的视频学习的,板子也是相应的配套开发板。

今天我一切按老师的步骤走着,开始的程序是自己写的。make后也形成了相应的first_drv.ko文件,然后将这个文件拷到first_fs中。同样我的板子上电后就直接挂载到nfs指定的文件系统。到这里一切还很正常。所以我很自信的输入了insmod first_drv.ko 但是当我用cat /proc/devices 查看时,却怎么也找不到相应的first_drv的字符设备。

这个时候我开始怀疑是不是自己的代码写错了,所以我将自己的代码跟老师的代码比对了好几遍,都没有发现有什么不一样的地方。所以我决定用老师的代码试试。相同的操作下来,我发现输入insmod first_drv.ko 但用cat /proc/devices 查看时还是找不到相应的first_drv的字符设备。这个时候我知道我的代码没有问题。那这是哪里出了问题啊。

我第一个想到的是根文件系统出了问题,但是我用Linux系统向单板发文件正常,这说明nfs挂接没有问题。

那是什么问题那??

我去网上查了一下,各种说法都有,还有很多人出过相同的错误,但他们大多是代码出现错误。而在一个求助帖子中我无意间看到一个网友说可能是内核版本号不一样。我立马看了一下我的内核版本。发现是一样的。但我也反应过来,确实可能是由于内核没有编译好。因为对应于老师的驱动要使用他提供的内核。所以我就按着老师的指示从新编写了一次内核。结果这次居然真的可以了。

所以,通过今天的事,我想建议各位学习的同学。驱动是在内核上跑的,所以一个正确完好的内核很重要。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值