- 博客(5)
- 收藏
- 关注
原创 Linux驱动模块的文件操作集的函数里面的filp->private_data的传入途径
filp->private_data,此时的dev就是前面已经初始化后的结构体设备指针,可以用里面的节点指针和gpio编号,如果没有在open函数中赋值,如下图所示,它是应用与驱动读写数据的桥梁,这些函数里面一般会有一个filp->private_data的变量,通常是把驱动里的。的,如下图所示,假如没有这一步,后面得到的结构体指针指向的将会是一个。,例如gpio编号会是一串很长的数字,导致驱动无法使用。编译不会报错,但是得到的各种属性都是错误值。如下图所示,在write函数中用到这个。
2024-07-09 22:00:44 149
原创 Arduino中的Serial.println()不支持std::string数据格式打印
解决方法:使用c_str()方法转换成c风格打印,如下图所示。
2024-07-09 14:08:07 418
原创 imx6ull platform实验设备树compatible属性匹配不成功
下面的是错误写法,当时就很奇怪为什么把compatible属性改成官方的就能进入probe和remove函数,而用自己添加的节点就不行,而且每一个自己添加的节点都不行,面对这个量子问题,我当时花了好久时间在驱动程序上都没解决问题,最后把问题集中到设备树上才让我发现这个致命错误,由于前面的实验没有对这个属性做判断所以写错了也没有关系,所以我每一个添加的节点都是从第一个上面复制过来的所以都是错的。主要的原因就是设备树节点的status应该是okay,而正点原子写的是okey。
2024-07-07 16:50:00 217
原创 写linux按键驱动出现invalid GPIO的报错
所以在注册中断函数中只需要把dev传给它就行了,而我传给他的是&dev,也就是这个指针变量的地址,所以实际的设备结构体并没有被传进中断函数,这就进而导致获取不到设备结构体中的gpio标号而发生报错。从上图可以看出request_irq()函数的最后一个参数void *dev,是一个无类型指针,注册函数通过这个指针把设备结构体传入中断函数。而这个注册函数是被我定义在了一个初始化函数里面如上图所示,设备结构体是以struct irq_dev *dev指针的形式传入这个初始化函数。在写中断按键实验的时候出现了。
2024-06-28 19:26:11 287
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人