前段时间写的spi的驱动一直工作的很好,是到了去掉打印调试信息的时候了。可是当我利用条件编译去掉printk语句时,问题来了,读不到数了,why?我仔细的检查了一遍所有的ifdef-endif,确信没有任何问题,可是数就是出不来。经过一番思考,我认为问题出在,(这方面咱还是有一些经验的,咱没吃过猪肉,还是见过...:-))有些操作,尤其硬件相关的,需要一定的反应时间,printk恰恰起到了延时的作用,现在去掉了,问题就出来了。然后我的注意力就集中到对硬件的操作上来。一些寄存器的赋值,肯定没问题,然后就是spi的发送了(当然还有接收,不过那里我用了等你到永远,:-),应该不会出问题吧),因为只有它不是赋完值就完事的,它还要发送。这个可是我的重点怀疑对象,:-)。于是我把去掉的printk再给它加上,运行就正常了。问题果然在这里。我加了个mdelay函数,再去掉printk,ok运行正常,问题解决。
总结起来一句话,如题。事后想想,问题解决的也太顺利了点,又想如果在一开始时我就没加这个printk的话,又会是什么结果呢?:-),不知道。写这些就是给自己提个醒,:-)。
阅读(1989) | 评论(1) | 转发(0) |