我用6678两个核通讯,用到了IPC里的MessageQ模块,结合共享内存。0核向1核传递消息,用Timestamp_get32()函数统计耗时,1核MessageQ_get的耗时是0.00035ms,1核在接收到消息后,对消息中的某个标志位做了修改,然后又传回0核,0核MessageQ_get的耗时很长,而且不稳定,为100多ms,有时候还有负值。
两核之间消息传递机制都一样,不知道为什么耗时耗时差别这么大?如何解决1核向0核传消息时, MessageQ_get耗时大的问题。
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.
我用6678两个核通讯,用到了IPC里的MessageQ模块,结合共享内存。0核向1核传递消息,用Timestamp_get32()函数统计耗时,1核MessageQ_get的耗时是0.00035ms,1核在接收到消息后,对消息中的某个标志位做了修改,然后又传回0核,0核MessageQ_get的耗时很长,而且不稳定,为100多ms,有时候还有负值。
两核之间消息传递机制都一样,不知道为什么耗时耗时差别这么大?如何解决1核向0核传消息时, MessageQ_get耗时大的问题。
timeStamp好像对应的是两个寄存器共64bit,例程是不是只用了32bit的low register TSCL
例程里只用了Timestamp_get32() ,Timestamp_get32()返回的是Int32类型,
下面是Timestamp_get64() 的用法,不太理解result输出的是什么
Timestamp_get64() // module-wide |
Return a 64-bit timestamp
C synopsis | target-domain |
result输出是一个指针,指向一个64bit的数据,这个数据存储的是一个从硬件计数器读取的值,大小0~2^64
得到的值是对dsp时钟的计数,例如在时间点1得到一个值a,在时间点b得到值b,那么(b-a)/clk 就是两个时间点之间的时间差