当前位置: 技术问答>linux和unix
初学者刚解决了一个郁闷的问题
来源: 互联网 发布时间:2016-09-14
本文导语: 开发板上的linux摄像头驱动不能用,于是得自己写一个,但是用i2c初始化摄像头的时候总是传输不正确。 通过打印信息,发现是i2c_probe函数里面有一个错误的返回。 再继续看代码,发现这个返回值是因为在i2c的中断...
开发板上的linux摄像头驱动不能用,于是得自己写一个,但是用i2c初始化摄像头的时候总是传输不正确。
通过打印信息,发现是i2c_probe函数里面有一个错误的返回。
再继续看代码,发现这个返回值是因为在i2c的中断函数里检查不到i2c的应答。
拿示波器一量(第一次用示波器),果然没应答……
换了wince看看?有应答。
换linux看?没应答。
发现两个i2c时钟频率不一样,于是该了linux的i2c时钟频率,仍然无应答。
换了wince,又量了量摄像头的时钟和复位线,时钟有,复位是低。
换linux,时钟也有,复位线是…………高!!
于是再看gpio,都设置正常,往数据寄存器写个0试试,还是高。
想到是不是内核里还有那个不能用的摄像头驱动在,会不会那个在工作。
重新编译内核,去掉了原有的摄像头驱动,再启动,复位线……变低了……i2c也有应答了。
花了我好多好多时间……可郁闷坏了……
教训就是没用的就要去掉,省得捣乱。
通过打印信息,发现是i2c_probe函数里面有一个错误的返回。
再继续看代码,发现这个返回值是因为在i2c的中断函数里检查不到i2c的应答。
拿示波器一量(第一次用示波器),果然没应答……
换了wince看看?有应答。
换linux看?没应答。
发现两个i2c时钟频率不一样,于是该了linux的i2c时钟频率,仍然无应答。
换了wince,又量了量摄像头的时钟和复位线,时钟有,复位是低。
换linux,时钟也有,复位线是…………高!!
于是再看gpio,都设置正常,往数据寄存器写个0试试,还是高。
想到是不是内核里还有那个不能用的摄像头驱动在,会不会那个在工作。
重新编译内核,去掉了原有的摄像头驱动,再启动,复位线……变低了……i2c也有应答了。
花了我好多好多时间……可郁闷坏了……
教训就是没用的就要去掉,省得捣乱。
|
这个问题如果加锁的话应该就可以解决了哈~~~
|
没用的驱动一般不编译进去...
|
开板子自带的驱动会有不能用的.... 呵呵 你真倒霉
看看网上相同型号的板子有没驱动,你自己写的话对外围电路的情况得分析好,但是你最好参考板子的原理图哦,最后配套的驱动程序得搞一份,学习用,少走弯路
看看网上相同型号的板子有没驱动,你自己写的话对外围电路的情况得分析好,但是你最好参考板子的原理图哦,最后配套的驱动程序得搞一份,学习用,少走弯路
|
楼主很强大
解决问题 还来分享经验
解决问题 还来分享经验
|
“开发板上的linux摄像头驱动不能用,于是得自己写一个,但是用i2c初始化摄像头的时候总是传输不正确。”
自己能重新写一个,至少说明楼主比较熟悉驱动了,已是高手行列。
自己能重新写一个,至少说明楼主比较熟悉驱动了,已是高手行列。
|
楼主强人,标题是初学者,还第一次用示波器,就做好了一个摄像头驱动
|
这个开发板是谁做的,把你自己写的摄像头驱动卖给他们吧
|
楼主很强大。。
|
做人要厚道,这是初学者?
如果这样,我第一次接触电脑,发现操作系统不好用,自己写了一个,行不
如果这样,我第一次接触电脑,发现操作系统不好用,自己写了一个,行不
|
楼主挺厉害的,呵呵
|
楼主V5
|
呵呵,强淫自有强法子
|
这个应该不是初学者能会的吧……