DRA722: IPU1 firmware load fail on Vision SDK

Part Number: DRA722

I build Vision SDK 3.08 on my custorm DRA722 board, when build ipu2 into vision sdk like:


sample_app.out run ok , but it load firmware fail when enable IPU1 ( enable or disable IPU2 ) , linux startup log:

[   16.988346] remoteproc remoteproc0: powering up 58820000.ipu
[   17.054634] remoteproc remoteproc0: Booting fw image dra7-ipu1-fw.xem4, size 3977424
[   17.148958] omap-iommu 58882000.mmu: 58882000.mmu: version 2.1
[   17.540473] remoteproc remoteproc0: bad phdr da 0x99000000 mem 0x4c8
[   17.546899] remoteproc remoteproc0: Failed to load program segments: -22
[   17.601720] remoteproc remoteproc0: failed to unmap 16777216/0
[   17.607626] remoteproc remoteproc0: failed to unmap 16777216/0
[   17.671042] remoteproc remoteproc0: failed to unmap 16777216/0
[   17.837142] omap-des 480a5000.des: OMAP DES hw accel rev: 2.2

and run sample_app.out it will print "SYSTEM: Attaching to [IPU1-0] ..." , I need help ,thank you!

  • Hi,

    in Vision SDK, if A15 is running Linux, you can only enable either IPU2 or IPU1_0 but not both. 



  • Thank you very much, Why IPU2 and IPU1_0 can not be enable both ?  but load firmware fail when IPU1_0 enabled only , I want to enable IPU1_0 for my custom image processing and using gsteamer ( IPUMM  ) as h.264 codec .

  • It is attaching IPU1_0 fail when I enable IPU1_0 only , sample_app.out print out : 

    root@dra7xx-evm:/opt/vision_sdk# ./sample_app.out 
     [HOST]  OSA: MEM: 0: Mapped 0xa0100000 to 0xb6892000 of size 0x00100000 
     [HOST]  OSA: MEM: 1: Mapped 0x84203000 to 0xa6e92000 of size 0x0fa00000 
     [HOST]  OSA: MEM: 2: Mapped 0xa0200000 to 0xa6dd2000 of size 0x00040000 
     [HOST]  OSA: MEM: 3: Mapped 0xa02c0000 to 0xa6e12000 of size 0x00080000 
     [HOST]  OSA: MEM: 4: Mapped 0x00000000 to 0x00000000 of size 0x00000000 
     [HOST]  OSA: IPU1-0 Remote Log Shared Memory @ 0xa0200000
     [HOST]  OSA: HOST Remote Log Shared Memory @ 0xa024f140
     [HOST]  OSA: DSP1 Remote Log Shared Memory @ 0xa02769e0
     [HOST] [HOST  ]    118.220337 s:  SYSTEM: System A15 Init in progress !!!
     [HOST] [DSP1  ]     29.151711 s:  ***** DSP1 Firmware build time 15:38:56 Oct 23 2021
     [HOST] [DSP1  ]     29.151772 s:  *** SYSTEM: CPU Frequency <ORG = 600000000 Hz>, <NEW = 750000000 Hz>
     [HOST] [DSP1  ]     29.151924 s:  SYSTEM: System Common Init in progress !!!
     [HOST] [DSP1  ]     29.152046 s:  SYSTEM: IPC init in progress !!!
     [HOST] [DSP1  ]     29.152077 s:  SYSTEM: Attaching to [IPU1-0] ... 
     [HOST] [DSP1  ]     30.151955 s:  SYSTEM: Attaching to [IPU1-0] ... 
     [HOST] [DSP1  ]     31.151985 s:  SYSTEM: Attaching to [IPU1-0] ... 
     [HOST] [DSP1  ]     32.152016 s:  SYSTEM: Attaching to [IPU1-0] ... 
     [HOST] [DSP1  ]     33.152046 s:  SYSTEM: Attaching to [IPU1-0] ... 
     [HOST] [DSP1  ]     34.152077 s:  SYSTEM: Attaching to [IPU1-0] ... 
     [HOST] [DSP1  ]     35.152077 s:  SYSTEM: Attaching to [IPU1-0] ... 
     [HOST] [DSP1  ]     36.152107 s:  SYSTEM: Attaching to [IPU1-0] ... 
     [HOST] [DSP1  ]     37.152138 s:  SYSTEM: Attaching to [IPU1-0] ... 
     [HOST] [DSP1  ]     38.152168 s:  SYSTEM: Attaching to [IPU1-0] ...

  • You can't enable both IPU2 and IPU1_0 or IPU1_1 if IPU2 is set as the primary core. This is a limitation of the VSDK framework.

    Please refer to section 4.4 IPUMM based decode use-case using Gstreamer in ~/vision_sdk/docs/Linux/VisionSDK_Linux_UserGuide.pdf.

    You can enable IPUMM on IPU2 but make sure to have IPU1_0 set to primary core.

    Please do a clean build afterward so the change will take effect. Otherwise, you will have problem with IPC attach as shown in your log.


  • Thanks , but I tested cases:

    1. Enable IPU2 only and set IPU2 as primary core ;

    2. Enable IPU2 and IPU1_0 and set IPU2 as primary core (I know is should be fail) ;

    3. Enable IPU2 and IPU1_0 and set IPU1_0 as primary core;

    4. Enable IPU1_0 only and set IPU1_0 as primary core.

    Only  case 1 , The sample_app.out looks like ok , others , kenel logs "remoteproc remoteproc0: Failed to load program segments: -22" and sample_app.out print "SYSTEM: Attaching to [IPU1-0] ... " 

    When I enable IPUMM based on 4 cases above, gstreamer fail , it print out : 

    root@dra7xx-evm:~# ./decode_ipumm.sh 
    Setting pipeline to PAUSED ...
    Caught SIGSEGV
    #0  0xb6cafc78 in __waitpid (pid=796, stat_loc=0xbedbe37c, options=0)
    #1  0xb6ce0efe in g_on_error_stack_trace () from /usr/lib/libglib-2.0.so.0
    #2  0x00013076 in ?? ()
    Spinning.  Please run 'gdb gst-launch-1.0 795' to continue debugging, Ctrl-C to quit, or Ctrl-\ to dump core.

  • Please review the build and run instructions in the User Guide again.

    You should use "apps.out", not "simple_app.out".

    simple_app.out doesn't have any demo. It is a barebone example for you to add your own apps.


  • Er , review and try many times !!!

  • Did you try "app.out" instead of "simple_app.out"?

    If yes, please share the log again from app.out.

  • Because my board is customized,  app.out is hardware depend , It need porting to my custom board .