Hi,
I'm using ti-processor-sdk-linux-k2g-evm-03.01.00.06 and now I'm trying to evaluate ipc_3_43_01_03/examples/66AK2G_linux_elf/ex02_messageq. Basically, it is running correctly. Here is the log on linux console:
root@k2g-evm:~# mpmcl reset dsp0 reset succeeded root@k2g-evm:~# mpmcl load dsp0 core0.out load succeeded root@k2g-evm:~# run dsp0 -sh: run: command not found root@k2g-evm:~# mpmcl run dsp0 [ 155.684470] remoteproc0: powering up 10800000.dsp0 [ 155.689653] remoteproc0: Booting unspecified pre-loaded fw image [ 155.696101] remoteproc0: remote processor 10800000.dsp0 is now up [ 155.709164] virtio_rpmsg_bus virtio4: rpmsg host is online [ 155.714694] virtio_rpmsg_bus virtio4: creating channel rpmsg-proto addr 0 x3d [ 155.732898] remoteproc0: registered virtio4 (type 7) run succeeded root@k2g-evm:~# ./app_host CORE0 --> main: --> Main_main: --> App_create: App_create: Host is ready <-- App_create: --> App_exec: App_exec: sending message 1 App_exec: sending message 2 App_exec: sending message 3 App_exec: message received, sending message 4 App_exec: message received, sending message 5 App_exec: message received, sending message 6 App_exec: message received, sending message 7 App_exec: message received, sending message 8 App_exec: message received, sending message 9 App_exec: message received, sending message 10 App_exec: message received, sending message 11 App_exec: message received, sending message 12 App_exec: message received, sending message 13 App_exec: message received, sending message 14 App_exec: message received, sending message 15 App_exec: message received App_exec: message received App_exec: message received <-- App_exec: 0 --> App_delete: <-- App_delete: <-- Main_main: <-- main:
And still, it works correctly if I increase the MessageQ buffer size like this :
==== ipc_3_43_01_03\examples\66AK2G_linux_elf\ex02_messageq\shared\AppCommon.h ==== typedef struct {` MessageQ_MsgHeader reserved;` UInt32 cmd;` ^ UInt32^ ^ ^ ^ data[100];`//Newly added } App_Msg;`
but if I increase the messageQ buffer size, say data[200], it fails as below:
root@k2g-evm:~# mpmcl reset dsp0 [ 1128.021295] remoteproc0: stopped remote processor 10800000.dsp0 reset succeeded root@k2g-evm:~# mpmcl load dsp0 core0.out load succeeded root@k2g-evm:~# mpmcl run dsp0 [ 1137.042910] remoteproc0: powering up 10800000.dsp0 [ 1137.047789] remoteproc0: Booting unspecified pre-loaded fw image [ 1137.061430] remoteproc0: remote processor 10800000.dsp0 is now up [ 1137.071946] virtio_rpmsg_bus virtio4: rpmsg host is online [ 1137.077527] virtio_rpmsg_bus virtio4: creating channel rpmsg-proto addr 0x3d [ 1137.086955] remoteproc0: registered virtio4 (type 7) run succeeded root@k2g-evm:~# ./app_host CORE0 --> main: --> Main_main: --> App_create: App_create: Host is ready <-- App_create: --> App_exec: TransportRpmsg_put: send failed: 90 (Message too long)
It seems the messageQ buffer size is limited by IPC implementation. How can I change the size limit for MessageQ ?
My goal is to know upper limit for MessageQ size and check the latency for larger messageQ packets from A15 to C66 and vice versa. But for me, it takes more time than I expected without no data[] in the messageQ buffer (default operation). From my evaluation, it takes1288709 nsec in App_exec() function. App_exec() sends totally 15 messageQs and gets their responses from C66. So it might be able to conclude that it takes 43 usec per way (A15 to C66, or, C66 to A15). If you have any suggestions to achieve smaller latency for messaging between A15 and C66, please let me know.
Best Regards,
Naoki