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",            

slFrmCnt++,

            *((int32_t*)apUserVal));

         } // 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

HOWTO_Create_A53_Linux_Project_in_S32DS_for_Vision.pdf  

22) Should get results similar to this:

 

1 person found this helpful

Attachments

    Outcomes