如题,在测试SRIO门铃中断时,发现系统函数printf对门铃中断有影响,printf在主流程中,不在中断服务函数,主要做了下面几个测试:
1) FPGA循环给8个核发送门铃中断,如果只有一个核的主流程添加printf,则只有该核收到的门铃中断次数少于其他核,其他核应该正常
2)FPGA循环给8个核发送门铃中断,如果只有一个核的主流程不添加printf,则只有该核不受影响,其他核收到门铃次数均小于该核的次数,且谁先执行printf谁收到的门铃中断要多余其它核
附:printf是不可重载函数,多核不能同时执行该函数,但是只有一个核在主流程中运行printf时,也会收到影响,请问为什么?pirntf在执行的过程中会有关中断的操作?
James Li2:
printf执行中是否关中断我不清楚,但是在实时性很强的应用(如SRIO通信)中不能加printf,printf非常耗时而且我的理解是printf把字符串输出到PC的CCS调试窗口的过程中应该包含了一些硬件操作。
Xiao Ma1:
回复 James Li2:
James Li2:您好!首先非常感谢您的回答。在中断服务函数中,我是没有添加printf的,因为实时性的问题会出现问题;但是在主流程中添加感觉应该不会出现问题的,但是在实测时,printf确实会影响SRIO门铃中断的产生,我想问您,printf“printf把字符串输出到PC的CCS调试窗口的过程中应该包含了一些硬件操作”,这些操作您能在说细点嘛?会有屏蔽中断等操作吗?谢谢!
James Li2:
回复 Xiao Ma1:
Sorry,我也只是猜测,我对printf的实现并不了解。
TI中文支持网