This document describes major bug fixes in this release.
Click on a problem area listed below to read how it has been fixed.
Reusable Code Incorrectly Generated for Subsystems with Logical Operator Blocks
Back Propagation of Signal Labels for Test Point Signals
Building Reusable Subsystems with Scalar Complex Outputs
Code Generated for Stateflow Charts
Code Generation and Simulation for Global Tunable Params in Reused Subsystems
Code Reuse for Identical Atomic Subsystems
Custom Code Blocks Can Be Used in S-Function Targets
Declaring Local Variables in Reusable Functions
Fixed Bug in rsimgetrtp Function
Generating Code with Atomic Subsystems
Generating Code with Tunable Parameters
If and Case Block Code Generation
ImportedExtern Mask Variables
Input Expressions for Blocks Having a Discontiguous Input
Long Description Field in Simulink Object Data During Code Generation
Multi-byte Characters in TLC Files Are Processed Correctly
rtw_info_hook Filename Generation
Simulation and Generated Code Results in the Case of Initial Value Conflict
In previous releases, the Operator parameter of the Logical Operator block was incorrectly allowed to be tunable. This caused the Real-Time Workshop to incorrectly generate reusable code for subsystems containing Logical Operator blocks that were identical except that their Logical Operator blocks implemented different logical operations. This release makes the Operator parameter nontunable, thus fixing the problem.
If a signal is labeled and the Test Point option selected, an attempt to preserve this signal label in the generated code is made. However, this is only true if all of the memory for this signal is contiguous (not a collection of other signals).If a signal label mismatch occurs for a given signal, only one of the signal labels will be used in the generated code. Also, if there is more than one signal with the same name, the signal labels will not be preserved in the generated code.
A bug in Release 13 caused Real-Time Workshop to fail to build reusable subsystems that had scalar complex outputs. This has been fixed.
The presence of Stateflow charts in a model could have introduced unnecessary subsystem modes into the model, which caused the code generated by Real-Time Workshop to use unnecessary global memory, and to generate unnecessary code. This bug, which was introduced in Release 13 Service Pack 1, has been fixed.
In Release 13 Service Pack 1, this issue was causing incorrect generation of reused code for subsystems which are different from each other. This problem, which involves differences in tunable globals between subsystems, could also manifest itself as a segmentation violation in Simulink. This has been fixed.
In Release 13, Real-Time Workshop sometimes failed to reuse the code for groups of identical nonvirtual subsystems when the function option was set to 'Reusable function'. This has been fixed.
A regression in Release 13 prevented S-function targets from being generated for models that included custom code blocks. The S-function target now works with custom code blocks.
In Release 13, some local variables were not declared in functions generated for reusable subsystem when output and update not combined. This has been fixed.
In Release 13, the utility functionrsimgetrtpdid not correctly handle models in which the Inline Parameters option set was to on when processing the parameters of non-inlined s-functions. The bug causedrsimgetrtpto error out or generate incorrect parameter values data. This bug has been fixed.
When generating code for a model in Release 13 or R13 Service Pack 1, a segmentation violation may occur for certain configurations of atomic subsystems. The stack trace is shown below. This has been fixed in this release.Stack Trace:
[0] simulink.dll:struct slBlock_tag * __cdecl LocateSrcInport(struct slBlock_tag *,int)(1, 0, 0x1d2d2f38, 0x1cfbfcf0) + 198 bytes [1] simulink.dll:struct slBlock_tag * __cdecl LocateSrcInport(struct slBlock_tag *,int)(1, 0, 4, 0) + 280 bytes [2] simulink.dll:struct slErrMsg_tag * __cdecl GenCanonicalInputIds(struct RTWInfo_tag *)(0x00df6688, 0x00df6688, 0, 0x1596a1d8) + 438 bytes [3] simulink.dll:struct slErrMsg_tag * __cdecl sleCreateRTWData(struct RTWInfo_tag *)(0x00df6688, 0x00df6688, 0, 0x1596a1d8) + 895 bytes [4] simulink.dll:struct slErrMsg_tag * __cdecl WriteRTWFile(struct RTWInfo_tag *)(0x1596a1d8, 0x00df67d0, 2, 0x7a8a74e8) + 158 bytes [5] simulink.dll:void __cdecl DoRTWGen(struct RTWInfo_tag *,int,struct mxArray_tag * * const)(0x00df6688, 2, 0x00df680c, 2) + 600 bytes
When generating code for a model in Releae 13 or R13 Service Pack 1, a segmentation violation may occur for certain configurations of tunable parameters. The stack trace is shown below. This has been fixed in this release.Stack Trace:
[0] simulink.dll:struct slErrMsg_tag * __cdecl WriteModelParameters(struct RTWInfo_tag *)(0x00df68e0, 0x00df68e0, 0, 0x3d922348) + 1286 bytes [1] simulink.dll:struct slErrMsg_tag * __cdecl WriteRTWFile(struct RTWInfo_tag *)(0x3d922348, 0x00df6a28 "@já", 2, 0x7a8a74e8) + 794 bytes [2] simulink.dll:void __cdecl DoRTWGen(struct RTWInfo_tag *,int,struct mxArray_tag * * const)(0x00df68e0, 2, 0x00df6a64, 2) + 600 bytes [3] simulink.dll:_sleRTWGen(2, 0x00df6a64, 9, 0x00df6b2c) + 140 bytes [4] simulink.dll:void __cdecl slFullRTWGen(int,struct mxArray_tag * * const,int,struct mxArray_tag * * const)(2, 0x00df6a64, 9, 0x00df6b2c) + 24 bytes
The If block and Case blocks aborted code generation when the root model has continuous states and has a child subsystem with:
- continuous time blocks
- {if, case} block
- no continuous states
This problem has been fixed.
In previous releases, workspace variables that were declared to be 'ImportedExtern' were being inlined into the generated code. This issue arose only in the context of masked blocks in which the mask dialog callback functions were changing the values of mask variables. This has been fixed.In general, mask dialog callbacks should only be used for changing the visible or enable state of mask dialog fields and should not be employed for changing mask variables.
Previously, a block with a discontiguous input could not accept an expression at that input, but would accept expressions at other inports. This led to generating incorrect code in certain rare cases. This problem, which originated in Release 13, has now been fixed, by disallowing a block having any discontiguous input from accepting an expression at any input.
When a Simulink data object, e.g., Simulink.Parameter or Simulink.Signal, contains very a long string in its description field or user data fields, the Real-Time Workshop code generation process used to trigger a segmentation fault. This problem is now fixed.
A bug in Release 13 Service Pack 1 caused wrong answers and possibly crashes to occur when multi-byte characters (unicode) were included in TLC scripts. This has been fixed, restoring the correct handling in R13.
In R13SP1, if a user specified additional arguments in the RTW system target file field of the Simulation Parameters dialog, and any of these contained "/" or "\", Real-Time Workshop could derive an incorrect file name. For example, the user inputert.tlc - Isomewhere/somepathcaused the incorrect hook file namesomepath_rtw_info_hook.mto be generated instead ofert_rtw_info_hook.m. This has been fixed, and arguments for System Target Files may now contain the characters "/" and "\".
The virtual outports of a subsystem could be initialized incorrectly by Release 12 and 13 versions of Real-Time Workshop, causing the initial value of an outport to sometimes be incorrectly overwritten by other operations. This could result in differences between simulation outputs and outputs computed by generated code. This issue has been addressed, and the initial value is no longer being overwritten in cases where it had been previously.
| © 1984-2008- The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |