Main Content

coder.profile.StackDriver

Specify driver to obtain stack usage data from target hardware

Since R2022a

Description

Specify a driver implementation that obtains stack usage data from the target hardware during processor-in-the-loop (PIL) execution

Creation

stackUsageDriver = coder.profile.StackDriver() returns an object. Specify the driver implementation by providing values for these properties:

  • PtrDataType

  • HeaderFile

  • SourceFile

  • IncludePaths

  • DriverFunction

Properties

expand all

Data type of pointer that the driver function returns. If the target hardware is your development computer, use 'uint64'.

Example: stackUsageDriver.PtrDataType = 'uint64';

Data Types: char

Name of the header file that must be included in the compilation of the driver function.

Example: stackUsageDriver.HeaderFile = 'myHeaderFile.h';

Data Types: char

Name of the source file for the driver function.

Example: stackUsageDriver.SourceFile = 'mySourceFile.c';

Data Types: char

Paths to folders that must be included in the compilation of the driver function.

Example: stackUsageDriver.IncludePaths = {'path/To/myFolder1', ... 'path/To/myFolder2', ... 'path/To/myFolder3'};

Data Types: char

Name of the driver function.

Example: stackUsageDriver.DriverFunction = 'myDriverFunction';

Data Types: char

Examples

Obtain Stack Usage Data From Target Hardware.

A PIL execution requires a driver implementation that obtains stack usage data from the target hardware.

When you set up PIL target connectivity, specify the driver through an rtw.connectivity.Config subclass. This code provides an example.

classdef overheadConnectivityConfig < rtw.connectivity.Config
  methods
    function this = customConnectivityConfig(componentArgs)
            
      % Create builder
      targetApplicationFramework = ...
        mypil.TargetApplicationFramework(componentArgs);
      builder = rtw.connectivity.MakefileBuilder(componentArgs, ...
        targetApplicationFramework, '');
            
      % Create launcher
      launcher = mypil.Launcher(componentArgs, builder);
            
      % Set up communication       
      hostCommunicator = rtw.connectivity.RtIOStreamHostCommunicator(...
                         componentArgs, ...
                         launcher, ...
                         rtiostreamLibTCPIP);     

      % Call super class constructor to register components
        this@rtw.connectivity.Config(componentArgs,...
                                     builder,...
                                     launcher,...
                                     hostCommunicator);
            
      % Specify driver implementation that obtains stack usage
      % data from the target hardware
      stackUsageDriver = coder.profile.StackDriver();

      stackUsageDriver.PtrDataType = 'uint64';
      stackUsageDriver.HeaderFile = 'myHeaderFile.h';
      stackUsageDriver.SourceFile = 'mySourceFile.c';
      stackUsageDriver.IncludePaths = {'path/To/myFolder1', ...
                                       'path/To/myFolder2', ...
                                       'path/To/myFolder3'};
      stackUsageDriver.DriverFunction = 'myDriverFunction';
      this.setStackDriver(stackUsageDriver);
    end
  end
end

For more information about setting up PIL target connectivity, see:

Version History

Introduced in R2022a