使用printf()时,Spi中断处理程序工作

时间:2015-01-29 18:50:38

标签: c printf spi omap isr

我正在尝试在omap处理器和sam4l之间启动spi通信。我已经配置了spi协议,omap是主服务器。现在我看到的是我发送的测试数据正确到达sam4l,我可以看到isr正在打印该数据。在isr中使用更多printf使得操作发生并且相应的操作发生,但是如果我删除所有printfs,我看不到任何操作发生。造成这种异常的原因是什么?这是错误频率设置的常见情况吗? 如果需要代码,我也会发布,但它很大。 感谢

2 个答案:

答案 0 :(得分:0)

我认为您正在尝试在驱动程序中打印消息。

由于在控制台上打印消息会导致驱动程序变慢,因此行为缓慢且驱动程序运行良好。

使用 pr_info()进行调试,并通过将/ proc / sys / kernel / printk编辑为4 4 1 7

将更改设置更改为控制台上的消息

- >它会将调试消息存储在缓冲区中。

- >由于屏幕上打印消息,驱动程序不会减速。

- >您可以稍后输入 dmesg 命令来查看。

然后找到可能导致错误的orignal问题。

答案 1 :(得分:0)

如果例程在“在这里和那里”与printf一起工作,而在其他地方则没有,那么几乎可以肯定的问题是存在计时问题。举一个简单的例子,假设您写入SPI闪存,然后检查其内容。闪存写入将花费一些时间,因此,如果立即检查,数据将无效,但是,如果在两者之间插入printf调用,则可能已经花费了足够的时间以使回读现在有效。