Project structure

Project creation wizards takes care of creating project structure when you create a new project. When the wizard finishes creating a project, the resulting project structure is displayed in the Project Explorer view. The prepared structure includes resources necessary to build the project out of the box.

A typical project structure is based upon the folder structure on the file system. Vision Extension Package for S32V2xx 1.0.0 places a new project into a separate folder within the workspace location. This folder receives the name of the project provided in the project creation wizard and serves a project root - a container for project files and configurations. The IDE reads the workspace location and displays each of the first level folders in the workspace as a separate project.

Project structure in IDE and on the file system
Depending on the type of the created project, you find the following folders within the project root:

Here <project_name> is the given project name, and <processor_type> is one of the coprocessors: isp (Image Signal Processor, the ISP project) or icp (Image Cognition Processor, the APEX2 project).

Each of the folders includes a set of child folders categorize project resources. The child containers store files of a specific category. For example, the A53_inc folder contains H/HPP header files referred to by implementation C/CPP files that are organized by the A53_src folder.

Project structure displayed in the Project Explorer view uses coloring to differentiate folders by their usage in the project. The following colors are used:
Note: Changes you make to the project structure on the file system affect the structure displayed in the Project Explorer view. If you add a file on the file system, this file will be displayed in the project structure in the IDE. Make sure not to move any folder colored as grey in the IDE.

The following tables outline the structures for projects with ISP and APEX support.

Table 1. Project with ISP support (code)
Folder Description
Binaries A virtual output folder with binary files generated when you build the project.

This folder is generated by Eclipse CDT at build time and contains a list of ELF files. The generated binaries are also available in the workspace at the location,which is configured in Project properties > C/C++ Build > Builder Settings > Build location.

Tip: If you expand the binary item in this folder, you will get the list of header and implementation files used to build this binary.
Includes A virtual source folder with header files.

This folder is generated by Eclipse CDT and contains a list of discovered header files. The list includes header files directly used in the project, which can be found in Project properties > C/C++ Build > Settings > Tool Settings > Standard S32DS C Compiler > Includes.

A53_gen This output folder includes the target code generated from the ISP diagram.
inc isp_gen.h Created by the project wizard.
<project_name>_c.h Created during code emission.
kmem_sym.h Created by the ISP build configuration at build time.
src isp_process.cpp Created during code emission for the host component (the Emit host check box).
<project_name>.c Created during code emission.
kmem.c Created by the ISP build configuration at build time.
sequencer_srec.c Created by the project wizard.
A53_src This source folder includes main procedures used to build the program for the A53 processor and target coprocessor specified in the project settings.

By default, the folder includes the main.cpp file with placeholders for user code.

Note: You can use this folder to add your user code here. Drag and drop your CPP file from the file explorer to this folder. Or, create/copy the file in the A53_src folder on the file system. After that, return to the IDE, click in the project structure tree, and then press F5 to refresh the project structure. The added file will appear under this folder.
<build configuration> This folder appears after the project build and includes the files generated by the selected build configuration.
A53_inc This include folder contains shared header files which can be shared among different c/cpp files, and header files are used by the main.cpp file found in the A53_src folder.
  • arm64_regs.h
  • isp_user_define.h
  • S32V234.h
  • typedefs.h
ISP_kernels This folder includes links to the ISP kernel files used in the ISP diagram. Depending on the unit used, the IPUS (scalar) or IPUV (vector) files are generated here during code emission.

These links will be removed when you clean the project if the MDT Builder is enabled.

Project Settings This folder includes the following project settings folders:
Debugger Launch configuration files.
Linker_Files Linker scripts used for the A53 and ISP build configurations.
Scripts A helper script that is used for the ISP build configuration.
SEQ
This output folder includes the sequencer component artefacts generated by Visual Graph Tool at build time.
  • src/static_<project_name>.o
  • sequencer.elf
  • sequencer.map
  • sequencer.run
SEQ_gen

This folder includes the src folder with the source file for the sequencer component.

static_<project name>.c The static sequencer source file generated during code emission (the Static sequencer check box is enabled).
dynamic_<project name>.c The dynamic sequencer source file generated during code emission (the Static sequencer check box is disabled).
Table 2. Projects with ISP support (diagram)
Folder/file Description
ISP data flow : <project_name> An ISP diagram object.
model Model used by graph.
Table 3. Projects with APEX2 support (code)
Folder Description
Binaries A virtual output folder with binary files generated when you build the project.

This folder is generated by Eclipse CDT at build time and contains a list of ELF files. The generated binaries are also available in the workspace at the location,which is configured in Project properties > C/C++ Build > Builder Settings > Build location.

Tip: If you expand the binary item in this folder, you will get the list of header and implementation files used to build this binary.
Includes A virtual include folder with header files.

This folder is generated by Eclipse CDT and contains a list of discovered header files. The list includes header files directly used in the project, which can be found in Project properties > C/C++ Build > Settings > Tool Settings > Standard S32DS C Compiler > Includes.

A53_gen
This folder includes the target files.
  • acf_host.cpp and acf_host.h - Placeholders for user code.
  • apu_<graph_name>_process_controller.cpp, apu_<graph_name>_process_controller.hpp and <graph_name>_process_type.h - The source files for controlling the APEX2 process. These files are generated for each graph during code emission (the Emit host check box).
A53_src This source folder includes main procedures used to build the program.

By default, the folder includes the main.cpp file calling the ACF_APP_CALL function with user code (A53_gen/src/acf_host.cpp).

Note: You can use this folder to add your user code here. Drag and drop your CPP file from the file explorer to this folder. Or, copy the file to the A53_src folder on the file system. After that, return to the IDE, click in the project structure tree, and the press F5 to refresh the project structure. The added file will appear in this folder.
<build configuration> This output folder appears after the project build and includes the files generated by the selected build configuration.
A53_inc This folder contains common header and configuration files.
  • apu_app.cfg - This configuration file for the APU Emulator allows you to define the input and output image locations.
  • arm64_regs.h
  • S32V234.h
  • typedefs.h
A53_test This source folder includes the source code generated by Visual Graph Tool during code emission (the Emit test check box).
src
  • apu_app_config.cpp - A helper file for the APU Emulator configuration.
  • main_test.cpp - The main source file calling the TEST_CALL function with the source code generated from the diagram (A53_test/src/test_acf_host.cpp). This file is used by the TEST_A53 and TEST_EMU build configurations.
  • test_acf_host.cpp - The host source code generated from the diagram.
inc
  • apu_app_config.hpp - A helper file for the APU Emulator configuration.
  • apu_<graph_name>_process_controller_policy.hpp - Conversion policy for the APEX2 process controller data. This file is generated for each graph instance on the diagram.
  • apu_process_controller_data.hpp - The process controller data class.
  • test_acf_host.h - Defines and includes generated from the diagram.
ACF This output folder includes the files generated by the ACF builder for the APU build configuration at build time.
Note: You can find the ACF builder in the project properties, see Project properties > Builders.
APU_gen
This output folder includes the files generated from the ACF builder files for the APU configuration at build time. The included src folder contains the following files for each graph type on the diagram:
  • <GRAPH_NAME>_MKDBstub.cpp
  • <GRAPH_NAME>_nativekernel.hpp
  • <GRAPH_NAME>.cpp
  • <GRAPH_NAME>.hpp
  • <GRAPH_NAME>_analysis_log.txt
APU_kernels

This folder includes user APEX2 kernels used in the diagram and generated by Visual Graph Tool during code emission (the Emit kernels check box).

Note: A registry kernel is a built-in kernel that is shipped with Vision Extension Package for S32V2xx 1.0.0 and is available in the location of Vision SDK shipped with the IDE. A user kernel is a custom created user kernel that you can create and use them in graphs.

If registry kernels are used, this folder is empty.

If user kernels are used, this folder contains the src folder with the following files for each kernel:

  • <user_kernel_name>_user_kernel_acf.cpp and <user_kernel_name>_user_kernel_acf.h - The ACF kernel wrapper files.
  • <user_kernel_name>_user_kernel_apu.cpp and <user_kernel_name>_user_kernel_apu.h - The APEX2 kernel implementation files.
graphs This folder includes graph files for each graph type on the diagram. The following files are generated by Visual Graph Tool during code emission (the Emit graphs check box):
  • <graph_name>_apu_process_desc_main.cpp and <graph_name>_kernel_list.h - The ACF builder files.
  • <graph_name>_apu_process_desc.hpp - The ACF process descriptor.
  • <graph_name>_graph_names.h - Defines for graph Inputs and Outputs.
  • <graph_name>_graph.hpp - The ACF graph definition class.
Project Settings This folder includes the following project settings folders:
  • Debugger - Launch configuration files for the main debugger, selected during the creation of project.
  • Linker Files - Linker scripts used for the A53 and APU build configurations.
  • Scripts - A helper Tcl script for the APU build configuration.

makefile.init This makefile initialization file checks the correctness and consistency of load.h files generated by the APU build configuration.
makefile.acf.init This makefile initialization file includes the referenced kernel directory. This file is generated by Visual Graph Tool during code emission.
Table 4. Projects with APEX2 support (diagram)
Folder/file Description
APEX2 Program Diagram : <project_name> An APEX2 diagram object.
model Model used by graph.