RT5350 OpenWrt下 I2C 问题

发现在挂入oled液晶时候,在刷屏时候,出现系统重启(非看门狗复位),好像是系统主动进行软重启。

怀疑是硬件问题,故移除了PCF8574T以及对应的主板上的4.7K上拉电阻(OLED上也有4.7K上拉电阻)。

且,OLED都用3.3V供电。

但问题依旧。

应该不是应用层的问题,因为移除write函数部分,系统正常。

网上发现一个文章使用ioctl来控制的。

http://blog.csdn.net/zhoufeng037521/article/details/6654539

改为ioctl问题依旧.

现在把单词发送的数据包,改为16+1字节,没有重启。推断是I2C单次数据包过大的问题。

但问题依旧存在。

之前使用write后sleep,现在ioctl后也sleep了才不会重启

因此推断为,进入驱动内核后,ioctl只是拷贝了ioctl的数据,但是二级指针的数据,估计是在每个数据包每次发送前拷贝的,此时如果应用层已经free内存了,就会出问题。

把内存换位静态的变量,也会出现问题,不得其解。暂时只能靠添加延时解决问题。


猜你喜欢

转载自my.oschina.net/u/2435819/blog/519086