Starting a debug session on ISP

Debugging on ISP implies that you run a launch configuration for a particular IPUS or IPUV unit of the ISP processor and debug a certain kernel on this IPU. The ISP graph specifies all IPU units and the kernel to be executed on each IPU. The emitted code for each kernel is located in the ISP_kernels project folder.

To start a debug session on ISP:

  1. Start a debug session for the host application on the Linux target. Refer to Starting a debug session on remote Linux for the detailed instructions.
  2. Click Resume.
  3. Open the Debug Configurations dialog box and go to the S32 Debugger group of configurations.
  4. Click the debug configuration created for a particular IPU unit, or create a new configuration and open it.
  5. On the Main tab, ensure that “ISP” is selected from the Build Configuration menu. Make sure that the Project field shows the name of the host application project and the C/C++ Application field specifies the path to the ISP application (ISP/<isp_dataflow_project>.elf).
  6. On the Debugger tab, specify the following settings:
    • Device and Core: The target device and the image processing unit (IPUS or IPUV) on which the debug session will be started. Click Select device and core and pick the required IPU unit from the list:


      Picking an ISP core for a debug session to get started

    • Initialization script: The “s32v234_attach.py” script with the board connection parameters is needed.
    • Initial core: Keep this option enabled.
    • Debug Probe Connection: Specify the connection between S32 Debug Probe and the workstation.
    • Enable semihosting: Enable this option to output the debugging information to the semihosting console.

    Learn more about the S32 Debugger configuration settings in Vision Extension Package for S32V2xx 1.0.0 User Guide.

  7. On the Startup tab, make sure to use the following settings:


    Pointing the kernel file to load symbols to the debug session on ISP

    • Load symbols: This option needs to be enabled.
    • Use file: This option needs to be selected to load symbols from a kernel file. Click Workspace or File System and browse to the ISP_kernels project folder. Point the kernel file to be executed on the selected IPU module.
      Note: To point the right kernel file, consult the ISP graph, or consult the SEQ_gen/scr/static_<isp_dataflow_name>.c file if the ISP application uses the static sequencer.

    Disable the remaining options on this tab.

  8. Click Apply, then click Debug. The debug session on ISP is started.
    If the ISP application is configured for dynamic sequencing, launching a debug session on ISP terminates the debug session on remote Linux. This does not affect debugging on ISP.
    Note: To keep the debug session for the Linux application alive when debugging on ISP, use the ISP application with the static sequencer support. To get such an application, re-emit the source code from the ISP dataflow to the host project with the “static sequencer” option enabled. Find the details in the Emit the source code section. Then rebuild the APEX2/ISP Linux application and start debugging it anew.
When debugging on ISP, you can use hardware breakpoints, do step-by-step execution, view registers and memory sections. The ISP memory region is marked as read-only on the GDB level. If you want to modify it, mark the memory range as read-write, do your modifications, and get it back to the read-only state.
Note: The number of hardware breakpoints is limited by one. When the breakpoint is hit, debugging stops at the next line of code.

When done with debugging on ISP, do not terminate the debug session to continue debugging on Linux. If you have terminated the debug session on ISP, the debug session for the Linux application can no longer be used.