Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1083002
  • 博文数量: 135
  • 博客积分: 10182
  • 博客等级: 上将
  • 技术积分: 1565
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-07 16:05
文章分类

全部博文(135)

文章存档

2011年(5)

2010年(20)

2009年(3)

2008年(16)

2007年(91)

分类: LINUX

2007-06-21 14:49:36

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

chinaunix网友2008-07-26 01:25:37

深有体会 当年也是在AT91RM9200上搞SPI, 没有采用PDC外围通道传输 而是直接采用CPU方式发送 调试的时候是有printk的 后来调试完毕去掉printk 就出现了lz的问题 这些代码是从PDC模式移植过来的 PDC模式由于不需要CPU的干预,性能会快些 而采用CPU直传就需要添加延时,否则出错