I've been trying to get IPC up and running on the EVMK2HX board, and I'm having quite a few issues. My configuration is the following:
mcsdk_linux_3_0_4_18
ipc_3_0_4_29
linux kernel and rootfs built from Arago using configs/mcsdk/mcsdk-03.00.04.18-config.txt
I've built the IPC Linux libraries and transferred them to the target, along with the test apps (MesssageQApp, NameServerApp, ping_rpmsg). I've also transferred lad_tci6638 to /usr/bin and rebooted to ensure that I'm using it.
After booting the target my lad.txt file contains:
Initializing LAD...
opening FIFO: /tmp/LAD/LADCMDS
I tried running ping_rpmsg and get this:
ping_rpmsg: AF_RPMSG is 41 <-- I added this
Connecting to address 0x33 on vprocId 0
connect failed: Invalid argument (22)
I'm using linux kernel 3.10.10, and my rpmsg.h matches the 41 for AF_RPMSG
Running MessageQApp produces this:
Ipc_start: NameServer_setup() failed: -1
Using numLoops: 100; procId : 1
Ipc_start failed: status = -1
And updated lad.txt with this:
Initializing LAD...
opening FIFO: /tmp/LAD/LADCMDS
Retrieving command...
LAD_CONNECT:
client FIFO name = /tmp/LAD/1830
client PID = 1830
assigned client handle = 0
FIFO /tmp/LAD/1830 created
FIFO /tmp/LAD/1830 opened for writing
sent response
DONE
Retrieving command...
LAD_MULTIPROC_GETCONFIG: calling MultiProc_getConfig()...
MultiProc_getConfig() - 9 procs
Proc 0 - "HOST"
Proc 1 - "CORE0"
Proc 2 - "CORE1"
Proc 3 - "CORE2"
Proc 4 - "CORE3"
Proc 5 - "CORE4"
Proc 6 - "CORE5"
Proc 7 - "CORE6"
Proc 8 - "CORE7"
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
Then I thought that the problem was due to not having any DSP application running. So I tried to build the IPC DSP test apps, but I can't get them to build. I updated products.mak:
DEPOT ?= /opt
PLATFORM ?= tci6638
TOOLCHAIN_LONGNAME ?= arm-linux-gnueabihf
TOOLCHAIN_INSTALL_DIR ?= $(DEPOT)/gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux
TOOLCHAIN_PREFIX ?= $(TOOLCHAIN_INSTALL_DIR)/bin/$(TOOLCHAIN_LONGNAME)-
KERNEL_INSTALL_DIR ?= /home/bstupar/KeystoneDevelopment/oe-layersetup/build/arago-tmp-external-linaro-toolchain/work/keystone_evm-oe-linux-gnueabi/linux-keystone/3.10.10-r7b+gitrAUTOINC+07176920ed86dfdae97d272f574c3e2760d687ef/image/usr/src/kernel
XDC_INSTALL_DIR ?= $(DEPOT)/ti/xdctools_3_25_05_94
BIOS_INSTALL_DIR ?= $(DEPOT)/bios_6_37_00_20
ti.targets.elf.C66 ?= /opt/ti/ccsv5/tools/compiler/c6000_7.4.4/
And built: make -f ipc-bios.mak all
But continually get this:
building ipc packages ...
making all: Fri Jul 25 12:03:42 EDT 2014 ...
======== .interfaces [./packages/ti/configs/omap54xx/] ========
======== .interfaces [./packages/ti/configs/vayu/] ========
======== .interfaces [./packages/ti/grcm/] ========
======== .interfaces [./packages/ti/ipc/] ========
======== .interfaces [./packages/ti/ipc/family/omap54xx/] ========
======== .interfaces [./packages/ti/ipc/family/omapl138/] ========
generating interfaces for package ti.ipc.family.omapl138 (because package/package.xdc.inc is older than package.xdc) ...
translating VirtQueue
"ti/ipc/family/omapl138/VirtQueue.xdc", line 89: can't find imported unit: ti.sysbios.knl.Swi (ti.sysbios.knl.Swi)
error: compilation of package.xdc failed: parser failed
gmake[1]: *** [package/package.xdc.inc] Error 1
gmake: *** [packages/ti/ipc/family/omapl138/,.interfaces] Error 2
make: *** [all] Error 2
I also tried building messageq_single.c myself in a CCS project using rpmsg_transport.cfg, but generates linker errors. I'm clearly not including the right library, but don't know which one that should be:
undefined first referenced
symbol in file
--------- ----------------
MessageQ_create ./messageq_single.obj
MessageQ_get ./messageq_single.obj
MessageQ_getQueueId ./messageq_single.obj
MessageQ_put ./messageq_single.obj
MultiProc_getName ./messageq_single.obj
MultiProc_self ./messageq_single.obj
========
So having said all of that:
1. Where am I going wrong ? I've tried to follow the IPC Installation Linux Guide and the IPC User's Guide, but following those gets me the build error above. I've tried most of what I've found on the forum in other posts, but can't make any progress
2. Is there a *SIMPLE* was to get communication between ARM and DSP. I thought IPC would be it, but it seems awfully complicated just to get a simple communication path set up. I might feel differently if issuing 'make' built the DSP apps, and they "just worked". All I think I really need is a simple TCP socket connection to send messages on. Is there a simple way to get that ?
Thanks,
Brian