Part Number:OMAP-L138
Tool/software: Linux
Currently I am trying to enable IPC communication between the ARM and DSP cores on our custom board following this guide and the following sources:
IPC 3.40.01.08
SYS/BIOS 6.73.01.01
xdctools 3.32.01.22
Additionally, the kernel being run is Linux 4.9.
A thorough check of the device trees shows that the core is enabled and has a properly reserved memory node. Additionally, our kernel configuration has all the proper modules enabled. However, when attempting to activate the modules, the following error occurs (This error also occurs on startup.):
root@custom:~# rmmod da8xx_remoteproc
[ 680.410317] remoteproc remoteproc0: releasing dsp
root@custom:~# modprobe da8xx_remoteproc da8xx_fw_name=messageq_single.xe674
[ 685.215987] davinci-rproc davinci-rproc.0: assigned reserved memory node dsp_cma@c3000000
[ 685.243597] remoteproc remoteproc0: dsp is available
[ 685.249146] remoteproc remoteproc0: Direct firmware load for messageq_single.xe674 failed with error -2
root@custom:~#
[ 685.281354] remoteproc remoteproc0: powering up dsp
[ 685.298329] remoteproc remoteproc0: Direct firmware load for messageq_single.xe674 failed with error -2
[ 685.317958] remoteproc remoteproc0: request_firmware failed: -2
Additionally, MessageQApp can properly set up the LAD daemon and begin searching for the DSP.
root@custom:~# /usr/bin/MessageQApp
Using numLoops: 100; procId : 1
Entered MessageQApp_execute
Local MessageQId: 0x80
^CIpc: Caught SIGINT, calling Ipc_stop...
root@custom:~# cat /tmp/LAD/log.txt
[0.154486]
Initializing LAD... [0.156447]
opening FIFO: /tmp/LAD/LADCMDS
[11.779057] Retrieving command...
[11.781899]
LAD_CONNECT:
[11.782063] client FIFO name = /tmp/LAD/207
[11.782172] client PID = 207
[11.782325] assigned client handle = 0
[11.782688] FIFO /tmp/LAD/207 created
[11.783963] FIFO /tmp/LAD/207 opened for writing
[11.784474] sent response
[11.784607] DONE
[11.784704] Retrieving command...
[11.785922] Sending response...
[11.786137] Retrieving command...
[11.786793] LAD_MULTIPROC_GETCONFIG: calling MultiProc_getConfig()...
[11.786967] MultiProc_getConfig() - 2 procs
[11.787072] # processors in cluster: 2
[11.787168] cluster baseId: 0
[11.787258] ProcId 0 - "HOST"
[11.787354] ProcId 1 - "DSP"
[11.787451] status = 0
[11.787536] DONE
[11.787827] Sending response...
[11.788020] Retrieving command...
[11.788727] LAD_NAMESERVER_SETUP: calling NameServer_setup()...
[11.788947] NameServer_setup: entered, refCount=0
[11.789196] NameServer_setup: creating listener thread
[11.790665] NameServer_setup: exiting, refCount=1
[11.791134] status = 0
[11.791269] DONE
[11.791368] Sending response...
[11.791957] Retrieving command...
[11.792217] LAD_MESSAGEQ_GETCONFIG: calling MessageQ_getConfig()...
[11.792351] status = 0
[11.792456] DONE
[11.792549] Sending response...
[11.793125] Retrieving command...
[11.793380] LAD_MESSAGEQ_SETUP: calling MessageQ_setup()...
[11.793516] MessageQ_setup: entered, refCount=0
[11.793631] NameServer_create(): 'MessageQ'
[11.793936] MessageQ_setup: exiting, refCount=1
[11.794077] status = 0
[11.794179] DONE
[11.794269] Sending response...
[11.796188] listener_cb: Entered Listener thread.
[11.796397] NameServer: waiting for unblockFd: 2, and socks: maxfd: 2
[11.796693] Retrieving command...
[11.796911] NameServer_attach: --> procId=1, refCount=0
[11.797181] NameServer_attach: created send socket: 5, procId 1
[11.797520] NameServer_attach: connect failed: procId=1, errno=22 (Invalid argu)
[11.797996] closing send socket: 5
[11.798216] NameServer_attach: <-- refCount=0, status=-1
[11.798348] Sending response...
[11.799902] Retrieving command...
[11.800591] LAD_MESSAGEQ_CREATE: calling MessageQ_create(0x1b7c8, 0x1b7e8)...
[11.800754] MessageQ_create: creating 'HOST'
[11.800930] NameServer_add: Entered key: 'HOST', data: 0x80
[11.801062] MessageQ_create: returning obj=0x1c5d0, qid=0x80
[11.801171] status = 0
[11.801268] DONE
[11.801356] Sending response...
[11.802378] Retrieving command...
[11.802627] LAD_NAMESERVER_GETUINT32: calling NameServer_getUInt32(0x1c4e8, 'SL.
[11.802792] NameServer_getLocal: entry key: 'SLAVE_DSP' not found!
[11.802920] NameServer_getRemote: no socket connection to processor 1
[11.803038] value = 0x80
[11.803142] status = -5
[11.803298] DONE
Checking under /lib/firmware in the kernel shows that it does have the source code (messageq_single.c) present. However, this source code is never built into the .xe674 file that is being looked for. I want to make sure that the firmware code is actually being built during the build process linked above, or if necessary, manually build this firmware code myself on the board.