Known Software and Documentation Problems in Release 13 with Service Pack 1

This document describes important known software and documentation problems:

DSP Blockset

Click on a problem area listed below for details.

Autocorrelation Block with Constant Sample Time Might Cause a Segmentation Violation While Generating C Code
Data Type Override Cannot Be Used for Fixed-Point DSP Blocks in Subsystems
DSP Fixed-Point Attributes Block Does Not Work Inside a Masked Subsystem
DSP Fixed-Point Attributes Block Shows Incorrect Initial Values
DSP Gain Block Errors Out for Continuous Sample Times
Some Fixed-Point Optimizations Produce Wrong Results in Filter Realization Wizard

Autocorrelation Block with Constant Sample Time Might Cause a Segmentation Violation While Generating C Code

Generating code from a model containing the Autocorrelation block with constant sample time and the Inline parameters check box selected in the Simulation Parameters dialog box might cause a segmentation violation.

Data Type Override Cannot Be Used for Fixed-Point DSP Blocks in Subsystems

The Data type override parameter of the Fixed-Point Settings interface does not currently work for fixed-point DSP Blockset blocks in subsystems.

DSP Fixed-Point Attributes Block Does Not Work Inside a Masked Subsystem

The DSP Fixed-Point Attributes (DFPA) block does not function inside a masked subsystem or a library-linked subsystem. No error is thrown, but after the model is saved and reloaded, or after any names are changed in the DFPA path, the blocks will have no effect and will not show up in the DFPA GUI.

DSP Fixed-Point Attributes Block Shows Incorrect Initial Values

The Rounding mode and Overflow mode popups in the DFPA GUI do not show the correct values when the GUI is first launched. The two modes are 'Unset,' but 'Floor' and 'Wrap' are shown in the popups. Regardless of what is shown, these two modes are treated as 'Unset' when the GUI is first launched. If you select and then unselect the relevant check box, these popups will show the correct values. You only need to do this once per MATLAB session.

DSP Gain Block Errors Out for Continuous Sample Times

The DSP Gain block will only work with discrete-time signals.

Some Fixed-Point Optimizations Produce Wrong Results in Filter Realization Wizard

When you apply optimizations for 1, -1, and 0 gains on fixed-point realizations of lattice structures in the Filter Realization Wizard, some Convert blocks are removed. The optimized model then produces significantly different results when compared to the results from the non-optimized model.

Embedded Target for TI C6000 DSP

Click on a problem area listed below for details.

Acoustic Noise Cancellation Demo Overruns When Displaying RTDX Data on Windows 98 Platforms
Allowed Simulink Model Names Do Not Include C62x DSPLIB Function Names
Broken Links for Reset Blocks
C62x DSP Library Block Real Forward Lattice All-Pole IIR Mishandles Initial Conditions
C6711 DSK-Echo Cancelation Demo Model Requires the Fixed-Point Blockset
CCS Update Advisor Prevents RTW Build
CCS 2.12.07 not supported
Code Generation Does Not Work on Simulators
Compiler error -- identifier "STS_Obj" is undefined
Generate Code Only Checkbox
In Big Endian Mode, C6701 EVM LED Block Causes codec Block to Fail
In Big-Endian mode, 6701 EVM External LED Block Illuminates Both LEDs
No Online Help for the Targetting Demos
Profiling Error in Triggered or Constant Subsystems
TI C62x DSP Library Blocks Do Not Enforce Vector Size Limits

Acoustic Noise Cancellation Demo Overruns When Displaying RTDX Data on Windows 98 Platforms

The ANC demo overruns on Windows 98 when it displays RTDX data in MATLAB. There is no workaround at this time.

Allowed Simulink Model Names Do Not Include C62x DSPLIB Function Names

You cannot create a Simulink model that has the same name as any of the functions in the C62x DSP Library. For example, while using the Vector Maximum Value block, you get an error if you name your model maxval.mdl.

Broken Links for Reset Blocks

When you try to open an old model, such as one you created with the Developer's Kit for Texas Instruments DSP, with the Embedded Target for C6000 DSP 1.0 or 1.1, you may have a problem with Reset blocks. The names of these blocks have changed, and the result is a red outline on the block and the text "Bad link."

To fix the broken library link, double-click on the block and change the "Source block" parameter from

c6701evmlib/Reset C6701 EVM

to

c6701evmlib/Reset
(replacing C6701 EVM with C6711 DSK if applicable).

C62x DSP Library Block Real Forward Lattice All-Pole IIR Mishandles Initial Conditions

The C62x DSP Library block Real Forward Lattice All-Pole IIR (IIRLAT) may not handle initial conditions correctly. There is no workaround for this problem. Always check your results when you use this block.

C6711 DSK-Echo Cancelation Demo Model Requires the Fixed-Point Blockset

To run the demo model C6711 DSK-Echo Cancellation you must have the Fixed-Point Blockset. The model uses the convert block from the blockset. Note that the Embedded Target for TI C6000 DSP product does not require the fixed point blockset.

CCS Update Advisor prevents RTW build

You cannot build models with Embedded Target for TI C6000 DSP if you have the Update Advisor enabled in CCS.

CCS 2.12.07 not supported

Version 1.1 of this product does not work with Code Composer Studio(r) 2.12.07.

You encounter this problem only when

  1. You have a combined installation of C5000 and C6000 Code Composer Studio Version 2.12.01.
  2. You own the DSP Starter Kit for TMS320VC5510 and install the patch that upgrades Code Composer Studio 2 ('C5000) Version 2.12.01 to Version 2.12.07.

After you install the patch, your Embedded Target for TI C6000 DSP software does not run properly. Uninstalling the patch usually fixes the problem.

Installing the C6000 and C5000 versions of CCS 2 separately (not combined) should let you upgrade your C5000 installation to support your DSP Starter Kit for TMS320VC5510.

Code Generation Does Not Work on Simulators

You can generate code, compile, link, and download to a C62x or C67x simulator. However, the code will not execute properly; interrupts are not handled properly.

Compiler error -- identifier "STS_Obj" is undefined

For some models with atomic subsystems, you may encounter the error identifier "STS_Obj" is undefined when you compile the model during code generation. The error comes from a problem in the DSP/BIOS header file inclusion at the top of the source file model.h. Preprocessor conditionals prevent the inclusion of sts.h in this file.

To fix the problem, move the inclusion of math.h, string.h, std.h, clk.h, and sts.h down below the subsequent #endif statement. You will have to re-do this task each time you generate code for a model. The underlying bug in Real-Time Workshop is planned to be fixed in Release 14.

Generate Code Only Checkbox

In Tools -> Real-time Workshop -> Options, under the Target Configuration category, there is a checkbox labeled Generate code only. For the embedded targets, this checkbox is always disabled and cannot be changed. Please disregard the checkbox.

To use the Generate code only feature, change the Build action selection as follows:

  1. Change the RTW Options category to TI C6000 Runtime.
  2. Change the Build action to Generate_code_only.

This causes the Real-Time Workshop build to place generated code into the project directory without opening Code Composer Studio, and disables target-specific and Code Composer Studio specific options.

In Big Endian Mode, C6701 EVM LED Block Causes codec Block to Fail

In some cases, having a C6701 EVM LED block in your model can cause the codec on the board to fail. This is not a problem in little endian operation. There is no workaround for this problem.

In Big-Endian mode, 6701 EVM External LED Block Illuminates Both LEDs

The C6701 EVM LED block provides the option to light only the external LED on the board. When your board is in big-endian mode and you select the external LED, the block lights both the internal and external LEDs.

No Online Help for the Targetting Demos

Some of the demonstration models for the Embedded Target for TI C6000 DSP do not have descriptions available. When you select a demo on the Demo tab in the Help browser, you see only the name of the demo and a link to open the demo. This includes

Profiling Error in Triggered or Constant Subsystems

When you profile models that contain triggered or constant subsystems, you may encounter an error during TLC. Subsystem timing is not handled properly by the code generation engine in Embedded Target for TI C6000 DSP.

In detail, when you create an atomic subsystem that is contained within a larger atomic subsystem, and the larger subsystem is driven by a FOR iterator, the smaller included subssystem causes an error during code generation. Similarly, when you create a subsystem that is driven by a constant signal, the subsystem causes an error.

To fix the bug, obtain and install the revised file c6000_prof.tlc from The MathWorks Web site following the instructions in Solutions, Tips, and Workarounds (SWAT) number 33781 available from the following location: SWAT 33781

TI C62x DSP Library Blocks Do Not Enforce Vector Size Limits

Certain vector blocks in the C62x DSP Library, such as Float-to-Q15, do not enforce limits on vector size. Behavior is undefined for vectors larger than 32767 elements. Although there is no known problem with vector sizes up to 2^32, the function prototypes for these functions cite "short" as the data type for the vector-size parameter. The Simulink blocks do not enforce this constraint.

MATLAB Link for Code Composer Studio

Click on a problem area listed below for details.

Behavior of list method with ccsdsp objects
ccinspect demonstration program no longer hangs MATLAB
CCS error when creating a ccsdsp link on the C2800 with CCS V2.12
CCSFIRDEMO - Filter response does not converge on the first iteration of "run"
Changing source file locations in a project can cause errors
Changing values of local variables does not take effect
Creating MATLAB objects for C28x register variables is disabled
Export to Code Composer Studio from FDATool Does Not Work for Cascade and Parallel Filters
Function does not run when a breakpoint occurs at the start of the function
HIL does not support optimization options on the C54x
HIL does not support the DWARF Debug Info option for Generate Debug Info when building on the C6000
HIL does not support the DWARF Debug Info option of Generate Debug Info when building for the C5400
HIL does not support the No Debug option for Generate Debug Info when building on the C5400
HIL does not support the No Debug option for Generate Debug Info when building on the C6000
HIL only supports the speed most critical option of opt. speed vs. size when building on the C6000
list(ff,'x') method errors out when x is a static local variable
Methods 'cast' and 'convert' return incorrect objects when casting/converting to nested pointer types
multiproctutorial demo times out when used on an OMAP simulator
Problem accessing some C55x registers in CCS 2.2
Reading register variables results in unexpected values
Running Demos on TI'sTMS470Rx(tm) Processor Requires Correct Memory Mapping
Setting the timeout property for function class run method
Unable to created valid objects for some C55x register variables

Behavior of list method with ccsdsp objects

Output of list(cc,'function') does not include library functions.

Runninglist(cc,'function',libfunc) on the same project returns information about the function specified by libfunc.

ccinspect demonstration program no longer hangs MATLAB

Clicking Inspect Properties to view the properties of an object in the demonstration program ccsinspect no longer hangs MATLAB.

CCS error when creating a ccsdsp link on the C2800 with CCS V2.12

The first time you create a link to a C2800 target with CCS V2.12 , you may see one of the following error messages in CCS:

"Cannot find ..\cc\gel\f2812_peripherals.gel"
"Cannot find ..\cc\gel\f2810_peripherals.gel"

To fix this problem, do the following:

  1. Go to TI_DIR\cc\gel and open f2812.gel or f2810.gel (depending on your target). (TI_DIR is the directory where you installed CCS on your machine.)

  2. On Line 21 of the f2812.gel file for example, find the code:

    GEL_LoadGel("..\\cc\\gel\\f2812_peripheral.gel");

    Change the relative path to the absolute path. For example:

    GEL_LoadGel("TI_DIR\\ti28\\cc\\gel\\f2812_peripheral.gel");

CCSFIRDEMO - Filter response does not converge on the first iteration of "run"

When you run ("Run Program") the ccsfirdemo on a C55x, the filter response does not converge on the first iteration of run (see the plot). However, on the succeeding clicks of "Run Program," expected convergence is observed.

In the CCS project, some buffers may not be clean before the filter is run.

Changing source file locations in a project can cause errors

When you modify a source file such that you change the line position of a function, creating an object to access the function can cause createobj to fetch an incorrect string as the function declaration.

This happens because MATLAB, in the process of creating a function object, goes to the source file and extracts the declaration string from the line where the function definition was before your changes. CCS only updates the function line location when you compile and load your program on the target. Therefore, changing the file without recompiling and reloading can result in createobj returning an incorrect function declaration string.

To avoid getting the wrong declaration string, recompile and reload your project after you make changes to your source code.

To avoid recompiling and reloading, you can pass the correct function declaration to MATLAB using the declare method.

Changing values of local variables does not take effect

If you halt the execution of your DSP and modify a local variable's value, the new value may not be acknowledged by the compiler. If you continue to run your DSP, the compiler uses the original value of the variable. This problem happens only with local variables. When you write to the local variable via the Code Composer Studio Watch Window or via a MATLAB object, you are writing into the variable's absolute location (register or address in memory). However, within the function, the compiler sometimes saves the local variable's values in an intermediate location, such as another register or to the stack. That intermediate location cannot be determined or changed/updated with a new value during execution. Thus the compiler uses the old, unchanged variable value.

Creating MATLAB objects for C28x register variables is disabled

When creating a MATLAB object for a C28x register variable, an error is thrown:

CCS:
register float rl_float = -1.234

MATLAB:
>> cc = ccsdsp('boardnum',1,'procnum',0);
>> x = createobj(cc,'rl_float')
Cannot create an object for a C28x register variable. This feature is 
currently disabled.

This feature is currently disabled due to a bug in TI's SDK 2.2. The fix is anticipated in SDK 3.0.

Export to Code Composer Studio from FDATool Does Not Work for Cascade and Parallel Filters

You cannot export cascade or parallel filters to Code Composer Studio. When your current filter in FDATool is either a cascade or parallel filter, the Export to Code Composer Studio menu item is disabled.

Function does not run when a breakpoint occurs at the start of the function

For some functions that have a breakpoint at the beginning or starting address, doing

run(ff,...)

or

goto(ff,...)

or

execute(ff,...)

does not execute the function. Instead, the program counter (PC) stays at the breakpoint at the beginning of the function.

MATLAB usually issues a warning that it encountered a breakpoint. You can resume function execution by doing

resume(ff)

If MATLAB does not issue a warning and the PC still points to the function starting address, remove the breakpoint to run the function.

HIL does not support optimization options on the C54x

For the C5400, MATLAB Link for Code Composer Studio supports only None for the compiler Opt Level and compiler Program Level Opt build options.

HIL does not support the DWARF Debug Info option for Generate Debug Info when building on the C6000

On the C6000 family of processors, MATLAB Link for Code Composer Studio supports only the Full Debug and Function Profile Debug options for Generate Debug Info when you build a project. The Dwarf Debug Info option for Generate Debug Info is not supported.

HIL does not support the DWARF Debug Info option of Generate Debug Info when building for the C5400

MATLAB Link for Code Composer Studio supports only the Full Debug or Function Profile Debug options when you use hardware-in-the-loop (HIL) features for the C5400. You cannot build projects that use the DWARF Debug Info selection for the Generate Debug Info compiler build option and use the HIL features with your C5400.

HIL does not support the No Debug option for Generate Debug Info when building on the C5400

MATLAB Link for Code Composer Studio hardware-in-the-loop features support only the Full Debug and Function Profile Debug compiler build options when you build projects for your C5400 hardware.

You cannot build projects for your C5400 hardware using the No Debug compiler option.

HIL does not support the No Debug option for Generate Debug Info when building on the C6000

On C6000 processors, MATLAB Link for Code Composer Studio hardware-in-the- loop features support only the Full Debug and Function Profile Debug options for building projects on the C6000. The No Debug option is not supported.

HIL only supports the speed most critical option of opt. speed vs. size when building on the C6000

On C6000 processors, MATLAB Link for Code Composer Studio supports the default build option speed most critical for the opt. speed vs. size option. The following selections for opt. speed vs. size are not supported:

    speed more critical
    speed critical
    size critical
    size most critical

list(ff,'x') method errors out when x is a static local variable

Using list for getting information about local variables fails when the variable is a static local variable.

When you define foo in Code Composer Studio as:

void foo(void) {
int i_arr;
double r_ccstatus;
static int x_static; /* Static local variable */
...
}


The syntax for querying information about a specific local variable x is as follows:

Create an object in MATLAB to access foo:

cc = ccsdsp;
ff = createobj(cc,'foo'); % Function containing static variable x


Now use list to get information about foo:

info = list(ff,'x_static');

This errors out when x_static is a static local variable of foo because

    A) Function foo does not have a record of x_static . Check through ff.variables (names of all local variables)--you see that foo does not contain x_static.

    For example:
    ff.variables
    ans =
    'i_arr' 'r_ccstatus'


    B) All local static variables are treated by the compiler as globals.
However, getting information on the global variable x_static , as follows :

list(cc,'globalvar','x_static')

is not recommended because there can be more than one x_static in the symbol table (x_static may be defined in some other functions). Distinguishing the x_static of interest from the rest is not possible through the interface.

Methods 'cast' and 'convert' return incorrect objects when casting/converting to nested pointer types

Methods cast and convert return incorrect objects when casting/converting to/from a pointer to a pointer(s).

Example:
>> x = createobj(cc,'g_vptr')

POINTER Object stored in memory: 
  Symbol name             : g_vptr
  Address                 : [ 2147501804 0]
  Word size               : 32 bits
  Address units per value : 4 au
  Representation          : unsigned
  Size                    : [ 1 ]
  Total address units     : 4 au
  Array ordering          : row-major
  Endianness              : little
  Pointer data type       : void *

>> convert(x,'int **')

POINTER Object stored in memory: 
  Symbol name             : g_vptr
  Address                 : [ 2147501804 0]
  Word size               : 32 bits
  Address units per value : 4 au
  Representation          : unsigned
  Size                    : [ 1 ]
  Total address units     : 4 au
  Array ordering          : row-major
  Endianness              : little
  Pointer data type       : int *

>> x_new = cast(x,'int **')

POINTER Object stored in memory: 
  Symbol name             : g_vptr
  Address                 : [ 2147501804 0]
  Word size               : 32 bits
  Address units per value : 4 au
  Representation          : unsigned
  Size                    : [ 1 ]
  Total address units     : 4 au
  Array ordering          : row-major
  Endianness              : little
  Pointer data type       : int *

multiproctutorial demo times out when used on an OMAP simulator

The 'multiproctutorial' demo errors out due to timing issues when used with CCS 2.2. This is due to a bug in CCS 2.2 for OMAP. This problem occurs only when using the OMAP simulator.

Reproduction steps through the CCS IDE:

  1. Configure your OMAP CCS 2.2 to set up the OMAP simulator.
  2. Open CCS and load a program on either C55x or R2x processors. Go to Debug->Go Main. (This action takes a very long time)

Problem accessing some C55x registers in CCS 2.2

For

reading from and writing to the above-listed registers, gives incorrect results. This is a bug in CCS 2.2.

Reading register variables results in unexpected values

Register variables are often hard to figure out because the registers that hold the variables are not dedicated to storing just the variable value. Digital signal processors use registers as temporary storage locations anytime during execution. When this occurs, the executing program stores the value of the variable somewhere in the stack and returns it to the register later.

Hence, getting the values of register variables during intermediate times may give unexpected values. Likewise, values that you write to register variables during intermediate times may not get reflected.

Note--This is true for any local variable.

One way to test this is to write a line of code that uses the variable and see if the result remains consistent.

Example:
register int a = 100;
int b;
...
b = a + 2;


Reading the register assigned to a probably returns the correct result but if b gives the expected 102 sum, nothing is wrong with your code or the link. In this case the register is behaving as it should.

Running Demos on TI's TMS470Rx(tm) Processor Requires Correct Memory Mapping

Before you run demonstration models on ARM/TMS470Rxx processors, your Code Composer Studio (CCS) configuration must meet two requirements:

Before running any demo on the TI TMS470Rx CPU, do the following in CCS:

Close CCS and you are ready to run the demos on your TMS470xx target.

Setting the timeout property for function class run method

The time-out value for the run method in the function class can be modified only by changing the function object timeout property value.

To demonstrate changing the timeout property value:

cc = ccsdsp;
ff = createobj(cc,'foo') % Object for function foo
run(ff) % timeout defaults to 10 secs


To make run stop after 20 secs, set the timeout property value to 20:

set(ff,'timeout',20); % This time-out value now applies to all methods
run(ff);
ff.timeout = 10; % Restore default timeout value

Unable to created valid objects for some C55x register variables

For some C55x register non-16-bit variables (float, double, long, long long), createobj is unable to create a valid Register object and throws an error. This is due to the fact that the compiler sometimes assigns these variables to 16-bit registers. Since the wordsize and the register size are inconsistent, the object cannot be created.

For example:

CCS:
  register float rl_float;

MATLAB:
  >> x = createobj(cc,'rl_float')
  ??? Error using ==> ccsdsp/createobj (C55xBugCheck)
  Unable to create a valid register object for variable 'rl_float'.

Model-Based Calibration Toolbox

Click on a problem area listed below for details.

Changing a table that is in a Tradeoff causes an error
Function models will not accept simple function definitions
Normalizer tables allow invalid inputs
Normalizer view breaks when using a Feature Model
Printing and copying failure from Surface Viewer in CAGE

Changing a table that is in a Tradeoff causes an error

Once a table has been added to a Tradeoff Calibration study, changing its properties from elsewhere, for example by changing the table size in the Calibration Manager, may cause an error in CAGE. To avoid the error first delete the Tradeoff, then edit the table and then construct a new Tradeoff using the changed table.

Function models will not accept simple function definitions

If you create a new function model that contains a power or multiply operator, it may incorrectly return an error telling you that it cannot parse the function. As a workaround, enter the function using MATLAB's element-wise operators (for example ".*" instead of "*").

Normalizer tables allow invalid inputs

When you edit values in the Output column of a Normalizer table, the table will constrain the value you type to be displayed as an integer. However it does not correctly constrain the value that is saved internally, so the accompanying graph is updated to show the typed value. Normalizer outputs should be constrained to be integers, so typing in a non- integer value may lead to errors in CAGE. The Normalizer graph, which can also be used to edit the breakpoints, correctly constrains the saved value to be an integer.

Normalizer view breaks when using a Feature Model

When you view a normalizer from within a feature that is being filled using a "Feature Model", MBC will error if the normalizer comparison pane is open. To prevent errors, keep the normalizer comparison pane closed while looking at these normalizers.

Printing and copying failure from Surface Viewer in CAGE

Printing and copying from the Surface Viewer does not work correctly if you have used the table view. You can use this workaround: shut down and restart CAGE and then reopen the surface viewer.

Real-Time Workshop

Click on a problem area listed below for details.

Building Subsystem with Continuous Inherited Sample Time Does Not Honor Step Size
Closing a Model During Code Generation Causes Segmentation Violation
DSP Support Documentation Error
Enabling the Rapid Simulation Target to Timeout
Included Files Documentation Error
Look-Up Table 2-D Does Not Support Changing Number of Repeated Zeros/Points
Redefining Doubles as Floats with "-DREAL_T=float" Option Is Not Reliable
tlc invocation now provides the full path to model file rather than the relative path

Building Subsystem with Continuous Inherited Sample Time Does Not Honor Step Size

In Version 5.x, when Building a Subsystem (right-click command) that has continuous sample time and inherited sample time, any Step Size set by the user in the Simulation Parameter Solver dialog will fail to be honored. Instead, the default step size (stop time / 50) is used. This problem does not occur when building the entire model.

Closing a Model During Code Generation Causes Segmentation Violation

If you attempt to close a model during while Real-Time Workshop is generating code or the code is beig compiled, unpredictable things may happen, up to and including segmentation violations. We plan on addressing this issue for the next release, but when using the current release and all prior releases, please do not close a model while a build is in process.

DSP Support Documentation Error

The Real-Time Workshop User’s Guide section “DSP Processor Support” on p. 14-107 contains obsolete information, and should instead read as follows:

DSP targets may use registers with sizes other than 32 bits and vary in their saturation and overflow behavior. These characteristics are specified by target-specific hookfiles, which are provided for all targets supplied by The MathWorks. Users may create their own hookfiles for custom targets. The contents and naming of hook files are described in "Targeting Real-Time Systems: Components of a Custom Target Configuration: Control Files: Hook Files for Communicating Target-specific Word Characteristics" on page 14-7 of the Real-Time Workshop User's Guide. The %assign DSP32=1 command to the system target makefile and the - DDSP32=1 command to the template makefile that formerly handled DSP targets have been deprecated and no longer have any effect.

Enabling the Rapid Simulation Target to Timeout

The Rapid Simulation (RSIM) Real-Time Workshop target now has a timeout execution option. Use this option to enable the RSIM executable to abort if it is taking excessive time. This can happen, for example, in some models when zero crossings are frequent and minor step size is small.

To cause an executing RSIM to timeout after n seconds, use the -L command line option followed by n. For example, suppose you created an RSIM executable for the vdp demo; you can run the executable as follows:

  vdp -L 20
After vdp (or vdp.exe) executes for 20 seconds the following will happen.

On PC platforms, the program will terminate with the message:

Exiting program, time limit exceeded 
Logging available data ... 
On Unix platforms the message will be
** Received SIGALRM (Alarm) signal @ Fri Jul 25 15:43:23 2003
** Exiting model  'vdp' @ Fri Jul 25 15:43:23 2003
You do not need to do anything to your model or its Real-Time Workshop configuration to use this feature. However, you must generate the RSIM executable using Version 6.0 or later of Real-Time Workshop for the -L flag to be recognized.

Included Files Documentation Error

Page 9 of the shipped version of Real-Time Workshop 5.0 Release Notes indicates that in generated code, model_private.h is sub- included by model.h. This is incorrect; model.h does not include model_private.h.

The section "Application Modules for Application Components" on page 7- 33 of the Program Architecture chapter of the Real-Time Workshop documentation also incorrectly states that model_private.h is sub-included by model.h.

On page 2-9 of “Getting Started with Real-Time Workshop” the section “Building an Application: Summary of Files Created by the Build Procedure” also incorrectly states that model.h includes model_private.h. The diagram of file inclusions in Figure 2- 12 on page 2-50 is correct, however.

Look-Up Table 2-D Does Not Support Changing Number of Repeated Zeros/Points

When code is generated for the Look-Up Table 2-D or Look-Up Table 1-D block for floating-point parameters with binary search, extrapolation, and linear interpolation selected, the number and position of repeated zeros is generated explicitly into the generated code. If the breakpoint parameters are then tuned in the real-time code during execution and the number or position of repeated zeros changes, the generated code will in most cases get an incorrect answer when the input for that breakpoint set is near zero.

The workaround is to avoid this problem, do not change the number or position of reapated zeros in breakpoint parameters for the Look-Up Table 1-D and Look-Up Table 2-D blocks.

Redefining Doubles as Floats with "-DREAL_T=float" Option Is Not Reliable

Under Compiler Options on page 9-45 of the Real-Time Workshop Users Guide for Version 5, the following tip is given: "If you do not require double precision for your application, define real_T as float in your template make file, or you can simply specify -DREAL_T=float after make_rtw in the Make command field."

This documentation is not correct. Various circumstances (such as the presence of literal constants) can cause this strategy to fail to remove all doubles from the generated code. The only reliable way to be sure that doubles are absent is to formally propagate single-precision signals in the Simulink model.

TLC Invocation Now Provides the Full Path to Model File Rather Than the Relative Path

Change in tlc invocation, providing full path to model file rather than relative path, creates backwards incompatibility in some custom targets. When migrating Release 13 targets to Release 14, their use of TLC's TLCFILES to determine context, such as the path to the model file, may be affected by this change.