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.

AM5728: [AM5728]: Unable to establish IPC between Linux example application and DSP example firmware

Part Number: AM5728

Hello TI team,

I am in the process of setting up IPC between custom Linux application and custom firmware built using code composer studio but it didn't yield expected outcome due to IOMMU fault.

 Their software stacks should be compatible since the buildsystem which build the Linux application is based on TI's 11.01 Processor SDK Linux (IPC stack version 3.52.00.01) and the firmware is based on TI's 5.01.00.11 Processor SDK RTOS (IPC stack version 3.52.0.00).

In order to verify IPC between the A15 host core and TMS320C66x DSP remote core, I have opted to run the example Linux application (app_host) and example firmware (messageq_single.xe66) but I was unable to establish proper message exchange between the cores even though LAD successfully recognizes all the cores. Also, the firmware is up and running but hadshake is nonetheless not possible. See the following figures for more troubleshooting context:
TI_q1.png
TI_q2.png
TI_q3.png
TI_q4.png
TI_q5.png
I have ran the NameServerApp application which ran successfully indicating that the IPC stack on the Linux side should be functional which lead me to conclued that the issue stems from the fimware side of the stack:

root@konecs:/sys/bus/platform/drivers/omap-rproc# /usr/bin/NameServerApp 
Entered NameServerApp_startup
LAD_connect() succeeded: ladHandle=0
Calling NameServer_setup()...
params.maxValueLen=4
params.maxNameLen=32
params.checkExisting=1
Created NameServer 'MyNS'
Got another handle to NameServer 'MyNS'
Created NameServer 'MyNS2'
Testing nsHandle
NameServer_addUInt32() returned 0x23800
Trying to add same key (should fail)...
    ...got expected Failure from NameServer_addUInt32()
NameServer_getUInt32() returned 0, val=0xdeadbeef (was 0x00c0ffee)
Removing 0xdeadbeef w/ NameServer_remove()...
NameServer_addUInt32(0xdeadc0de) succeeded
NameServer_getUInt32() returned 0, val=0xdeadc0de (was 0x00c0ffee)
Removing 0xdeadc0de w/ NameServer_removeEntry()...
NameServer_addUInt32(0x0badc0de) succeeded
NameServer_getUInt32() returned 0, val=0xbadc0de (was 0x00c0ffee)
NameServer_remove(Key) succeeded
NameServer_addUInt32(foobar0, 0xbadc0de) succeeded
NameServer_getUInt32(foobar0) returned 0, val=0xbadc0de (was 0x00c0ffee)
NameServer_addUInt32(foobar1, 0xbadc0df) succeeded
NameServer_getUInt32(foobar1) returned 0, val=0xbadc0df (was 0x00c0ffee)
NameServer_addUInt32(foobar2, 0xbadc0e0) succeeded
NameServer_getUInt32(foobar2) returned 0, val=0xbadc0e0 (was 0x00c0ffee)
NameServer_addUInt32(foobar3, 0xbadc0e1) succeeded
NameServer_getUInt32(foobar3) returned 0, val=0xbadc0e1 (was 0x00c0ffee)
NameServer_addUInt32(foobar4, 0xbadc0e2) succeeded
NameServer_getUInt32(foobar4) returned 0, val=0xbadc0e2 (was 0x00c0ffee)
NameServer_addUInt32(foobar5, 0xbadc0e3) succeeded
NameServer_getUInt32(foobar5) returned 0, val=0xbadc0e3 (was 0x00c0ffee)
NameServer_addUInt32(foobar6, 0xbadc0e4) succeeded
NameServer_getUInt32(foobar6) returned 0, val=0xbadc0e4 (was 0x00c0ffee)
NameServer_addUInt32(foobar7, 0xbadc0e5) succeeded
NameServer_getUInt32(foobar7) returned 0, val=0xbadc0e5 (was 0x00c0ffee)
NameServer_addUInt32(foobar8, 0xbadc0e6) succeeded
NameServer_getUInt32(foobar8) returned 0, val=0xbadc0e6 (was 0x00c0ffee)
NameServer_addUInt32(foobar9, 0xbadc0e7) succeeded
NameServer_getUInt32(foobar9) returned 0, val=0xbadc0e7 (was 0x00c0ffee)
NameServer_remove(foobar0) succeeded
NameServer_remove(foobar1) succeeded
NameServer_remove(foobar2) succeeded
NameServer_remove(foobar3) succeeded
NameServer_remove(foobar4) succeeded
NameServer_remove(foobar5) succeeded
NameServer_remove(foobar6) succeeded
NameServer_remove(foobar7) succeeded
NameServer_remove(foobar8) succeeded
NameServer_remove(foobar9) succeeded
Testing nsHandle2
NameServer_addUInt32() returned 0x239b0
Trying to add same key (should fail)...
    ...got expected Failure from NameServer_addUInt32()
NameServer_getUInt32() returned 0, val=0xdeadbeef (was 0x00c0ffee)
Removing 0xdeadbeef w/ NameServer_remove()...
NameServer_addUInt32(0xdeadc0de) succeeded
NameServer_getUInt32() returned 0, val=0xdeadc0de (was 0x00c0ffee)
Removing 0xdeadc0de w/ NameServer_removeEntry()...
NameServer_addUInt32(0x0badc0de) succeeded
NameServer_getUInt32() returned 0, val=0xbadc0de (was 0x00c0ffee)
NameServer_remove(Key) succeeded
NameServer_addUInt32(foobar0, 0xbadc0de) succeeded
NameServer_getUInt32(foobar0) returned 0, val=0xbadc0de (was 0x00c0ffee)
NameServer_addUInt32(foobar1, 0xbadc0df) succeeded
NameServer_getUInt32(foobar1) returned 0, val=0xbadc0df (was 0x00c0ffee)
NameServer_addUInt32(foobar2, 0xbadc0e0) succeeded
NameServer_getUInt32(foobar2) returned 0, val=0xbadc0e0 (was 0x00c0ffee)
NameServer_addUInt32(foobar3, 0xbadc0e1) succeeded
NameServer_getUInt32(foobar3) returned 0, val=0xbadc0e1 (was 0x00c0ffee)
NameServer_addUInt32(foobar4, 0xbadc0e2) succeeded
NameServer_getUInt32(foobar4) returned 0, val=0xbadc0e2 (was 0x00c0ffee)
NameServer_addUInt32(foobar5, 0xbadc0e3) succeeded
NameServer_getUInt32(foobar5) returned 0, val=0xbadc0e3 (was 0x00c0ffee)
NameServer_addUInt32(foobar6, 0xbadc0e4) succeeded
NameServer_getUInt32(foobar6) returned 0, val=0xbadc0e4 (was 0x00c0ffee)
NameServer_addUInt32(foobar7, 0xbadc0e5) succeeded
NameServer_getUInt32(foobar7) returned 0, val=0xbadc0e5 (was 0x00c0ffee)
NameServer_addUInt32(foobar8, 0xbadc0e6) succeeded
NameServer_getUInt32(foobar8) returned 0, val=0xbadc0e6 (was 0x00c0ffee)
NameServer_addUInt32(foobar9, 0xbadc0e7) succeeded
NameServer_getUInt32(foobar9) returned 0, val=0xbadc0e7 (was 0x00c0ffee)
NameServer_remove(foobar0) succeeded
NameServer_remove(foobar1) succeeded
NameServer_remove(foobar2) succeeded
NameServer_remove(foobar3) succeeded
NameServer_remove(foobar4) succeeded
NameServer_remove(foobar5) succeeded
NameServer_remove(foobar6) succeeded
NameServer_remove(foobar7) succeeded
NameServer_remove(foobar8) succeeded
NameServer_remove(foobar9) succeeded
Deleting nsHandle and nsHandle2...
Testing nsHandleAlias
NameServer_addUInt32() returned 0x23800
Trying to add same key (should fail)...
    ...got expected Failure from NameServer_addUInt32()
NameServer_getUInt32() returned 0, val=0xdeadbeef (was 0x00c0ffee)
Removing 0xdeadbeef w/ NameServer_remove()...
NameServer_addUInt32(0xdeadc0de) succeeded
NameServer_getUInt32() returned 0, val=0xdeadc0de (was 0x00c0ffee)
Removing 0xdeadc0de w/ NameServer_removeEntry()...
NameServer_addUInt32(0x0badc0de) succeeded
NameServer_getUInt32() returned 0, val=0xbadc0de (was 0x00c0ffee)
NameServer_remove(Key) succeeded
NameServer_addUInt32(foobar0, 0xbadc0de) succeeded
NameServer_getUInt32(foobar0) returned 0, val=0xbadc0de (was 0x00c0ffee)
NameServer_addUInt32(foobar1, 0xbadc0df) succeeded
NameServer_getUInt32(foobar1) returned 0, val=0xbadc0df (was 0x00c0ffee)
NameServer_addUInt32(foobar2, 0xbadc0e0) succeeded
NameServer_getUInt32(foobar2) returned 0, val=0xbadc0e0 (was 0x00c0ffee)
NameServer_addUInt32(foobar3, 0xbadc0e1) succeeded
NameServer_getUInt32(foobar3) returned 0, val=0xbadc0e1 (was 0x00c0ffee)
NameServer_addUInt32(foobar4, 0xbadc0e2) succeeded
NameServer_getUInt32(foobar4) returned 0, val=0xbadc0e2 (was 0x00c0ffee)
NameServer_addUInt32(foobar5, 0xbadc0e3) succeeded
NameServer_getUInt32(foobar5) returned 0, val=0xbadc0e3 (was 0x00c0ffee)
NameServer_addUInt32(foobar6, 0xbadc0e4) succeeded
NameServer_getUInt32(foobar6) returned 0, val=0xbadc0e4 (was 0x00c0ffee)
NameServer_addUInt32(foobar7, 0xbadc0e5) succeeded
NameServer_getUInt32(foobar7) returned 0, val=0xbadc0e5 (was 0x00c0ffee)
NameServer_addUInt32(foobar8, 0xbadc0e6) succeeded
NameServer_getUInt32(foobar8) returned 0, val=0xbadc0e6 (was 0x00c0ffee)
NameServer_addUInt32(foobar9, 0xbadc0e7) succeeded
NameServer_getUInt32(foobar9) returned 0, val=0xbadc0e7 (was 0x00c0ffee)
NameServer_remove(foobar0) succeeded
NameServer_remove(foobar1) succeeded
NameServer_remove(foobar2) succeeded
NameServer_remove(foobar3) succeeded
NameServer_remove(foobar4) succeeded
NameServer_remove(foobar5) succeeded
NameServer_remove(foobar6) succeeded
NameServer_remove(foobar7) succeeded
NameServer_remove(foobar8) succeeded
NameServer_remove(foobar9) succeeded
Deleting nsHandleAlias...
params.maxValueLen=4
params.maxNameLen=32
params.checkExisting=1
Created NameServer 'MyNS'
Got another handle to NameServer 'MyNS'
Created NameServer 'MyNS2'
Testing nsHandle
NameServer_addUInt32() returned 0x239b0
Trying to add same key (should fail)...
    ...got expected Failure from NameServer_addUInt32()
NameServer_getUInt32() returned 0, val=0xdeadbeef (was 0x00c0ffee)
Removing 0xdeadbeef w/ NameServer_remove()...
NameServer_addUInt32(0xdeadc0de) succeeded
NameServer_getUInt32() returned 0, val=0xdeadc0de (was 0x00c0ffee)
Removing 0xdeadc0de w/ NameServer_removeEntry()...
NameServer_addUInt32(0x0badc0de) succeeded
NameServer_getUInt32() returned 0, val=0xbadc0de (was 0x00c0ffee)
NameServer_remove(Key) succeeded
NameServer_addUInt32(foobar0, 0xbadc0de) succeeded
NameServer_getUInt32(foobar0) returned 0, val=0xbadc0de (was 0x00c0ffee)
NameServer_addUInt32(foobar1, 0xbadc0df) succeeded
NameServer_getUInt32(foobar1) returned 0, val=0xbadc0df (was 0x00c0ffee)
NameServer_addUInt32(foobar2, 0xbadc0e0) succeeded
NameServer_getUInt32(foobar2) returned 0, val=0xbadc0e0 (was 0x00c0ffee)
NameServer_addUInt32(foobar3, 0xbadc0e1) succeeded
NameServer_getUInt32(foobar3) returned 0, val=0xbadc0e1 (was 0x00c0ffee)
NameServer_addUInt32(foobar4, 0xbadc0e2) succeeded
NameServer_getUInt32(foobar4) returned 0, val=0xbadc0e2 (was 0x00c0ffee)
NameServer_addUInt32(foobar5, 0xbadc0e3) succeeded
NameServer_getUInt32(foobar5) returned 0, val=0xbadc0e3 (was 0x00c0ffee)
NameServer_addUInt32(foobar6, 0xbadc0e4) succeeded
NameServer_getUInt32(foobar6) returned 0, val=0xbadc0e4 (was 0x00c0ffee)
NameServer_addUInt32(foobar7, 0xbadc0e5) succeeded
NameServer_getUInt32(foobar7) returned 0, val=0xbadc0e5 (was 0x00c0ffee)
NameServer_addUInt32(foobar8, 0xbadc0e6) succeeded
NameServer_getUInt32(foobar8) returned 0, val=0xbadc0e6 (was 0x00c0ffee)
NameServer_addUInt32(foobar9, 0xbadc0e7) succeeded
NameServer_getUInt32(foobar9) returned 0, val=0xbadc0e7 (was 0x00c0ffee)
NameServer_remove(foobar0) succeeded
NameServer_remove(foobar1) succeeded
NameServer_remove(foobar2) succeeded
NameServer_remove(foobar3) succeeded
NameServer_remove(foobar4) succeeded
NameServer_remove(foobar5) succeeded
NameServer_remove(foobar6) succeeded
NameServer_remove(foobar7) succeeded
NameServer_remove(foobar8) succeeded
NameServer_remove(foobar9) succeeded
Testing nsHandle2
NameServer_addUInt32() returned 0x23800
Trying to add same key (should fail)...
    ...got expected Failure from NameServer_addUInt32()
NameServer_getUInt32() returned 0, val=0xdeadbeef (was 0x00c0ffee)
Removing 0xdeadbeef w/ NameServer_remove()...
NameServer_addUInt32(0xdeadc0de) succeeded
NameServer_getUInt32() returned 0, val=0xdeadc0de (was 0x00c0ffee)
Removing 0xdeadc0de w/ NameServer_removeEntry()...
NameServer_addUInt32(0x0badc0de) succeeded
NameServer_getUInt32() returned 0, val=0xbadc0de (was 0x00c0ffee)
NameServer_remove(Key) succeeded
NameServer_addUInt32(foobar0, 0xbadc0de) succeeded
NameServer_getUInt32(foobar0) returned 0, val=0xbadc0de (was 0x00c0ffee)
NameServer_addUInt32(foobar1, 0xbadc0df) succeeded
NameServer_getUInt32(foobar1) returned 0, val=0xbadc0df (was 0x00c0ffee)
NameServer_addUInt32(foobar2, 0xbadc0e0) succeeded
NameServer_getUInt32(foobar2) returned 0, val=0xbadc0e0 (was 0x00c0ffee)
NameServer_addUInt32(foobar3, 0xbadc0e1) succeeded
NameServer_getUInt32(foobar3) returned 0, val=0xbadc0e1 (was 0x00c0ffee)
NameServer_addUInt32(foobar4, 0xbadc0e2) succeeded
NameServer_getUInt32(foobar4) returned 0, val=0xbadc0e2 (was 0x00c0ffee)
NameServer_addUInt32(foobar5, 0xbadc0e3) succeeded
NameServer_getUInt32(foobar5) returned 0, val=0xbadc0e3 (was 0x00c0ffee)
NameServer_addUInt32(foobar6, 0xbadc0e4) succeeded
NameServer_getUInt32(foobar6) returned 0, val=0xbadc0e4 (was 0x00c0ffee)
NameServer_addUInt32(foobar7, 0xbadc0e5) succeeded
NameServer_getUInt32(foobar7) returned 0, val=0xbadc0e5 (was 0x00c0ffee)
NameServer_addUInt32(foobar8, 0xbadc0e6) succeeded
NameServer_getUInt32(foobar8) returned 0, val=0xbadc0e6 (was 0x00c0ffee)
NameServer_addUInt32(foobar9, 0xbadc0e7) succeeded
NameServer_getUInt32(foobar9) returned 0, val=0xbadc0e7 (was 0x00c0ffee)
NameServer_remove(foobar0) succeeded
NameServer_remove(foobar1) succeeded
NameServer_remove(foobar2) succeeded
NameServer_remove(foobar3) succeeded
NameServer_remove(foobar4) succeeded
NameServer_remove(foobar5) succeeded
NameServer_remove(foobar6) succeeded
NameServer_remove(foobar7) succeeded
NameServer_remove(foobar8) succeeded
NameServer_remove(foobar9) succeeded
Deleting nsHandle and nsHandle2...
Testing nsHandleAlias
NameServer_addUInt32() returned 0x239b0
Trying to add same key (should fail)...
    ...got expected Failure from NameServer_addUInt32()
NameServer_getUInt32() returned 0, val=0xdeadbeef (was 0x00c0ffee)
Removing 0xdeadbeef w/ NameServer_remove()...
NameServer_addUInt32(0xdeadc0de) succeeded
NameServer_getUInt32() returned 0, val=0xdeadc0de (was 0x00c0ffee)
Removing 0xdeadc0de w/ NameServer_removeEntry()...
NameServer_addUInt32(0x0badc0de) succeeded
NameServer_getUInt32() returned 0, val=0xbadc0de (was 0x00c0ffee)
NameServer_remove(Key) succeeded
NameServer_addUInt32(foobar0, 0xbadc0de) succeeded
NameServer_getUInt32(foobar0) returned 0, val=0xbadc0de (was 0x00c0ffee)
NameServer_addUInt32(foobar1, 0xbadc0df) succeeded
NameServer_getUInt32(foobar1) returned 0, val=0xbadc0df (was 0x00c0ffee)
NameServer_addUInt32(foobar2, 0xbadc0e0) succeeded
NameServer_getUInt32(foobar2) returned 0, val=0xbadc0e0 (was 0x00c0ffee)
NameServer_addUInt32(foobar3, 0xbadc0e1) succeeded
NameServer_getUInt32(foobar3) returned 0, val=0xbadc0e1 (was 0x00c0ffee)
NameServer_addUInt32(foobar4, 0xbadc0e2) succeeded
NameServer_getUInt32(foobar4) returned 0, val=0xbadc0e2 (was 0x00c0ffee)
NameServer_addUInt32(foobar5, 0xbadc0e3) succeeded
NameServer_getUInt32(foobar5) returned 0, val=0xbadc0e3 (was 0x00c0ffee)
NameServer_addUInt32(foobar6, 0xbadc0e4) succeeded
NameServer_getUInt32(foobar6) returned 0, val=0xbadc0e4 (was 0x00c0ffee)
NameServer_addUInt32(foobar7, 0xbadc0e5) succeeded
NameServer_getUInt32(foobar7) returned 0, val=0xbadc0e5 (was 0x00c0ffee)
NameServer_addUInt32(foobar8, 0xbadc0e6) succeeded
NameServer_getUInt32(foobar8) returned 0, val=0xbadc0e6 (was 0x00c0ffee)
NameServer_addUInt32(foobar9, 0xbadc0e7) succeeded
NameServer_getUInt32(foobar9) returned 0, val=0xbadc0e7 (was 0x00c0ffee)
NameServer_remove(foobar0) succeeded
NameServer_remove(foobar1) succeeded
NameServer_remove(foobar2) succeeded
NameServer_remove(foobar3) succeeded
NameServer_remove(foobar4) succeeded
NameServer_remove(foobar5) succeeded
NameServer_remove(foobar6) succeeded
NameServer_remove(foobar7) succeeded
NameServer_remove(foobar8) succeeded
NameServer_remove(foobar9) succeeded
Deleting nsHandleAlias...
Testing long names...
Created NameServer 'LongNameabcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890'
Trying to add a name that exceeds maxNameLen...
    ...got expected Failure from NameServer_addUInt32()
Deleting nsHandle...
Created NameServer 'LongNameabcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890'
Trying to get a name that the remote cannot handle...
    ...got expected Failure from NameServer_getUInt32()
Deleting nsHandle...
Created NameServer 'LongNameabcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890'
Trying to use an instance name that the remote cannot handle...
    ...got expected Failure from NameServer_getUInt32()
Deleting nsHandle...
Calling NameServer_destroy()...
LAD_disconnect() succeeded

Can you please tell me what do I need to do in order to establish proper communication between the cores. First using the example software and then what do I need to take notice of (other than the usual like kernel configuration , DTS...) when building custom application and custom firmware in Code Composer Studio?

P.S.
Our custom Linux application and custom firware were properly exchanging messages on Linux kernel 4.19 and DSP IPC version 3.50.2.02 but in the current setup (Linux kernel 6.12 and DSP IPC version 3.52.0.00) the same Linux application and custom firmware are unable to communicate.

Best regards,
Martin