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/PROCESSOR-SDK-AM57X: starting and stopping the ipu core causes the A15 to crash

Part Number: PROCESSOR-SDK-AM57X
Other Parts Discussed in Thread: AM5728

Tool/software: Linux

Hi,

The development workflow we use is build the M4 executable on the host development machine and then "scp" the file over to the A15 in the /lib/firmware directory.

Then stop and start the M4 to use the new version of M4 code.

I am doing this by using:

echo 'idkAM572x_m4_ipc.out' > /sys/class/remoteproc/remoteproc1/firmware

echo 'start' > /sys/class/remoteproc/remoteproc1/state

echo 'stop' > /sys/class/remoteproc/remoteproc1/state

I noticed that another way to start/stop cores is using the bind/unbind:

root@am57xx-evm:/sys/bus/platform/drivers/omap-rproc# echo 55020000.ipu > bind

root@am57xx-evm:/sys/bus/platform/drivers/omap-rproc# echo 55020000.ipu > unbind

Which is the preferred method? What is the difference?

Both ways have yielded the same crash that occurs on stopping the core.  The IDK has sold red LEDs and the A15 is unresponsive.

Do you have any insight to what would cause this behavior?

Thanks,

Christine

  • Hi, Christine,

    I am not sure if you have seen IPU for AM57xx,
    software-dl.ti.com/.../Foundational_Components_IPC.html
    Under the Running the bundled IPC examples section, it shows the commands to reload the new executables.

    I tried unbind and bind commands to reload the IPU images, but not seeing any issues. I haven't seen any unbind/bind issue causing A15 unresponsive. Could you try using unbind/bind again? Below are what I did on AM5728 EVM:

    I first swapped out the default IPU images with the prebuilt ex02_messageq binaries
    root@am57xx-evm:/lib/firmware# ls -l dra7-ipu1-fw.xem4
    lrwxrwxrwx 1 root root 46 Jul 27 2018 dra7-ipu1-fw.xem4 -> /lib/firmware/dra7-ipu1-fw.xem4.opencl-monitor
    root@am57xx-evm:/lib/firmware# ls /usr/bin/ipc/examples/ex02_messageq/debug/
    app_host server_dsp2.xe66 server_ipu2.xem4
    server_dsp1.xe66 server_ipu1.xem4
    root@am57xx-evm:/lib/firmware# ls /usr/bin/ipc/examples/ex02_messageq/debug/server_ipu1.xem4
    /usr/bin/ipc/examples/ex02_messageq/debug/server_ipu1.xem4
    root@am57xx-evm:/lib/firmware# ln -sf /usr/bin/ipc/examples/ex02_messageq/debug/server_ipu1.xem4 dra7-ipu1-fw.xem4
    root@am57xx-evm:/lib/firmware# ln -sf /usr/bin/ipc/examples/ex02_messageq/debug/server_ipu2.xem4 dra7-ipu2-fw.xem4
    root@am57xx-evm:/lib/firmware# ls -l dra7-ipu1-fw.xem4
    lrwxrwxrwx 1 root root 58 Jul 22 01:41 dra7-ipu1-fw.xem4-> /usr/bin/ipc/examples/ex02_messageq/debug/server_ipu1.xem4
    root@am57xx-evm:/lib/firmware# ls -l dra7-ipu2-fw.xem4
    lrwxrwxrwx 1 root root 58 Jul 22 01:41 dra7-ipu2-fw.xem4-> /usr/bin/ipc/examples/ex02_messageq/debug/server_ipu2.xem4

    Then unbind and bind the IPU to reload the binaries:
    root@am57xx-evm:/lib/firmware# cd /sys/bus/platform/drivers/omap-rproc/
    root@am57xx-evm:/sys/bus/platform/drivers/omap-rproc# ls
    40800000.dsp 55020000.ipu bind uevent
    41000000.dsp 58820000.ipu module unbind
    root@am57xx-evm:/sys/bus/platform/drivers/omap-rproc# echo 55020000.ipu > unbind
    [ 985.127341] omap-iommu 55082000.mmu: 55082000.mmu: version 2.1
    [ 985.146676] remoteproc remoteproc1: stopped remote processor 55020000.ipu
    [ 985.155689] remoteproc remoteproc1: releasing 55020000.ipu
    root@am57xx-evm:/sys/bus/platform/drivers/omap-rproc# echo 55020000.ipu > bind
    [ 990.097526] omap-rproc 55020000.ipu: assigned reserved memory node ipu2-memory@95800000
    [ 990.106888] remoteproc remoteproc1: 55020000.ipu is available
    root@am57xx-evm:/sys/bus/platform/drivers/omap-rproc# [ 990.256008] remoteproc remoteproc1: powering up 55020000.ipu
    [ 990.261740] remoteproc remoteproc1: Booting fw image dra7-ipu2-fw.xem4, size 4469888
    [ 990.269631] omap-iommu 55082000.mmu: 55082000.mmu: version 2.1
    [ 990.295150] virtio_rpmsg_bus virtio1: rpmsg host is online
    [ 990.300826] remoteproc remoteproc1: registered virtio1 (type 7)
    [ 990.306898] remoteproc remoteproc1: remote processor 55020000.ipu is now up
    [ 990.314595] virtio_rpmsg_bus virtio1: creating channel rpmsg-proto addr 0x3d
    root@am57xx-evm:/sys/bus/platform/drivers/omap-rproc# echo 58820000.ipu > unbind
    [ 2286.247385] omap-iommu 58882000.mmu: 58882000.mmu: version 2.1
    [ 2286.257863] remoteproc remoteproc0: failed to unmap 16777216/0
    [ 2286.263918] remoteproc remoteproc0: failed to unmap 16777216/0
    [ 2286.270215] remoteproc remoteproc0: failed to unmap 16777216/0
    [ 2286.278144] remoteproc remoteproc0: stopped remote processor 58820000.ipu
    [ 2286.286143] remoteproc remoteproc0: releasing 58820000.ipu
    root@am57xx-evm:/sys/bus/platform/drivers/omap-rproc# echo 58820000.ipu > bind
    [ 2292.187615] omap-rproc 58820000.ipu: assigned reserved memory node ipu1-memory@9d000000
    [ 2292.195761] remoteproc remoteproc0: 58820000.ipu is available
    root@am57xx-evm:/sys/bus/platform/drivers/omap-rproc# [ 2292.348356] remoteproc remoteproc0: powering up 58820000.ipu
    [ 2292.354056] remoteproc remoteproc0: Booting fw image dra7-ipu1-fw.xem4, size 4469888
    [ 2292.364834] omap-iommu 58882000.mmu: 58882000.mmu: version 2.1
    [ 2292.372331] alloc_contig_range: [9d004, 9d007) PFNs busy
    [ 2292.384987] virtio_rpmsg_bus virtio0: rpmsg host is online
    [ 2292.393001] remoteproc remoteproc0: registered virtio0 (type 7)
    [ 2292.399942] remoteproc remoteproc0: remote processor 58820000.ipu is now up
    [ 2292.411004] virtio_rpmsg_bus virtio0: creating channel rpmsg-proto addr 0x3d

    and dump the IPU traces:
    root@am57xx-evm:/sys/bus/platform/drivers/omap-rproc#
    root@am57xx-evm:/sys/bus/platform/drivers/omap-rproc# cd /sys/kernel/debug/remoteproc/remoteproc0
    root@am57xx-evm:/sys/kernel/debug/remoteproc/remoteproc0# ls
    carveout_memories recovery trace0
    name resource_table
    root@am57xx-evm:/sys/kernel/debug/remoteproc/remoteproc0# cat name
    58820000.ipu
    root@am57xx-evm:/sys/kernel/debug/remoteproc/remoteproc0# cat trace0
    [0][ 0.000] Watchdog disabled: TimerBase = 0x68824000 ClkCtrl = 0x6a005568
    [0][ 0.000] Watchdog disabled: TimerBase = 0x68826000 ClkCtrl = 0x6a005570
    [0][ 0.000] 18 Resource entries at 0x3000
    [0][ 0.000] [t=0x000efae9] xdc.runtime.Main: --> main:
    [0][ 0.000] registering rpmsg-proto:rpmsg-proto service on 61 with HOST
    [0][ 0.000] [t=0x0015cdf3] xdc.runtime.Main: NameMap_sendMessage: HOST 53, port=61
    [0][ 0.000] Watchdog disabled: TimerBase = 0x68824000 ClkCtrl = 0x6a005568
    [0][ 0.000] Watchdog disabled: TimerBase = 0x68826000 ClkCtrl = 0x6a005570
    [0][ 0.000] [t=0x001a69e7] xdc.runtime.Main: --> smain:
    [0][ 0.000] [t=0x001da431] Server: Server_create: server is ready
    [0][ 0.000] [t=0x001eab51] Server: <-- Server_create: 0
    [0][ 0.000] [t=0x001f7565] Server: --> Server_exec:
    root@am57xx-evm:/sys/kernel/debug/remoteproc/remoteproc0#
    root@am57xx-evm:/sys/kernel/debug/remoteproc/remoteproc0# cd ../remoteproc1
    root@am57xx-evm:/sys/kernel/debug/remoteproc/remoteproc1# cat name
    55020000.ipu
    root@am57xx-evm:/sys/kernel/debug/remoteproc/remoteproc1# ls
    carveout_memories recovery trace0
    name resource_table
    root@am57xx-evm:/sys/kernel/debug/remoteproc/remoteproc1# cat trace0
    [0][ 0.000] Watchdog disabled: TimerBase = 0x6803e000 ClkCtrl = 0x6a009750
    [0][ 0.000] Watchdog disabled: TimerBase = 0x68036000 ClkCtrl = 0x6a009748
    [0][ 0.000] 18 Resource entries at 0x3000
    [0][ 0.000] [t=0x000edd8f] xdc.runtime.Main: --> main:
    [0][ 0.000] registering rpmsg-proto:rpmsg-proto service on 61 with HOST
    [0][ 0.000] [t=0x00158ab7] xdc.runtime.Main: NameMap_sendMessage: HOST 53, port=61
    [0][ 0.000] Watchdog disabled: TimerBase = 0x6803e000 ClkCtrl = 0x6a009750
    [0][ 0.000] Watchdog disabled: TimerBase = 0x68036000 ClkCtrl = 0x6a009748
    [0][ 0.000] [t=0x001a19ed] xdc.runtime.Main: --> smain:
    [0][ 0.000] [t=0x001d1483] Server: Server_create: server is ready
    [0][ 0.000] [t=0x001dfe55] Server: <-- Server_create: 0
    [0][ 0.000] [t=0x001ebb01] Server: --> Server_exec:
    root@am57xx-evm:/sys/kernel/debug/remoteproc/remoteproc1#

    and run ex02 app_host
    root@am57xx-evm:/sys/kernel/debug/remoteproc/remoteproc1# /usr/bin/ipc/examples/ex02_messageq/debug/app_host IPU1
    --> main:
    [ 2472.933874] omap_hwmod: mmu0_dsp2: _wait_target_disable failed
    [ 2472.939775] omap-iommu 41501000.mmu: 41501000.mmu: version 3.0
    [ 2472.945713] omap-iommu 41502000.mmu: 41502000.mmu: version 3.0
    [ 2472.959575] omap_hwmod: mmu0_dsp1: _wait_target_disable failed
    [ 2472.965459] omap-iommu 40d01000.mmu: 40d01000.mmu: version 3.0
    [ 2472.971421] 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:
  • Hi, Christine,

    just checking if it is still an issue. If it has been resolved, please click "Resolved"
    Thanks!

    Rex