HOWTO: Create An ISP Project From Existing VSDK Graph in S32DS for Vision

Document created by Mike Doidge Employee on Jul 19, 2017Last modified by Mike Doidge Employee on Sep 18, 2017
Version 4Show Document
  • View in full screen mode

There are a number of existing ISP Graph diagrams provided within the VSDK. It is possible to import them into S32DS for Vision and use them in a new C/C++ project. The steps to do this are detailed in this document.


1) Launch S32DS for Vision

2) Select File -> New -> S32DS Project from Example or Select "S32DS Application Project" from the toolbar.



3) Expand 'ISP Graphs' folder. Select isp_generic.

4) Select Finish



5) Open isp_generic in the project explorer

6) Select ISP data flow ; isp_generic. The ISP data flow graph will appear in the editor



7) Right-click on the editor and select Emit As -> Emit Configurations



8) Select ISP Emitter -> ISP sources isp_generic – isp_generic

9) Select Main -> Output -> Browse Workspace



10) Choose the new target project ISP_ISP_Generic_demo: A53.

11) Click OK



12) Write A53_gen to the Sources folder box. This is the folder within the target project that generated code will be stored



13) Go to the Common tab and click Browse



14) Select ISP_kernels inside ISP_ISP_Generic_demo:A53 and click OK



15) Click Apply and Emit. Dialog box will appear when code generation is successful



16) Refresh the project ISP_ISP_Generic_demo



17) Change to C/C++ perspective, click on ‘C/C++ Development’



18) Build for ISP



19) Open file 'ISP_ISP_Generic_demo/A53_inc/isp_user_define.h' and change '#define __DCU_BPP' to "#undef __DCU_BPP"

20) Open file 'ISP_ISP_Generic_demo/A53_src/main.cpp

  • Add after '#include "oal.h":


      #include <string.h>

      #include <math.h>

      #include "frame_output_v234fb.h"

      #include "isp_cam_sony.h"

      #include "sdi.hpp"

      #include "isp_generic_c.h"

      #include "iofiles.h" // *** from graph ***

      #include "vdb_log.h"



  • Add before 'int main(int, char **)':

void SeqEventCallBack(uint32_t aEventType, void* apUserVal);



  • Add after void io_config(sdi_grapper * lpGrabber) {} AND before void camera_config() {}:

void SeqEventCallBack(uint32_t aEventType, void* apUserVal)


         static uint32_t slFrmCnt = 0;

         if(aEventType == SEQ_MSG_TYPE_FRAMEDONE)


            printf("Frame done message arrived #%u. User value %d\n",            



         } // if frame done arrived

      } // SeqEventCallBack()



  • Add inside void io_config(sdi_grapper * lpGrabber) {}:

// *** set user defined Sequencer event handler ***       int32_t lCallbackUserData = 12345;       lpGrabber-

>SeqEventCallBackInstall(&SeqEventCallBack, &lCallbackUserData);

      // *** prepare IOs ***

      sdi_FdmaIO *lpFdma = (sdi_FdmaIO*)lpGrabber->IoGet(SEQ_OTHRIX_FDMA);       // modify DDR frame geometry to fit display output

      SDI_ImageDescriptor lFrmDesc = SDI_ImageDescriptor(WIDTH_DDR, HEIGHT_DDR, RGB888);       lpFdma->DdrBufferDescSet(0, lFrmDesc);

      //*** allocate DDR buffers ***

      lpFdma->DdrBuffersAlloc(0, DDR_OUT_BUFFER_CNT);



Please see C:\NXP\S32DS_Vision_v2.0\S32DS\s32v234_sdk\docs\drivers\SDI_Software_User_Guide.pdf for details on what this code is for.

Hint: If you create a new project from example 'isp_sonyimx224_csi_dcu', then you can copy/paste all of the above code from the main.cpp contained within it.


24) Select 'ISP_ISP_Generic_demo:A53' in the Project Explorer panel, then Build



21) Run it remotely on the target using the method from


22) Should get results similar to this:


1 person found this helpful