各位大侠,小的我有一事不明;在使用C6748时发现,在只有一个中断时,这个中断的响应时间不是固定的,最长和最短相差最短时间的数倍。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
C6748 的中断是由FPGA给的(GPIO中断);收到FPGA的中断后,DSP会给操作另外的GPIO算是给FPGA回应;这两个GPIO信号都能通过FPGA的调试软件抓到。通过抓到的波形看到,“从触发中断到响应中断的时间” 会在有网口(W5300 EMIFA 没有使用中断)通信时变大。 估算:没有网口通信---中断响应时间是1us左右,有网口通信---中断响应时间10us左右。 我不是纠结于时间的长短,而是这两个时间为什么差别这么大。 另注:程序结构复杂 但只有这一个中断。Shine Zhang 说:请问你是怎么测这个中断响应时间的?
fei han2 说:没有用到bios 整个程序中只有一个中断 也没有设置gpio中断的优先级
我想问一下 网口通信程序的函数调用路径比较深 是不是保存现场时间增长了 这样的调用会不会影响中断响应时间
网口没有用中断吗?
调用再深,在响应中断时也只保留当前的现场,前面各级调用在调用当时就保存到堆栈了。也中断响应无关。
影响中断响应时间的还有与优化有关,以及调用RTS库的函数有关,因为RTS库是经过优化的。
所以你可以看一下你的程序中是否调用RTS库的函数,比如大数据的memcopy之类的。
你可以对工程做如下措施:
#1. 编译选项加-mi=xxx,这个XXX是你的应用能容忍的中断响应延时cycle数。
#2. 把RTS库也加-mi重新编译一下。
关于-mi的说明,参考文档spru187t。
Tony Tang 说:没有用到bios 整个程序中只有一个中断 也没有设置gpio中断的优先级
我想问一下 网口通信程序的函数调用路径比较深 是不是保存现场时间增长了 这样的调用会不会影响中断响应时间
网口没有用中断吗?
调用再深,在响应中断时也只保留当前的现场,前面各级调用在调用当时就保存到堆栈了。也中断响应无关。
影响中断响应时间的还有与优化有关,以及调用RTS库的函数有关,因为RTS库是经过优化的。
所以你可以看一下你的程序中是否调用RTS库的函数,比如大数据的memcopy之类的。
你可以对工程做如下措施:
#1. 编译选项加-mi=xxx,这个XXX是你的应用能容忍的中断响应延时cycle数。
#2. 把RTS库也加-mi重新编译一下。
关于-mi的说明,参考文档spru187t。
[/quote]
您的回答让我见到了曙光!
关于您的答案还有几个问题要请教:
1.网口确实没有用到中断。(用的是EMIFA接口(且没有使用EDMA3))
2.但如您所说使用了memcopy 和 malloc等函数。
3.我之前一直不知道上述函数是从哪里来的,原来是来自于RTS库。可是我不知道RTS库是怎么就添加到我的工程的。我使用的库都是手动添加到工程里的,如下图。麻烦您指导一下,我在哪里能添加或删除RTS库?
4.RTS库的源码在哪里能得到?有关于该源码的编译的说明文档吗?
5.关于我的工程里加入编译选项“-mi=xxx”,是加在下图所示位置吗?
还有关于TMS320C6748的中断响应延时cycle数大概是多少,这个参数我一直没有查到,您知道是在那篇技术文档里吗?
6.还有一个比较low的问题,就是您上文提到的参考文档spru187t 我怎么在TI官网通过类似于“spru187t”名字找到文档?这是一直困扰我的小问题了。
我水平较低,问题较多 麻烦了 !