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.

Linux/LINUXSDK-OMAPL138: IPC - MessageQApp

Part Number: LINUXSDK-OMAPL138
Other Parts Discussed in Thread: OMAPL138, OMAP-L138

Tool/software: Linux

Hi,
Im trying to build and deploy the sample MessageQ application to a OMAPL138-LCDK board.

With the previous Processor SDK release (04.00.00.04) I could see messages between the ARM and DSP core... However, I have recently returned to this project, and have not been able to replicate these messages after an update to the new SDK version (04.02.00.09). I have also not been able to completely install the required RTOS package (I can install using `--mode text` and just CTRL-C when it gets stuck on 100%, otherwise the GUI helpfully undoes all changes. My installer gets stuck on extracting docs.zip for xdc)... That aside...

I am able to build all linux side libraries, including the required kernel modules... Build all and install to the target rootfs, prepare SD and boot etc... I do this all within the processor SDK makefile.

Software versions in use are:

  • ipc_3_47_00_00
  • bios_6_52_00_12
  • pdk_omapl138_1_0_3
  • processor_sdk_rtos_omapl138_4_02_00_09
  • ti-cgt-c6000_8.2.2
  • ti-cgt-arm_16.9.3.LTS
  • xdctools_3_50_03_33_core

I load all required applications, libraries and firmware to my board then try and run the linux side application... This application is never able to find the Named MessageQ on the DSP core (DSP:MsgQ:01). I've added additional output to indicate the error, which shows `App_create: MessageQ Not found (DSP:MsgQ:01)`. This same application runs as expected if it looks for the ARM MessageQ (ie - itself). I can see messages going back and forth...

root@omapl138-lcdk:~# omapl138-lcdk/ex02_messageq/release/app_host DSP
--> main:
--> Main_main:
--> App_create:
^CIpc: Caught SIGINT, calling Ipc_stop...
root@omapl138-lcdk:~# omapl138-lcdk/ex02_messageq/release/app_host HOST
--> 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:

This application is ex02_messageq found within the 'examples' folder of the IPC installation. I have built this using the same processor SDK make file (ti-ipc-examples && ti-ipc-examples_install) and also prepared a separate project with the same results...

I have also added the requisite rproc_mem boot argument, however, this is kinda strange for me... My rsc_table_omapl138.h file indicates that RPMSG_VRING0_DA starts at 0xc3000000, with DATA_DA starting at 0xc3100000.

If I set rproc_mem to be 16M@0xc3000000, then I see the following errors when loading the DSP firmware

remoteproc remoteproc0: dsp is available
remoteproc remoteproc0: powering up dsp
remoteproc remoteproc0: Booting fw image server_dsp.xe674, size 3723824
virtio_rpmsg_bus virtio0: rpmsg host is online
virtio_rpmsg_bus virtio0: creating channel rpmsg-proto addr 0x3d
------------[ cut here ]------------
WARNING: CPU: 0 PID: 632 at net/rpmsg/rpmsg_proto.c:117 rpmsg_sock_get_proc_id+0x44/0x60 [rpmsg_proto]
Modules linked in: da8xx_remoteproc sha256_generic ohci_da8xx ohci_hcd usbcore usb_common davinci_wdt phy_da8xx_usb rpmsg_proto virtio_rpmsg_bus rpmsg_core remoteproc virtio virtio_ring firmware_class cryptodev(O) autofs4
CPU: 0 PID: 632 Comm: irq/28-da8xx-re Tainted: G           O    4.9.59-ga75d8e9305 #2
Hardware name: AM18x/OMAP-L138 Hawkboard
Backtrace: 
[<c0012f50>] (dump_backtrace) from [<c00131f4>] (show_stack+0x18/0x1c)
 r7:00000009 r6:00000000 r5:bf048dd4 r4:00000000
[<c00131dc>] (show_stack) from [<c02367d8>] (dump_stack+0x20/0x28)
[<c02367b8>] (dump_stack) from [<c0021a6c>] (__warn+0xdc/0x104)
[<c0021990>] (__warn) from [<c0021b4c>] (warn_slowpath_null+0x28/0x30)
 r9:00000000 r8:00000009 r7:bf0490c8 r6:c5c009c0 r5:bf0490c8 r4:ffffffed
[<c0021b24>] (warn_slowpath_null) from [<bf0487fc>] (rpmsg_sock_get_proc_id+0x44/0x60 [rpmsg_proto])
[<bf0487b8>] (rpmsg_sock_get_proc_id [rpmsg_proto]) from [<bf0489b0>] (rpmsg_proto_probe+0x20/0x134 [rpmsg_proto])
 r5:bf0490c8 r4:c5d1a600
[<bf048990>] (rpmsg_proto_probe [rpmsg_proto]) from [<bf03b444>] (rpmsg_dev_probe+0x98/0x144 [rpmsg_core])
 r7:bf0490c8 r6:c5c009c0 r5:bf0490c8 r4:c5d1a600
[<bf03b3ac>] (rpmsg_dev_probe [rpmsg_core]) from [<c02cc7cc>] (driver_probe_device+0x230/0x2dc)
 r6:00000000 r5:c0691dd8 r4:c5d1a600
[<c02cc59c>] (driver_probe_device) from [<c02cc9dc>] (__device_attach_driver+0xa0/0xd4)
 r9:c0691db4 r8:00000000 r7:00000001 r6:c5d1a600 r5:c40a5d38 r4:bf0490c8
[<c02cc93c>] (__device_attach_driver) from [<c02ca9fc>] (bus_for_each_drv+0x6c/0x9c)
 r7:00000001 r6:c02cc93c r5:c40a5d38 r4:00000000
[<c02ca990>] (bus_for_each_drv) from [<c02cc474>] (__device_attach+0xb4/0x11c)
 r6:c5d1a600 r5:c5d1a634 r4:c5d1a600
[<c02cc3c0>] (__device_attach) from [<c02cca5c>] (device_initial_probe+0x14/0x18)
 r7:00000000 r6:c5d1a600 r5:bf03baac r4:c5d1a608
[<c02cca48>] (device_initial_probe) from [<c02cba94>] (bus_probe_device+0x8c/0x94)
[<c02cba08>] (bus_probe_device) from [<c02c9b50>] (device_add+0x3d0/0x580)
 r7:00000000 r6:c5d1a600 r5:c5ddc830 r4:c5d1a608
[<c02c9780>] (device_add) from [<c02c9d1c>] (device_register+0x1c/0x20)
 r10:c413e348 r9:bf0412c4 r8:00000000 r7:c413e300 r6:c5ddc830 r5:00000000
 r4:c5d1a600
[<c02c9d00>] (device_register) from [<bf03b35c>] (rpmsg_register_device+0x58/0x94 [rpmsg_core])
 r5:00000000 r4:c5d1a600
[<bf03b304>] (rpmsg_register_device [rpmsg_core]) from [<bf041424>] (rpmsg_ns_cb+0x160/0x22c [virtio_rpmsg_bus])
 r5:00000000 r4:c5d1a600
[<bf0412c4>] (rpmsg_ns_cb [virtio_rpmsg_bus]) from [<bf042260>] (rpmsg_recv_done+0xd4/0x290 [virtio_rpmsg_bus])
 r7:c5c0030c r6:c413e300 r5:c5c00300 r4:c3040000
[<bf04218c>] (rpmsg_recv_done [virtio_rpmsg_bus]) from [<bf020300>] (vring_interrupt+0x40/0x58 [virtio_ring])
 r10:c0584728 r9:c067101d r8:c005ff58 r7:c064ad90 r6:00000001 r5:c064ad90
 r4:c5ddd000
[<bf0202c0>] (vring_interrupt [virtio_ring]) from [<bf031b6c>] (rproc_vq_interrupt+0x4c/0x70 [remoteproc])
[<bf031b20>] (rproc_vq_interrupt [remoteproc]) from [<bf0b51bc>] (handle_event+0x1c/0x30 [da8xx_remoteproc])
[<bf0b51a0>] (handle_event [da8xx_remoteproc]) from [<c005ff7c>] (irq_thread_fn+0x24/0x5c)
 r5:c064ad90 r4:c5c00500
[<c005ff58>] (irq_thread_fn) from [<c00601e0>] (irq_thread+0x100/0x1e4)
 r7:c064ad90 r6:00000001 r5:c40a4000 r4:c5c00500
[<c00600e0>] (irq_thread) from [<c003e6c8>] (kthread+0xdc/0xfc)
 r10:00000000 r9:00000000 r8:c00600e0 r7:c5c00500 r6:c40a4000 r5:00000000
 r4:c5ea99a0
[<c003e5ec>] (kthread) from [<c000fa70>] (ret_from_fork+0x14/0x24)
 r8:00000000 r7:00000000 r6:00000000 r5:c003e5ec r4:c5ea99a0
---[ end trace 1612f3c698c578b6 ]---
remoteproc remoteproc0: registered virtio0 (type 7)
remoteproc remoteproc0: remote processor dsp is now up

If I set to 16M@0xc3100000

remoteproc remoteproc0: dsp is available
remoteproc remoteproc0: powering up dsp
remoteproc remoteproc0: Booting fw image server_dsp.xe674, size 3723824
virtio_rpmsg_bus virtio0: rpmsg host is online
remoteproc remoteproc0: registered virtio0 (type 7)
remoteproc remoteproc0: remote processor dsp is now up

I see no errors, but also see no activity ... Either to the terminal, or the mounted debugfs (empty /debug/remoteproc/remoteproc0/trace0)

Any pointers?

  • Hi,

    When building and installing the necessary IPC components & the MessageQ app, you are referring to this guide:
    processors.wiki.ti.com/.../IPC_Install_Guide_Linux

    Right?

    Best Regards,
    Yordan
  • Yes I have followed that guide, as well as using the ti-ipc targets found in the SDK Makefile.

    My current rootfs is an SD card. For the install target, I mount this card and set the prefix to this folder.

    Can you confirm that the bootargs should be setting the rproc_mem to be 16M@0xc3000000. Seems like memory is allocated correctly;

    da8xx_rproc_reserve_cma: reserving 0x1000000 @ 0xc3000000...
    cma: Reserved 16 MiB at 0xc3000000
    cma: Reserved 16 MiB at 0xc6c00000

    I just dont know why this causes the back-trace errors to be displayed when loading the firmware file...

    remoteproc remoteproc0: dsp is available
    remoteproc remoteproc0: powering up dsp
    remoteproc remoteproc0: Booting fw image messageq_single.xe674, size 3771720
    virtio_rpmsg_bus virtio0: rpmsg host is online
    virtio_rpmsg_bus virtio0: creating channel rpmsg-proto addr 0x3d
    ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 654 at net/rpmsg/rpmsg_proto.c:117 rpmsg_sock_get_proc_id+0x44/0x60 [rpmsg_proto]
    Modules linked in: da8xx_remoteproc sha256_generic ohci_da8xx ohci_hcd usbcore usb_common davinci_wdt phy_da8xx_usb rpmsg_proto virtio_rpmsg_bus rpmsg_core remoteproc virtio virtio_ring firmware_class cryptodev(O) autofs4
    CPU: 0 PID: 654 Comm: irq/28-da8xx-re Tainted: G           O    4.9.59-ga75d8e9305 #3
    Hardware name: AM18x/OMAP-L138 Hawkboard
    Backtrace: 
    [<c0012f50>] (dump_backtrace) from [<c00131f4>] (show_stack+0x18/0x1c)
     r7:00000009 r6:00000000 r5:bf048dd4 r4:00000000
    [<c00131dc>] (show_stack) from [<c02367d8>] (dump_stack+0x20/0x28)
    [<c02367b8>] (dump_stack) from [<c0021a6c>] (__warn+0xdc/0x104)
    [<c0021990>] (__warn) from [<c0021b4c>] (warn_slowpath_null+0x28/0x30)
     r9:00000000 r8:00000009 r7:bf0490c8 r6:c5a5e1c0 r5:bf0490c8 r4:ffffffed
    [<c0021b24>] (warn_slowpath_null) from [<bf0487fc>] (rpmsg_sock_get_proc_id+0x44/0x60 [rpmsg_proto])
    [<bf0487b8>] (rpmsg_sock_get_proc_id [rpmsg_proto]) from [<bf0489b0>] (rpmsg_proto_probe+0x20/0x134 [rpmsg_proto])
     r5:bf0490c8 r4:c5a14600
    [<bf048990>] (rpmsg_proto_probe [rpmsg_proto]) from [<bf03b444>] (rpmsg_dev_probe+0x98/0x144 [rpmsg_core])
     r7:bf0490c8 r6:c5a5e1c0 r5:bf0490c8 r4:c5a14600
    [<bf03b3ac>] (rpmsg_dev_probe [rpmsg_core]) from [<c02cc7cc>] (driver_probe_device+0x230/0x2dc)
     r6:00000000 r5:c0691dd8 r4:c5a14600
    [<c02cc59c>] (driver_probe_device) from [<c02cc9dc>] (__device_attach_driver+0xa0/0xd4)
     r9:c0691db4 r8:00000000 r7:00000001 r6:c5a14600 r5:c2d5fd38 r4:bf0490c8
    [<c02cc93c>] (__device_attach_driver) from [<c02ca9fc>] (bus_for_each_drv+0x6c/0x9c)
     r7:00000001 r6:c02cc93c r5:c2d5fd38 r4:00000000
    [<c02ca990>] (bus_for_each_drv) from [<c02cc474>] (__device_attach+0xb4/0x11c)
     r6:c5a14600 r5:c5a14634 r4:c5a14600
    [<c02cc3c0>] (__device_attach) from [<c02cca5c>] (device_initial_probe+0x14/0x18)
     r7:00000000 r6:c5a14600 r5:bf03baac r4:c5a14608
    [<c02cca48>] (device_initial_probe) from [<c02cba94>] (bus_probe_device+0x8c/0x94)
    [<c02cba08>] (bus_probe_device) from [<c02c9b50>] (device_add+0x3d0/0x580)
     r7:00000000 r6:c5a14600 r5:c597d030 r4:c5a14608
    [<c02c9780>] (device_add) from [<c02c9d1c>] (device_register+0x1c/0x20)
     r10:c6ad4948 r9:bf0412c4 r8:00000000 r7:c6ad4900 r6:c597d030 r5:00000000
     r4:c5a14600
    [<c02c9d00>] (device_register) from [<bf03b35c>] (rpmsg_register_device+0x58/0x94 [rpmsg_core])
     r5:00000000 r4:c5a14600
    [<bf03b304>] (rpmsg_register_device [rpmsg_core]) from [<bf041424>] (rpmsg_ns_cb+0x160/0x22c [virtio_rpmsg_bus])
     r5:00000000 r4:c5a14600
    [<bf0412c4>] (rpmsg_ns_cb [virtio_rpmsg_bus]) from [<bf042260>] (rpmsg_recv_done+0xd4/0x290 [virtio_rpmsg_bus])
     r7:c5a5e74c r6:c6ad4900 r5:c5a5e740 r4:c3040000
    [<bf04218c>] (rpmsg_recv_done [virtio_rpmsg_bus]) from [<bf020300>] (vring_interrupt+0x40/0x58 [virtio_ring])
     r10:c0584728 r9:c067101d r8:c005ff58 r7:c064ad90 r6:00000001 r5:c064ad90
     r4:c597c800
    [<bf0202c0>] (vring_interrupt [virtio_ring]) from [<bf031b6c>] (rproc_vq_interrupt+0x4c/0x70 [remoteproc])
    [<bf031b20>] (rproc_vq_interrupt [remoteproc]) from [<bf0b51bc>] (handle_event+0x1c/0x30 [da8xx_remoteproc])
    [<bf0b51a0>] (handle_event [da8xx_remoteproc]) from [<c005ff7c>] (irq_thread_fn+0x24/0x5c)
     r5:c064ad90 r4:c5a5ee40
    [<c005ff58>] (irq_thread_fn) from [<c00601e0>] (irq_thread+0x100/0x1e4)
     r7:c064ad90 r6:00000001 r5:c2d5e000 r4:c5a5ee40
    [<c00600e0>] (irq_thread) from [<c003e6c8>] (kthread+0xdc/0xfc)
     r10:00000000 r9:00000000 r8:c00600e0 r7:c5a5ee40 r6:c2d5e000 r5:00000000
     r4:c2d69ee0
    [<c003e5ec>] (kthread) from [<c000fa70>] (ret_from_fork+0x14/0x24)
     r8:00000000 r7:00000000 r6:00000000 r5:c003e5ec r4:c2d69ee0
    ---[ end trace f248166900f3e224 ]---
    remoteproc remoteproc0: registered virtio0 (type 7)
    remoteproc remoteproc0: remote processor dsp is now up

    Maybe Im pulling in an old library (with an old/incompatible compiler?) from the previous 04.00.00.04 release... I will be running through the motions once again from a clean directory install, following the kernel and IPC build guides... 

  • Using the Processor SDK only, I generated a new SD card. Using tisdk-server-extra-rootfs-image-omapl138-lcdk.tar.xz. This rootfs has MessageQApp, so tried this 'fresh' version...

    If;

    da8xx_rproc_reserve_cma: reserving 0x1000000 @ 0xc3000000...
    cma: Reserved 16 MiB at 0xc3000000
    cma: Reserved 16 MiB at 0xc6c00000

    I still see errors when loading the DSP firmware;

    root@omapl138-lcdk:~# ls /lib/firmware/ -l
    drwxr-xr-x    3 root     root          4096 Dec 23  2017 ipc
    lrwxrwxrwx    1 root     root            54 Dec 23  2017 rproc-dsp-fw -> ipc/ti_platforms_evmOMAPL138_DSP/messageq_single.xe674
    root@omapl138-lcdk:~# ls /
    bin      boot     dev      etc      home     include  init     lib      media    mnt      opt      proc     run      sbin     srv      sys      tmp      usr      var      www
    root@omapl138-lcdk:~# mkdir /debug
    root@omapl138-lcdk:~# depmod -a
    root@omapl138-lcdk:~# mount -t debugfs none /debug
    root@omapl138-lcdk:~# modprobe remoteproc
    root@omapl138-lcdk:~# modprobe da8xx_remoteproc da8xx_fw_name=rproc-dsp-fw
    remoteproc remoteproc0: dsp is available
    root@omapl138-lcdk:~# remoteproc remoteproc0: powering up dsp
    remoteproc remoteproc0: Booting fw image rproc-dsp-fw, size 3910228
    remoteproc remoteproc0: registered virtio0 (type 7)
    remoteproc remoteproc0: remote processor dsp is now up
    virtio_rpmsg_bus virtio0: rpmsg host is online
    virtio_rpmsg_bus virtio0: creating channel rpmsg-proto addr 0x3d
    NET: Registered protocol family 43
    ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 576 at /oe/bld/build-ARM9_1/arago-tmp-external-linaro-toolchain/work-shared/omapl138-lcdk/kernel-source/net/rpmsg/rpmsg_proto.c:117 rpmsg_sock_get_proc_id+0x44/0x60 [rpmsg_proto]
    Modules linked in: rpmsg_proto(+) virtio_rpmsg_bus rpmsg_core da8xx_remoteproc remoteproc virtio virtio_ring firmware_class sha256_generic ohci_da8xx ohci_hcd usbcore usb_common davinci_wdt phy_da8xx_usb cryptodev(O) autofs4
    CPU: 0 PID: 576 Comm: systemd-udevd Tainted: G           O    4.9.59-ga75d8e9305 #1
    Hardware name: AM18x/OMAP-L138 Hawkboard
    Backtrace: 
    [<c0012f50>] (dump_backtrace) from [<c00131f4>] (show_stack+0x18/0x1c)
     r7:00000009 r6:00000000 r5:bf0b4dd4 r4:00000000
    [<c00131dc>] (show_stack) from [<c02367d8>] (dump_stack+0x20/0x28)
    [<c02367b8>] (dump_stack) from [<c0021a6c>] (__warn+0xdc/0x104)
    [<c0021990>] (__warn) from [<c0021b4c>] (warn_slowpath_null+0x28/0x30)
     r9:00000000 r8:0000000a r7:bf0b512c r6:c5e3a800 r5:bf0b512c r4:ffffffed
    [<c0021b24>] (warn_slowpath_null) from [<bf0b47fc>] (rpmsg_sock_get_proc_id+0x44/0x60 [rpmsg_proto])
    [<bf0b47b8>] (rpmsg_sock_get_proc_id [rpmsg_proto]) from [<bf0b49b0>] (rpmsg_proto_probe+0x20/0x134 [rpmsg_proto])
     r5:bf0b512c r4:c5e35400
    [<bf0b4990>] (rpmsg_proto_probe [rpmsg_proto]) from [<bf0a7444>] (rpmsg_dev_probe+0x98/0x144 [rpmsg_core])
     r7:bf0b512c r6:c5e3a800 r5:bf0b512c r4:c5e35400
    [<bf0a73ac>] (rpmsg_dev_probe [rpmsg_core]) from [<c02cc7cc>] (driver_probe_device+0x230/0x2dc)
     r6:00000000 r5:c0699dd8 r4:c5e35400
    [<c02cc59c>] (driver_probe_device) from [<c02cc938>] (__driver_attach+0xc0/0xc4)
     r9:c00859bc r8:00000000 r7:00000000 r6:c5e35434 r5:bf0b512c r4:c5e35400
    [<c02cc878>] (__driver_attach) from [<c02ca93c>] (bus_for_each_dev+0x74/0xa4)
     r7:00000000 r6:c02cc878 r5:bf0b512c r4:00000000
    [<c02ca8c8>] (bus_for_each_dev) from [<c02cc168>] (driver_attach+0x20/0x28)
     r6:bf0a7b0c r5:c5e951e0 r4:bf0b512c
    [<c02cc148>] (driver_attach) from [<c02cbca4>] (bus_add_driver+0xfc/0x20c)
    [<c02cbba8>] (bus_add_driver) from [<c02cd324>] (driver_register+0x80/0xfc)
     r7:c65e7a40 r6:c27d10c0 r5:ffffe000 r4:bf0b512c
    [<c02cd2a4>] (driver_register) from [<bf0a7678>] (__register_rpmsg_driver+0x1c/0x24 [rpmsg_core])
     r5:ffffe000 r4:00000000
    [<bf0a765c>] (__register_rpmsg_driver [rpmsg_core]) from [<bf0b7064>] (rpmsg_proto_init+0x64/0xb4 [rpmsg_proto])
    [<bf0b7000>] (rpmsg_proto_init [rpmsg_proto]) from [<c00096bc>] (do_one_initcall+0x44/0x180)
     r5:ffffe000 r4:bf0b7000
    [<c0009678>] (do_one_initcall) from [<c009f83c>] (do_init_module+0x60/0x394)
     r8:c65e7a64 r7:c65e7a40 r6:c27d10c0 r5:00000001 r4:bf0b51c0
    [<c009f7dc>] (do_init_module) from [<c0088968>] (load_module+0x1c30/0x2150)
     r6:00000001 r5:00000001 r4:c2491f44
    [<c0086d38>] (load_module) from [<c0089098>] (SyS_finit_module+0xac/0xc0)
     r10:00000000 r9:c2490000 r8:c000fb64 r7:0000017b r6:b6f157f8 r5:00000007
     r4:00000000
    [<c0088fec>] (SyS_finit_module) from [<c000f9c0>] (ret_fast_syscall+0x0/0x38)
     r6:00000000 r5:00482e40 r4:00000000
    ---[ end trace f72629bd0e8e15eb ]---
    modprobe virtio_rpmsg_bus
    root@omapl138-lcdk:~# modprobe virtio_rpmsg_bus
    root@omapl138-lcdk:~# modprobe rpmsg_proto
    root@omapl138-lcdk:~# MessageQApp 
    Using numLoops: 100; procId : 1
    Entered MessageQApp_execute
    Local MessageQId: 0x80

    If;

    da8xx_rproc_reserve_cma: reserving 0x1000000 @ 0xc3100000...
    cma: Reserved 16 MiB at 0xc3400000
    cma: Reserved 16 MiB at 0xc6c00000

    I see no errors, but I also dont see any activity between the processors...

    root@omapl138-lcdk:~# depmod -a
    root@omapl138-lcdk:~# mount -t debugfs none /debug
    root@omapl138-lcdk:~# modprobe remoteproc
    root@omapl138-lcdk:~# ls /lib/firmware/ -l
    drwxr-xr-x    3 root     root          4096 Dec 23  2017 ipc
    lrwxrwxrwx    1 root     root            54 Dec 23  2017 rproc-dsp-fw -> ipc/ti_platforms_evmOMAPL138_DSP/messageq_single.xe674
    root@omapl138-lcdk:~# modprobe da8xx_remoteproc da8xx_fw_name=rproc-dsp-fw
    remoteproc remoteproc0: dsp is available
    root@omapl138-lcdk:~# remoteproc remoteproc0: powering up dsp
    remoteproc remoteproc0: Booting fw image rproc-dsp-fw, size 3910228
    remoteproc remoteproc0: registered virtio0 (type 7)
    remoteproc remoteproc0: remote processor dsp is now up
    virtio_rpmsg_bus virtio0: rpmsg host is online
    
    root@omapl138-lcdk:~# modprobe virtio_rpmsg_bus
    root@omapl138-lcdk:~# modprobe rpmsg_proto
    NET: Registered protocol family 43
    root@omapl138-lcdk:~# MessageQApp 
    Using numLoops: 100; procId : 1
    Entered MessageQApp_execute
    Local MessageQId: 0x80

    Im now going to go through the IPC build and install process to see if this changes anything...

  • If I use make and make install from the Processor SDK directory, this also builds my IPC linux side libraries (ti-ipc targets)

    This again gives the same results as above.
  • If I follow the build instructions from and install to target (including the copying of slave binaries) I see the same as above...

    Im wondering if my products.mak is OK?

    #
    #   Copyright (c) 2012-2015 Texas Instruments Incorporated - http://www.ti.com
    #
    #   Redistribution and use in source and binary forms, with or without
    #   modification, are permitted provided that the following conditions
    #   are met:
    #
    #   *  Redistributions of source code must retain the above copyright
    #      notice, this list of conditions and the following disclaimer.
    #
    #   *  Redistributions in binary form must reproduce the above copyright
    #      notice, this list of conditions and the following disclaimer in the
    #      documentation and/or other materials provided with the distribution.
    #
    #   *  Neither the name of Texas Instruments Incorporated nor the names of
    #      its contributors may be used to endorse or promote products derived
    #      from this software without specific prior written permission.
    #
    #   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    #   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
    #   THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    #   PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
    #   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
    #   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    #   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
    #   OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
    #   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
    #   OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    #   EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    #
    #  ======== products.mak ========
    #
    
    # Note that these variables can be explicitly set here or on the command line.
    # If you want to use variables in the environment, see the GNU make manual's
    # -e option:  http://www.gnu.org/software/make/manual/make.html#Environment
    
    # Optional: recommended to install all dependent components in one folder.
    #
    DEPOT = /home/juan/ti
    
    # Platform to build for
    #   Supported platforms (choose one):
    #       OMAPL138, OMAP54XX, DRA7XX, 66AK2G, 66AK2E, TCI6630, TCI6636, TCI6638,
    #       TDA3XX
    #
    # Note, this is used for Linux, QNX and BIOS builds
    #
    PLATFORM =OMAPL138
    
    # Destination when installing the built binaries
    #
    # Note, this is used for Linux (if you use ipc-linux.mak to run the
    # configure command), QNX and BIOS.
    #
    DESTDIR = $(DEPOT)/ti-processor-sdk-linux-omapl138-lcdk-04.02.00.09/targetMount
    
    
    #################### IPC Linux ####################
    
    # Set up required cross compiler path for IPC Linux configuration and build
    #
    TOOLCHAIN_LONGNAME = arm-linux-gnueabi
    TOOLCHAIN_INSTALL_DIR = $(DEPOT)/ti-processor-sdk-linux-omapl138-lcdk-04.02.00.09/linux-devkit/sysroots/x86_64-arago-linux/usr
    TOOLCHAIN_PREFIX = $(TOOLCHAIN_INSTALL_DIR)/bin/$(TOOLCHAIN_LONGNAME)-
    
    # Path to Linux Kernel - needed to build the IPC user libraries
    #
    KERNEL_INSTALL_DIR = $(DEPOT)/ti-processor-sdk-linux-omapl138-lcdk-04.02.00.09/board-support/linux-4.9.59+gitAUTOINC+a75d8e9305-ga75d8e9305
    
    # Optional: Specify the Address Family for RPMSG. This value is specified
    # either from the Linux kernel specified by KERNEL_INSTALL_DIR above, or
    # the make variable AF_RPMSG below. Do not use both.
    #
    AF_RPMSG =
    
    # Optional: Path to DRM Library
    #
    DRM_PREFIX =
    
    # Optional: Path to TI Linux Utils product
    #
    CMEM_INSTALL_DIR =
    
    
    #################### IPC QNX ####################
    
    # Path to QNX tools installation
    #
    QNX_INSTALL_DIR =
    
    # Optional: Any additional compile options
    #
    QNX_CFLAGS =
    
    #################### IPC Bios ####################
    
    # Path to required dependencies for IPC BIOS builds
    #
    XDC_INSTALL_DIR = $(DEPOT)/xdctools_3_50_03_33_core
    BIOS_INSTALL_DIR = $(DEPOT)/bios_6_52_00_12
    
    # Do you want to build SMP-enabled libraries (if supported for your target)?
    # Set to either 0 (disabled) or 1 (enabled)
    #
    BIOS_SMPENABLED=1
    
    # Path to various cgtools
    #
    ti.targets.elf.C64P =
    ti.targets.elf.C64P_big_endian =
    ti.targets.elf.C64T =
    ti.targets.elf.C66 =
    ti.targets.elf.C66_big_endian =
    ti.targets.elf.C674 =$(DEPOT)/ccsv7/tools/compiler/ti-cgt-c6000_8.2.2
    
    ti.targets.arm.elf.Arm9 =
    ti.targets.arm.elf.A8F =
    ti.targets.arm.elf.A8Fnv =
    ti.targets.arm.elf.M3 =
    ti.targets.arm.elf.M4 =
    ti.targets.arm.elf.M4F =
    
    ti.targets.arp32.elf.ARP32 =
    ti.targets.arp32.elf.ARP32_far =
    
    gnu.targets.arm.A8F =
    gnu.targets.arm.A15F =
    

  • So I have removed the entire TI installation folder... And reinstalled all required linux and RTOS distributions...

    I was hoping that there would be something left over from the previous SDK release, but unfortunately, Im seeing the same errors and/or lack of communication between the ARM and DSP...
  • Hi,

    Ok, the kernel boots up configuring the correct amount of memory, as described in the dts:
    dsp_cma_pool: dsp_cma@c3000000 {
    compatible = "shared-dma-pool";
    reg = <0xc3000000 0x1000000>;
    reusable;
    status = "okay";
    };
    };
    However have you checked if the RTOS configuration files (which are used to build your dsp firmware) are aligned with this?

    Just FYI, the MessageQApp is integrated in the sdk, I just executed MessageQApp and got it working:
    root@omapl138-lcdk:~# MessageQApp
    Using numLoops: 100; procId : 1
    Entered MessageQApp_execute
    Local MessageQId: 0x80
    Remote queueId [0x10080]
    Exchanging 100 messages with remote processor DSP...
    MessageQ_get #1 Msg = 0xb6600470
    MessageQ_get #2 Msg = 0xb6600470
    MessageQ_get #3 Msg = 0xb6600470
    MessageQ_get #4 Msg = 0xb6600470
    MessageQ_get #5 Msg = 0xb6600470
    MessageQ_get #6 Msg = 0xb6600470
    MessageQ_get #7 Msg = 0xb6600470
    MessageQ_get #8 Msg = 0xb6600470
    MessageQ_get #9 Msg = 0xb6600470
    MessageQ_get #10 Msg = 0xb6600470
    MessageQ_get #11 Msg = 0xb6600470
    MessageQ_get #12 Msg = 0xb6600470
    MessageQ_get #13 Msg = 0xb6600470
    MessageQ_get #14 Msg = 0xb6600470
    MessageQ_get #15 Msg = 0xb6600470
    MessageQ_get #16 Msg = 0xb6600470
    MessageQ_get #17 Msg = 0xb6600470
    MessageQ_get #18 Msg = 0xb6600470
    MessageQ_get #19 Msg = 0xb6600470
    MessageQ_get #20 Msg = 0xb6600470
    MessageQ_get #21 Msg = 0xb6600470
    MessageQ_get #22 Msg = 0xb6600470
    MessageQ_get #23 Msg = 0xb6600470
    MessageQ_get #24 Msg = 0xb6600470
    MessageQ_get #25 Msg = 0xb6600470
    MessageQ_get #26 Msg = 0xb6600470
    MessageQ_get #27 Msg = 0xb6600470
    MessageQ_get #28 Msg = 0xb6600470
    MessageQ_get #29 Msg = 0xb6600470
    MessageQ_get #30 Msg = 0xb6600470
    MessageQ_get #31 Msg = 0xb6600470
    MessageQ_get #32 Msg = 0xb6600470
    MessageQ_get #33 Msg = 0xb6600470
    MessageQ_get #34 Msg = 0xb6600470
    MessageQ_get #35 Msg = 0xb6600470
    MessageQ_get #36 Msg = 0xb6600470
    MessageQ_get #37 Msg = 0xb6600470
    MessageQ_get #38 Msg = 0xb6600470
    MessageQ_get #39 Msg = 0xb6600470
    MessageQ_get #40 Msg = 0xb6600470
    MessageQ_get #41 Msg = 0xb6600470
    MessageQ_get #42 Msg = 0xb6600470
    MessageQ_get #43 Msg = 0xb6600470
    MessageQ_get #44 Msg = 0xb6600470
    MessageQ_get #45 Msg = 0xb6600470
    MessageQ_get #46 Msg = 0xb6600470
    MessageQ_get #47 Msg = 0xb6600470
    MessageQ_get #48 Msg = 0xb6600470
    MessageQ_get #49 Msg = 0xb6600470
    MessageQ_get #50 Msg = 0xb6600470
    MessageQ_get #51 Msg = 0xb6600470
    MessageQ_get #52 Msg = 0xb6600470
    MessageQ_get #53 Msg = 0xb6600470
    MessageQ_get #54 Msg = 0xb6600470
    MessageQ_get #55 Msg = 0xb6600470
    MessageQ_get #56 Msg = 0xb6600470
    MessageQ_get #57 Msg = 0xb6600470
    MessageQ_get #58 Msg = 0xb6600470
    MessageQ_get #59 Msg = 0xb6600470
    MessageQ_get #60 Msg = 0xb6600678
    MessageQ_get #61 Msg = 0xb6600470
    MessageQ_get #62 Msg = 0xb6600470
    MessageQ_get #63 Msg = 0xb6600470
    MessageQ_get #64 Msg = 0xb6600470
    MessageQ_get #65 Msg = 0xb6600470
    MessageQ_get #66 Msg = 0xb6600470
    MessageQ_get #67 Msg = 0xb6600470
    MessageQ_get #68 Msg = 0xb6600470
    MessageQ_get #69 Msg = 0xb6600470
    MessageQ_get #70 Msg = 0xb6600470
    MessageQ_get #71 Msg = 0xb6600470
    MessageQ_get #72 Msg = 0xb6600470
    MessageQ_get #73 Msg = 0xb6600470
    MessageQ_get #74 Msg = 0xb6600470
    MessageQ_get #75 Msg = 0xb6600470
    MessageQ_get #76 Msg = 0xb6600470
    MessageQ_get #77 Msg = 0xb6600470
    MessageQ_get #78 Msg = 0xb6600470
    MessageQ_get #79 Msg = 0xb6600470
    MessageQ_get #80 Msg = 0xb6600470
    MessageQ_get #81 Msg = 0xb6600470
    MessageQ_get #82 Msg = 0xb6600470
    MessageQ_get #83 Msg = 0xb6600470
    MessageQ_get #84 Msg = 0xb6600470
    MessageQ_get #85 Msg = 0xb6600470
    MessageQ_get #86 Msg = 0xb6600470
    MessageQ_get #87 Msg = 0xb6600470
    MessageQ_get #88 Msg = 0xb6600470
    MessageQ_get #89 Msg = 0xb6600470
    MessageQ_get #90 Msg = 0xb6600470
    MessageQ_get #91 Msg = 0xb6600470
    MessageQ_get #92 Msg = 0xb6600470
    MessageQ_get #93 Msg = 0xb6600470
    MessageQ_get #94 Msg = 0xb6600470
    MessageQ_get #95 Msg = 0xb6600470
    MessageQ_get #96 Msg = 0xb6600470
    MessageQ_get #97 Msg = 0xb6600470
    MessageQ_get #98 Msg = 0xb6600470
    MessageQ_get #99 Msg = 0xb6600470
    MessageQ_get #100 Msg = 0xb6600470
    Exchanged 100 messages with remote processor DSP
    Sample application successfully completed!
    Leaving MessageQApp_execute

    root@omapl138-lcdk:~#

    From kernel side it seems that everything is ok. You may need to connect to the DSP with JTAG and see where it is stopping. I suspect something is wrong with the RTOS packages that you use.

    Best Regards,
    Yordan
  • At the moment, even the SDK packaged MessageQApp is giving me the same results.

    Im just downloading everything again, to try again... Will also be trying the previous release I had running, in which I confirmed the MessageQApp to be working (release 04.00.00.04).

    In the mean time I will double check the RTOS config settings, which should be OK as I am building a TI provided example, and I will be ordering a JTAG probe... 

    RE JTAG Probe - Which is the most cost effective unit for this processor? The processor page has a link to the XDS110 probe, but that page says the OMAP-L13x devices are not supported due to adaptive clocking? Im guessing this only leaves the XDS200 probe as the best option?

  • OK Problem solved...

    Turns out I wasn't loading the Device Tree Blobs... The prior testing that indicated MessageQApp was operating as expected must have been carried out before I moved u-boot and the kernel to NAND... During this move, I must've left out the need to also load these files. Would be nice if the wiki made mention of this, although Im sure it is buried in the u-boot wiki...

    bootcmd=nand read ${loadaddr} 0x2c0000 0x260000; nand read ${fdtaddr} 0x520000 0x10000; bootz ${loadaddr} - ${fdtaddr}

    I would still like to hear back on your thoughts regarding the JTAG probe though...

  • Hi,

    My idea was to connect to the board with JTag & run the dsp code (using CCS) step by step to see at which point it fails.

    Anyway this wouldn't be needed I guess. Thanks for sharing the solution to your problem.

    Best Regards,
    Yordan
  • I was more so referring to the most cost effective probe to buy... That would work with the OMAP-L138, as the link on the processor page takes you to a probe that states it doesn't work with the processor...
  • The recommended emulators are:
    XDS110 JTAG Debug Probe
    XDS200 USB Debug Probe
    XDS560v2 System Trace USB & Ethernet Debug Probe
    XDS560v2 System Trace USB Debug Probe

    Best Regards,
    Yordan
  • Yordan Kovachev said:

    XDS110 JTAG Debug Probe 

    States;

    Devices NOT supported:

    • MSP430 Microcontrollers
    • ARM9 based processors that use adaptive clocking such as OMAPL13x and AM1xxx

    Is that just for the ARM core? The DSP core is supported?

  • Hi,

    I am not sure why there is such discrepancy.
    In this case you can use the next in the list:
    www.ti.com/.../tmdsemu200-u

    As for the above problem with OMAPL13x Not being supported. I will ask the design team to elaborate.

    Best Regards,
    Yordan