rt Model Name Prefix Checking ImprovedIn Release 14, when determining whether a subsystem could be reused, Real- Time Workshop did not adequately take the Assertion block setting into consideration. If two similar subsystems contained Assertion blocks, and only one of the blocks had the assertion enabled, Real-Time Workshop could mistakenly decide that the two subsystems were reusable. As a result, Real-Time Workshop would generate only one body of subsystem code. This is fixed in Release 14SP1.
In Release 14, if a model had only asynchronous tasks, and you used the
Tornado libary (vxlib1.tlc), function calls associated with
asynchronous tasks were generated twice, and Real-Time Workshop could not
build an executable. This is fixed in Release 14SP1.
In Release 14, an atomic subsystem that included an Async block would generate a segmentation violation in accelerator mode, while the model worked fine in normal mode. This is fixed in Release 14SP1.
In Release 14, the block libraryvxlibbecame obsolete and a new library,vxlib1, which includes improved asynchronous support, was added. Asynchronous tasks associated with the Async Interrupt block in the obsolete library always read absolute time from the base rate. Asynchronous tasks associated the Async Interrupt block in thevxlib1maintained absolute time itself. To enable you to choose between using the base rate timer or your own timer, Release 14SP1 adds the option Manage own timer to the Block Parameter dialog for the Async Interrupt block invxlib1.
In Release 14, when a function-call subsystem block had a wide trigger, it was possible for the generated code to execute thestartmethods of that block and blocks it contained more than once during model initialization. A block'sstartmethod should never be called more than once, because it could have side effects, such as hardware initialization. This is fixed in Release 14SP1.
In Release 14, the External Mode Signal & Triggering dialog did not open properly when a model contained viewers created with the Signal and Scope Manager. This is fixed in Release 14SP1.
Release 14SP1 addresses two issues with using the Real-Time Workshop S- function target in another model:When used in a model that is being accelerated with the Simulink Accelerator, the S-function makefile located at pwd/model_sfcn_rtw/model.mkno longer needs to be present.Symbol collisions that could occur when multiple S-functions exist in a model being built with Real-Time Workshop have been addressed.
In Release 14, you could not generate code or an S-Function for a subsystem (right-click build) if the subsystem or any of the blocks inside the subsystem used parameters from the model's workspace. This is fixed in Release 14SP1.
Prior to Release 14SP1, limitations in the Rapid Simulation (RSim) target code prevented you from using Real-Time Workshop C-API support. In this release, the problems have been fixed and RSim targets, as well as the GRT and ERT targets, can now invoke the the C-API.
In Release 14, the code for some single-rate subsystems, atomic subsystems, and enabled subsystems, was not generated if the subsystems were in an aysnchronous function call hiearchy. This is fixed in Release 14SP1.
In Release 14, the Real-Time Workshop code generation process sometimes failed for models in which constant signals crossed reusable subsystem boundaries. This would happen only if the expression folding optimization was on. This is fixed in Release 14SP1.
In Release 14, code generation could fail for a model if the following two conditions were true:
- Code for an external mode interface is generated
The model has Stateflow data of machine scope
This problem is fixed in Release 14SP1.
In Release 14, if you used the right-click mechanism to build a subsystem, the link Configuration Settings at the Time of Code Generation in the Summary section of the generated HTML report would not work. This is fixed in Release 14SP1.
In Release 14, a Constant block did not always write its value in the Start function of its generated code. This behavior could be inconsistent with simulation behavior. This is fixed in Release 14SP1 such that the block's behavior is the same for code generation and simulation.
In Release 14, if awhilesubsystem had states set toreset, was nested in another iterator system, and contained an assignment block, Real-Time Workshop could generate incorrect code. This happened when the While Iterator block did not need to keep track of the iteration number. This is fixed in Release 14SP1.
In Release 14, when you used a custom code block inside a periodic system, the code generated from that block could appear in the code generated for an asynchronous system, in addition to appearing in the periodic system. This is fixed in Release 14SP1.
Prior to Release 14SP1, Real-Time Workshop generated incorrect code if either of the following conditions existed:
A reusable Subsystem block was fed by a Ground block that had a nonscalar output signal.
Some input ports of a Subsystem block were not connected, either directly or indirectly, to actual (nonvirtual) signals.
In Release 14SP1, Real-Time Workshop reports an error if one of these conditions exists.
To correct the condition, make the following changes as they apply to your model:
Set the Subsystem block's RTW system code option to
InlineorFunction.Replace the Ground block with a Constant block that has a value that specifies a vector of zeros.
Connect unconnected input ports of the Subsystem block to Constant blocks that have a value that specifies a vector of zeros.
In Release 14, if you removed the status bar from a model,get_timerequest and response messages would continue to be transmitted between the target and host, even though there was no visible clock to be updated. This was ineffecient. In Release 14SP1,get_timemessages are not exchanged when the status bar is not visible.
In Release 14, you could not tune the external mode parametersExtModeMexFileandExtModeMexArgsfor targets derived from GRT or ERT targets. This is fixed in Release 14SP1.
In Release 14, when used for with the Rsim target, the From Workspace block generated incorrect code or generated a segmentation violation as follows.
If the data parameter was a structure, the block's generated code could produce incorrect results. This is fixed in Release 14SP1.
If the data structure used included a nondouble data type, the block's generated code produced a segmentation violation. In Release 14SP1, if the data structure uses built-in data types there are no problems with code generation. However, the block generates an error during code generation if the data structure uses fixed-point data types.
In Release 14, if a block required elapsed time (for example, a Discrete Integrator block), and its first parent subsystem that executed conditionally was single rate, the generated code for the block was incorrect or incomplete. This is fixed in Release 14SP1.
In Release 14, models configured to generate code for reusable subsystems to separate source files encountered compilation errors when external mode was enabled. This problem, which was caused by a missing header file, is fixed in Release 14SP1.
In Release 14, if options on the Hardware Implementation pane of the Configuration Parameters dialog were set as follows, the specified embedded hardware setting was not always correctly reflected in the generated code:
The Device Type option in the Embedded hardware section was set to anything other than the default (
Unspecified: assume 32-bit Generic).The Emulation hardware option was set to
None.This problem is fixed in Release 14SP1.
In Release 14, Real-Time Workshop generated invalid code for the Assignment block when a user specified one input port as a matrix and the second input port as a scalar value. The block incorrectly treated the scalar value as matrix and tried to index into it.
This problem is fixed in Release 14SP1.
In Release 14, Real-Time Workshop could generate incorrect code if you selected the Reuse block outputs option on the Optimization pane of the Configuration Parameters dialog. This is fixed in Release 14SP1.
In generated code, a block'sDworkelements are usually set to zero in the initialization function. In Release 14, the set-to-zero operation always used aforloop, even if the width of adworkwas less than the specified roll threshold. This has been fixed in Release 14SP1 such that a loop is used only when the width of adworkelement is greater than or equal to the roll threshold.
In Release 13SP1,MdlInitializewas generated for the GRT target and called inMdlStart. Any user code entered in theRTW->Initializefunction would appear inMdlInitialize. In Release 14,MdlInitializewas removed and code entered in theRTW->Initializefunction was inlined inMdlStart. In Release 14SP1, the Release 13SP1 behavior was restored.
In Release 14, the Microsoft Visual C/C++ Compiler would generate the following warning, and several companion warnings, when compiling generated code on Windows:
"rt_logging_mmi.c(122) : warning C4090: 'function' : different 'const' qualifiers"In Release 14SP1, these messages are no longer generated.
In Release 14, when a Model block was specified as having neither inputs nor outputs, the code generated for the model containing it would fail to compile. This is fixed in Release 14SP1.
In Release 14, a Model block that was contained in an enabled subsystem and had adisablemethod would not have that method called in generated code. This would result in incorrect answers. In Release 14 Service Pack 1, this was corrected such that thedisablemethod is called.
In Release 14, when you placed model reference blocks in an asynchronous subsystem, the blocks did not get called. This is fixed in Release 14SP1.
In Release 14, an asynchronous rate in a model could cause the task counter for a subrate to overflow due to the counter having an incorrect data type size. This condition occurred when all of the following conditions applied:
- The model used an asynchronous rate
- The model included multiple perodic tasks
- The ratio of the slowest rate to base rate is over 255
This is fixed in Release 14SP1.
In Release 14, if a model had an asynchronous task and a reusable single- rate subsystem that included user code,outputandupdatefunctions in the single-rate subsystem were incorrectly called in all tasks. This is corrected in Release 14SP1; theoutputandupdatefunctions of the single-rate subsystem are now called only in the task associated with the subsystem sample time.
In Release 14, the variables representing the start and end of a dead zone in generated code for a Dead Zone block were labeled incorrectly. This is fixed in Release 14SP1.
In Release 14, you could not use an S-Function block with a port-based
sample time in an asynchronous subsystem. This is fixed in Release 14SP1.
You can now include such blocks in an asynchronous
subsystem if the S-function specifies the option
SS_OPTION_ALLOW_PORT_SAMPLE_TIME_IN_TRIGSS.
In Release 14, if you specified a quoted string, such as
'1,2,3', for a user-defined target option, Real-Time Workshop would remove the outer quotes before passing the string to the Target Language Compiler command. This could result in a build failure with an error message similar to the following:
Error using ==> makertw.make_rtw Error using ==> tlc_c Error: Missing variable or function.This is fixed in Release 14SP1. Real-Time Workshop no longer removes the outer quotes and quoted strings are handled correctly.
In Release 14, the initialization value of a Rate Transition block output port could be unpredictable if the Rate Transition block was used to transfer data to or from a block with an asynchronous rate and either a non-ANSI C target or a non-zero initial condition was used. This is fixed in Release 14SP1.
In Release 14, certain Real-Time Workshop optimizations could cause an error during the TLC process or generate code that failed to compile. This could happen when two or more reused systems were used in different contexts in a model. This is fixed in Release 14SP1.
In Release 13 and Release 14, if a system in a model was reused during code generation, and that system had any inputs that were muxed, Real-Time Workshop could generate incorrect code. This could happen if other seemingly identical systems have muxed inputs that have the same overall width, but are broken down into different regions. For example if a muxed input signal has a width of 4 for two systems, but in one system the signal is broken down as[1 1 2]and in another, seemingly identical system, the signal is broken down as[1 2 1], the systems could generate incorrect code. This is fixed in Release 14SP1.
Prior to Release 14SP1, compile errors could occur on specific platforms, such as HPUX, for noninlined S-Function C++ source code. For this release, Real-Time Workshop template makefiles have been updated to provide the proper C++ compiler options and C++ libraries.
S-functions usertwmakecfg.mfiles to provide additional information for the build process, such as include and source paths. In Release 14, when the S-functionmexfile and correspondingrtwmakecfg.mfile were in the current MATLAB working directory when you initited a build, Real-Time Workshop did not process thertwmakecfg.mfile. This is fixed in Release 14SP1.
The S-function target does not support models with variable sample times. Prior to Release 14SP1, Real-Time Workshop would generate an S- function for such models, but the resulting S-function would produce an error when executed. In this release, Real-Time Workshop generates an error for this issue when generating the S-function code.
In Release 14, the S-function target did not correctly determine whether the generated S-function could inherit a sample time. This bug could cause generated S-functions to give wrong answers or to cause segmentation violations when executed. In Release 14SP1, the problem has been fixed by improving the logic for determining if a generated S-function can inherit a sample time, using the same logic as is applied to Model blocks. See "Inherited Sample Time for Referenced Models" in the Real-Time Workshop documentation for details on determining when the sample time is inherited.
In Release 14, Real-Time Workshop could fail to generate code and produce the following stack trace:
[0] libmwcg_ir.so:cg_var_type [1] libmwsimulink.so:RTWCGDiscontInput::getIdxVarFromActSrcThis bug is fixed in Release 14SP1.
The Hardware Implementation pane of the Configuration Parameters dialog provides the setting Shift right on a signed integer as arithmetic shift. Real-Time Workshop uses this setting to generate C code that makes correct and efficient use of the right shift operator. In Release 14, Real-Time Workshop ignored this setting and always generated C code tailored to an arithmetic implementation of the signed right shift operator. If the implementation was actually logical, then the generated code was incorrect.
In Release 14SP1, this problem is fixed. For Simulink and Stateflow models, Real-Time Workshop generates C code that is correctly tailored to the implementation of signed shift right as specified on the Hardware Implementation pane.
Prior to Release 14SP1, if an Enable block had an output port and the block being driven by output signal required it's input to be global data in Real-Time Workshop, the signal driving the Enable block's port could end up missing from the global block IO. This would result in wrong answers or uncompileable code. This is fixed in Release 14SP1.
In Release 14, simulation and code generation results for models containing model blocks could be different for models that met the following conditions:
Used a custom target derived from the ERT target
Had the Single output/update function option on the Real- Time Workshop/Interface pane of the Configuration Parameters dialog set for the referenced model
This is fixed in Release 14SP1.
In Release 14, for user-defined data classes that use custom storage classes (CSCs), the
RTWInfo.CustomAttributesproperty did not get initialized correctly when the objects were first created. By default, the property was initialized as[]instead ofSimulinkCSC.AttribClass_PackageName_Default.This did not cause problems in Release 14 because the 'Default' CSC does not have any custom attributes. However, if you add custom attributes for this CSC in the future, then existing classes will fail to initialize correctly.
To ensure forward compatibility, use the Simulink data class designer to regenerate your user-defined data classes in Release 14SP1.
In Release 14, Simulink could fail to run a periodic block in an atomic subsystem if the subsystem included an asynchronous S-function block. This condition is fixed in Release 14SP1.
In Release 14, if the Signal & Scope Manager placed a block with a periodic sample time in an asynchronous subsystem, a segmentation violation would result when Simulink tried to report the sample time mismatch.
This is fixed in Release 14SP1. Simulink is now able to report an error message, indicating that you should not include a periodic block in an asynchronous subsystem, either manually or with the Signal & Scope Manager.
In Release 14, all instances of an atomic subsystem had to run at the same sample rate for Real-Time Workshop to generate that subsystem as reusable. Otherwise, Real-Time Workshop defined a function for each rate. This limitation was independent of whether the subsystem had a sample time dependence (for example, as for an integrator).
In Release 14SP1, Real-Time Workshop can generate reusable code for a single-rate subsystem if instances of the subsystem run at different sample times as long as the subsystem does not use absolute time.
In Release 14, results from generated code could deviate from simulation results when state variables were used in folded expressions. This is fixed in Release 14SP1, such that expression folding is over- ridden in such circumstances.
In previous releases, Real-Time Workshop did not support parameter values that were single-precision vectors that included nonfinite elements (for example,
single([1 2 inf 3]). The following Target Language Compiler error would occur:"A non-homogenous vector was passed to GENERATE_FORMATTED_VALUE"In Release 14SP1, Real-Time Workshop supports nonfinite elements in single-precision parameter values.
In Release 14, code generation for the Switch block could fail if both of the following conditions existed:
The middle input was not a scalar value.
The criteria for passing the first input was u2~=0.
This is fixed in Release 14SP1.
In Release 14, if you replaced a subsystem with bus inputs or outputs with a generated S-function, the model would take longer to finish updating the diagram than it would before replacing the subsystem. This is fixed in Release 14SP1.
Prior to Release 14SP1, the behavior of Transport Delay blocks in the Rapid Simulation (RSim) target was different from the behavior in the Accelerator, such that the history buffers were allowed to grow. This has been fixed such that the behavior in the RSim target and the Accelerator is the same. This is in accordance with the intent of the RSim target as a nonreal-time simulation tool, as opposed to a real-time code generation tool.
In Release 14, if a Fcn block used an expression that applied
a unary minus operator to a Boolean value, such as -(u(1)<0),
Real-Time Workshop could generate code that produced an incorrect
numerical answer. This is fixed in Release 14SP1.
In Release 13 and Release 14, when an Action, Enable, or Iterator subsystem that was declared as a Reuseable function used canonical input or output in its
startfunction, one of the following would result, depending on the relative number of canonical inputs/outputs between the system and its parent:
The generated code would not compile
An error would occur in the TLC phase
This is fixed in Release 14SP1.
In Release 14, Real-Time Workshop could generate code with expressions folded into macros that evaluated input more than once. The macros includert_MIN,rt_MAX,rt_ABS,rt_SGNandrt_SATURATE. This is fixed in Release 14SP1.
In Release 14, when you included a user-written custom code block in a subsystem that executed conditionally and the generated code for the subsystem function was empty, Real-Time Workshop did not generate a guard for the condition. Instead, Real-Time Workshop placed the custom code directly in the subsystem function. This is fixed in Release 14SP1.
rt Model Name Prefix Checking ImprovedTo ensure that Real-Time Workshop could generate code for any Simulink model that you could simulate, an error check was added to Simulink in Release 14 that disallowed names with the prefix
rt. This naming restriction was implemented to avoid possible name collisions with identifiers generated by Real-Time Workshop.
In Release 14SP1, you have more control over how Real-Time Workshop handles such name collisions. Using the "rt" prefix for identifiers option on the Diagnostics/Data Integrity pane on the Configuration Parameters dialog, you can specify the conservative error checking made available in Release 14, or you can specify that a warning or no response be generated for reasons such as backward compatibility. The default setting is
error, which provides the Release 14 behavior. Other options includewarningandnone(inactive).
| © 1984-2008- The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |