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.

Use RPMsg with OMAPL137

Other Parts Discussed in Thread: OMAP-L138, DA8XX, OMAPL138

Hi,

I want to install RPMsg for ARM/DSP communication management in an OMAPL137. I've read that RPMsg is focused to the news OMAP4 and OMAP5, but I'm not sure if RPMsg is compatible with OMAPL137. In the ARM is running a Linux kernel 3.3 and I can't use an older version previous to 3.x, so I can't use syslink2.x neither. My question is, could I use RPMsg with the OMAPL137?


Thanks,


Quique.

  • Hi Enrique,

    Thanks for your support.

    On Linux, IPC 3.x is built upon services available in the mainline Linux kernel (3.4+). These core services include remoteproc and rpmsg. Please check the wiki articles below for the devices supported in IPC3.x releases:

    http://processors.wiki.ti.com/index.php/IPC_3.x_Migration_Guide#Device_Support

    http://processors.wiki.ti.com/index.php/IPC_3.x#Overview_Presentation

       IPC 3.00.01.24 release - Added DRA7XX support (QNX, BIOS), OMAP5 (QNX) and OMAP-L138 (Linux).

    Please find the software download page as below:

    http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/3_00_01_24/index_FDS.html

    Please find the release notes for the IPC 3.00.01.24:

    http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/3_00_01_24/exports/ipc_3_00_01_24/ipc_3_00_01_24_release_notes.html

    This release supports the following devices:

    • TMS320C6472
    • TMS320C6474
    • TMS320C6670
    • TMS320C6678
    • OMAPL138
    • TCI6638K2K (Keystone II) - Linux on HOST, SYS/BIOS on C66 DSPs
    • OMAP543X - QNX on HOST, SYS/BIOS on DSP, SMP-BIOS on IPU
    • DRA7XX (Vayu)
      • SYS/BIOS on HOST, DSP(s), EVE(s), SMP-BIOS on IPU(s)
      • SYS/BIOS on HOST, DSP(s), EVE(s), IPU1-0, IPU1-1, SMP-BIOS on IPU2
      • QNX on HOST, SYS/BIOS on DSP1, SMP-BIOS on IPU2
    • OMAP-L138 - Linux on HOST, SYS/BIOS on DSP

    Also, please refer the below E2E thread:

    http://e2e.ti.com/support/embedded/linux/f/354/t/162692.aspx?pi196120=2

    Thanks & regards,

    Sivaraj K

    ------------------------------------------------------------------------------------------------------- 
    Please click the Verify Answer button on this post if it answers your question.
    --------------------------------------------------------------------------------------------------------

     

  • Hi,

    Firstly, thanks Sivaraj for your support.

    I have already downloaded and built IPC3.x package (both Linux side and SYS/BIOS side). Also, I have compiled the linux kernel modules in order to obtain the needed modules (remoteproc, da8xx_remoteproc, virtio_rpmsg_bus, rpmsg_proto). For all that I've followed the tutorial in TI:

    http://processors.wiki.ti.com/index.php/IPC_Install_Guide_Linux#products.mak

    I can mount all modules and run lad_omapl138 apparently with no problem. The problems start when I try to run the test applications. For example, when I type 

    target# /usr/bin/MessageQApp

    I obtain something like:

    Ipc_start: NameServer_setup () failed: -1.

    ...

    Ipc_start failed: status=-1


    And the lad.txt shows the next information:

    Initializing LAD...                                      
        opening FIFO: /tmp/LAD/LADCMDS                       
    Retrieving command...                                    
                                                             
    LAD_CONNECT:                                             
        client FIFO name = /tmp/LAD/1088                     
        client PID = 1088                                    
        assigned client handle = 0                           
        FIFO /tmp/LAD/1088 created                           
        FIFO /tmp/LAD/1088 opened for writing                
        sent response                                        
    DONE                                                     
    Retrieving command...                                    
    LAD_MULTIPROC_GETCONFIG: calling MultiProc_getConfig()...
    MultiProc_getConfig() - 2 procs                       
            Proc 0 - "HOST"                               
            Proc 1 - "DSP"                                
        status = 0                                        
    DONE                                                     
    Sending response...                                      
    Retrieving command...                                    
    LAD_NAMESERVER_SETUP: calling NameServer_setup()...

    NameServer_setup: entered, refCount=0                   
    NameServer_setup: created send socket: 5                
    NameServer_setup: connect failed: 22, Invalid argument  
        closing send socket: 5                              
    NameServer_setup: created recv socket: 5                
    NameServer_setup: bind failed: 22, Invalid argument     
        closing recv socket: 5                              
    NameServer_setup: creating listener thread              
    NameServer_setup: exiting, refCount=1                   
        status = -1                                         
    DONE                                                 
    Sending response...                                  
    Retrieving command...                                
    listener_cb: Entered Listener thread.                
    NameServer: waiting for unblockFd: 2, and socks: maxfd: 3
        EOF detected on FIFO, closing FIFO: /tmp/LAD/LADCMDS
                                                            
        opening FIFO: /tmp/LAD/LADCMDS

    I'm not sure about what is happening and I have next questions:

    1- Could the issue be caused the Host (ARM) doesn't receive the broadcast from the DSP, because the interrupts are not configured correctly in u-boot?

    2- In file NameServer_daemon.c, where NameServer_setup () is implemented, MESSAGEQ_RPMSG_PORT is a constant with value 61. Is this constant related to the interrupts configuration?

    3- Is the "da8xx_remoteproc" used for loading the slave binaries in the dsp? (similar to "slaveloader" application in syslink)

    4- How can I see if the slave binary has been correctly loaded in the dsp? Is there some command or something similar?

    Thanks.