Real-Time Workshop

Getting Started

Introducing Real-Time Workshop

What Is Real-Time Workshop?

Components and Features

Capabilities and Benefits

Accelerating Your Development Process

Installing Real-Time Workshop

Third-Party Compiler Installation on Windows

Supported Compilers

Compiler Optimization Settings

Real-Time Workshop Demos

Help and Documentation

Online Documentation

Printing the Documentation

For Further Information

Related Products

Typographical Conventions

Building an Application

Automatic Program Building

Steps in the Build Process

1. Analyze the Model

2. Call the Target Language Compiler to Generate Code

3. Generate a Customized Makefile

4. Create the Executable

Summary of Files Created by the Build Procedure

Working with Real-Time Workshop

Basic Real-Time Workshop Concepts

Target and Host

Available Target Configurations

Code Formats

The Generic Real-Time Target

Target Language Compiler Files

Template Makefiles

The Build Process

Model Parameters and Code Generation

Quick Start Tutorials

Tutorial 1: Building a Generic Real-Time Program

Tutorial 2: Data Logging

Tutorial 3: Code Validation

Tutorial 4: A First Look at Generated Code

Tutorial 5: Getting Started with External Mode Using GRT

Using Real-Time Workshop

Understanding Real-Time Workshop

Product Overview

Some Real-Time Workshop Capabilities

Software Design with Real-Time Workshop

The Rapid Prototyping Process

Key Aspects of Rapid Prototyping

Rapid Prototyping for Digital Signal Processing

Rapid Prototyping for Control Systems

Open Architecture of Real-Time Workshop

Where to Find Help

How Do I...

Code Generation and the Build Process

The Real-Time Workshop User Interface

Using the Real-Time Workshop Pane

Target Configuration Options

General Code Generation Options

General Code Generation Options (cont.)

General Code Appearance Options

Target-specific Code Generation Options

TLC Debugging Options

Real-Time Workshop Submenu

Simulation Parameters and Code Generation

Solver Options

Workspace I/O Options and Data Logging

Diagnostics Pane Options

Advanced Options Pane

Tracing Generated Code Back to Your
Simulink Model

Other Interactions Between Simulink
and Real-Time Workshop

Selecting a Target Configuration

The System Target File Browser

Available Targets

Making an Executable

Generated Source Files

Compilation and Linking

Choosing and Configuring Your Compiler

Template Makefiles and Make Options

Compiler-Specific Template Makefiles

Template Makefile Structure

Configuring the Generated Code via TLC

Target Language Compiler Variables and Options

Generated Code Formats

Introduction

Choosing a Code Format for Your Application

Real-Time Code Format

Unsupported Blocks

System Target Files

Template Makefiles

Real-Time malloc Code Format

Unsupported Blocks

System Target Files

Template Makefiles

S-Function Code Format

Embedded C Code Format

Building Subsystems

Nonvirtual Subsystem Code Generation

Nonvirtual Subsystem Code Generation Options

Modularity of Subsystem Code

Code Reuse Diagnostics

Generating Code and Executables from Subsystems

Working with Data Structures

Parameters: Storage, Interfacing, and Tuning

Storage of Nontunable Parameters

Tunable Parameter Storage

Storage Classes of Tunable Parameters

Using the Model Parameter Configuration Dialog

Tunable Expressions

Tunability of Linear Block Parameters

Parameter Configuration Quick Reference Diagram

Signals: Storage, Optimization, and Interfacing

Signal Storage Concepts

Signals with Auto Storage Class

Declaring Test Points

Interfacing Signals to External Code

Symbolic Naming Conventions for Signals
in Generated Code

Summary of Signal Storage Class Options

C API for Parameter Tuning and Signal Monitoring

Target Language Compiler API for Parameter
Tuning and Signal Monitoring

Parameter Tuning via MATLAB Commands

Simulink Data Objects and Code Generation

Overview

Parameter Objects

Parameter Object Configuration Quick
Reference Diagram

Signal Objects

Signal Object Configuration Quick
Reference Diagram

Resolving Conflicts in Configuration of Parameter
and Signal Objects

Customizing Code for Parameter and Signal Objects

Using Objects to Export ASAP2 Files

Block States: Storing and Interfacing

Storage of Block States

Block State Storage Classes

Using the State Properties Dialog Box to Interface
States to External Code

Symbolic Names for Block States

Block States and Simulink Signal Objects

Summary of State Storage Class Options

Storage Classes for Data Store Memory Blocks

Data Store Memory and Simulink Signal Objects

External Mode

Introduction

Using the External Mode User Interface

External Mode Related Menu and Toolbar Items

External Mode Control Panel

Connection and Start/Stop Controls

Target Interface Dialog Box

External Signal & Triggering Dialog Box

Data Archiving Dialog Box

Parameter Download Options

External Mode Compatible Blocks and Subsystems

Compatible Blocks

Signal Viewing Subsystems

External Mode Communications Overview

The Download Mechanism

Inlined and Tunable Parameters

The TCP/IP Implementation

Using the TCP/IP Implementation

The External Interface MEX-File

External Mode Compatible Targets

Running the External Program

Error Conditions

Implementing an External Mode Protocol Layer

Limitations of External Mode

Program Architecture

Introduction

Model Execution

Program Timing

Program Execution

External Mode Communication

Data Logging In Singletasking
and Multitasking Model Execution

Rapid Prototyping and Embedded
Model Execution Differences

Rapid Prototyping Model Functions

Embedded Model Functions

Rapid Prototyping Program Framework

Rapid Prototyping Program Architecture

Rapid Prototyping System-Dependent Components

Rapid Prototyping System-Independent Components

Rapid Prototyping Application Components

Embedded Program Framework

Models with Multiple Sample Rates

Introduction

Singletasking vs. Multitasking Environments

Executing Multitasking Models

Multitasking and Pseudomultitasking

Building the Program for Multitasking Execution

Singletasking

Building the Program for Singletasking Execution

Model Execution

Simulating Models with Simulink

Executing Models in Real Time

Singletasking vs. Multitasking Operation

Sample Rate Transitions

Data Transfer Problems

Rate Transition Block Options

Faster to Slower Transitions in Simulink

Faster to Slower Transitions in Real Time

Slower to Faster Transitions in Simulink

Slower to Faster Transitions in Real Time

Singletasking and Multitasking
Execution of a Model: an Example

Singletasking Execution

Multitasking Execution

Optimizing the Model for Code Generation

General Modeling Techniques

Expression Folding

Expression Folding Example

Using and Configuring Expression Folding

Supporting Expression Folding in S-Functions

Categories of Output Expressions

Acceptance or Denial of Requests for
Input Expressions

Utilizing Expression Folding in Your TLC Block
Implementation

Conditional Branch Execution

Block Diagram Performance Tuning

Look-Up Tables and Polynomials

Accumulators

Use of Data Types

Stateflow Optimizations

Simulation Parameters

Compiler Options

The S-Function Target

Introduction

Intellectual Property Protection

Creating an S-Function Block from a Subsystem

Sample Time Propagation in Generated S-Functions

Choice of Solver Type

Tunable Parameters in Generated S-Functions

Automated S-Function Generation

Restrictions

Limitations on Use of Goto and From Blocks

Other Restrictions

Unsupported Blocks

System Target File and Template Makefiles

System Target File

Template Makefiles

Real-Time Workshop Rapid Simulation Target

Introduction

Licensing Protocols for Using Simulink Solvers in Executables

Building for the Rapid Simulation Target

Running a Rapid Simulation

Simulation Performance

Batch and Monte Carlo Simulations

Limitations

Targeting Tornado for Real-Time Applications

The Tornado Environment

Confirming Your Tornado Setup Is Operational

VxWorks Library

Run-Time Architecture Overview

Parameter Tuning and Monitoring

Implementation Overview

Adding Device Driver Blocks

Configuring the Template Makefile

Tool Locations

Building the Program

Downloading and Running the Executable
Interactively

Asynchronous Support

Introduction

Interrupt Handling

Interrupt Control Block

Task Synchronization Block

Asynchronous Rate Transition Block

Unprotected Asynchronous Rate Transition Block

Creating a Customized Asynchronous Library

Targeting Real-Time Systems

Introduction

Components of a Custom Target Configuration

Code Components

User-Written Run-Time Interface Code

Run-Time Interface for Rapid Prototyping

Run-Time Interface for Embedded Targets

Control Files

Tutorial: Creating a Custom Target Configuration

Customizing the Build Process

System Target File Structure

Adding a Custom Target to the System Target
File Browser

Template Makefiles

Creating Device Drivers

Inlined and Noninlined Drivers

Device Driver Requirements and Limitations

Parameterizing Your Driver

Writing a Noninlined S-Function Device Driver

Writing an Inlined S-Function Device Driver

Building the MEX-File and the Driver Block

Source Code for Inlined ADC Driver

Interfacing Parameters and Signals

Signal Monitoring via Block Outputs

C API for Parameter Tuning

Target Language Compiler API for
Signals and Parameters

Creating an External Mode Communication Channel

The Design of External Mode

External Mode Communications Overview

External Mode Source Files

Guidelines for Implementing the Transport Layer

Combining Multiple Models

DSP Processor Support

For DSP Blockset Users

Glossary

Blocks That Depend on Absolute Time

Targeting DOS for Real-Time Applications

DOS Target Basics

DOS Device Drivers Library

Implementation Overview

System Configuration

Sample Rate Limits

Device Driver Blocks

Device Driver Block Library

Configuring Device Driver Blocks

Adding Device Driver Blocks to the Model

Building the Program

Running the Program

The Real-Time Workshop Development Process

Introduction

A Next-Generation Development Tool

Key Features

Benefits

Integration with Simulink

How MathWorks Tools Streamline Development

Code Formats

Target Environments

Code Generation Optimizations

An Open and Extensible Environment


 Getting Started