求助关于摄像头静态编译改为动态编译的问题

combattre 2014-09-21 09:37:05
最近在做将静态编译进内核的摄像头驱动ov2655动态编译成ko模块进行动态加载。

静态编译进内核时摄像头是正常的,但将代码改编译成ko模块,动态加载到系统后发现/dev下无法生成设备节点,经测ov2655.c里的probe函数也没调起来,__init是跑起来了

__init函数里就i2c_add_driver(&sensor_i2c_driver)

请问需要怎样去调试和修改??
...全文
359 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
combattre 2014-10-11
  • 打赏
  • 举报
回复
板级初始化是静态注册i2c client,是在i2c adapter注册之前完成。查看了下静态编译进内核的camera驱动,初始化i2c_add_driver后调用了probe函数后才动态生成了设备。不是在板级配置文件中配置的。 我也尝试过在板级配置文件中,配置i2c client,但是目前还是追其platform data 目前对i2c_add_driver这还存在一点问题。 如果静态编译进内核时,camera驱动init函数调用i2c_add_driver后,就能正常的调用该驱动的probe函数,接着注册camera的i2c client。 如果我选择编译成模块,则就执行不到probe函数。若我在板级配置文件中静态配置了i2c client,则probe函数能被执行。 但是静态时i2c client又是在probe函数里动态生成,所以这个地方有点乱。还得理一下
fly 100% 2014-10-10
  • 打赏
  • 举报
回复
看看板级的i2c初始化名字 和驱动中的device 名字是不是匹配上了 3.0 是靠名字匹配的 其他的没研究过
猪头三小队长 2014-10-08
  • 打赏
  • 举报
回复
生成节点(设备)要自己mknod,不过没有调用到probe的话那一定是出问题了,如果没有调用到probe,连设备号都没有分给你,肯定没法生成节点。 i2c的linux驱动我没写过,但是按照一般规则,你只需要把设备id注册进去,系统就可以自己找到对应的驱动并probe。实在不行,你就在init里面直接自己调用probe,反正i2c也没什么热插拔一说。
combattre 2014-09-22
  • 打赏
  • 举报
回复
相似的看了。初始化init是一模一样的。但是摄像头就是无法使用。probe函数也没调用到
LouisScola 2014-09-22
  • 打赏
  • 举报
回复
不是很熟悉linux驱动的话,就找一个相似的可动态加载的i2c驱动看看,然后修改
combattre 2014-09-22
  • 打赏
  • 举报
回复
引用 3 楼 falloutmx 的回复:
需要在内核代码里加上这个设备,应该是i2c_board_info
没有反应,无法在dev生成设备节点video啊
falloutmx 2014-09-22
  • 打赏
  • 举报
回复
需要在内核代码里加上这个设备,应该是i2c_board_info

1,318

社区成员

发帖
与我相关
我的任务
社区描述
主要是开发驱动技术
社区管理员
  • 驱动程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧