Today, it looks like I’m able to load the example C66 DSP executable built under the TI SDK RTOS folder ipc_3_50_04_08/examples/DRA7XX_linux_elf/ex02_messageq and successfully run it. The other day I was getting remoteproc errors (-2) and a message indicating that the resource table was not found. I’m not sure what was going on, except the status of DSP1 was showing up as Offline instead of Running. I followed the instructions to transition DSP1 to the Running state, but it remained Offline.
Today, when I tried that same step, it transitioned from Suspended to Running.
Following are the steps I took to get the Linux app, built under the latest TI SDK Linux folder, exchanging messages with DSP1 (also built under the latest TI SDK).
root@beaglebone:/home/debian/ipc-starter/debug# cat /sys/kernel/debug/remoteproc/remoteproc*/name
4b234000.pru
4b238000.pru
4b2b4000.pru
4b2b8000.pru
58820000.ipu
55020000.ipu
40800000.dsp
41000000.dsp
root@beaglebone:/home/debian/ipc-starter/debug# cat /sys/class/remoteproc/remoteproc*/state
offline
offline
offline
offline
suspended
suspended
suspended
suspended
root@beaglebone:/home/debian/ipc-starter/debug# echo on > /sys/bus/platform/devices/40800000.dsp/power/control
root@beaglebone:/home/debian/ipc-starter/debug# cat /sys/class/remoteproc/remoteproc*/state
offline
offline
offline
offline
suspended
suspended
running
suspended
root@beaglebone:/home/debian/ipc-starter/debug#
root@beaglebone:/lib/firmware# mv dra7-dsp1-fw.xe66 dra7-dsp1-fw.xe66.stock_image
root@beaglebone:/lib/firmware# ln -s /home/debian/ipc-starter/debug/server_dsp1.xe66 dra7-dsp1-fw.xe66
cd /sys/bus/platform/drivers/omap-rproc/
root@beaglebone:/sys/bus/platform/drivers/omap-rproc# echo 40800000.dsp > unbind
[ 1952.619664] omap_hwmod: mmu0_dsp1: _wait_target_disable failed
[ 1952.619707] omap-iommu 40d01000.mmu: 40d01000.mmu: version 3.0
[ 1952.621403] omap-iommu 40d02000.mmu: 40d02000.mmu: version 3.0
[ 2449.430488] omap_hwmod: mmu0_dsp1: _wait_target_disable failed
[ 2449.430933] remoteproc remoteproc6: stopped remote processor 40800000.dsp
[ 2449.431164] remoteproc remoteproc6: releasing 40800000.dsp
root@beaglebone:/sys/bus/platform/drivers/omap-rproc# echo 40800000.dsp > bind
[ 1952.619664] omap_hwmod: mmu0_dsp1: _wait_target_disable failed
[ 1952.619707] omap-iommu 40d01000.mmu: 40d01000.mmu: version 3.0
[ 1952.621403] omap-iommu 40d02000.mmu: 40d02000.mmu: version 3.0
[ 2449.430488] omap_hwmod: mmu0_dsp1: _wait_target_disable failed
[ 2449.430933] remoteproc remoteproc6: stopped remote processor 40800000.dsp
[ 2449.431164] remoteproc remoteproc6: releasing 40800000.dsp
[ 2594.517030] omap-rproc 40800000.dsp: assigned reserved memory node dsp1-memory@99000000
[ 2594.517162] remoteproc remoteproc6: 40800000.dsp is available
[ 2594.532869] remoteproc remoteproc6: powering up 40800000.dsp
[ 2594.532890] remoteproc remoteproc6: Booting fw image dra7-dsp1-fw.xe66, size 4407080
[ 2594.539898] omap_hwmod: mmu0_dsp1: _wait_target_disable failed
[ 2594.539936] omap-iommu 40d01000.mmu: 40d01000.mmu: version 3.0
[ 2594.540034] omap-iommu 40d02000.mmu: 40d02000.mmu: version 3.0
[ 2594.545910] alloc_contig_range: [99000, 99003) PFNs busy
[ 2594.546343] alloc_contig_range: [99004, 99007) PFNs busy
[ 2594.546807] alloc_contig_range: [99000, 99003) PFNs busy
[ 2594.547230] alloc_contig_range: [99004, 99007) PFNs busy
[ 2594.556580] alloc_contig_range: [99600, 99700) PFNs busy
[ 2594.564388] virtio_rpmsg_bus virtio2: rpmsg host is online
[ 2594.564464] remoteproc remoteproc6: registered virtio2 (type 7)
[ 2594.564474] remoteproc remoteproc6: remote processor 40800000.dsp is now up
[ 2594.565391] virtio_rpmsg_bus virtio2: creating channel rpmsg-proto addr 0x3d
root@beaglebone:/home/debian/ipc-starter/debug# ./app_host -l
→ main:
Processor List
procId=0, procName=HOST
procId=1, procName=IPU2
procId=2, procName=IPU1
procId=3, procName=DSP2
procId=4, procName=DSP1
root@beaglebone:/home/debian/ipc-starter/debug# ./app_host DSP1
→ main:
→ Main_main:
→ App_create:
App_create: Host is ready
← App_create:
→ App_exec:
App_exec: sending message 1
App_exec: sending message 2
App_exec: sending message 3
App_exec: message received, sending message 4
App_exec: message received, sending message 5
App_exec: message received, sending message 6
App_exec: message received, sending message 7
App_exec: message received, sending message 8
App_exec: message received, sending message 9
App_exec: message received, sending message 10
App_exec: message received, sending message 11
App_exec: message received, sending message 12
App_exec: message received, sending message 13
App_exec: message received, sending message 14
App_exec: message received, sending message 15
App_exec: message received
App_exec: message received
App_exec: message received
← App_exec: 0
→ App_delete:
← App_delete:
← Main_main:
← main:
root@beaglebone:/home/debian/ipc-starter/debug# uname -a
Linux beaglebone 4.14.108-ti-r131 #1buster SMP PREEMPT Tue Mar 24 19:18:36 UTC 2020 armv7l GNU/Linux
root@beaglebone:/home/debian/ipc-starter/debug# cat /etc/dogtag
BeagleBoard.org Debian Buster IoT TIDL Image 2020-04-06
Also, I tried this same example on the latest SDK image built from the pre-built binaries:
← main:
root@am57xx-evm:~/ipc-starter# ./app_host -l
→ main:
Processor List
[ 1623.665988] omap-iommu 58882000.mmu: 58882000.mmu: version 2.1
[ 1623.703839] omap-iommu 41501000.mmu: 41501000.mmu: version 3.0
[ 1623.710423] omap-iommu 41502000.mmu: 41502000.mmu: version 3.0
[ 1623.717147] omap-iommu 40d01000.mmu: 40d01000.mmu: version 3.0
[ 1623.724224] omap-iommu 40d02000.mmu: 40d02000.mmu: version 3.0
procId=0, procName=HOST
procId=1, procName=IPU2
procId=2, procName=IPU1
procId=3, procName=DSP2
procId=4, procName=DSP1
root@am57xx-evm:~/ipc-starter# ./app_host DSP1
→ main:
[ 1636.665992] omap-iommu 58882000.mmu: 58882000.mmu: version 2.1
[ 1636.703878] omap-iommu 41501000.mmu: 41501000.mmu: version 3.0
[ 1636.710490] omap-iommu 41502000.mmu: 41502000.mmu: version 3.0
[ 1636.717216] omap-iommu 40d01000.mmu: 40d01000.mmu: version 3.0
[ 1636.724309] omap-iommu 40d02000.mmu: 40d02000.mmu: version 3.0
→ Main_main:
→ App_create:
App_create: Host is ready
← App_create:
→ App_exec:
App_exec: sending message 1
App_exec: sending message 2
App_exec: sending message 3
App_exec: message received, sending message 4
App_exec: message received, sending message 5
App_exec: message received, sending message 6
App_exec: message received, sending message 7
App_exec: message received, sending message 8
App_exec: message received, sending message 9
App_exec: message received, sending message 10
App_exec: message received, sending message 11
App_exec: message received, sending message 12
App_exec: message received, sending message 13
App_exec: message received, sending message 14
App_exec: message received, sending message 15
App_exec: message received
App_exec: message received
App_exec: message received
← App_exec: 0
→ App_delete:
← App_delete:
← Main_main:
← main:
For building the TI SDK RTOS examples (IMU, DSP, host), and for instructions on how to get the Linux host to load and run the exe’s, I followed this:http://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/Foundational_Components_IPC.html#ipc-for-am57xx
As I get additional results worth posting, I’ll do so. I THINK my next-steps are to learn how to build SDK RTOS DSP images with the resource table, and then load and debug via CCS.