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.

ipc 3.x MessageQApp test on AM572x evaluation module

Other Parts Discussed in Thread: OMAPL138, DA8XX

Dear all,

I test IPC 3.x on my am572x evaluation.

On c66 side, I load messageq_single.xe66.

On arm/linux side, I run ./lad_dra7xx -l lad.txt .

Then I run MesageQApp, I got the message.

root@am57xx-evm:bin# ./MessageQApp
[ 1348.523358] virtio_rpmsg_bus virtio2: channel rpmsg-proto::0:ffffffff already
exist
[ 1348.531298] virtio_rpmsg_bus virtio1: channel rpmsg-proto::0:ffffffff already
exist
Using numLoops: 100; procId : 1
Entered MessageQApp_execute
Local MessageQId: 0x80

I don't see the message interaction.

linux boot parameter:

console=ttyO2,115200n8 mem=768M@0x80000000 rproc_mem=32M@0x90000000 root=PARTUUID=00000000-02 rw rootfstype=ext4 rootwait

root@am57xx-evm:bin# cat /debug/remoteproc/remoteproc2/trace0
[ 0.000] Watchdog disabled: TimerBase = 0x48086000 ClkCtrl = 0x4a009728
[ 0.000] 17 Resource entries at 0x95000000
[ 0.000] messageq_single.c:main: MultiProc id = 4
[ 0.000] registering rpmsg-proto:rpmsg-proto service on 61 with HOST
[ 0.000] Watchdog disabled: TimerBase = 0x48086000 ClkCtrl = 0x4a009728
[ 0.000] tsk1Fxn: created MessageQ: SLAVE_DSP1; QueueID: 0x40080
[ 0.000] Awaiting sync message from host...

The ti-processor-sdk-rtos-am57xx-evm-02.00.00.00-Linux-x86-Install.bin ipc_3_40_01_08 has a IPC_Install_Guide_Linux.pdf, it describes the omapl138 and omap54xx.

Does document describe am572x?

  • Hi,

    I will ask the software team to look at this.
  • Hi,

    Regarding your question:
    "Does document describe am572x?"
    I believe the document provided in ipc_3_40_01_08 is common for various platforms. So the part where omapl138 is mentioned is just an example, you should replace with the relevant platform instead.

    Which SDK do you use? Is it ti-processor-sdk-linux-am57xx-evm-02.00.00.00 or the RTOS SDK?

    Best Regards,
    Yordan
  • Hi Yordan,

    I download ti-processor-sdk-rtos-am57xx-evm-02.00.00.00-Linux-x86-Install.bin.

    IPC_Install_Guide_Linux.pdf is included in ipc_3_40_01_08 (in ti-processor-sdk-rtos-am57xx-evm-02.00.00.00-Linux-x86-Install.bin)

    I read the IPC_Install_Guide_Linux.pdf .

    Yordan Kovachev said:
    I believe the document provided in ipc_3_40_01_08 is common for various platforms. So the part where omapl138 is mentioned is just an example, you should replace with the relevant platform instead.

    It is different on AM572X.

    1. rproc_mem linux boot-up parameter, I don't know the address, I use readelf to get the  entry point messageq_single.xe66, then guess the address is 0x90000000.

    So I use rproc_mem=32M@0x90000000.

    2. How to load the dsp firmware, omapl138 has module parameter da8xx_fw_name to specify firmware name, but am572x doesn't the parameter. I traced the omap_remoteproc.c, but no ideal. I rename dra7-dsp2-fw.xe66 to load the messageq_single.xe66 .

    It is convenience that a document describes the part.

    IPC_Install_Guide_Linux.pdf don't mention the cortex m4 part, I don't know how to test cortex m4 by IPC 3.x .

  • Dear all,

    I inserted debug message in MessageQapp, it is in MessageQ_open() while loop.

    lad_dra7xx -l l.txt

    root@am57xx-evm:~# ./MessageQApp 
    Using numLoops: 100; procId : 1
    Entered MessageQApp_execute
    Local MessageQId: 0x80
    MessageQ_open
    MessageQ_open
    MessageQ_open

    if type
    MessageQApp 3 4

    Using numLoops: 3; procId : 4                                                  
    Entered MessageQApp_execute                                                    
    Local MessageQId: 0x80                                                         
    Remote queueId  [0x40080]                                                      
    Exchanging 3 messages with remote processor DSP1...                            
    MessageQ_get #1 Msg = 0xb6400468                                               
    MessageQ_get #2 Msg = 0xb6400468                                               
    MessageQ_get #3 Msg = 0xb6400468                                               
    Exchanged 3 messages with remote processor DSP1                                
    Sample application successfully completed!                                     
    Leaving MessageQApp_execute   

    Does it change message successfully?

    providing my linux environment/step:

    root@am57xx-evm:~# cat /proc/cmdline                                            
    console=ttyO2,115200n8 rproc_mem=32M@0x90000000 root=PARTUUID=00000000-02 rw roo
    tfstype=ext4 rootwait  

    mount -t debugfs none /debug/                                                   
    modprobe remoteproc                                                             
    modprobe omap_remoteproc                                                        
    modprobe virtio_rpmsg_bus                                                       
    modprobe rpmsg_prot

    root@am57xx-evm:~# cat /debug/remoteproc/remoteproc2/trace0 [ 0.000] Watchdog disabled: TimerBase = 0x48086000 ClkCtrl = 0x4a009728 [ 0.000] 17 Resource entries at 0x95000000 [ 0.000] messageq_single.c:main: MultiProc id = 4 [ 0.000] registering rpmsg-proto:rpmsg-proto service on 61 with HOST [ 0.000] Watchdog disabled: TimerBase = 0x48086000 ClkCtrl = 0x4a009728 [ 0.000] tsk1Fxn: created MessageQ: SLAVE_DSP1; QueueID: 0x40080 [ 0.000] Awaiting sync message from host...

  • Hi descent,

    Yes, messages were exchanged successfully after you specified ProcId =4, which is DSP1. By default MessageQApp exchanges messages between host (A15) and slave procId 1 - which is IPU2, since you didn't have messageq_single.xem4 loaded for IPU2 (/lib/firmware/dra7-ipu2-fw.xem4), you would not be able to see message exchange with ./MessageQApp.

    You should also see "Received msg from (procId:remoteQueueId): 0x0:0x80" in remoteproc2/trace0 after running ./MessageQApp 3 4.

    The remote proc memory (CMA pool) has been allocated in device tree for AM57x. rproc_mem kernel parameter is for DaVinci DA850/OMAPL138 device.

    Regards,
    Garrett