dSPACE TargetLinkKnownProblemReport
dSPACE TargetLinkKnownProblemReport
TargetLink
List of TargetLink Problem Reports - Created at: 2014-03-24
1 / 1260
ID:
KPR.2008.07.22.001
Title:
Utility
Description: The A2L generator may fail to create COM_AXIS entries for
table blocks with more
than one input. This is caused by missing SourceSignal block
variable references
for the second input of table inside the Data Dictionary
Subsystem area.
Workaround: No workaround available.
ID:
KPR.2008.07.28.001
Title:
Modelling
2 / 1260
ID:
KPR.2008.07.28.002
Title:
ID:
KPR.2008.07.28.004
Title:
3 / 1260
ID:
KPR.2008.07.29.001
Title:
Modelling
4 / 1260
ID:
KPR.2008.07.29.002
Title:
5 / 1260
ID:
KPR.2008.07.29.003
Title:
API
ID:
KPR.2008.07.29.004
Title:
Modelling
6 / 1260
ID:
KPR.2008.07.29.005
Title:
User interface
7 / 1260
ID:
KPR.2008.07.29.006
Title:
Utility
Description: When
- a model (as opposed to a subsystem) should be prepared for
TargetLink,
- a trigger port resides on the root level of the model,
preparation aborts, and the following error message is
displayed in the Matlab
Command Window:
??? Error using ==> tl_check_system>FcnInitSys at 2070
block_diagram does not have a parameter named
'PortConnectivity'.
Error in ==> tl_check_system>FcnCheckSystem at 1502
[bs,bFail,statStruct] = FcnInitSys(options.system,bs,options);
Error in ==> tl_check_system at 248
[bs,msgStruct,options] = FcnCheckSystem(bs,options);
Preparation aborts before any modifications have been
applied to the model.
However, the model may be in compiled state, which must be
terminated manually
by invoking
>> <modelName>([],[],[],'term')
in the MATLAB command window. Otherwise, the model can
neither be closed, nor
modified.
Preparation can either be started with the System Preparation
dialog, or by
invoking the tl_prepare_system tool.
Workaround: 1) Remove (cut) trigger port block before starting preparation.
2) Have model prepared.
3) Re-insert trigger block.
8 / 1260
ID:
KPR.2008.07.29.007
Title:
Modelling
Description: The error message as stated below will occur for the following
situation:
1) Switch to TargetLink stand-alone mode
2) Start a simulation for a root model containing a referenced
model or open a
referenced model
Error message:
*** E00000: SETTING SIMULATION MODE SUPERFLUOUS:
*** No TargetLink subsystems in model '<referenced model
name>'!
Warning: Error evaluating 'PostLoadFcn' callback of
block_diagram '<referenced
model name>'. Index exceeds matrix dimensions.
Workaround: Switch to full-featured mode.
ID:
KPR.2008.07.29.008
Title:
Modelling
9 / 1260
ID:
KPR.2008.07.29.009
Title:
Description: TargetLink does not support Stateflow data with scope 'Data
Store Memory'.
Normally a regular error message should be thrown, but
currently the following
internal error appears if such a data is inside a TargetLink
subsystem:
Fatal #10007: Internal error. Error code: SF_LoadData 847.
Contact dSPACE's
technical support team.
Workaround: Delete the Stateflow data with scope 'Data Store Memory' or
give them a
different scope.
ID:
KPR.2008.07.29.010
Title:
Simulation
10 / 1260
ID:
KPR.2008.07.30.002
Title:
Simulation
ID:
KPR.2008.07.30.004
Title:
Simulation
11 / 1260
ID:
KPR.2008.07.30.005
Title:
Utility
12 / 1260
ID:
KPR.2008.07.30.006
Title:
ID:
KPR.2008.07.30.007
Title:
Utility
13 / 1260
ID:
KPR.2008.07.30.008
Title:
Simulation
Description: If a muxed signal should be logged and one of the mux inports
is unconnected or
driven by a Ground block TargetLink issues an error message
which is not
comprehensible:
*** E02291: SCALING DATA/SIGNAL SIZE MISMATCH:
*** A scaling data/signal size mismatch in block <block path>
has been
detected.
*** The block property <property> is a (<n>,1)-vector, but the
compiled
signal size is (<m>,1).
Workaround: Insert a non-virtual block (e.g. a Gain block) between the
muxed signal and the
block to be logged.
14 / 1260
ID:
KPR.2008.07.31.002
Title:
15 / 1260
ID:
KPR.2008.07.31.003
Title:
Modelling
ID:
KPR.2008.07.31.004
Title:
Utility
16 / 1260
ID:
KPR.2008.07.31.005
Title:
Utility
ID:
KPR.2008.08.01.001
Title:
Utility
17 / 1260
ID:
KPR.2008.08.01.002
Title:
Modelling
Description: The TargetLink Inport can inherit it's output properties from the
preceding
block's outport. It can be activated by a checkbox in the
dialog.
If the wrong width is defined at the block, before the checkbox
in the dialog is
set, or
if the block is copied and used in another context,
it results in a Simulink error 'Error in port widths or
dimensions'.
Workaround: Set the Simulink property 'Port dimension' to '-1' or specify the
TargetLink
width property correctly before the checkbox is activated.
ID:
KPR.2008.08.01.003
Title:
Utility
ID:
KPR.2008.08.01.004
Title:
18 / 1260
TargetLink 2.2 2.2.1 2.3 2.3.1 3.0 3.0.1 3.1 3.2 3.3 3.4 3.5
Class:
Incorrect code/compilable
Description: For specific parameter variables offset values not equal 0 are
not supported.
Therefore in the block dialog for such variables the offset
value cannot be
specified, the field with the offset value is greyed out. In the
context with
this kind of parameter variables the following problem has
been detected:
If the parameter variable is a vector (or a matrix) and in block
dialog for the
parameter variable a Data Dictionary Scaling object is
specified, which defines
an offset value not equal 0 for the elements of the vector after
the deletion of
the Data Dictionary Scaling object from the block dialog the
following problem
occurs ("Same scaling for all" must not be set for the
parameter):
TargetLink 2.x
In the block dialog for all vector elements of the parameter the
offset value 0
is shown, but in the generated code only the first vector
element is scaled with
the offset value 0. All other vector elements are scaled with
the offset value
as previous defined by the Data Dictionary Scaling object.
TargetLink 3.x
In the block dialog for all vector elements of the parameter the
offset values
as previous defined by the Data Dictionary Scaling object are
shown. In the
generated code the vector elements are scaled with this offset
values. In
TargetLink 3.0 this is not only true for vector and matrices, but
also for
scalar parameter variables.
This problem exits for the parameters of the following blocks:
- Rate Limiter: rising slewrate, falling slewrate
- Discrete Filter: numerator, denominator
- Discrete State Space: a-matrix, b-matrix, c-matrix, d-matrix
- Discrete Transfer Fcn: numerator, denominator
Workaround: After the deletion of the Data Dictionary Scaling object from
the block dialog
set the offset values to 0 for the parameter variable via the
TargetLink command
tl_set.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.1p5
19 / 1260
ID:
KPR.2008.08.01.005
Title:
20 / 1260
ID:
KPR.2008.08.05.002
Title:
Incorrect code/compilable
ID:
KPR.2008.08.05.003
Title:
Simulation
21 / 1260
22 / 1260
ID:
KPR.2008.08.05.004
Title:
Incorrect code/compilable
Description: A wrong range for the Abs block is calculated if an Abs block
has the following
properties:
- No output saturation for the Abs block is selected
-- AND -- the output type of the Abs block is a signed integer
-- AND -- the output type of the predecessor block of the Abs block is
signed integer
-- AND -- the scalings at the Abs block and at its predecessor block
are equal
-- AND -- the offsets of both scalings are zero.
If all these conditons hold, it may lead to incorrect code, if the
input range
of the Abs block (= output range of its predecessor block)
contains negative
values. Due to the wrong range, wrong casts might be
generated or code is
optimized although this is wrong.
For example, an Abs block with the above described
properties is followed by a
saturation block. Then the saturation code to the upper limit
might be removed
by optimization.
Workaround: Specify the output variable for the Abs block to be global or
static.
-- OR -Specify an unsigned data type for the output of the Abs block.
23 / 1260
ID:
KPR.2008.08.07.001
Title:
Description: Code generatoin fails with error #17299 if a user look-up table axis is
merged
with another parameter variable, for example a Gain block parameter,
although
both have identical values and the option "Adapt table values" is
deactivated
for the Look-Up Table block. A message like the following is issued:
Error #17299: speedmap/Look-Up Table: Name ambiguity of identifier
z_table. The
variable was first declared for 'speedmap/Gain'. The variables have fixed
names
but different initialization values.
Workaround: In the custom look-up table script do not use the given blockData.<..>.value
data but read the exact values directly from the block:
i_SetObjectProperties('s2g_glmap1h_s2pt',blockData,cgData.blockHandle);
...
function i_SetObjectProperties(lookupFunctionName,blockData,hBlock)
...
exactInputValue = evalin('base',tl_get(hBlock, 'input.value'));
...
'Value' ,exactInputValue ...
ID:
KPR.2008.08.07.002
Title:
User interface
24 / 1260
25 / 1260
Workaround: In TargetLink 2.x, the "arb" flag in the block data can be
corrected by entering
the arbitrary LSB value in the entry, pressing ENTER and then
pressing the block
dialog's "Apply" button.
In TargetLink 3.0, the following steps must be performed to
correct the
arbitrary flag:
- Remove the reference to the affected Data Dictionary
Scaling object (Variable,
Typedef with Constraints or Scaling) temporary
- Set the Arbitrary flag in the block dialog manually: The button
near 'LSB:'
must show 'arb'.
- Restore the references to the affacted Data Dictionary
objects (see above).
The same can be done via API commands (example for a
LSB defined by a Data
Dictionary Variable object):
>> myVar = tl_get(<block>, 'output.variable'); % save old
Variable reference
>> tl_set(<block>, 'output.variable', ''); % Remove reference to
Variable object
>> tl_set(<block>, 'output.arb', 1); % Set correct arbitray
flag manually
>> tl_set(<block>, 'output.variable', myVar); % Restore
reference to Variable
object
ID:
KPR.2008.08.07.003
Title:
Incorrect code/compilable
26 / 1260
ID:
KPR.2008.08.07.004
Title:
Utility
ID:
KPR.2008.08.07.005
Title:
28 / 1260
ID:
KPR.2008.08.08.001
Title:
Utility
Description: The code generation may fail with an error #08812 like the
following:
*** E08812: ERROR DURING AUTOSAR EXPORT:
*** The DD objects
'/Subsystems/<...>/Ports/OutputA/DataSenderComSpec'
and '/Subsystems/<...>/Ports/OutputsB/DataSenderComSpec'
have the same name,
but different values and will be generated only once.
Difference: Objects
/Subsystems/<...>/Ports/OutputsA/DataSenderComSpec and
/Subsystems/<...>/Ports/OutputsB/DataSenderComSpec
differ:
*** Property DataElementRef'A/DataElements/aa' versus
'B/DataElements/bb'.
Workaround: To fix the problem, define different INIT-VALUES for the
COMSPEC nodes of the
defined R/P-PORTs. This will fix the problem, but is not the
sense of an
INIT-VALUE.
ID:
KPR.2008.09.05.001
Title:
29 / 1260
ID:
KPR.2008.09.08.001
Title:
Simulation
30 / 1260
ID:
KPR.2008.09.08.002
Title:
31 / 1260
ID:
KPR.2008.09.09.001
Title:
Utility
Description: For every SHARED-CALPRM variable the TargetLink AUTOSAR import generates
a Data
Dictionary Variable object with the variable class AUTOSAR/SHARED_CALPRM.
The
Data Dictionary NameTemplate property will be set to an incorrect value. The
wrong value is "Rte_CData_$(Component)_$D" as described in the AUTOSAR
Modeling
Guide. The correct value is "Rte_SharedCal_$(Component)_$D". As a result the
TargetLink code generator throws a warning simimilar to the the following during
code generation:
Warning #02908: / ... /Variables/Rte_CData_Controller_SharedCal:
The calibratable parameter
'//DD0/Subsystems/controller/rte_controller/Variables/Rte_CData_Controller_Share
dCal'
has not been correctly defined.
For this parameter no AUTOSAR RTE API access function will be generated.
Workaround: To solve the problem set the NameTemplate property of all SHARED-CALPRM
variables to the right value Rte_SharedCal_$(Component)_$D.
32 / 1260
ID:
KPR.2008.09.09.002
Title:
Utility
33 / 1260
ID:
KPR.2008.09.09.003
Title:
34 / 1260
ID:
KPR.2008.09.09.004
Title:
Utility
35 / 1260
ID:
KPR.2008.09.09.005
Title:
API
Description: The value of the Stateflow data object property "size" can be
any expression
which returns a scalar or vector when it is evaluated. One
limitation of
TargetLink demands that the value can be evaluated directly,
e.g. the expression
does not make use of mask or workspace variables nor it
invokes any function.
Internally TargetLink applies STR2NUM to determine the
value of the expression.
If this limitation is not taken into account TargetLink overwrites
the value of
the property "size" with an empty string as soon as new block
data are stored at
the Stateflow object by means of the TargetLink API or the
Property Manager.
Another consequence of violating the limitation appears only
in a TargetLink 3.0
environment. An attempt to generate code aborts with
following error message:
Error #20963: <model>/Chart.<data object>:
The size/dimension of this Stateflow data object (vector with
size 3) does not
match the size/dimension detected by TargetLink (scalar).
Workaround: Use only numerals as value of property size.
36 / 1260
ID:
KPR.2008.09.09.006
Title:
API
37 / 1260
ID:
KPR.2008.09.09.007
Title:
API
Description: The Property Manager offers to change the value of the size
property of a
Stateflow variable but the new value is not accepted. The
error message reads as
follows:
"TargetLink API error: New value for property 'width' has
wrong size, must be
[]!"
It is a fault that the size property (Stateflow) is visible as width
property
(TargetLink) in the Property Manager, because the property
cannot be set and is
not a TargetLink-specific property. During code generation the
size is
determined straight from Stateflow after model initialization,
therefore it is
not needed to have a TargetLink-specific width property.
Furthermore the TargetLink API will provide the width property
which is a fault
too, because it is not needed (see above).
Workaround: The desired value can be set by means of the Stateflow dialog
which opens by
double clicking the object icon in the block explorer pane.
ID:
KPR.2008.09.09.008
Title:
Modelling
38 / 1260
ID:
KPR.2008.09.09.010
Title:
ID:
KPR.2008.09.09.012
Title:
39 / 1260
ID:
KPR.2008.09.11.001
Title:
ID:
KPR.2008.09.11.002
Title:
Description: Some blocks use helper functions within their code pattern
which can be shared
by several TargetLink subsystems. If such a block resides in a
subsystem which
is called by a Preprocessor IF block and in the TargetLink
Main Dialog option
"Share functions between Targetlink subsystems" is activated,
the resulting
preprocessof #if encapsulation of the helper functions's
definition may not be
valid for each TargetLink subsystem which shares the
function. This will lead to
non-compilable production code.
Blocks which can share helper functions are:
- Look-Up Table
- Look-Up Table (2D)
- PreLoop-Up Index Search
- Interpolation (n-D) using PreLook-Up, if "Apply interpolation"
is activated.
40 / 1260
41 / 1260
ID:
KPR.2008.09.16.001
Title:
Incorrect code/compilable
42 / 1260
ID:
KPR.2008.09.17.001
Title:
ID:
KPR.2008.09.23.001
Title:
Incorrect code/compilable
43 / 1260
ID:
KPR.2008.09.29.001
Title:
User interface
ID:
KPR.2008.09.29.002
Title:
44 / 1260
ID:
KPR.2008.09.29.003
Title:
Utility
45 / 1260
ID:
KPR.2008.10.01.001
Title:
Simulation
Description: For Custom Code blocks whose inputs are scaled with type =
Int32, lsb = 2^0,
offset = 0.0, input overflow detection produces negative
overflow messages
although the input signal is covered by the scaling range. The
message reads
Warning #02202: example/ ... /Subsystem/Custom Code
Block:
Negative overflow at input 1 of block
'example/Subsystem/Subsystem/Subsystem/Custom Code
Block'!
or similar.
The reason for this bug is that the lower limit is generated into
the S-function
code as a constant "-2147483648", for example
const real_T u_LowerLimit[] = {-2147483648};
Unfortunately, this constant is not evaluated as expected by
the MEX compiler.
MSVC compilers, for example, produce a warning C4146. The
unary minus sign is
not applied, and the floating point constant is set to
2147483648.
Workaround: 1. Ignore the overflow message.
2. Patch the custom code S-function code manually:
- open the block's dialog, switch to Code & Logging page,
- push edit S-function button, S-function source file xxx_flp.c
opens
- replace "-2147483648" with -2147483648.0"
- save file, have S-function rebuilt by pushing the Compile Sfunction button.
46 / 1260
ID:
KPR.2008.10.01.002
Title:
Incorrect code/compilable
47 / 1260
ID:
KPR.2008.10.01.003
Title:
ID:
KPR.2008.10.02.002
Title:
Simulation
48 / 1260
ID:
KPR.2008.10.02.003
Title:
49 / 1260
ID:
KPR.2008.10.07.001
Title:
ID:
KPR.2008.10.08.001
Title:
Modelling
50 / 1260
ID:
KPR.2008.10.10.001
Title:
Incorrect code/compilable
51 / 1260
ID:
KPR.2008.10.10.002
Title:
Modelling
52 / 1260
ID:
KPR.2008.10.11.001
Title:
Incorrect code/compilable
Description: States and whole paths of states can be used in many places
in the Stateflow
action language, for example to increment a data D located in
the state X:
X.D++;
TargetLink may identify the wrong objects if the name/path
contains states/boxes
or functions which names are not unique within the searched
chart.
Example:
Given is the following state hierarchy:
B <Box>
B2 <Box>
X <State>
X <State>
TargetLink may be identifying the B.B2.X and Stateflow takes
B.X as
destintation.
Workaround: Avoid ambiguous state/box and function names.
53 / 1260
ID:
KPR.2008.10.13.001
Title:
ID:
KPR.2008.10.13.002
Title:
Utility
54 / 1260
ID:
KPR.2008.10.13.003
Title:
Modelling
ID:
KPR.2008.10.16.002
Title:
Description: The precondition of this aborted code generation is, that one
procedure call is
in a control flow branch which is deleted during code
optimization. A control
flow branch will be deleted when the branch condition can be
evaluated as a
constant value so that it is allways true or false.
To test if this problem occurs in a model generate code with
optimization level
0 and inlining threshold 0. Look in the generated code if there
is a branch with
a procedure call and the branch condition can be evaluated to
a constant value.
Workaround: When a branch condition can be evaluated to a constant value
and the branch
condition is not true, the branch can be deleted in the model
and only the
resulting branch will be used (if or else for true or false).
55 / 1260
ID:
KPR.2008.10.16.003
Title:
Code file name is written in lower case in the TargetLink file header
comment
Description: The name of a file (code file name) generated by TargetLink is printed
in the
file header comment, e.g.
/*******************************************************************************
*******************\
***
*** Simulink model : WhileDoWhile
*** TargetLink subsystem : WhileDoWhile/Subsystem
*** Codefile : subsystem.c
***
*** Generated by TargetLink, the dSPACE production quality code
generator
*** Generation date: 2008-10-24 11:42:13
[...]
But the name printed in the file header comment is not correctly if the
name
contains upper cases, because the name in the file header comment
is written
only in lower cases.
Workaround: No workaround available.
56 / 1260
ID:
KPR.2008.10.21.001
Title:
User interface
ID:
KPR.2008.10.21.002
Title:
Modelling
ID:
KPR.2008.10.21.003
Title:
58 / 1260
ID:
KPR.2008.10.21.004
Title:
Utility
59 / 1260
ID:
KPR.2008.10.21.005
Title:
User interface
ID:
KPR.2008.10.21.006
Title:
Utility
60 / 1260
ID:
KPR.2008.10.21.007
Title:
Modelling
ID:
KPR.2008.10.21.009
Title:
User interface
Description: AUTOSAR Client Port blocks are derived from the Client Port
block in
TargetLink's AUTOSAR library tl_autosar_lib. The library link
of instances of
this block is broken, which allows to insert TargetLink blocks
and Stateflow
charts inside the Client Port. However, these blocks and
Stateflow objects are
not displayed in the Property Manager.
Workaround: Use the blocks' dialogs to view and modify properties.
61 / 1260
ID:
KPR.2008.10.21.010
Title:
Modelling
ID:
KPR.2008.10.21.011
Title:
Utility
62 / 1260
ID:
KPR.2008.10.23.001
Title:
ID:
KPR.2008.10.27.002
Title:
63 / 1260
ID:
KPR.2008.10.27.003
Title:
Utility
64 / 1260
ID:
KPR.2008.10.27.004
Title:
Simulation
ID:
KPR.2008.10.27.005
Title:
Incorrect code/compilable
65 / 1260
ID:
KPR.2008.11.06.001
Title:
ID:
KPR.2008.11.12.001
Title:
66 / 1260
ID:
KPR.2008.11.12.002
Title:
Utility
67 / 1260
ID:
KPR.2008.11.12.003
Title:
Modelling
68 / 1260
ID:
KPR.2008.11.12.004
Title:
Modelling
Description: The following conditions must be fulfilled to generate production code for a
referenced model:
1. The referenced model must reside within a TargetLink subsystem
2. The TargetLink subsystem must reside in a Simulinik model containing a
TargetLink Main Dialog, which is called root model in the description below.
The root model as described above can be created automatically for a specified
referenced model by using one of the following methods:
1. The Model Referencing Control Center (File distribution/Export for
integration)
2. The TargetLink API function tl_distribute_refmodel_files
3. The TargetLink API function tl_extract_subsystem
If one of these methods is used, TargetLink creates a new model with one
TargetLink subsystem containing the "ModelReference" block referencing the
required model.
However the names of the created TargetLink subsystem and the
"ModelReference"
blocks are identical. If in the next step a user disables the model reference
an tries to created the production code for the resulting incremental subsystem
an error message similar to this one appears:
*** E02067: TL SUBSYSTEM NAMES/IDS MUST BE UNIQUE:
*** The names of the systems that the production code
*** is to be generated for must be unique.
*** This condition does not apply for the following systems
*** configurated for the incremental code generation or for referenced
models:
***
r_FuelCalculation_Dev/ref_r_FuelCalculation/Subsystem/ref_r_FuelCalculation
(Name: ref_r_FuelCalculation)
***
r_FuelCalculation_Dev/ref_r_FuelCalculation/Subsystem/ref_r_FuelCalculation/ref_
r_FuelCalculation (Name: ref_r_FuelCalculation)
PRODUCTION CODE GENERATION FAILED
Workaround: If you have used Model Referencing Control Center or the TargetLink API function
tl_distribute_refmodel_files to created a root model for the specified
referenced model, make the names of the TargetLink subsystem und
"ModelReference" block residing inside this TargetLink subsystem unique.
If you have used the TargetLink API function tl_extract_subsystem, specify a
different name for the TargetLink subsystem. This can be done via the
tl_extract_subsystem parameter "DestBlock":
>> tl_extract_subsystem('DestBlock' <Destination subsystem path>);
69 / 1260
ID:
KPR.2008.11.13.001
Title:
Incorrect code/compilable
70 / 1260
ID:
KPR.2008.11.26.001
Title:
User interface
Description: The option "Scalar" in the dialog of the Gain block is always
deselected. A
click to select the option won't select the option.
If the Gain tab of the block dialog is visible and the property of
the option
"Scalar" is 0 (gain.scalar = 0) then the first click on the
checkbox sets the
property to 1 (gain.scalar = 1), but the option is still shown as
deselected. If
the property gain.scalar is set to 1, the option "Scalar
expansion" must be
deselected automatically, but this is not the case on the Gain
tab. Therefore
the option "Scalar expansion" seems to be selected, but the
option cannot be
changed anymore.
It is only a problem of the graphical user interface of the block
dialog. The
properties of the block, which can be accessed directly by the
API, can still be
used.
Workaround: To deselect the option "Scalar" use the API function
tl_set(<block>,
'gain.scalar', 0), where <block> is the handle of the Gain
block.
71 / 1260
ID:
KPR.2008.11.26.002
Title:
Utility
72 / 1260
ID:
KPR.2008.11.26.003
Title:
User interface
73 / 1260
ID:
KPR.2008.11.26.004
Title:
Modelling
ID:
KPR.2008.11.26.005
Title:
Incorrect code/compilable
74 / 1260
75 / 1260
ID:
KPR.2008.11.26.006
Title:
76 / 1260
ID:
KPR.2008.11.26.007
Title:
Simulation
Description: For a Data Store Read block which was copied from another
model, the scaling
ranges of the old model's Data Store Memory block are used
during a MIL
simulation instead of the new model's Data Store Memory
block. This leads to
wrong overflow warnings and wrong constraint lines in plots
for the Data Store
Read block.
Workaround: Modify at least one TargetLink property of the Data Store
Read block or the
corresponding Data Store Memory block (e.g. 'blockcomment')
after the Data Store
Read block has been copied to the new model and before a
MIL simulation is
started.
There are two methods:
1. Open the block dialog, change one property and apply the
change. Afterwards
set the old value and apply again. It is necessary to change a
value, because
otherwise the data will not be written to the block data.
2. Use the API, e.g. with the following command:
tl_set(h, 'blockcomment', tl_get(h, 'blockcomment')),
where h is the block path or handle of the Data Store Read
block or the Data
Store Memory block.
ID:
KPR.2008.11.26.008
Title:
77 / 1260
ID:
KPR.2008.11.26.009
Title:
ID:
KPR.2008.11.26.010
Title:
79 / 1260
80 / 1260
ID:
KPR.2008.11.26.011
Title:
Incorrect code/compilable
81 / 1260
ID:
KPR.2008.12.01.001
Title:
ID:
KPR.2008.12.04.001
Title:
82 / 1260
ID:
KPR.2008.12.05.001
Title:
83 / 1260
ID:
KPR.2008.12.10.001
Title:
Incorrect code/compilable
Description: For the Look-Up Table and the Look-Up Table (2D) block it is
possible to
deactivate the generation of a map structure. Therefore you
have to deselect the
option 'Generate map struct' in the block's dialog. If the option
is deselected
you will find a misuse of the address operator in the generated
code for the the
look-up table function call.
The wrong code looks like this example:
static const Int8 x_table[11] = { ... };
static const Int8 z_table[11] = { ... };
OutPort = (Int16) Tab1DnMS0I2T1563_a(11, &(x_table),
&(z_table), (Int8)
InPort);
An example for correct code looks like this:
static const Int8 x_table[11] = { ... };
static const Int8 z_table[11] = { ... };
OutPort = (Int16) Tab1DnMS0I2T1563_a(11, &(x_table[0]),
&(z_table[0]), (Int8)
InPort);
Trying to compile the wrong code leads to two different
behaviors depending on
the compiler. Some target compilers will abort the compilation
with an error;
others will compile the code and throw a warning.
For example the MSVC compiler throws a warning C4047 like
this:
Subsystem.c(197) : warning C4047: 'function' : 'const Int8 *'
differs in levels
of indirection from 'const Int8 (*)[11]'
Subsystem.c(198) : warning C4047: 'function' : 'const Int8 *'
differs in levels
of indirection from 'const Int8 (*)[11]'
Workaround: Select the option 'Generate map struct'.
The problem is fixed by using the following patch or later
patches:
TargetLink 2.3.1p2
84 / 1260
ID:
KPR.2008.12.10.002
Title:
Description: If a variable has a variable class with Scope = "local" and this
variable is
used outside the function it is defined in, then inlining of this
function (or a
function called by this function) may lead to overall function
local accesses.
If the Inlining threshold is set to zero an error like the following
is issued:
Error #17054
The variable 'V' is implemented with 'function local scope', but
requires
'module local scope'
Similarly, inlining may bring the contents of all functions with
accesses to a
variable with Scope = "global" and Storage = "static" to the
same file even if
initially they resided in different files.
Usually, this is harmless but it becomes a problem in the
following case:
A Stateflow local variable is (erroneously) defined on the level
of the
Stateflow chart itself, but it is only accessed inside a graphical
function of
this chart. This graphical function is then exported:
As a result, code generation succeeds, but the generated
code contains a
variable which is not declared.
Workaround: 1. If assigning a variable a variable class other than "default",
make sure that
Scope and Storage of the variable class are sufficient and, for
Stateflow
charts, that you defined the variable to belong to the right
function. If in
doubt, use a variable class with sufficient scope and set
Optimization property
at least to SCOPE_REDUCIBLE.
2. If you want to make sure that the "initially generated code"
is correct,
generate code once with option Inlining threshold = 0 and
Optimization level =
0.
3. In some cases, for TargetLink versions >= 2.3, setting
"DisableFunctionsAsAnalysisBoundaries" to OFF may yield to
the error as well.
ID:
KPR.2008.12.18.001
85 / 1260
Title:
Description: Using more than one LookUp-Table block with same settings
normally leads to one
look-up function, but using a LookupFunctionTemplate with a
user specified
look-up function name that contains a name macro like $N
leads to an error
message about not mergeable look-up functions.
Error #17299: <BlockPath>:
Name ambiguity of identifier <LookUpFunctionName>. The
function was first
declared for <BlockPath>. The function with name
<LookUpFunctionName> conflicts
with a function of the same name. Merging functions is not
permitted. Implement
as shared library instead.
There three different behaviors:
1. The LookupFunctionName property of the
LookupFunctionTemplate is set to a
pattern like 'Prefix$(FunctionName)Suffix', only
$(FunctionName) or a fixed name
code generation is possible and the Lookup function will be
reused.
2. The LookupFunctionName property of the
LookupFunctionTemplate is set to a
string containing $S, code generation is possible and the lookup function
wouldn't be reused. You can find one function for each block.
3. The LookupFunctionName property of the
LookupFunctionTemplate is set to
Prefix$NSuffix, or only $N$N or $(FunctionName)$N, code
generation isn't
possible and error 17299 occurs.
86 / 1260
Workaround: The code generation is possible and the two look-up functions
are correctly
merged if:
- No LookupFunctionTemplate is active
-- OR -- the LookupFunctionName property of the used
LookupFunctionTemplate is unset
(<n.a.>)
-- OR -- the LookupFunctionName property of the used
LookupFunctionTemplate is set to a
fixed name
-- OR -- the LookupFunctionName property of the used
LookupFunctionTemplate is set to
'Prefix$(FunctionName)Suffix'
-- OR -- the LookupFunctionName property of the used
LookupFunctionTemplate is set to
$(FunctionName).
87 / 1260
ID:
KPR.2008.12.18.002
Title:
User interface
88 / 1260
ID:
KPR.2008.12.18.003
Title:
Incorrect code for LookUp Table and LookUp Table (2D) block
with binary search and look-up method 'Interpolation ?
Extrapolation'
Incorrect code/compilable
89 / 1260
ID:
KPR.2008.12.18.004
Title:
Utility
90 / 1260
ID:
KPR.2008.12.18.005
Title:
User interface
91 / 1260
ID:
KPR.2008.12.18.007
Title:
92 / 1260
ID:
KPR.2008.12.18.008
Title:
Incorrect code/compilable
93 / 1260
ID:
KPR.2009.01.05.001
Title:
User interface
94 / 1260
ID:
KPR.2009.01.05.002
Title:
Utility
95 / 1260
ID:
KPR.2009.01.05.003
Title:
Modelling
96 / 1260
ID:
KPR.2009.01.05.004
Title:
Incorrect code/compilable
97 / 1260
ID:
KPR.2009.01.06.001
Title:
Incorrect code/compilable
ID:
KPR.2009.01.06.002
Title:
Incorrect code/compilable
98 / 1260
ID:
KPR.2009.01.06.004
Title:
Incorrect code/compilable
Description: If, for example, the constant value of a Constant block is set to
NaN either
wrong code or no code at all will be generated.
TargetLink shows the following erroneous behaviour if a
constant block has a
default variable class and its initial value is NaN:
1. A Constant block drives a block which has a floating-point
type for the
output and/or at least one involved parameters:
TargetLink 2.0 up to TargetLink 2.1.6 will emit the error
message #20003 stating
that the variable specification is invalid.
Since TargetLink 2.2 an assignment like Out = -1.#IND is
generated which cannot
be compiled.
2. A Constant block drives a block which has only fixed-point
(integer) types
for the output and the parameters:
TargetLink 2.0 up to TargetLink 2.1.6 will emit the error
message #20003 stating
that the variable specification is invalid.
TargetLink 2.2, 2.2.1 and 2.3.1 willl generate an assignment
like Out = 0 /*
-1.#IND */ which cannot be compiled.
TargetLink 2.3 and 3.0 will emit an internal error #10007.
If the constant value has a none default class, TargetLink will
omit the
initialization of the resulting variable.
Workaround: No workaround available.
99 / 1260
ID:
KPR.2009.01.06.005
Title:
Incorrect code/compilable
100 / 1260
ID:
KPR.2009.01.06.006
Title:
Utility
ID:
KPR.2009.01.06.007
Title:
User interface
101 / 1260
ID:
KPR.2009.01.06.008
Title:
Utility
102 / 1260
ID:
KPR.2009.01.07.001
Title:
Incorrect code/compilable
ID:
KPR.2009.01.08.001
Title:
103 / 1260
ID:
KPR.2009.01.12.001
Title:
104 / 1260
ID:
KPR.2009.01.14.001
Title:
Modelling
105 / 1260
ID:
KPR.2009.01.19.001
Title:
User interface
106 / 1260
ID:
KPR.2009.01.19.002
Title:
107 / 1260
ID:
KPR.2009.01.19.003
Title:
Simulation
108 / 1260
ID:
KPR.2009.01.21.001
Title:
109 / 1260
ID:
KPR.2009.01.26.001
Title:
Incorrect code/compilable
ID:
KPR.2009.02.09.001
Title:
110 / 1260
ID:
KPR.2009.02.09.002
Title:
User interface
111 / 1260
ID:
KPR.2009.02.09.003
Title:
Utility
Description: When calling the A2L export via the dsdd_export_a2l_file API
function, it is
required to specify the platform that the A2L is to be
generated for.
This is possible either via the options "Board"/"Compiler" or
via the options
"TargetConfig"/"TargetInfo". However, if the second pair of
options has been
used and additional the MAP file has been specified, needed
to obtain the
addresses of the variables described in the generated A2L
file, the warning
#06703 is issued:
*** W06703: NO TARGET COMPILER SPECIFIED:
*** The target compiler has not be specified,
*** thus variable addresses cannot be evaluated.
*** There will be no address information in the A2L file.
The generated A2L file does not contain any address
information in this case.
This is not correct. To obtain the address information from the
MAP, the
compiler must be known, but it is already specified in the
target_info.m file.
Workaround: Call the dsdd_export_a2l_file with the additional option
"Compiler" with value
equal to targetInfo.cc, where targetInfo is the structure
specified in the given
target_info.m file
112 / 1260
ID:
KPR.2009.02.10.001
Title:
ID:
KPR.2009.02.11.003
Title:
ID:
KPR.2009.02.18.002
113 / 1260
Title:
Incorrect code/compilable
else {
OutPort[1] = In3[1];
}
i.e. SwitchPred1[1] is always wrongly logged. As Cond2[] is a
vector, there is
no right location for the Log Macro.
For TargetLink >= 2.3, a loop can be generated, the resulting
optimized code
then is
if (Cond2[Aux_S32] != 0) {
SwitchPred1[Aux_S32] = ...;
LOG_VEC(a, _SwitchPred1, 2 /* 2. */, SwitchPred1);
OutPort[Aux_S32] = SwitchPred1[Aux_S32];
}
else {
OutPort[Aux_S32] = In3[Aux_S32];
}
This leads to (LoopWidth-1) uninitialized writes but one full
write of the
vector; this can lead to problematic intermediate values and is
definitely
inefficient. Without single element logging, there is no good
location for the
log macro, either.
Similar situations may be provoked with code stemming from
Stateflow charts.
Workaround: Set the Code Generator option "DoNotMoveIfLogged"; it is
intended for correct
logging of code that otherwise may be moved into
conditionally executed control
flow branches.
ID:
KPR.2009.02.18.003
Title:
115 / 1260
116 / 1260
ID:
KPR.2009.02.19.001
Title:
Utility
ID:
KPR.2009.02.20.002
Title:
Incorrect code/compilable
117 / 1260
ID:
KPR.2009.02.22.001
Title:
Incorrect code/compilable
118 / 1260
ID:
KPR.2009.02.25.001
Title:
AUTOSAR 2.0 Export for PRIMITIVE-TYPES-WITHSEMANTICS creates identifier which is too long
Utility
119 / 1260
ID:
KPR.2009.02.27.001
Title:
Simulation
ID:
KPR.2009.03.02.001
Title:
Description: Code generation may abort with a fatal error message similiar
to
Fatal #17107:
An error occurred in processing XSL: Problem writing file
xyz.h.Unable to save
character to 'ISO8859-1' encoding.
The reason is a character which cannot be encoded in the
choosen encoding
(default is 'ISO8859-1).
Workaround: Change the CharacterSet property of /Config/General from
"LocalDefault" to
"UTF-8".
120 / 1260
ID:
KPR.2009.03.02.003
Title:
Modelling
121 / 1260
ID:
KPR.2009.03.02.004
Title:
Utility
122 / 1260
ID:
KPR.2009.03.02.005
Title:
Utility
123 / 1260
ID:
KPR.2009.03.02.006
Title:
ID:
KPR.2009.03.02.007
Title:
Modelling
124 / 1260
ID:
KPR.2009.03.02.008
Title:
Incorrect code/compilable
ID:
KPR.2009.03.03.001
Title:
Error message 17277 when using a bit field and global logging
option
Description: The usage of a bit field variable in a model and the global
logging option 'log
signal histories' or 'log min/max-values' is not possible.
TargetLink stops code
generation with error #17277. The variable name mentioned in
the error message
is wrong.
Workaround: Avoid using bit field variables when using global logging. You
may use the data
type 'Boolean' and variable class 'default' at the affected
blocks and activate
the option 'Use global bitfields for Booleans' in the TargetLink
Main Dialog.
125 / 1260
ID:
KPR.2009.03.23.001
Title:
Utility
ID:
KPR.2009.03.24.001
Title:
126 / 1260
ID:
KPR.2009.03.25.001
Title:
Incorrect code/compilable
Description: In Stateflow, hexadecimal values are of the form 0x1, 0x2, ...,
0xA, 0xB etc.
If those hexadecimal values are used as initial values for
Stateflow data the
data will be generated with initial value 0 by TargetLink.
In Stateflow non MATLAB conform expressions can be used
as Stateflow initial
value. For instance a hexadecimal value of the form 0x1, 0x2,
..., 0xA, 0xB etc.
or a vector without ?[ ]? like "4 6 9".
If such an expression is used as initial value for Stateflow data
the data will
be generated with initial value 0 by the Code Generator.
Workaround: Make the initial value a MATLAB conform expression, for
example by using a
decimal value instead of hexadecimal or encapsulate vectors
with brackets "[]".
127 / 1260
ID:
KPR.2009.03.25.002
Title:
Incorrect code/compilable
ID:
KPR.2009.03.25.003
Title:
Incorrect code/compilable
128 / 1260
129 / 1260
ID:
KPR.2009.03.25.004
Title:
130 / 1260
131 / 1260
ID:
KPR.2009.03.26.001
Title:
132 / 1260
ID:
KPR.2009.03.27.001
Title:
Incorrect code/compilable
Description: If a block has the "Inherit properties" option set the Code
Generator inherits
(amongst others properties) the Min and Max values from the
preceding blocks.
If a Switch block, Multiport Switch block, MinMax block or
Merge block has the
"Inherit properties" option set and some of its inputs are driven
by signals
with Min and/or Max value and some by signals without Min
and/or Max values, the
Code Generator computes wrong resulting Min and Max
values. Only the given Min
and Max values are combined and the signals without Min and
Max values are
ignored. This leads to too optimistic Min and Max values and
may result in
incorrect code.
Workaround: Deselect the option "Inherit properties" at Switch block,
Multiport Switch
block, MinMax block and Merge block if only few incoming
signals have Min and/or
Max values.
133 / 1260
ID:
KPR.2009.03.30.001
Title:
Description: Code generation may abort with an internal error message like
Fatal #10007:
Internal error. Error code:
E:\Sandboxes\TL221_M11\Core\XcgIvToCv\Sources\XcgIvToCv\BDiagramToOrderedSequenc
e\RequiredInputCalculation\TlCRequiredInput.cpp_134. Contact dSPACE's technical
support team.
(the message text may vary according to the TargetLink version)
This may happen if following conditions hold:
- There is an iterated subsystem, i.e. an atomic subsystem which contains a For
Iterator block or While Iterator block.
- In the iterator block dialog the option "Show iteration variable" or "Show
iteration number" is set, so the iterator block has an output connector.
- The output of the iterator block is connected to the n-th input of another
block A.
- In the parent subsystem (disregarding virtual subsystems), there is a block B
with the same name as A.
- The number of block B's inputs is less than n.
Minimal sketch:
+-------------------------------+
| +---+ | +----+
| ...-------->| | | | |
| +-----+ | A | | ...--->| B |
| | for |>----------->| | | | |
| +-----+ +---+ | +----+
| MyBlock | MyBlock
+-------------------------------+
For Iterator Subsystem
These conditions are necessary, but not sufficient. The error additionally
depends on internal details.
Workaround: Make sure that for each block that is connected to the output of a For Iterator
or While Iterator block, there is no block with the same name in the
(non-virtual) parent subsystem.
ID:
KPR.2009.04.08.001
Title:
135 / 1260
ID:
KPR.2009.04.09.001
Title:
ID:
KPR.2009.04.16.001
Title:
Utility
136 / 1260
ID:
KPR.2009.04.28.001
Title:
137 / 1260
ID:
KPR.2009.04.29.001
Title:
Description: The name macro $L in the name of the output variable of the
Outport block or the
name of an input variable of a Stateflow Chart or Custom
Code block is not
correctly evaluated if
- the block input is connected to the output of the Selector
block
-- AND -- the Selector block selects a signal for this port which has a
label set.
Instead to be replaced by the label of the signal selected by
the Selector block
it is replaced by the block name of the Outport block,
Stateflow Chart or Custom
Code block.
Workaround: Place a virtual subsystem with a direct inport outport
connection between the
output of the Selector block and the input of the Outport block,
Stateflow Chart
or Custom Code block.
ID:
KPR.2009.04.29.002
Title:
Incorrect code/compilable
ID:
KPR.2009.05.07.001
Title:
Incorrect code/compilable
139 / 1260
ID:
KPR.2009.05.13.001
Title:
Simulation
ID:
KPR.2009.05.18.001
Title:
141 / 1260
ID:
KPR.2009.05.19.001
Title:
Incorrect code/compilable
142 / 1260
ID:
KPR.2009.05.26.001
Title:
Utility
ID:
KPR.2009.05.29.001
Title:
143 / 1260
ID:
KPR.2009.06.15.001
Title:
Description: If a variable class with Macro = "on" is used for a datavarianted variable,
code generation aborts with a fatal error #10007.
Example:
Fatal #10007: Internal error. Error code: TL_SymbolServer
283. Contact dSPACE's
technical support team.
Workaround: Do not use a variable class with Macro = "on" for datavarianted variables.
ID:
KPR.2009.06.15.002
Title:
Incorrect code/compilable
144 / 1260
ID:
KPR.2009.06.15.003
Title:
146 / 1260
ID:
KPR.2009.06.15.004
Title:
Simulation
ID:
KPR.2009.06.15.005
Title:
Simulation
ID:
KPR.2009.06.15.006
Title:
148 / 1260
ID:
KPR.2009.06.17.001
Title:
Incorrect code/compilable
ID:
KPR.2009.06.17.002
Title:
Incorrect code/compilable
149 / 1260
150 / 1260
ID:
KPR.2009.06.17.003
Title:
151 / 1260
ID:
KPR.2009.06.18.001
Title:
Incorrect code/compilable
152 / 1260
ID:
KPR.2009.06.18.003
Title:
ID:
KPR.2009.06.18.004
Title:
Incorrect code/compilable
153 / 1260
154 / 1260
ID:
KPR.2009.06.18.005
Title:
Modelling
Description: Model Preparation fails when the following conditions are met:
- referenced models are also prepared (PrepareRefMdls option
is set to "on")
- models are saved after preparation (Save option is set to "on")
- a model is referenced by more than one model block in the
system that should
be prepared
- the $ macro is used to specify a new name for the saved
model (for example,
the prepSystem option is set to "$_tl" (which is default))
In this case, Model Preparation aborts with an error similar to
Enhancing Ref2_tl/Out1 done!??? Index exceeds matrix
dimensions.
Error in ==>
D:\tl_30_install\matlab\tl\tools\tl_prepare_system.p>FcnPrepare
at
683
and preparation remains incomplete.
Workaround: 1. Do not use the save option. Save manually after preparation
using Simulink's
Save as menu.
2. Prepare referenced models individually as opposed to
prepare them with the
referencing model.
ID:
KPR.2009.06.18.007
Title:
Incorrect code/compilable
155 / 1260
Description: Complex flow chart graphs are broken into node functions
during code generation.
Local variables that are used in more than one function are
passed by reference.
The mechanism to add the necessary parameters to the
function definitions and
arguments to the function calls, however, works only for
variables defined in
the Stateflow model explorer. It does not work for auxiliary
variables which are
implicitly created by the Code Generator.
If an auxiliary variable is used by more than one function,
each function will
contain its own local version of the variable. The value will not
be passed into
or out of other functions.
Example:
A common situation for the creation of auxiliary variables is a
function call in
a transition condition. Assume that for the junction marked (*)
a node function
is created.
(*) [getValue() < 0]
---->O-------------------->O--->
|
V
O
The TargetLink code generator creates an auxiliary variable to
capture the
return value of the getValue function. The generated code will
look like this:
Int16 AUX = getValue();
Node_Fcn();
...
void Node_Fcn() {
Int16 AUX;
if (AUX < 0) {
...
}
}
Note the obvious problems with this code:
1. The return value of getValue() is not used in the condition.
2. The variable AUX is not initialized before use in Node_Fcn,
so the behavior
is unpredictable.
156 / 1260
Workaround: Manually lift the function call out of the condition. The example
can be
remodeled as
{value=getValue();} (*) [value < 0]
--------------------->O-------------------->O--->
|
V
O
The generated code will then look like this:
value = getValue;
Node_Fcn(&value);
...
void Node_Fcn(Int16 *value)
{
if (*value < 0) {
...
}
}
Otherwise avoid the creation of node functions, if possible.
Flow charts should
be built according to structured programming rules, i.e.
constructs should
usually have a single entry and a single exit. Refer to the
Advanced Practices
Guide > Working with Stateflow > Flowchart Style Guide for
recommended patterns.
157 / 1260
ID:
KPR.2009.06.18.008
Title:
User interface
158 / 1260
ID:
KPR.2009.06.18.009
Title:
User interface
159 / 1260
ID:
KPR.2009.06.18.010
Title:
Simulation
Description: A download of a target application for PIL simulation may fail with
following
message:
E02240: LOADING APPLICATION FAILED.
This is likely if some functions from the GCC cross-compiler
library, like
__divdi3 (divide two signed quads), are used in Custom Code.
Workaround: Locate explicitly the compiler error handling section .eh_frame in
the
corresponding Linkcmd.lk file, e.g.
%DSPACE_ROOT%\Matlab\Tl\SimFiles\MPC5554DEMO\GNU34
ID:
KPR.2009.06.18.011
Title:
160 / 1260
ID:
KPR.2009.06.18.012
Title:
Incorrect code/compilable
161 / 1260
ID:
KPR.2009.06.18.013
Title:
Incorrect code/compilable
162 / 1260
ID:
KPR.2009.06.18.014
Title:
163 / 1260
ID:
KPR.2009.06.19.001
Title:
ID:
KPR.2009.06.19.002
Title:
Utility
164 / 1260
ID:
KPR.2009.06.19.003
Title:
Incorrect code/compilable
ID:
KPR.2009.06.19.004
Title:
165 / 1260
ID:
KPR.2009.06.19.005
Title:
Utility
166 / 1260
ID:
KPR.2009.06.19.006
Title:
167 / 1260
ID:
KPR.2009.06.22.001
Title:
Incorrect code/compilable
168 / 1260
ID:
KPR.2009.06.22.002
Title:
User interface
ID:
KPR.2009.06.22.003
Title:
Incorrect code/compilable
169 / 1260
ID:
KPR.2009.06.22.004
Title:
Code generation aborts for custom look-up function if one pointer type has a type prefix
and one not but the base type is of same type
Description: Error for more than one Look-Up Table block and/or Stateflow customer specific
function where one is using a pointer type with type prefix and another one is
using a pointer type without a type prefix. This can occur for different custom
look-up functions or for one custom look-up function that is used for more than
one Look-Up Table block and/or Stateflow customer specific functions.
An error similar to the following will be thrown:
Error #30052: User script object UInt16_cPtr of block Interpolate_speed_map,
//DD0/Subsystems/CGTmpData/tlscript_Interpolate_speed_map1/Typedefs/UInt16_cPtr
Two different types with the same name have been specified in custom function
scripts. Make sure that the types match. This message can also come up if a type
has been defined in different template code sections and if these sections
include different files in the first include statement.
Workaround: If you have to use pointer types with the same base type and therefore one with
a type prefix and one without a type prefix, create an additional typedef in the
Data Dictionary's pool area and set the CreateTypedef property to off and the
BaseType property to the base type you want to use.
Now you have to use this new typedef for the custom look-up function at all
places where the pointer with the type prefix is used.
170 / 1260
ID:
KPR.2009.06.22.005
Title:
Utility
171 / 1260
ID:
KPR.2009.06.22.006
Title:
Utility
Description: The generation of model-linked code view may fail when user
or compiler specific
address qualifiers like __rptr, __dptr, etc., specified via
TargetConfig.xml,
are used. In this case warnings like following may appear:
HTML Generator: Parsing Error (1104) while parsing the file:
Subsystem.c.
Syntax error at '__rptr' in line 176.
Please contact dSPACE technical support.
HTML Generator: File .\CodeViewFiles\Subsystem.c.js could
not be written
completely.
*** W04301: CODE VIEW FILE CANNOT BE GENERATED:
*** The HTML code view file for the production code file
*** 'Subsystem.c'
*** could not be generated completely.
Workaround: Do not use such address qualifiers, otherwise no workaround
available.
ID:
KPR.2009.06.22.007
Title:
User interface
Description: A block variable's scaling that has been specified by the user
inside the block
settings and that has the properties LSB = 1 and Offset = 0,
but a non-empty
Unit is qualified as VOID_SCALING inside the Data
Dictionary's Subsystems area.
As a consequence the user specified information about its
Unit is lost.
Workaround: Specify a Data Dictionary Scaling object and reference this
object inside the
block.
The problem is fixed by using the following patch or later
patches:
TargetLink 2.3.1p2
172 / 1260
ID:
KPR.2009.06.24.002
Title:
Description: In the access function name template used for calibratable variables in
an
AUTOSAR model, the FunctionName is set to
"Rte_CalPrm_$(Component)_$v". This is
a wrong spelling, because it has to be "Rte_Calprm_$(Component)_$v"
with Calprm
having a lower-case p. The wrong spelling leads to wrong names of RTE
access
functions.
Workaround: As a workaround, you can set the FunctionName of the relevant template
("/Pool/Templates/AccessFunctions/AUTOSAR/CALPRM/Settings/Read")
to
"Rte_Calprm_$(Component)_$v". However, since TargetLink's
AUTOSAR postprocessing
searches for elements case-sensitively, now the RTE access function is
no longer
found. Please contact the dSPACE TargetLink support for a solution.
ID:
KPR.2009.06.24.003
Title:
Incorrect code/compilable
of the relational
range for case A.
A similar notation will be used for case B (Range(B, left),
Range(B, right)) and
case C (Range(C, left), Range(C, right)).
Type(A) then is the smallest type needed to represent
Range(A, left) and
Range(A, right).
TargetLink might generate incorrect code, if all following
conditions are met:
Condition 1:
- The relational operation is >= or < and LSB(x1) <= LSB(X2)
-- OR -- The relational operation is <= or > and LSB(x1) > LSB(X2)
Condition 2:
- Width(Type(A)) == Width(Type(B))
-- AND -- Type(A) is signed
Condition 3:
- Width(Type(C)) > Width(Type(B))
-- OR -- Width(Type(C)) == Width(Type(B)) and Signedness(Type(C))
!=
Signedness(Type(B))
Example:
x1: UInt16; Min: 4; Max: 20; LSB: 0.001; Offset: 4
x2: UInt8; Min: 5; Max: 17.75; LSB: 0.05; Offset: 5
x1 >= x2 will be implemented as
((UInt16) (a + 64536)) >= (((UInt16) b) * 50)
which is the same as
((UInt16) (a - 1000)) >= (((UInt16) b) * 50).
Casting the result of the subtraction to unsigned in this case is
incorrect.
Workaround: Do not use Offsets.
174 / 1260
ID:
KPR.2009.07.01.001
Title:
Simulation
Description: When a model contains root step funtions other than the
function of the
TargetLink subsystem itself and the function of the TargetLink
subsubsystem is
eleminated due to optimization and a restart function is
generated for the
remaining root step function(s), this restart function may
remain uncalled
during simulation. This may lead to simulation differences or a
runtime
exception during simulation (e.g. in case of Data Paging due
to an uninitialized
page pointer).
Workaround: Insert a function block on root level of the TargetLink
subsystem, to avoid
elemination of the root function.
ID:
KPR.2009.07.08.001
Title:
User interface
ID:
KPR.2009.07.08.003
Title:
177 / 1260
Workaround: Identification: If the error F10020 is thrown and does not occur
for option
OptimizationLevel is 0, then give a non-ERASABLE variable
class to all candidate
blocks, e.g. using the property manager. Candidates are
especially Switch,
Multiport Switch, and Merge Blocks. If the error still does not
occur, identify
the block leading to the problem.
Workarounds:
1. Assign a variable class without set ERASABLE
Optimization property to the
block variable
-- OR -2. If the "Inherit signal properties" block property is used, use
bus signals
where applicable to partition the signal. This also may lead to
more efficient
code than either 1) or a fix for this problem can create.
The problem is fixed by using the following patch or later
patches:
TargetLink 2.3.1p2
178 / 1260
ID:
KPR.2009.07.08.004
Title:
Utility
179 / 1260
ID:
KPR.2009.07.08.005
Title:
Utility
180 / 1260
ID:
KPR.2009.07.08.006
Title:
Modelling
181 / 1260
ID:
KPR.2009.07.08.007
Title:
182 / 1260
ID:
KPR.2009.07.09.001
Title:
Modelling
183 / 1260
ID:
KPR.2009.07.09.002
Title:
Incorrect code/compilable
184 / 1260
ID:
KPR.2009.07.13.001
Title:
User interface
Description: The "Goto target" context menu item in the Data Dictionary
Manager's Property
Value List allows to find the object that is specified with a
reference
property. The DDPath property of DDIncludeFile objects is a
reference property
that specifies points of inclusion (= objects in which included
Data Dictionary
files should be loaded). However, selecting the "Go to target"
menu item for
this property results in an error message similar to
DD Manager: Unexpected type of referred obect
The DD Manager action failed. The message was: Object
"my_DDIncludeFile":
Reference property "DDPath" must point to a object, however,
it points to a
VariableGroup object.
even if the property actually points to an existing object.
Workaround: Ignore the message. The DDPath property always contains a
complete DD path,
which allows to find the target object by browsing the Data
Dictionary object
tree.
185 / 1260
ID:
KPR.2009.07.13.002
Title:
API
186 / 1260
ID:
KPR.2009.07.30.001
Title:
ID:
KPR.2009.07.30.002
Title:
Incorrect code/compilable
Description: The replacement for the name macros $T, $(Type) and
$(Basetype) is wrong if the
block for which a variable is created has option "Inherit
properties" set.
Workaround: Do not use these name macros at blocks with option "Inherit
properties" set.
187 / 1260
ID:
KPR.2009.07.30.003
Title:
Description: For a lookup table a map structure can be created. If this map
structure
contains a variable which shall be realized as an AUTOSAR
calibratable parameter
(variable) where an access function is needed (RTE_CDATA
or RTE_Calprm) an
access violation occurs during code generation:
Fatal #99999: An exception occurred during code generation.
Contact dSPACE
technical support.
Workaround: Do not use the map structure in Lookup-Table blocks if you
want to calibrate
axes in AUTOSAR models or assure that the map structure
gets at function local
scope (for example with setting the optimization level to 2 and
giving the map
structure a variable class with optimization flag
"SCOPE_REDUCIBLE").
188 / 1260
ID:
KPR.2009.07.30.004
Title:
Incorrect code/compilable
Description: The parameter of all generated functions are sorted before the
code is written
to a file. This is made to make the code generation stable and
deterministic.
There exist rules for a default order. Furthermore a user can
define explicit an
order which can be specified that at function blocks, Stateflow
charts and
Stateflow graphical functions.
For inputs/outputs of subsystems, charts and graphical
functions the default
order criterium is the port number of their input/output. This
default sort
order for inputs and outputs of graphical functions is unstable
(but
deterministic) and may lead so to an unexpected order of
those parameters.
Since the argument order at all places which call the graphical
function is also
changed, this mostly critical for external functions because the
caller may call
the external graphical function in an different order than it is in
the user
code.
Workaround: Specify the argument order by hand through the
functionarglist property of the
function:
e.g. for graphical functions: $TL$ functionarglist=a,b,c,d; $TL$
This can be set in the Property Manager by using the property
"Function argument
list".
189 / 1260
ID:
KPR.2009.07.30.005
Title:
Incorrect code/compilable
190 / 1260
ID:
KPR.2009.07.30.006
Title:
Incorrect code/compilable
191 / 1260
ID:
KPR.2009.07.30.007
Title:
Code generation aborts or yields to incompilable code when using an extern C function
in a reused Stateflow chart
Description: When calling an extern C function from a Stateflow chart that lies inside a
reused system or is itself reused one of the following effects may occur:
1. The Code Generator aborts with a fatal internal error like the following:
"Fatal #10007: Internal error. Error code:
E:\Sandboxes\301dev02\Core\XcgUtils\Sources\XcgUtils\Trace\TlCTraceFallThrough.c
pp_ 271"
2. The code generation completes successfully, but the call of the extern
function has an additional parameter "pISV" for the instance-specific struct.
The code is thus rejected by the compiler.
Workaround: No workaround available.
ID:
KPR.2009.07.30.008
Title:
Utility
192 / 1260
ID:
KPR.2009.07.30.010
Title:
Description: Local variables which are not at the top level of a function
body may be
superfluously encapsulated with preprocessor control flow
although the same
encapsulation is already there higher in hierarchy, for
example:
Void func()
{
...
#ifdef COMPILE_SWITCH
...
{
...
#ifdef COMPILE_SWITCH /* not wrong, but superfluous */
Int16 MyLocalVar;
#endif
...
}
...
}
Workaround: No workaround available.
193 / 1260
ID:
KPR.2009.07.30.011
Title:
Incorrect code/compilable
Description: If all of the following conditions are fulfilled the generated code
may be
wrong:
- A macro is used for a block outport which drives a
preprocessor control flow
generating block
-- AND -- the variable class properties of the macro are "Storage" =
"Extern" and/or
"Alias" = "on"
-- AND -- the macro has no module specified (variable/variable class
attribute)
-- AND -- the encapsulation of the function generated for at least one
of the
preprocessor control flow called subsystems requires complex
logic and is
therefore implemented by using an auxiliary macro (defined in
tl_aux_defines.h).
The mistake is that the macro is used in tl_aux_defines.h
although the
definition header is not known and can therefore not be
included in the file
tl_aux_defines.h.
Explanation:
'preprocessor control flow generating block' means:
- PreprocessorIf block
-- OR -- If block which is driven by a macro which has set variable
class property
"UsePreprocessorIf" = "on"
-- OR -- Enabled subsystem whose Enable port is driven by a macro
which has set
variable class property "UsePreprocessorIf" = "on".
Preprocessor control flow can be generated using Stateflow
chart as well in
terms of using a preprocessor macro in a condition. If auxiliary
macros are
necessary here and one of the macros is specified as
decribed above the problem
can occur as well.
Workaround: Specify a module for macros which are used in preprocessor
control flow
conditions.
194 / 1260
ID:
KPR.2009.07.30.012
Title:
Description: With the following modeling the code generator stops with a
crash:
There are 2 ... n external or incremental subsystems which
are called via
preprocessor control flow and which have the same module
specified.
"external subsystem" means:
The subsystem has specified a function class which has set
Storage to "extern".
"incremental subsystem" means:
The subsystem is configured for incremental code generation.
Workaround: Specify separate modules for external or incremental
subsystems which are called
via preprocessor control flow.
ID:
KPR.2009.07.30.013
Title:
API
Description: The API function tl_find can be used to search for TargetLink blocks with
certain property values. If this function is applied to a referenced model it
aborts with following error message:
??? Block does not include any block variable
Error in ==> tl_get>i_TLGet at 165
data =
tl_sync_dd_blockdata(tl_handle_main_data('get',h),'BlockType',blocktype);
Error in ==> tl_get at 130
[PropertyValue{i},errorflag(i),msg{i}] = ...
Error in ==> tl_find at 113
[propval,errFlag] = tl_get(tlblocks(k),properties{i});
Workaround: No workaround available.
195 / 1260
ID:
KPR.2009.08.04.001
Title:
Utility
ID:
KPR.2009.08.04.002
Title:
Simulation
196 / 1260
ID:
KPR.2009.08.04.003
Title:
User interface
ID:
KPR.2009.08.04.004
Title:
Utility
197 / 1260
ID:
KPR.2009.08.04.006
Title:
Utility
198 / 1260
ID:
KPR.2009.08.04.007
Title:
Code generation may abort with fatal error #10007 for customspecific C functions called with an operation as actual
paramter
ID:
KPR.2009.08.04.008
Title:
199 / 1260
ID:
KPR.2009.08.04.009
Title:
Incorrect code/compilable
200 / 1260
ID:
KPR.2009.08.07.001
Title:
ID:
KPR.2009.08.10.001
Title:
Incorrect code/compilable
201 / 1260
202 / 1260
Workaround: Force that a variable is created for the constant on the right
hand side of a
saturated assignment by specifing a variable class !=
"default". For example use
the class "OPT_LOCAL" to obtain correct code, allow
optimization to eliminate
the variable and using the correct constant value.
ID:
KPR.2009.08.10.002
Title:
203 / 1260
ID:
KPR.2009.08.10.003
Title:
Utility
ID:
KPR.2009.08.13.001
Title:
Modelling
204 / 1260
ID:
KPR.2009.08.14.001
Title:
Modelling
ID:
KPR.2009.08.14.002
Title:
ID:
KPR.2009.08.17.001
Title:
Simulation
207 / 1260
ID:
KPR.2009.08.17.002
Title:
Simulation
208 / 1260
ID:
KPR.2009.08.24.002
Title:
Modelling
Description: The width determination for signals, which are mixed from
muxed and bus signals
doesn't work correctly for the TargetLink overflow detection if
MATLAB R2006a is
used. A difference between the signal's width and the block's
width is detected,
if the block is not scalar. This results in an error message
similar to the
following:
Error #02291: <block path>:
A scaling data/signal size mismatch in block '<block path>'
has been detected.
The block property 'lsb' is a (4,1)-vector, but the compiled
signal size is
(8,1).
Workaround: Signals which are mixed by muxed and bus signals must not
be used in TargetLink
3.0 and newer.
209 / 1260
ID:
KPR.2009.08.27.001
Title:
210 / 1260
ID:
KPR.2009.08.27.002
Title:
211 / 1260
ID:
KPR.2009.08.28.001
Title:
212 / 1260
ID:
KPR.2009.09.03.001
Title:
Utility
ID:
KPR.2009.09.04.001
Title:
Incorrect code/compilable
213 / 1260
ID:
KPR.2009.09.21.001
Title:
Incorrect code/compilable
214 / 1260
ID:
KPR.2009.09.21.002
Title:
Utility
Description: The AUTOSAR export erroneously throws a warning about different typedef
specifications at different data elements.
The precondition for this faulty behavior is an analysis of two data element
objects that references the same typedef object. The typedef object represents a
structured type with a defined set of typedef components. The algorithm has to
check all data element component objects at both data elements, to find
different specifications. If all data element components are equal and the root
data element differs only in the Uuid property the AUTOSAR export wrongly
throws
the following warning:
Message 8832, Kind Warning
Title: Warning
Message: A Struct typedef is used at different data elements
/Subsystems/PortInterfaces/Interfaces/IF_Test/DataElements/DataElement_Foo
versus
/Subsystems/PortInterfaces/Interfaces/IF_Test2/DataElements/DataElement_Foo2
two
types will be generated with the same name.
Workaround: No workaround available.
ID:
KPR.2009.09.21.003
Title:
215 / 1260
ID:
KPR.2009.09.21.004
Title:
Modelling
216 / 1260
ID:
KPR.2009.09.21.005
Title:
ID:
KPR.2009.09.21.006
Title:
Simulation
217 / 1260
ID:
KPR.2009.09.21.007
Title:
Simulation
218 / 1260
ID:
KPR.2009.09.21.008
Title:
Simulation
219 / 1260
ID:
KPR.2009.09.21.009
Title:
Utility
220 / 1260
ID:
KPR.2009.09.21.010
Title:
Utility
221 / 1260
ID:
KPR.2009.09.22.001
Title:
Incorrect code/compilable
Description: The lower part of the result calculated by the following generic
macros is
faulty:
C__U64SHLI64U6
C__U64SHLI64C6_LT32
C__I64SHLU64U6
C__I64SHLU64C6_LT32
Affected file:
%DSPACE_ROOT%\Matlab\TL\SrcFiles\Generic\shl.h
Workaround: The wrong code can be fixed by modifying the code in the
header file.
The pattern
r_l = (UInt32)(r_l << csh)
must be replaced by
r_l = (UInt32)(v_l << csh)
ID:
KPR.2009.10.12.001
Title:
Simulation
222 / 1260
ID:
KPR.2009.10.20.001
Title:
API
Description: If there is more than one machine, i.e. when Stateflow charts
from libraries are
used, get_sfobjects may not find all data and events parented
by machines. Only
the first machine encountered during processing is examined.
Workaround: Do not define data or events on machine level (see
MATLAB/TargetLink guidelines)
or sort the API function's parameters like {modell, libsubsystem}.
Note: Since TargetLink 3.0 the API function get_sfobjects is
replaced by
tl_get_sfobjects, which has fixed the problem.
ID:
KPR.2009.10.20.002
Title:
PostDefBlockStm_1
PreDefBlockStm_2
B_3
PostDefBlockStm_2
...
PreDefBlockStm_(n-1)
B_n
PostDefBlockStm_(n-1)
For example with variable classes MACRO_VC1 with predefinition
block statement
/* PreDefinitionBlockStatement VC1 */ and postdefinition block
statement /*
PostDefinitionBlockStatement VC1 /*.
And variable classes MACRO_VC2 with predefinition block statement
/*
PreDefinitionBlockStatement VC2 */ and postdefinition block
statement /*
PostDefinitionBlockStatement VC2 /*.
The code looks like this
/*----------------------------------------------------------------------------*\
DEFINES
\*----------------------------------------------------------------------------*/
/******************************************************************************\
MACRO_VC1: global preprocessor macros
\******************************************************************************/
#define VC1_Const1 (Int16) 10
#define VC1_Const2 (Int16) 20
/* PreDefinitionBlockStatement VC1 */
/******************************************************************************\
MACRO_VC2: global preprocessor macros
\******************************************************************************/
#define VC2_Const1 (Int16) 30
#define VC2_Const2 (Int16) 40
/* PostDefinitionBlockStatement VC1 */
...
but it should look like this
/*----------------------------------------------------------------------------*\
DEFINES
\*----------------------------------------------------------------------------*/
/* PreDefinitionBlockStatement VC1 */
/******************************************************************************\
MACRO_VC1: global preprocessor macros
\******************************************************************************/
#define VC1_Const1 (Int16) 10
#define VC1_Const2 (Int16) 20
/* PostDefinitionBlockStatement VC1 */
/* PreDefinitionBlockStatement VC2 */
224 / 1260
/******************************************************************************\
MACRO_VC2: global preprocessor macros
\******************************************************************************/
#define VC2_Const1 (Int16) 30
#define VC2_Const2 (Int16) 40
/* PostDefinitionBlockStatement VC2 */
...
Workaround: If possible use predefinition and postdefinition statements instead of
predefinition and postdefinition block statements.
ID:
KPR.2009.10.20.003
Title:
Incorrect code/compilable
225 / 1260
ID:
KPR.2009.10.20.004
Title:
226 / 1260
ID:
KPR.2009.11.16.001
Title:
Utility
ID:
KPR.2009.11.25.001
Title:
Utility
227 / 1260
ID:
KPR.2009.11.25.002
Title:
User interface
ID:
KPR.2009.11.25.003
Title:
228 / 1260
229 / 1260
230 / 1260
ID:
KPR.2009.11.25.004
Title:
Modelling
ID:
KPR.2009.11.25.005
Title:
Modelling
231 / 1260
ID:
KPR.2009.11.25.006
Title:
232 / 1260
ID:
KPR.2009.11.25.007
Title:
233 / 1260
ID:
KPR.2009.11.25.008
Title:
ID:
KPR.2009.11.25.009
Title:
234 / 1260
ID:
KPR.2009.11.25.010
Title:
Incorrect code/compilable
235 / 1260
ID:
KPR.2009.11.25.011
Title:
236 / 1260
ID:
KPR.2009.11.25.012
Title:
Incorrect code/compilable
237 / 1260
ID:
KPR.2009.11.25.013
Title:
Incorrect code/compilable
238 / 1260
ID:
KPR.2009.11.25.014
Title:
239 / 1260
ID:
KPR.2009.11.25.015
Title:
240 / 1260
ID:
KPR.2009.12.15.001
Title:
241 / 1260
ID:
KPR.2009.12.15.002
Title:
User interface
242 / 1260
ID:
KPR.2009.12.15.003
Title:
Incorrect code/compilable
Description: The calculation order of a Data Store Write block and its
corresponding Data
Store Read block may differ from Simulink. This can cause
differences between
MIL and SIL/PIL simulation. For example, if there is a pair of a
Data Store
Write and Data Store Read block which both refer to the same
Data Store Memory
block on the same level of a subsystem the Data Store Read
may be calculated
before the Data Store Write, for instance if there is no
connection along a
signal line. TargetLink does not assume any dependencies
between the Data Store
Write and the Data Store Read rather than the data flow along
a signal line.
Workaround: If you need to control the calculation order of Data Store Read
and Data Store
Write blocks to have MIL and SIL/PIL simulations comparable
you have to schedule
them explicitely, for example by putting them into FunctionCall
triggered
subsystems which are called by a Stateflow chart in a defined
order.
ID:
KPR.2009.12.15.004
Title:
Incorrect code/compilable
243 / 1260
Description: If a vector is written to at least twice in the same loop, the last
redefinition
depending on the loop variable, the other redefinitions
depending on another
loop variable or taking place elementwise, then it is possible
that the other
redefinitions are erroneously eliminated.
This constellation usually occurs for For Iterator or other
iterated subsystems
that contain an assignment block that uses the iteration
variable for index
selection. It can also occur for a Stateflow chart or for
variables that are
merged (usually via the variable class' MERGEABLE
Optimization property).
For TargetLink 3.0 and 3.0.1, this problem can only occur if
the assignments to
the variable preceding the last assignment are elementwise
assignments.
Example:
Wrong code generated for Assignment block in connection
with For Iterator
subsystem
for (Sa2_ForIterator = 0; Sa2_ForIterator < 10;
Sa2_ForIterator++) {
....
Sa3_Assignment[0] = ....;
Sa3_Assignment[1] = ....;
....
Sa3_Assignment[9] = ....;
Sa3_Assignment[Sa2_ForIterator] = ...;
....
}
This is erroneously optimized to
for (Sa2_ForIterator = 0; Sa2_ForIterator < 10;
Sa2_ForIterator++) {
....
Sa3_Assignment[Sa2_ForIterator] = ...;
....
}
and may be subject to subsequent optimizations based on the
new situation.
Workaround: 1. Set Optimization level to 0.
2. Set option EfficientVectorHandling to "off"
3. In some cases, lowering the LoopUnrollThreshold can help
avoid this problem
4. If possible change model with vector processing that uses
an
Iterator-Selector-Operation-Assignment block pattern to
operate on vector
directly instead (with blocks that support vector processing).
Also see MAAB
guidelines 6.5.5. db_0117: Simulink patterns for vector
signals.
244 / 1260
ID:
KPR.2009.12.15.006
Title:
245 / 1260
ID:
KPR.2009.12.15.007
Title:
Simulation
246 / 1260
ID:
KPR.2009.12.15.008
Title:
247 / 1260
ID:
KPR.2009.12.15.009
Title:
ID:
KPR.2009.12.15.010
Title:
248 / 1260
249 / 1260
ID:
KPR.2009.12.15.011
Title:
Incorrect code/compilable
Description: Sum block with one input signal and scalar output or Product
block with one
input signal and scalar floating-point output can be subject to
wrong
optimization if
- the input signal is a vector that holds the same constant (or
scalar variable)
for each element
-- AND -- the code generator option "EfficientVectorHandling" is set to
"on"
-- AND -- the input signal width is greater or equal to the value of the
code generator
option "LoopUnrollThreshold"
In this case, the computation
for (Aux_S32 = 0; Aux_S32 < 6; Aux_S32++) {
MyConstantVector[Aux_S32] = 17;
}
Aux_U16 = 0;
for (Aux_S32 = 0; Aux_S32 < 6; Aux_S32++) {
Aux_U16 = (UInt16) (Aux_U16 + ((UInt16)
MyConstantVector[Aux_S32]));
}
Sa1_Sum = (Int16) Aux_U16;
is replaced by
Aux_U16 = 0;
Aux_U16 = (UInt16) (Aux_U16 + ((UInt16) 17));
Sa1_Sum = (Int16) Aux_U16;
Workaround: 1. If the predecessor of the Sum block is a Constant block with
homogeneous
initial value for all elements, then either use a default variable
class or a
user variable class without set ERASABLE Optimization
property for the constant.
Otherwise, set the predecessor block's output variable class to
a user variable
class without set ERASABLE Optimization property.
2. Insert a Rescaler or TargetLink Port block before the Sum
block. Set the
block output variable class to a user variable class without set
ERASABLE
Optimization property and activate signal property inheritance.
250 / 1260
ID:
KPR.2009.12.17.001
Title:
Incorrect code/compilable
251 / 1260
ID:
KPR.2009.12.17.002
Title:
Incorrect code/compilable
252 / 1260
ID:
KPR.2009.12.17.003
Title:
ID:
KPR.2009.12.17.004
Title:
Simulation
253 / 1260
ID:
KPR.2009.12.17.005
Title:
254 / 1260
ID:
KPR.2009.12.17.006
Title:
Simulation
ID:
KPR.2009.12.17.007
Title:
Modelling
255 / 1260
ID:
KPR.2009.12.17.008
Title:
Modelling
ID:
KPR.2009.12.17.009
Title:
Incorrect code/compilable
256 / 1260
ID:
KPR.2009.12.18.001
Title:
Utility
ID:
KPR.2009.12.18.002
Title:
Incorrect code/compilable
ID:
KPR.2009.12.18.003
Title:
TargetLink 2.2 2.2.1 2.3 2.3.1 3.0 3.0.1 3.1 3.2 3.3 3.4 3.5
Class:
Incorrect code/compilable
258 / 1260
ID:
KPR.2009.12.18.004
Title:
259 / 1260
ID:
KPR.2009.12.18.005
Title:
Simulation
ID:
KPR.2009.12.18.006
Title:
Incorrect code/compilable
260 / 1260
ID:
KPR.2009.12.18.007
Title:
261 / 1260
Class:
Incorrect code/compilable
MACRO2(i2);
MACRO1(i1);
if (cond) {
o = i1;
} else {
o = i2;
}
- For TargetLink >= 3.1, the macros have to be called in the
same order as their
output variables are used in the conditionally executed control
flow branches,
i.e.
MACRO1(i1);
MACRO2(i2);
if (cond) {
o = i1;
} else {
o = i2;
}
Note that this is the usual order for TargetLink generated
code, i.e. the
probability of incorrect code is increased.
Workaround: Insert a Rescaler block (or TargetLink Port block for
TargetLink < 3.0) between
the output of the block or subsystem leading to a macro call
and the
conditionally executed subsystem, Switch block, or Multiport
Switch block.
Select "inherit signal properties"; set the output variable class
to a class
with deselected ERASABLE Optimization property.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.1p2
263 / 1260
ID:
KPR.2009.12.21.002
Title:
Utility
264 / 1260
ID:
KPR.2009.12.21.003
Title:
Simulation
265 / 1260
ID:
KPR.2009.12.21.004
Title:
Incorrect code/compilable
266 / 1260
ID:
KPR.2009.12.21.005
Title:
Simulation
267 / 1260
ID:
KPR.2010.01.06.001
Title:
Incorrect code/compilable
268 / 1260
ID:
KPR.2010.01.08.001
Title:
269 / 1260
ID:
KPR.2010.01.08.002
Title:
Description: If the output of an implicit reading RTE API call, that is, the
output of a
TargetLink port or a Receiver ComSpec Block drives
- a dynamic Selector or Assignment block or is used otherwise
in a vector
element access (e.g. in a Stateflow chart)
-- OR -- more than one block, one of them a block leading to a macro
call with this
output as argument of the call,
then TargetLink stops code generation with an access
violation.
Example:
u8CycleNumber = Rte_IRead_<...>_u8CycleNumber();
...
if (u8CycleNumber > MAX_NUMBER_OF_CYCLE) {
...
}
else {
...
UpdatedCounters[u8CycleNumber] =
UpdatedCounters[u8CycleNumber] + 1 /* 1.
*/;
}
If optimization level is > 0, then the problem occurs when
trying to optimize
"u8CycleNumber".
Workaround: Check the Runnable inports' (or their succeeding ComSpec
blocks') successors
with respect to array accesses and macro calls; insert a
Rescaler block after
affected inports (or ComSpec blocks, respectively) that has
activated "inherit
signal properties" and a variable class with deselected
ERASABLE Optimization
property.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.1p1
270 / 1260
ID:
KPR.2010.01.08.004
Title:
Modelling
ID:
KPR.2010.01.08.005
Title:
271 / 1260
ID:
KPR.2010.01.11.001
Title:
Utility
Description: The AUTOSAR master template doesn't contain the MERGABLE attribute for
the
following variable classes:
/Pool/VariableClasses/AUTOSAR/SHARED_CALPRM
/Pool/VariableClasses/AUTOSAR/SHARED_CALPRM_COMPOSITE_TYPE
/Pool/VariableClasses/AUTOSAR/CALPRM_VARIABLE
/Pool/VariableClasses/AUTOSAR/CALPRM_VARIABLE_COMPOSITE_TYPE
As consequence the defined calibration variables that references one of these
variable classes cannot be merged during code generation. This implies that
a
Data Dictionary Variable object can be referenced only ones in a TargetLink
model. The following error message will be thrown for a Variable object of the
above listed classes if the attribute is not set.
Error #17299: TL_Controller/Position_Linearization_Runnable/Constant:
Name ambiguity of identifier Rte_SharedCal_Controller_SharedCalVariable.
The
variable was first declared for 'TL_Controller/Controller_Runnable/Constant'.
Neither is one of the variables specified as 'extern' nor are both variables
declared as 'mergeable'.
Workaround: Select the MERGABLE attribute to the Optimization property of the variable
classes:
/Pool/VariableClasses/AUTOSAR/SHARED_CALPRM
/Pool/VariableClasses/AUTOSAR/SHARED_CALPRM_COMPOSITE_TYPE
/Pool/VariableClasses/AUTOSAR/CALPRM_VARIABLE
/Pool/VariableClasses/AUTOSAR/CALPRM_VARIABLE_COMPOSITE_TYPE
272 / 1260
ID:
KPR.2010.01.11.002
Title:
Simulation
273 / 1260
ID:
KPR.2010.01.12.001
Title:
Simulation
274 / 1260
ID:
KPR.2010.01.12.002
Title:
User interface
Description: If for a block's parameter the same value is specified for Min,
Max and the
parameter value, the message "Inconsistent data: max value
is not in implemented
range." is shown erroneously.
Workaround: No workaround available.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.1p2
ID:
KPR.2010.01.12.003
Title:
Utility
275 / 1260
ID:
KPR.2010.01.12.004
Title:
Utility
Description: If the user selects more than one subsystem he can set the
merge option of the
AUTOSAR export to on (e.g. dsdd('export',...,'merge','on')).
This yields to the
behavior that AUTOSAR elements with the same short name
and package path will be
merged across subsystems. The following elements are
merged:
COMPU-METHOD, PRIMITIVE-TYPE-WITH-SEMANTICS,
SENDER-RECEIVER-INTERFACE,
ARRAY-TYPE, BOOLEAN-TYPE, CHAR-TYPE, CLIENTSERVER-INTERFACE, INTEGER-TYPE,
REAL-TYPE, RECORD-TYPE, STRING-TYPE, MODEDECLARATION-GROUP, UNIT,
PHYSICAL-DIMENSION
For a whole export the set (see above) of AUTOSAR
elements to be merged is
incomplete. Especially the merge of the same software
component, that is defined
across two subsystems. As a result the exported AUTOSAR
file contains two
specifications of the AUTOSAR elements like *COMPONENT-TYPE, etc.
Workaround: No workaround available.
276 / 1260
ID:
KPR.2010.01.12.005
Title:
Utility
277 / 1260
ID:
KPR.2010.01.12.006
Title:
Simulation
278 / 1260
ID:
KPR.2010.01.13.001
Title:
Description: The use of the SWC Receiver Port block leads to an access
violation during the
code generation if
- the inport of the SWC Receiver Port block is not connected
-- OR -- the inport of the SWC Receiver Port block is not connected
to an Inport block
-- OR -- the inport of the SWC Receiver Port block is connected to an
Inport block but
the connection is not 1:1, i.e. there is a branch in the signal
line.
The use of the SWC Sender Port block leads to an access
violation during the
code generation if
- the outport of the SWC Sender Port is not connected
-- OR -- the outport of the SWC Sender Port is not connected to an
Outport block
-- OR -- the outport of the SWC Sener Port is connected to an
Outport block but the
connection is not 1:1, i.e. there is a branch in the signal line.
Workaround: Connect the inport of the SWC Receiver Port with an Inport
Block with a direct
(1:1) connection.
Connect the outport of the SWC Sender Port with an Outport
Block with a direct
(1:1) connection.
279 / 1260
ID:
KPR.2010.01.13.002
Title:
Utility
ID:
KPR.2010.01.13.004
Title:
Description: Code generation for a referencing system stops with the error
E10648, if all of
the following points are fulfilled
- a variable class template is used at the interface fo the
referenced system
- the variable class referenced by the variable class template
references a
module object
- the referenced module object has a name template
(ModuleInfo > NameTemplate)
which contains at least one upper-case letter (name macros
are not taken into
account)
Workaround: Use only lower-case letters in the name template of the
referenced Module
object.
280 / 1260
ID:
KPR.2010.01.13.005
Title:
ID:
KPR.2010.01.14.001
Title:
Incorrect code/compilable
Description: If
- a block with an output that has a variable class that has the
Optimization
property ERASABLE set
-- OR -- a function subsystem with call by reference or return output
that has empty
ArgClass or references as ArgClass a variable class that has
the Optimization
property ERASABLE set
drives a block that creates multiple definitions for its output
variable, range
propagation may be faulty and introduce erroneous code for
the succeeding
blocks.
Blocks producing multiple definitions for their output variables
281 / 1260
that can be
affected by this problem are
- Switch block
- Multiport Switch block
- Merge block
- MinMax block
- Saturation block with floating-point input and/or output or
floating-point
limits
Example:
A Custom Code block drives the first data input of a Switch
block and a Constant
block with value 42 drives the second data input.
The Switch block in turn drives a data input of a MinMax block
where the other
input has a value range that does not contain 42 or contains
42 as one of its
boundary values.
This leads to initial code of the kind
if (cond) {
/* Custom Code Block <<output section>> */
{
Sa4711_CC_out = ....
}
Sa4711_Switch = Sa4711_CC_out;
} else {
Sa4711_Switch = 42;
}
if (Sa4711_Switch < 100) {
Sa4711_MinMax = 100;
} else {
Sa4711_MinMax = Sa4711_Switch;
}
If "Sa4711_CC_out" is replaced by "Sa4711_Switch", then the
comparison
"Sa4711_Switch < 100" erroneously evaluates to "always
true". Further
optimizations yield
if (cond) {
/* Custom Code Block <<output section>> */
{
Sa4711_Switch = ....
}
}
Sa4711_MinMax = 100;
and depending on the right hand side of the last assignment
may be optimized
even further.
282 / 1260
Workaround: 1a) For block outputs: Create a workaround variable class for
the block that has
no set ERASABLE Optimization property.
1b) For function outputs: Specify an ArgClass that has no set
ERASABLE
Optimization property or switch to returning the respective
output (variable
class with Scope property set to "fcn_return").
OR
2) Insert a Rescaler block or TargetLink port block between
the block / Function
subsystem and the following block that has a non-ERASABLE
variable class as
output class.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.1p2
ID:
KPR.2010.01.14.002
Title:
283 / 1260
ID:
KPR.2010.01.14.003
Title:
API
ID:
KPR.2010.01.14.004
Title:
Simulation
284 / 1260
ID:
KPR.2010.01.14.005
Title:
Incorrect code/compilable
Description: In MIL simulation mode the delay funtionality of the Unit Delay
Reset Enabled
block is enabled if the "Input E" is driven by signals equal to or
larger than
1. In the generated code the delay functionality is enabled by
any signal not
equal to 0. This causes differences between MIL and SIL/PIL
simulation for
negativ values at input "E".
Workaround: - Change signal path to Input E in a way, that negativ signals
are converted to
positiv signals. This will change MIL results to SIL/PIL
behaviour.
- Change signal path to Input E in a way, that negativ signals
are converted to
0. This will change SIL/PIL results to MIL behaviour.
ID:
KPR.2010.01.19.001
Title:
Simulation
285 / 1260
ID:
KPR.2010.01.19.002
Title:
286 / 1260
ID:
KPR.2010.01.20.001
Title:
Modelling
ID:
KPR.2010.01.21.001
Title:
Incorrect code/compilable
287 / 1260
288 / 1260
ID:
KPR.2010.01.22.001
Title:
Simulation
Description: Opening the TargetLink "More infos about" plot window with
activated staircase
mode leads to a delay until the window is open. Depending on
the number of
simulation steps contained in the plot, this can take so long
time that MATLAB
is practically frozen.
Example:
A plot with 20000 simulation steps leads to a 30s delay, a plot
with 100000
simulation steps to a 15min delay.
Workaround: If the simulation contains more than about 10000 simulation
steps, deactivate
the staircase mode before opening a "More infos about" plot
window
The problem is fixed by using the following patch or later
patches:
TargetLink 3.1p2
289 / 1260
ID:
KPR.2010.01.28.001
Title:
290 / 1260
ID:
KPR.2010.01.28.002
Title:
291 / 1260
ID:
KPR.2010.02.02.001
Title:
Incorrect code/compilable
292 / 1260
ID:
KPR.2010.02.02.002
Title:
Incorrect code/compilable
293 / 1260
ID:
KPR.2010.02.10.001
Title:
Incorrect code/compilable
ID:
KPR.2010.02.17.001
Title:
294 / 1260
TargetLink 2.2 2.2.1 2.3 2.3.1 3.0 3.0.1 3.1 3.2 3.3 3.4 3.5
Class:
297 / 1260
ID:
KPR.2010.02.17.002
Title:
298 / 1260
299 / 1260
ID:
KPR.2010.02.17.003
Title:
Utility
300 / 1260
ID:
KPR.2010.02.17.004
Title:
301 / 1260
ID:
KPR.2010.02.17.005
Title:
302 / 1260
ID:
KPR.2010.02.17.006
Title:
303 / 1260
ID:
KPR.2010.02.17.007
Title:
304 / 1260
ID:
KPR.2010.02.17.008
Title:
305 / 1260
ID:
KPR.2010.02.17.009
Title:
306 / 1260
ID:
KPR.2010.02.17.010
Title:
ID:
KPR.2010.02.17.011
Title:
Utility
ID:
KPR.2010.02.18.001
Title:
Variables with different data types are merged though one has
constraints and the other not
Incorrect code/compilable
308 / 1260
ID:
KPR.2010.02.18.002
Title:
309 / 1260
ID:
KPR.2010.02.18.003
Title:
Utility
310 / 1260
ID:
KPR.2010.02.18.004
Title:
311 / 1260
ID:
KPR.2010.02.18.005
Title:
Simulation
ID:
KPR.2010.02.18.006
Title:
User interface
312 / 1260
ID:
KPR.2010.02.26.001
Title:
Simulation
ID:
KPR.2010.02.26.002
Title:
Incorrect code/compilable
313 / 1260
ID:
KPR.2010.03.15.001
Title:
Utility
ID:
KPR.2010.03.16.001
Title:
Simulation
Description: For multirate models which include bus ports using OSEK
messages, the simulation
frame generation may fail with the following error:
Generating simulation frame files ...
*** E00000: ERROR USING I_GETSOURCESIGNAL:
*** Internal Error:
*** Source signal cannot be found
*** Please contact dSPACE technical support.
Workaround: Avoid using OSEK messages on buses, switch to
GLOBAL_BUFFER instead.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.1p2
314 / 1260
ID:
KPR.2010.03.22.001
Title:
Incorrect code/compilable
ID:
KPR.2010.03.22.002
Title:
315 / 1260
ID:
KPR.2010.03.22.003
Title:
Incorrect code/compilable
ID:
KPR.2010.03.25.001
Title:
316 / 1260
ID:
KPR.2010.03.25.002
Title:
317 / 1260
ID:
KPR.2010.03.26.001
Title:
Utility
318 / 1260
ID:
KPR.2010.03.31.001
Title:
Incorrect code/compilable
ID:
KPR.2010.03.31.002
Title:
User interface
ID:
KPR.2010.03.31.003
Title:
Description: The code generation may abort issuing a fatal error #10008 if
a variable with
variable vector width is specified in a reused subsystem and if
the main reuse
structure for that subsystem contains a pointer to at least one
sub-structure.
Reuse sub-structures are introduced depending on the
memory sections and the
initialization behaviour of the instance specific variables for the
reused
subsystem.
Example:
This problem may come up, if a reused subsystem contains a
global Outport and
local static UnitDelay states that all have a variable vector
width.
Workaround: Try to specify variables in the same memory section or make
them function
parameters of the reuse function.
Changing the variable class of the Outport to FCN_REF_ARG
solves the problem for
the example given above.
320 / 1260
ID:
KPR.2010.03.31.004
Title:
Incorrect code/compilable
321 / 1260
ID:
KPR.2010.03.31.005
Title:
ID:
KPR.2010.03.31.006
Title:
Description: A model contains a Switch Case block with more than one
outport, or one outport,
but with several case constants. The Switch Case block is
driven by a block
whose output variable has a variable class with Scope =
"ref_param".
In this case, code generation aborts with fatal error #99999.
Workaround: Place a block on the signal line right before the Switch Case
block, e.g. a
Rescaler block, or a TargetLink Inport.
ID:
KPR.2010.03.31.007
322 / 1260
Title:
Description: When a type (other than builtin C types like int, char etc.) is
used at some
point in a generated code file, TargetLink ensures that at that
point a type
definition (typedef or struct declaration) is visible, either
directly in the
same file or at least through an #include of the file that
contains the
definition.
This mechanism does not work for types occurring as the
base type of simple
typedefs. For example
typedef Float64 MyFloat;
does not lead to an #include of the file tl_basetypes.h, which
contains the
definition of Float64.
As a result, compiler errors may occur while building the
application.
Additional notes:
1. Structure components are not affected by this bug, i.e.
struct MyStruct {
Float64 f;
};
will cause an include of tl_basetypes.h, regardless of whether
the structure is
defined with or without typedef
2. Pointer typedefs are not affected by this bug, i.e.
typedef Float64* Float64Ptr;
will cause an include of tl_basetypes.h
3. The problem does not affect Data Dictionary Typedefs with
a set Module
property (ModuleRef in TargetLink 3.1)
4. The problem does not exist for Data Dictionary Typedefs
without a set
ModuleRef property in TargetLink 3.1 and above if the code
generator option
"StrictTypedefPlacement" is left at its default value ("'on"'),
because typedefs
for user defined types are created in the UserDefinedTypes
header, which always
includes tl_basetypes.h.
323 / 1260
ID:
KPR.2010.04.19.001
Title:
Incorrect code/compilable
324 / 1260
ID:
KPR.2010.04.19.002
Title:
User interface
ID:
KPR.2010.04.19.003
Title:
Simulation
325 / 1260
ID:
KPR.2010.04.19.004
Title:
Simulation
326 / 1260
ID:
KPR.2010.04.19.005
Title:
Utility
327 / 1260
ID:
KPR.2010.04.21.001
Title:
Utility
328 / 1260
ID:
KPR.2010.04.21.003
Title:
Utility
Description: The AUTOSAR export writes the module object name to the
AdminData group of the
software component or runnable element. The Data Dictionary
NameTemplate
property of the module object will not be written to the
AUTOSAR file. During
the re-import of the AUTOSAR XML file, the NameTemplate
property of the module
object in Pool area will be overwritten with the module name.
For example, the
user has used a name macro in the property like "TlSwc_$D",
it will be
overwritten by TlSwc_Test.
Workaround: The property NameTemplate of a Module object that is
referenced from a software
component or a runnable object shall have the same name as
the Module object
itself. Additionally the module object shall be placed directly
under the
/Pool/Modules node in a Data Dictionary.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.1p3
329 / 1260
ID:
KPR.2010.04.21.004
Title:
Incorrect code/compilable
ID:
KPR.2010.04.21.005
Title:
Simulation
330 / 1260
ID:
KPR.2010.04.21.007
Title:
ID:
KPR.2010.04.21.008
Title:
Description: Code generation terminates with error #17154, if usersupplied files with the
same base name are added via Addfile block, one by linking
and the other by
including, and the included file has not the default extension
"h"
If two user-supplied files with the same base name (name
without extension) are
added via Addfile block, one by linking and the other by
including, and the
included file has not the default extension "h", the code
generation aborts with
the error #17154, e.g.
Error #17154: Subsystem/Addfile1
331 / 1260
An existing file with the base name 'myFile' but with different
properties has
been found.
The following properties are different:
- Extension: 'he' vs. 'h'
Information on the existing file:
Subsystem/Addfile
if the following conditions are fulfilled:
a) - the Addfile blocks are located in the same subsystem and
- the name of the Addfile block linking the file is
alphanumerical lesser
than the name of the Addfile block including the file
or
b) - if the Addfile block linking the file is placed in the same
subsystem
hierarchy, but above the subsystem with the Addfile block
including the file
or
c) - if the Addfile blocks are placed in parallel subsystem
hierarchies and name
of root subsystem of the subsystem hierarchy containing the
Addfile block
linking the file is alphanumerical lesser than the root
subsystem of the
subsystem hierarchy containing the Addfile block including the
file
Example for c)
---------------------------------------------------------------------------||
||
| ------------------------------- ------------------------------------- |
||||||
| | ------------------------- | | ------------------------------- | |
| | | Addfile block | | | | | | |
| | | (linking file x.c | | | | | | |
| | ------------------------- | | | ----------------------- | | | |
| | | | | | Addfile block | | | |
| | | | | | (including file x.hpp)| | | |
| ------------------------------- | | ------------------------- | | |
| Subsystem B | | | | |
||||||
| | ------------------------------- | |
| | Subsystem C | |
||||
| ------------------------------------- |
| Subsystem D |
||
||
---------------------------------------------------------------------------Subsystem A
In the example Subsystem B and Subsystem C are the root
subsystems of the
relevant subsystem hierarchies. Because the name
"Subsystem B" is alphanumerical
lesser than "Subsystem C" and the Subsystem hierarchy of B
contains the Addfile
block linking the file, the code generation aborts with the error
332 / 1260
#17154.
The case a) is the most common case, the cases b) and c)
are of a more
theoretical nature and should not be relevant for the praxis.
Workaround: Change the name of the Addfile blocks in a way, that the
name of the Addfile
block linking the file is alphanumerical greater than the name
of the Addfile
block including the file. This workaround works only for the
most common case
a). For the cases b) and c) there exists no workaround in
TargetLink versions
prior 3.1.
With TargetLink 3.1 and newer you can use the Data
Dictionary Module objects to
avoid the problem:
Specify a Module object with two FileSpecfications objects,
one for file to be
linked, one for the file to be included in the Data Dictionary,
and select the
FileSpecfication objects in the Addfile blocks.
ID:
KPR.2010.04.21.009
Title:
Description: If the code generator is called for subsystem that contains a block
referencing
an AUTOSAR calibratable parameter that can be optimized, for
example a Constant
block connected to the Terminator block,
the production code generation aborts with the following error:
*** E02012: ERROR IN HOOK FUNCTION:
*** There is a syntax error in the user-defined hook function
***
***
C:\dSPACE\matlab\tl\config\autosar\autosar_post_codegen_hook.m
***
*** MATLAB interpreter error message was:
*** .....................................
*** Error using ==> dsdd
*** Invalid value for attribute "name"!
Workaround: Delete the block from the subsystem. It does not affect the
generated production
code, because the corresponding variable is optimized.
333 / 1260
ID:
KPR.2010.04.21.010
Title:
Utility
ID:
KPR.2010.04.22.001
Title:
Utility
334 / 1260
ID:
KPR.2010.04.27.001
Title:
Utility
335 / 1260
ID:
KPR.2010.05.03.001
Title:
Modelling
ID:
KPR.2010.05.03.002
Title:
Utility
ID:
KPR.2010.05.04.001
Title:
Simulation
337 / 1260
ID:
KPR.2010.05.05.001
Title:
API
338 / 1260
ID:
KPR.2010.05.12.001
Title:
Incorrect code/compilable
339 / 1260
ID:
KPR.2010.05.21.001
Title:
340 / 1260
ID:
KPR.2010.05.27.001
Title:
Utility
Description: The build process for SIL/PIL mode can be started in several
ways:
1. Call one of the API commands "tl_build_host",
"tl_build_target",
"tl_compile_host" or "tl_compile_target"
2. TargetLink Main Dialog click one of the buttons "Build SIL",
"Build PIL",
"Compile SIL", "Compile PIL"
If a Data Dictionary CodeGenerationUnit is selected additionaly
to a TargetLink
subsystem, the build process may abort with the following
error:
??? Error using ==> sprintf
Function is not defined for 'cell' inputs.
Error in ==> dsdd_get_sourcefile_list>FcnCheckCommandLine
at 165
msgText = sprintf( ...
This happen if following conditions hold:
1. Production code was generated the selected
CodeGenerationUnit object
2. After code generation the CodeGenerationUnitID of the
selected
CodeGenerationUnit object was modified
3. Production code was generated for the selected
CodeGenerationUnit object
again and started the compilation of the production code
SIL/PIL application
Workaround: After modifing the CodeGenerationUnitID of the selected
CodeGenerationUnit
object delete in the Subsystems area of the current
DataDictionary the Subsystem
objects corresponding to the selected CodeGenerationUnit
object. There are
objects named:
<CodeGenerationUnitObjectName>_<CodeGenerationUnitID>.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.1p3
341 / 1260
ID:
KPR.2010.05.27.002
Title:
Utility
342 / 1260
ID:
KPR.2010.06.07.003
Title:
Incorrect code/compilable
Description: Description:
If in Stateflow
- a function within Stateflow is called
-- AND -- the return type of the function is Void
-- AND -- a formal parameter of this function is scaled (LSB != 1.0
and/or Offset !=
0.0)
-- AND -- the associated actual argument is an integer value that is not
given in
floating-point syntax,
then the actual argument value in the generated code might
be wrong.
Workaround: Enter the numerical value in floating-point syntax, e.g. "1.0"
instead of "1".
343 / 1260
ID:
KPR.2010.06.07.004
Title:
Incorrect code/compilable
344 / 1260
ID:
KPR.2010.06.07.005
Title:
Incorrect code/compilable
Description: If a function has at least two outputs, one of them the return
value, the other
one a call-by-reference value, then it is possible that
TargetLink erroneously
removes the function call (and, if it was the only call to the
function,
subsequently the function itself) if
- the return value is never used (e.g. sent to a Terminator
block)
-- AND -- the return value's variable class is either a default class or
has an ArgClass
that is a default class or has enabled ERASABLE Optimization
property.
Furthermore, the function must have
- a default function class or a user function class with disabled
SIDE_EFFECT_FREE Optimization property
-- AND -- an internal state (a local variable with static storage duration)
Workaround: If the function in question is called and generated for
OptimizationLevel = 0,
then setting the code generator option
SideEffectFreeAnalysisThreshold = 0
usually leads to correct code but may lead to missing
optimizations.
The best workaround for situations where the model can be
modified is inserting
a Rescaler (or TargetLink port) block after the return value
function output;
this workaround block is set to "Inherit properties" and has a
block output
variable class with disabled ERASABLE Optimization
property.
Otherwise, if the return value function output's variable class
can be
influenced, an ArgClass with disabled ERASABLE
Optimization property can be
used.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.1p3
ID:
KPR.2010.06.07.006
345 / 1260
Title:
Incorrect code/compilable
346 / 1260
347 / 1260
ID:
KPR.2010.06.08.001
Title:
Utility
348 / 1260
ID:
KPR.2010.06.08.002
Title:
Utility
349 / 1260
ID:
KPR.2010.06.10.001
Title:
Incorrect code/compilable
Description: If
- in a Sum block saturation to the upper limit is enabled
-- AND -- for the Min property that block a value >= 0 is specified
or if
- the last operation on the right hand side of a Stateflow
expression is an
addition/subtraction
-- AND -- the variable on the left hand side has a Minimum value >= 0
and a Maximum
value that is the implemented max value
-- AND -- the variable's TargetLink property sf.checkmax ("Saturate
against overflow")
is set
-- AND -- at least one operand of the expression has a different
TargetLink than
Stateflow data type,
then the saturation to the upper limit might be lost.
Note:
The problem does not come up if the code for the affected
block/Stateflow
expression is a macro call of C__xxxFITxxx_SAT() where xxx
denotes a type cut
(like e.g. I32 for Int32).
Workaround: Do not use saturation and constrained ranges for
additions/subtractions
together.
350 / 1260
ID:
KPR.2010.06.14.002
Title:
Utility
351 / 1260
ID:
KPR.2010.06.15.001
Title:
Utility
Description: In the generated A2L file the description of the lookup table
axis may be
incorrect if a user has customized the production code
generation for the look
up table by means of the user lookup table script.
The RECORD_LAYOUT referenced from the corresponding
AXIS_PTS entry may be
generated with the FNC_VALUES keyword, for example
/begin RECORD_LAYOUT
UWORD_COL_DIRECT /* Name */
FNC_VALUES 1 UWORD COLUMN_DIR DIRECT
/end RECORD_LAYOUT
but the AXIS_PTS_X keyword should be used:
/begin RECORD_LAYOUT
UWORD_X_INCR_DIRECT /* Name */
AXIS_PTS_X 1 UWORD INDEX_INCR DIRECT
/end RECORD_LAYOUT
Workaround: In the used lookup table script set the "Keyword" property of
the variable
describing the axis to "AXIS_PTS_X" or "AXIS_PTS_Y", for
example:
tlscript('Set','xval', ...
'Name' ,blockData.input.name, ...
...
'Keyword' ,'AXIS_PTS_X' ...
);
352 / 1260
ID:
KPR.2010.06.15.003
Title:
353 / 1260
ID:
KPR.2010.06.15.004
Title:
Utility
354 / 1260
ID:
KPR.2010.06.16.001
Title:
Simulation
355 / 1260
ID:
KPR.2010.06.16.002
Title:
Incorrect code/compilable
356 / 1260
ID:
KPR.2010.06.17.001
Title:
Missing CTO comment for Sum block with more then 2 inputs
357 / 1260
ID:
KPR.2010.06.17.002
Title:
Incorrect code/compilable
ID:
KPR.2010.06.23.001
Title:
Utility
358 / 1260
ID:
KPR.2010.06.30.001
Title:
Simulation
359 / 1260
ID:
KPR.2010.07.01.001
Title:
Utility
ID:
KPR.2010.07.01.002
Title:
Utility
360 / 1260
ID:
KPR.2010.07.05.001
Title:
User interface
Description: Using the TargetLink Busport block dialog two bus signals are
not editable
independently, if the two bus signals have names starting with
the same string
like "Signal2_first" and "Signal2".
If the second signal has a name that is only the starting part of
the other
signal (like shown above) and it is below the first signal in the
tree view,
then the choosen properties are stored always for first signal,
although the
second signal is selected in the tree view. It does not matter
whether there are
other signals also available in the bus in any order.
Workaround: Use the API or the TargetLink Property Manager to set
properties for these
signals.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.1p4
ID:
KPR.2010.07.05.002
Title:
Description: A Data Dictionary Variable that has not explicitly set a variable
class with
global scope, has a specified module and a fixed variable
name is generated in a
stub file, although it is not used in the model.
Workaround: No workaround available.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.1p3
361 / 1260
ID:
KPR.2010.07.05.003
Title:
362 / 1260
ID:
KPR.2010.07.05.004
Title:
User interface
ID:
KPR.2010.07.05.005
Title:
User interface
363 / 1260
ID:
KPR.2010.07.05.006
Title:
Modelling
ID:
KPR.2010.07.08.001
Title:
Incorrect code/compilable
364 / 1260
ID:
KPR.2010.07.08.002
Title:
Incorrect code/compilable
365 / 1260
ID:
KPR.2010.07.16.001
Title:
Download for PIL simulation does not work with virtual COM
port
Utility
Description: A download for PIL simulation through virtual COM port with
the TLLoader fails.
After the board has been reset and the flash was erased the
programming phase
started and stopped with an error messages "Error: A serial
buffer overflow
occurred." This problem may cause in a new version 2.06 of
FTDI device driver.
This FTDI device driver is "Windows Logo Verification" now
and is automatically
installed with a Windows update. This new device driver
belongs to the
evaluation board and is not supported by TargetLink.
Workaround: If you have an old version of the driver available, e.g. from an
old
installation, following workaround can be applied:
1. Switch the evaluation board off
2. Rename the file "ftser2k.sys" of the device driver in
common windows
directory "C:\windows\system32\drivers" to "ftser2k.sys__"
3. Copy the file "ftser2k.sys" of an older device driver to
directory
"C:\windows\system32\drivers"
4. Rename the file "ftd2xx.dll" in directory
"C:\windows\system32" to
"ftd2xx.dll__"
5. Copy the file "ftd2xx.dll" of an older device driver to
directory
"C:\windows\system32".
6. Switch the evaluation board on
If your windows system is not installed in "C:\windows" you
have to use the
directories according to your system.
The device driver is shown in the device manager still in the
version 2.06, but
the download works.
The problem is fixed by using the following patches or later
patches:
TargetLink 2.3.1p6
TargetLink 3.1p4
366 / 1260
ID:
KPR.2010.07.16.004
Title:
Incorrect code/compilable
Description: If in Stateflow
- an abs or fabs (not labs) function is called
-- AND -- the argument of that function call is an operation
-- AND -- at least one of the operands of the expression containing the
call has a
different TargetLink than Stateflow data type
-- AND -- none of the operands has a scaling (LSB != 1.0 and/or Offset
!= 0.0)
-- AND -- none of the operands has a floating-point data type
-- AND -- the abs/fabs function call is not the last operation on the right
hand side of
an assignment,
then the generated code may be wrong.
The erroneous production code can be identified by a
conditional operator (?:)
containing an unary minus operation with an Int8 cast.
Workaround: - Introduce an auxiliary variable to hold the result of the
abs/fabs functions
argument operation
-- OR -- use the labs() function
-- OR -- specify the same TargetLink as Stateflow data type for the
operands that are
part of the expression
-- OR -- introduce a scaling (LSB != 1.0 and/or Offset != 0.0) for at
least one of the
operands of the affected expression
The problem is fixed by using the following patch or later
patches:
TargetLink 3.1p4
367 / 1260
ID:
KPR.2010.07.16.005
Title:
User interface
ID:
KPR.2010.07.16.008
Title:
User interface
368 / 1260
ID:
KPR.2010.07.19.001
Title:
Simulation
369 / 1260
ID:
KPR.2010.07.19.002
Title:
Simulation
Description: There are MIL/SIL differences in the signal plot for the outport
of an enabled
or action triggered subsystem, if the "Output when disabled"
property of the
outport is set to "reset":
During the time the enabled or action triggered subsystem is
disabled, the Plot
of the MIL simulation shows the Initial output value specified
at the outport.
This is the outside behavior of the enabled or action triggered
subsystem. In
contrast the plot of the SIL simulation shows the last value of
the outport
before the enabled or action triggered subsystem has been
disabled. This is the
inside behavior of the enabled or action triggered subsystem.
Workaround: Disable the logging the outport of an enabled or action
triggered subsystem, if
the "Output when disabled" property of the outport is set to
"reset". Instead:
To plot the outside behavior of the enabled or action triggered
subsystem, log
the output signal of the enabled or action triggered subsystem,
e.g. via a
TargetLink Sink-Block. If for the outport of the enabled or
action triggered
subsystem a global variable is created, you can alternatively
log the global
variable by adding the variable to the log variable list in the
Data Dictionary
after code has been generated for the TargetLink Subsystem.
To plot the inside behavior of the enabled or action triggered
subsystem, log
the input signal of the outport block of the enabled or action
triggered
subsystem, e.g. via a TargetLink Sink-Block.
370 / 1260
ID:
KPR.2010.07.19.003
Title:
ID:
KPR.2010.07.20.001
Title:
ID:
KPR.2010.08.11.001
Title:
Accuracy loss at sqrt call with fixed-point input and floatingpoint result
Incorrect code/compilable
ID:
KPR.2010.08.11.002
Title:
Incorrect code/compilable
372 / 1260
ID:
KPR.2010.08.11.003
373 / 1260
Title:
Incorrect code/compilable
ID:
KPR.2010.08.18.001
Title:
Incorrect code/compilable
375 / 1260
ID:
KPR.2010.08.18.002
Title:
Incorrect code/compilable
ID:
KPR.2010.08.19.001
Title:
Modelling
376 / 1260
ID:
KPR.2010.08.19.002
Title:
Incorrect code/compilable
377 / 1260
ID:
KPR.2010.08.19.003
Title:
ID:
KPR.2010.08.23.001
Title:
Simulation
378 / 1260
ID:
KPR.2010.08.23.002
Title:
Description: For the block variable row of a Look-Up Table (2D) block it is
possible to use a
variable defined in the Data Dictionary that has specified a
width of
[NumberOfRows 1]. This means in the TargetLink semantic
that the variable has to
be implemented as a matrix and this is wrong for the row
variable. The correct
specification is a width of [NumberOfRows] which will be
generated as vector.
For a model containing a Look-Up Table (2D) block with such
a matrix variable
defined in the Data Dictionary and the enabled option
"Generate map struct"
(generatemapstruct), it is possible to generate code like the
following:
Wrong code:
const Int8 Sa1_Look_Up_Table__2D__x_table[3][1] =
{
...
}
Correct code:
const Int8 Sa1_Look_Up_Table__2D__x_table[3] =
{
...
}
The behavior of the code is correct, no wrong results because
the lookup
function is able to work with such a matrix correctly.
For a model containing a Look-Up Table (2D) block with such
a matrix variable
defined in the Data Dictionary and the disabled option
"Generate map struct"
(generatemapstruct), code generation aborts.
Workaround: Correct the width property of the Data Dictionary variable. The
width property
shall be specified as a scalar value.
379 / 1260
ID:
KPR.2010.08.23.003
Title:
Utility
380 / 1260
ID:
KPR.2010.08.23.004
Title:
Incorrect code/compilable
381 / 1260
ID:
KPR.2010.08.24.001
Title:
Incorrect code/compilable
382 / 1260
ID:
KPR.2010.08.30.001
Title:
Incorrect code/compilable
383 / 1260
ID:
KPR.2010.08.30.002
Title:
Incorrect code/compilable
384 / 1260
ID:
KPR.2010.08.31.001
Title:
Simulation
Description: For a Stateflow chart containing more than one output port,
the first output
port must be logged to enable logging for the remaining output
ports in MIL
simulation mode. Otherwise, the remaining output ports are
not logged. No
message notes about such a problem.
The SIL and PIL simulation mode is not affected by this
problem.
Workaround: Enable logging of the first output port of a chart if logging is
desired for any
of the remaining output ports.
ID:
KPR.2010.09.03.001
Title:
Description: Code generation may abort for a system (TargetLink subsystem, subsystem
configured for incremental code generation or referenced model), containing a
Model block.
The error is like the following:
Fatal #10007: Internal error. Error code:
E:\SB\Xcg31p5\BuildConfiguration\Core\XcgIntermediateView\Sources\XcgIntermediat
eView\BlockContext\DataBlockContext\TlCBcBusInportContext.cpp_ 627. Contact
dSPACE's technical support team.
Workaround: No workaround available.
The problem is fixed by using the following patch or later patches:
TargetLink 3.1p4
385 / 1260
ID:
KPR.2010.09.03.002
Title:
Utility
386 / 1260
ID:
KPR.2010.09.07.001
Title:
387 / 1260
ID:
KPR.2010.09.07.002
Title:
Utility
Description: In some use cases the objects within the Data Dictionary
Subsystems area created
by Code Generator are exported to an XML file. If such XML
file is imported to
the Data Dictionary and from the corresponding Subsystems
objects an A2L file is
generated some measurable and calibratable variables may
be missing in the A2L
file. This applies for a variable that is not referenced from any
BlockVariable
object below the ModelView area, because they:
1) belong to module generated straight from the Data
Dictionary and are not
referenced from any TargetLink block
2) are specified as actual argument of a function's formal
parameter
3) were manually inserted by the user into the Subsystems
object
Workaround: In Data Dictionary correct the Class property of the Variable
objects
corresponding to the measurable and calibratable variable
missing in the A2L
file. It must be a DD Handle and not a DD Reference. This can
be done only by
API commands:
Example:
hClass = dsdd('GetClassTarget',<DDVariable>) ;
dsdd('SetClass', <DDVariable>, hClass);
where <DDVariable> has to be replaced by the path to the
Variable object within
the Data Dictionary.
388 / 1260
ID:
KPR.2010.09.07.003
Title:
User interface
ID:
KPR.2010.09.07.004
Title:
Incorrect code/compilable
389 / 1260
ID:
KPR.2010.09.08.001
Title:
ID:
KPR.2010.09.08.002
Title:
Incorrect code/compilable
390 / 1260
391 / 1260
ID:
KPR.2010.09.09.001
Title:
392 / 1260
ID:
KPR.2010.09.20.001
Title:
Utility
393 / 1260
ID:
KPR.2010.09.20.002
Title:
Incorrect code/compilable
394 / 1260
ID:
KPR.2010.09.20.003
Title:
Simulation
Description: A SIL or PIL simulation loaded from a MAT file via TargetLink
Main Dialog
Simulation tab is wrongly shown as a MIL simulation. If this
simulation is
plotted, the unscaled integer values which are used internally
by the generated
code are displayed as real world values. These problem does
not come up if the
SIL/PIL simulation is loaded from file after a SIL/PIL simulation
has been
performed for the same opened model and Data Dictionary.
Workaround: No workaround available.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.1p4
395 / 1260
ID:
KPR.2010.09.20.004
Title:
Incorrect code/compilable
396 / 1260
ID:
KPR.2010.09.20.005
Title:
Simulation
397 / 1260
ID:
KPR.2010.09.20.006
Title:
Incorrect code/compilable
398 / 1260
ID:
KPR.2010.10.08.001
Title:
User interface
ID:
KPR.2010.11.12.001
Title:
Using same data store name for several data store systems
results in problems during MIL simulation
Simulation
399 / 1260
400 / 1260
ID:
KPR.2010.11.22.001
Title:
Utility
401 / 1260
ID:
KPR.2010.11.22.002
Title:
Simulation
ID:
KPR.2010.11.22.003
Title:
Utility
402 / 1260
ID:
KPR.2010.11.22.004
Title:
Incorrect code/compilable
403 / 1260
ID:
KPR.2010.11.22.005
Title:
Simulation
404 / 1260
ID:
KPR.2010.11.22.006
Title:
Simulation
Description: Additional code files (*.c or *.h) can be added to custom code
by inserting a
TargetLink Addfile block for each file into the subsystem
where the Custom Code
block resides. However, if *.c files (as opposed to *.h files) are
added to the
custom code, RTW code generation results in linker errors.
This happens, for
example, when the Custom Code blocks reside in a
referenced model for which the
RTW should generate an S-function. Then, the model cannot
be initialized, and
neither MIL/SIL/PIL simulation nor code generation are
possible.
Workaround: Edit the generated TLC file and add an entry
%<LibAddToModelSources({myfile})>
to the BlockTypeSetup function for each file, where {myfile}
has to be replaces
by the module name of the *.c file
Example for file "table.c":
...
%function BlockTypeSetup(block, system) void
%<LibAddToModelSources("table")>
%openfile buffer
#include "tmwtypes.h"
...
Note the missing .c file extension.
405 / 1260
ID:
KPR.2010.11.22.007
Title:
Incorrect code/compilable
406 / 1260
ID:
KPR.2010.11.22.008
Title:
407 / 1260
ID:
KPR.2010.11.22.009
Title:
Simulation
408 / 1260
ID:
KPR.2010.11.22.010
Title:
Incorrect code/compilable
Description: The key problem is the semantic of the values given as user
range (min/max).
For Simulink blocks this property has the following semantic:
The user garantees that a value is within the given range
For Stateflow data the semantic depends on the saturation
flags:
- If saturation flag is disabled for min and/or max:
The user garantees that the value is within the given min
and/or max
- If saturation flag is enabled for min and/or max:
Code Generator garantees that the value will allways be within
the given min
and/or max (by inserting saturation commands)
Currently the autoscaling based on min/max assumes allways
the semantic with the
user garantee. For Stateflow output data this semantic
exception seems to be no
problem, because it is irrelevant for the following block who
garantees the
range, the user or the Code Generator with satuaration.
For Stateflow inputs this is defintly a serious problem. The
min/max of Inputs
may be propagated backwards to preceding blocks during the
autoscaling. But if
saturation is active the only thing which is sure that after the
Stateflow input
the value is inside min/max range because of the saturation.
But the driving
signal at that Stateflow input can be outside that range. Such
a backward
propagation is currently done and the resulting autoscaled
blocks in front of
Stateflow charts are very likely insufficient scaled leading to
over/underflows.
Workaround: Scale a Stateflow chart manually and additional exclude them
from autoscaling.
409 / 1260
ID:
KPR.2010.11.22.011
Title:
Simulation
410 / 1260
ID:
KPR.2010.11.22.012
Title:
Utility
411 / 1260
ID:
KPR.2010.11.22.013
Title:
Incorrect code/compilable
ID:
KPR.2010.11.22.014
Title:
Incorrect code/compilable
412 / 1260
Description: The Code Generator can only treat a function or macro call
correctly during
optimization if it knows the contents or is given information
about the contents
of the function (or macro).
For RTE API functions and macros, the Code Generator
usually knows the desired
behavior with the exception of operation calls: Only if the
Code Generator also
generates a server runnable implementing the operation, the
contents can be
assumed to be known.
The Code Generator erroneously assumes trivial semantics
for the operations and
optimizes accordingly if inputs or outputs to runnables are
obtained / set via
operation call or if the contents of an operation call subsystem
are only to be
used for SIL/PIL simulation.
This means that calls to Rte_Call_...() are moved into
conditionally executed
control flow branches even if they have side effects and that
they can be moved
past other RTE API calls even though they influence the result
of these calls.
Note that calls to implicit reading RTE API functions can never
change their
outcome, so they can be moved past any other function or
macro call.
Workaround: In order to find out whether you experience this optimization
problem, you can
set the Code Generator option OptimizationLevel = 0 before
code generation; if
the generated code then performs as intended, the following
local workarounds
can be applied in order to make it possible to switch back to
OptimizationLevel
> 0.
Mobility of the call to Rte_Call_...() can be restricted by
inserting a Rescaler
block after at least one output of the call. The block has
"Inherit signal
properties" enabled and a block output variable with a variable
class that has
unset ERASABLE and MOVABLE Optimization properties. For
ease of use, the class
can be given Scope = global and set SCOPE_REDUCIBLE
Optimization property.
Restricted mobility past the call can only be realized by
identifying critical
blocks and making their block output variables nonERASABLE and non-MOVABLE (or
inserting a Rescaler block as described above).
413 / 1260
ID:
KPR.2010.11.24.001
Title:
ID:
KPR.2010.11.24.002
Title:
Incorrect code/compilable
414 / 1260
ID:
KPR.2010.11.24.003
Title:
User interface
Description: If the Data Dictionary Manager is started from the start menu
outside from
MATLAB and the toolbar button with the symbol "C" (code
editor) is pressed the
application aborts due to memory access violation.
When started from MATLAB the Data Dictionary Manager
shows an error message
"Plugin Action failed / E1: File Information not found" if no
code file was
found for the current node but this is not an issue.
Workaround: Avoid pressing the Code Editor toolbar button when Data
Dictionary Manager is
not started from within MATLAB.
415 / 1260
ID:
KPR.2010.11.24.004
Title:
Simulation
416 / 1260
ID:
KPR.2010.11.29.001
Title:
Simulation
417 / 1260
ID:
KPR.2010.11.29.002
Title:
Incorrect code/compilable
418 / 1260
ID:
KPR.2010.11.29.003
Title:
Modelling
Description: A TargetLink-compliant Simulink library contains port blocks that are enhanced
for TargetLink. The library is cleared from TargetLink with the "Keep TL data
for re-preparation" option enabled. Afterwards, the library is re-prepared for
TargeLink with the "Restore saved TargetLink block data" option enabled. This
means that data saved during clearing the library are restored, and ports that
had been enhanced are re-enhanced with the saved block data. However, Simulink
ports remain un-enhanced and their block data are thus lost.
Workaround: A pre preparation hook function fixes the problem. Code:
if strcmpi(get_param(bdroot(hSubSystem),'BlockDiagramType'),'Library')
hSavedDataPorts = [ ...
find_system(hSubSystem,'LookUnderMasks','on','RegExp','on','BlockType','Inport',
'tag','{.*')
find_system(hSubSystem,'LookUnderMasks','on','RegExp','on','BlockType','Outport'
,'tag','{.*')];
m = tl_enhance_block(hSavedDataPorts,struct('bRestoreTLData',1));
ds_error_register(m);
end
The problem is fixed by using the following patch or later patches:
TargetLink 3.2p1
ID:
KPR.2010.11.29.004
Title:
Incorrect code/compilable
419 / 1260
420 / 1260
421 / 1260
ID:
KPR.2010.11.29.005
Title:
Utility
422 / 1260
ID:
KPR.2010.11.29.006
Title:
Incorrect code/compilable
423 / 1260
ID:
KPR.2010.11.30.001
Title:
API
ID:
KPR.2010.11.30.002
Title:
Incorrect code/compilable
426 / 1260
ID:
KPR.2010.11.30.003
Title:
Incorrect code/compilable
ID:
KPR.2010.11.30.004
Title:
Incorrect code/compilable
Description: To implement efficient vector code TargetLink generates forloops for blocks
427 / 1260
429 / 1260
ID:
KPR.2010.11.30.005
Title:
Incorrect code/compilable
430 / 1260
ID:
KPR.2010.12.01.001
Title:
Incorrect code/compilable
ID:
KPR.2010.12.01.002
Title:
Simulation
431 / 1260
ID:
KPR.2010.12.01.003
Title:
ID:
KPR.2010.12.01.004
Title:
Incorrect code/compilable
432 / 1260
ID:
KPR.2010.12.01.005
Title:
Incorrect code/compilable
433 / 1260
ID:
KPR.2010.12.02.001
Title:
434 / 1260
ID:
KPR.2010.12.02.002
Title:
435 / 1260
ID:
KPR.2010.12.03.001
Title:
Simulation
436 / 1260
ID:
KPR.2010.12.03.002
Title:
Modelling
ID:
KPR.2010.12.03.003
Title:
User interface
437 / 1260
ID:
KPR.2010.12.03.005
Title:
438 / 1260
ID:
KPR.2010.12.07.001
Title:
Incorrect code/compilable
439 / 1260
ID:
KPR.2010.12.07.002
Title:
Simulation
Description: It has always been difficult to reliably detect buses with only
one signal. In
MATLAB R2006b and earlier, it was necessary to add a Bus
Creator block to make
sure that TargetLink treats single-signal buses as actual bus
signals. This is
not necessary with later MATLAB/Simulink versions.
However, if a single-signal bus runs into a TargetLink
subsystem in which its
signal name is needed (for example, by a Bus Creator), the
model cannot be
initialized in SIL/PIL simulation modes, but Simulink issues an
unknown signal
name error message. MIL simulation and code generation,
however, still work.
Workaround: Avoid to pass single-signal buses into TargetLink subsystems.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.1p6
440 / 1260
ID:
KPR.2010.12.07.004
Title:
ID:
KPR.2010.12.07.005
Title:
User interface
441 / 1260
ID:
KPR.2010.12.07.006
Title:
Incorrect code/compilable
442 / 1260
ID:
KPR.2010.12.07.007
Title:
Simulation
ID:
KPR.2010.12.07.008
Title:
Incorrect code/compilable
}
if "b" has default variable class or a user variable class with
set ERASABLE
Optimization property and
if (cond) {
b = a + 5;
c = b;
...
}
if "b" has a user variable class with set MOVABLE and unset
ERASABLE
Optimization property or if "b" is used more than once in the
"then branch".
If there is a redefinition of "a" between the assignment to "b"
and the start of
the then branch, none of these optimizations may be
performed:
b = a + 5;
a = new_a;
if (cond) {
c = b;
...
}
If this redefinition of "a" takes place in code stemming from
inlining of a
function (that is output if the Code Generator option
InliningThreshold is set
to 0) and the inlined part immediately precedes the if or switch
statement
controlling the conditionally executed target control flow
branch, then it is
possible that TargetLink erroneously moves the statement "b
= a + 5;" or
eliminates "b":
b = a + 5;
...
/* --- inlined section begin */
...
a = new_a;
...
/* --- inlined section end */
if/switch (cond) {
...
c = b;
...
}
Finding out whether this problem applies requires the
following steps:
- Assign a variable class to "b" that is neither MOVABLE nor
ERASABLE. The
problem vanishes.
- Set InliningThreshold to 0. A function call immediately
precedes the if or
switch statement in the same control flow branch as the
assignment to "b" into
which "a + 5" or "b = a + 5" are moved. The called function or
one of the
444 / 1260
445 / 1260
ID:
KPR.2010.12.07.009
Title:
ID:
KPR.2010.12.07.010
Title:
Incorrect code/compilable
{
Sa1_Gain[Aux_S32] = Sa1_In[Aux_S32];
Sa1_Gain2[Aux_S32] = Sa1_Gain[Aux_S32];
}
Incorrect code because of a not initialized loop counter
variable or a fatal
error like
Fatal #10008: Subsystem/Subsystem1/Gain1 Internal error.
Error code:
TlCVSQSOReplacer (number). Contact dSPACE's technical
support team.
may come up, if following conditions are met:
- the function for a subsystem is inlined into another function
-- AND -- the inlined subsystem uses vector inputs and vector outputs
for its interface
-- AND -- the loops resulting from those interface vectors are merged
with loops that
are created for the surrounding subsystem
-- AND -- not all statements from the inlined function can be merged
with a loop from a
block of the surrounding subsystem.
Example:
The subsystem OuterSubsystem has a Gain block
for(Aux_S32 = 0; Aux_S32 < 5; Aux_S32++)
{
Sa1_OuterGain[Aux_S32] = Sa1_OuterIn[Aux_S32];
}
that feeds a subsystem InnerSubsystem that will be inlined
for(Aux_S32 = 0; Aux_S32 < 5; Aux_S32++)
{
Sa2_InnerIn[Aux_S32] = Sa1_OuterGain[Aux_S32];
}
The InnerSubsystem contains a Gain block
for(Aux_S32 = 0; Aux_S32 < 5; Aux_S32++)
{
Sa2_InnerGain[Aux_S32] = Sa2_InnerIn[Aux_S32] * 42;
}
which is followed by a block that doesn't produce a loop that
can be merged with
the other loops.
Sa2_X = ...
This block is then followed by second Gain in the
InnerSubsystem that feeds the
OutPort of its subsystem.
for(Aux_S32 = 0; Aux_S32 < 5; Aux_S32++)
{
Sa2_InnerOut[Aux_S32] = Sa2_InnerGain2[Aux_S32];
}
The inlined InnerSubsystem is followed by a Gain in the
surrounding subsystem
447 / 1260
448 / 1260
ID:
KPR.2010.12.08.001
Title:
Simulation
Description: Wrong scaling data is used for logging and plotting a variable
in a SIL/PIL
simulation, if all of the following conditions are met:
- It is the first logged variable in the code generated for the
TargetLink
subsystem
-- AND -- the model contains a TargetLink Custom Code block which
is located outside of
this TargetLink subsystem
-- AND --- this Custom Code block is running in MIL mode (it is either
located in a
TargetLink subsystem in MIL mode or outside of a TargetLink
subsystem)
-- AND -- no TargetLink simulation block with logging capabilities is
connected to the
Custom Code blocks outport
This wrong scaling data can result in following effects:
- The plot of the affected variable has a correct shape but a
wrong numeric
range
- Wrong error messages concerning scaling property
inconsistencies appear during
simulation. Some examples of possible error messages:
--- "TLDS error: Invalid lower constrained limit!"
--- "TLDS error: Invalid LSB value!"
- The wrong error message "TLDS error: Problem with DD
Synchronization. Please
check DD object references." appears
Remark: The calculated simulation values for this block
(respectively it's
variable) are not affected by this problem, only the logging
data. That means,
consecutively executed blocks (respective their variables) get
correct
simulation values.
Workaround: Following workarounds can be used alternatively:
- Activate logging for the last output signal of the Custom
Code block
- Connect a TargetLink block with logging capabilities (e.g a
TargetLink Gain
block) between the Custom Code block and the consecutively
TargetLink subsystem
449 / 1260
ID:
KPR.2010.12.09.001
Title:
Incorrect code/compilable
450 / 1260
ID:
KPR.2010.12.14.001
Title:
Incorrect code/compilable
451 / 1260
ID:
KPR.2010.12.15.001
Title:
Modelling
452 / 1260
ID:
KPR.2010.12.15.002
Title:
Incorrect code/compilable
453 / 1260
ID:
KPR.2010.12.15.003
Title:
Simulation
454 / 1260
ID:
KPR.2010.12.15.004
Title:
ID:
KPR.2010.12.15.005
Title:
455 / 1260
ID:
KPR.2010.12.15.006
Title:
Utility
Description: In case A2L import is called via the MATLAB API command
err = dsdd('Import','Format','A2L','File', <fileToBeImported>)
the import aborts with error 8412 or 8418.
This happens if these following conditions holdy:
- The file to be imported resides in deep nested directory
-- AND -- The MATLAB current working directory is the directory where
the file to be
imported resides
-- AND -- The file to be imported is specified only by its name
Workaround: - Specify the file to be imported with its full path
-- OR -- Import the A2L file via the Data Dictionary Manager > File >
Import > from A2L
file
456 / 1260
ID:
KPR.2010.12.15.007
Title:
Description: If two Lookup Table blocks have the same settings and differ
only in their axis
values, the Code Generator generates the same lookup
function for both.
Moreover, the same typedef is generated for the map
structure. If the
corresponding axes of the two Lookup Table blocks differ in
their dimension,
this usually is not a problem, since the typedef only specifies
pointers for the
axes. However, if a record layout with DIRECT addressing
mode is used, the
dimension has to be different for the two typedefs. Since the
names are the same
for both of the typedef and the lookup function, this leads to
some errors
during code generation, e.g.:
Error #17153: Subsystem/Look-Up Table1:
An initial value is to be copied from variable x_table to variable
x_table. The
variables differ in data type dimensions.
Error #15511: Subsystem/Look-Up Table:
Found Int8[11] type for component x_table of a structure with
MAP_Tab1DS0I2T1563_a type. The typedef of
MAP_Tab1DS0I2T1563_a defines the
component type of x_table as Int8[12] (Source =
Subsystem/Look-Up Table).
Workaround: Set the TypedefName property of the Record Layout to
"MAP_$(FunctionName)_$S_$B"
and the LookupFunctionName to "$(FunctionName)_$S_$B".
Note that this leads to
different lookup functions for each lookup table block in the
model, which may
be highly inefficient.
To reduce the inefficiency use a name witch has coded the
number of axis points
in there names. i.e. LUT1DNX8 for an 1D Lookup-Table block
with 8 axis points.
For a 2D Lookup-Table Block you have to consider the x and
the y axis i.e.
LUT2DNx8Ny7.
457 / 1260
ID:
KPR.2010.12.15.008
Title:
Incorrect code/compilable
458 / 1260
ID:
KPR.2010.12.16.001
Title:
Utility
459 / 1260
ID:
KPR.2010.12.17.001
Title:
460 / 1260
ID:
KPR.2011.01.06.001
Title:
Incorrect code/compilable
ID:
KPR.2011.01.10.001
Title:
Utility
461 / 1260
ID:
KPR.2011.01.11.001
Title:
Simulation
462 / 1260
ID:
KPR.2011.01.13.001
Title:
Incorrect code/compilable
ID:
KPR.2011.01.13.002
Title:
Incorrect code/compilable
ID:
KPR.2011.01.24.001
Title:
464 / 1260
TargetLink 2.2 2.2.1 2.3 2.3.1 3.0 3.0.1 3.1 3.2 3.3 3.4 3.5
Class:
Incorrect code/compilable
466 / 1260
ID:
KPR.2011.01.24.002
Title:
Utility
467 / 1260
ID:
KPR.2011.01.25.001
Title:
API
ID:
KPR.2011.01.27.001
Title:
Simulation
468 / 1260
ID:
KPR.2011.02.14.001
Title:
Description: The code generation for a referencing system may fail with
error message 08905,
if the following conditions are fulfilled:
- the strings NaN, PosInf or NegInf are used in the
DataDictionary for
specifying the Value/Min/Max property of Variable objects
-- OR -- the strings NaN, PosInf or NegInf are used in the
DataDictionary for
specifying the Min/Max property of a Constraints object of a
Typedef
-- AND-- the object is part of the interface of a referenced system
Workaround: Do not use the string constants NaN, PosInf and NegInf for
properties of objects
that are part of the interface of a referenced system.
The problem is fixed by using the following patches or later
patches:
TargetLink 3.1p8
TargetLink 3.2p1
ID:
KPR.2011.02.14.002
Title:
Simulation
the model.
- One use is logged while another use isn't.
Example:
The output of a Sum block is logged, the Sum block drives a
data input of a
Switch block. Without optimization, the following code is
generated.
Sum = ...;
LOG_VAR(..., Sum);
...
if (Cond != 0) {
Switch = Sum;
} else {
...
}
Optimization leads to
...
if (Cond != 0) {
Sum = ...;
LOG_VAR(..., Sum);
Switch = Sum;
} else {
...
}
If "Sum" drives a Rescaler block that in turn drives the Switch
block, the
Rescaler output is merged via MERGEABLE Optimization
property with "Sum", and
the output of "Sum" is logged while the output of the Rescaler
is not logged,
then optimization either produces the above code or the
following
LOG_VAR(..., Sum);
...
if (Cond != 0) {
Sum = ...;
Switch = Sum;
} else {
...
}
This is subject to internal order during code generation.
The code generator option "DoNotMoveIfLogged" does not
affect this behavior.
If the code generator option
"EnableBlockDiagramBasedSwitchOptimization" is
enabled (default setting since its introduction in TargetLink
2.3), then this
usually only occurs if the moving takes place across atomic
subsystem, function,
or Stateflow chart borders, e.g. if a block output is merged with
a Stateflow
chart input variable and the conditionally executed control flow
branch is
modeled in Stateflow.
470 / 1260
ID:
KPR.2011.02.25.001
Title:
Modelling
471 / 1260
ID:
KPR.2011.03.02.001
Title:
Incorrect code/compilable
472 / 1260
ID:
KPR.2011.03.02.002
Title:
User interface
473 / 1260
ID:
KPR.2011.03.02.004
Title:
474 / 1260
ID:
KPR.2011.03.03.001
Title:
Modelling
475 / 1260
ID:
KPR.2011.03.03.002
Title:
Error #17253 for the same initial value in block dialog and for
Data Dictionary Variable object
476 / 1260
ID:
KPR.2011.03.03.003
Title:
Utility
477 / 1260
ID:
KPR.2011.03.03.004
Title:
Utility
478 / 1260
ID:
KPR.2011.03.03.005
Title:
Modelling
479 / 1260
ID:
KPR.2011.03.03.006
Title:
Utility
ID:
KPR.2011.03.03.007
Title:
Simulation
480 / 1260
ID:
KPR.2011.03.03.008
Title:
Utility
481 / 1260
ID:
KPR.2011.03.03.009
Title:
Utility
482 / 1260
ID:
KPR.2011.03.03.010
Title:
Simulation
483 / 1260
ID:
KPR.2011.03.03.011
Title:
Code for Custom Look-Up Table map struct does not compile
Description: If an user look-up table script uses a typedef for a table map
struct with
TargetLink property 'CreateTypedef' set to 'no' and if also the
template code of
the user look-up table script does not contain an include
directive for a file
which contains the type definition of the map struct, then
TargetLink may
generate incorrect code that cannot be compiled.
The compile error results from a duplicate 'struct' keyword
inside cast
operations to the anonymous map struct type. Especially if
such cast operations
are generated inside conditions of control statements, then the
duplicate
'struct' keyword will always occur, like in this example:
if (A < Tab1DS16I80T31798_a((struct struct
MAP_Tab1DS16I80T31798_a_tag *) ,
B)) {
...
}
Workaround: 1) Either Set the 'CreateTypedef' property of the map struct
type to 'yes'
2) or insert a proper include directive in the template code.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.2p1
ID:
KPR.2011.03.03.012
Title:
Description: If a user specified file has the base name "compiler" code
generation aborts
with the error #17155: "Two different TargetLink default files
which have the
same base name 'compiler'.h found."
Workaround: The base name "compiler" is reserved by TargetLink and must
not be used as the
base name for a user sepcified file.
484 / 1260
ID:
KPR.2011.03.03.013
Title:
Incorrect code/compilable
ID:
KPR.2011.03.03.014
Title:
Incorrect code/compilable
ID:
KPR.2011.03.03.015
Title:
Utility
486 / 1260
ID:
KPR.2011.03.03.016
Title:
Incorrect code/compilable
ID:
KPR.2011.03.08.001
Title:
487 / 1260
ID:
KPR.2011.03.18.001
Title:
Utility
488 / 1260
ID:
KPR.2011.03.21.001
Title:
Incorrect code/compilable
489 / 1260
ID:
KPR.2011.03.21.002
Title:
Utility
Description: SystemDesk exports data constraints for real data types since
version SystemDesk
3.0p2. These data constraint objects contain lower and upper
limits, with the
infinite value flag.
In an AUTOSAR XML file this looks like:
<PHYS-CONSTRS>
<LOWER-LIMIT INTERVAL-TYPE="INFINITE" />
<UPPER-LIMIT INTERVAL-TYPE="INFINITE" />
</PHYS-CONSTRS>
TargetLink throws the error message 8768 for floating-point
data types that
references these data constraints:
E08768: Error during AUTOSAR import
Error detected in attempt to import REAL-TYPE
Float_with_NaN. The referenced
object DataTypes/DC_Float_with_NaN does not exist.
The problem is due to the infinite flag which implies that no
value will be
written to the element itself. TargetLink interprets this as a
data constraint
without any data and rejects it.
Workaround: No workaround available.
The problem is fixed by using the following patches or later
patches:
TargetLink 3.1p7
TargetLink 3.2p1
490 / 1260
ID:
KPR.2011.03.21.003
Title:
Utility
ID:
KPR.2011.03.30.001
Title:
491 / 1260
ID:
KPR.2011.04.19.001
Title:
Incorrect code/compilable
Description: For mod and rem operations with floating-point types a range
calculated during
code generation is wrong. This may lead to wrong code for the
operation itself
as well as for successor operations.
A wrong range is calculated when a mod or rem operation has
- at least one floating-point input argument
-- OR -- a floating-point result.
Workaround: - Try to avoid mod/rem operations with floating-point arguments
and
floating-point results
-- OR -- Set a variable class with the following properties at the result
variable of
the Math block with mod/rem function:
- Scope=global OR (Scope=local AND Storage=Static)
- Optimization.SCOPEREDUCIBLE=OFF
- Optimization.ERASEABLE=OFF
-- OR -- To omit the global/static variable from the previous
workaround: For
TargetLink < 3.0, place an additional TargetLink Outport block
behind the Math
block with mod/rem function. For TargetLink >= 3.0, place an
additional
TargetLink Rescaler block behind the Math block with mod/rem
function.
Set the following properties at the variable classes of the Math
block with
mod/rem function and the additional Outport/Rescaler block:
- Math.VariableClass.Scope=global OR (Scope=local AND
Storage=Static)
- Math.VariableClass.Optimization.SCOPEREDUCIBLE=OFF
- Math.VariableClass.Optimization.ERASEABLE=ON
- Outport/Rescaler.VariableClass.Scope=local
Outport/Rescaler.VariableClass.Optimization.ERASEABLE=OFF
For mod/rem operations in Stateflow, use one of the
workarounds above for the
result variable of the mod/rem operation.
492 / 1260
ID:
KPR.2011.04.21.001
Title:
Utility
493 / 1260
ID:
KPR.2011.04.26.001
Title:
Simulation
494 / 1260
ID:
KPR.2011.04.26.002
Title:
495 / 1260
ID:
KPR.2011.04.26.003
Title:
Incorrect code/compilable
ID:
KPR.2011.04.26.004
Title:
Incorrect code/compilable
496 / 1260
ID:
KPR.2011.04.26.005
Title:
Modelling
497 / 1260
ID:
KPR.2011.04.26.006
Title:
API
498 / 1260
ID:
KPR.2011.04.26.007
Title:
Utility
499 / 1260
ID:
KPR.2011.04.26.008
Title:
Utility
ID:
KPR.2011.04.26.009
Title:
Utility
ID:
KPR.2011.04.26.010
Title:
Description: Code generation aborts with fatal error #10007 if the following
conditions are
fulfilled:
- Code generation mode is "AUTOSAR".
- A Model block is placed inside a subsystem that is specified
as an AUTOSAR
runnable. The Model block resides on the same hierarchy
level as the Runnable
block or on any hierarchy level below. The runnable belongs
to a software
component that has a restart runnable specified. The
referenced model contains a
variable whose variable class property "RestartFunctionName"
is set to
"default".
- The name of the Model block (including the block path) is the
first one in a
sorted list of names of all block within the runnable subsystem
and below. The
following blocks are not taken into account here: Mux, Demux,
Bus Creator and
Bus Selector.
- Code is generated for a code generation unit where the
Model block resides in.
Workaround: Respecify the model in a way that one condition is not fulfilled,
e.g. rename
the Model block (by adding a prefix "z_"), or by inserting a
Rescaler block with
a suitable name (e.g. "A_Rescaler").
501 / 1260
ID:
KPR.2011.04.27.001
Title:
502 / 1260
ID:
KPR.2011.04.27.002
Title:
Utility
ID:
KPR.2011.04.27.003
Title:
ID:
KPR.2011.04.27.004
Title:
Modelling
ID:
KPR.2011.04.27.005
Title:
Utility
504 / 1260
ID:
KPR.2011.04.27.006
Title:
505 / 1260
ID:
KPR.2011.04.27.007
Title:
Code generation may abort without a proper error message if instances of a reused
system or AUTOSAR ClientPort blocks are different
Description: TargetLink's code generation may abort without a proper error message if
instances of a reused system are different. This violates the concept of
function reuse, for which only one function should generated in the production
code. Thus all instances in the model must be identical. But for example by
(accidently) using parameterized links, the instances of a reused library system
may differ.
The problem may also happen when using the same Port and Operation in multiple
AUTOSAR ClientPort blocks (from the TargetLink AUTOSAR library prior to
TargetLink version 3.1).
If such a problem is present in the model then the Code Generator may abort with
different fatal internal errors like #10007 or #99999. For example like in the
following:
Fatal #10007:
Internal error. Error code:
[...]\Core\XcgIvTransformer\Sources\XcgIvTransformer\FcnReuseAnalysis\FcnReuseVa
lidator\TlCIvFcnReuseInstanceVisitor.cpp_ 490. Contact dSPACE's technical
support team.
Workaround: 1) Make sure all reused system instances in the model are identical. E.g. are
not parameterized links.
-- OR -2) If possible avoid multiple ClientPort blocks for the same Port and Operation.
506 / 1260
ID:
KPR.2011.04.27.008
Title:
ID:
KPR.2011.04.27.009
Title:
507 / 1260
508 / 1260
509 / 1260
ID:
KPR.2011.04.27.010
Title:
Simulation
510 / 1260
ID:
KPR.2011.04.28.001
Title:
Incorrect code/compilable
511 / 1260
ID:
KPR.2011.04.28.002
Title:
Incorrect code/compilable
512 / 1260
ID:
KPR.2011.04.28.003
Title:
Incorrect code/compilable
ID:
KPR.2011.04.29.001
Title:
Simulation
513 / 1260
ID:
KPR.2011.05.03.001
Title:
Incorrect code/compilable
Description: The Code generated for an Index Search block is wrong for
floating-point data
types if
- the axis is using a float data type AND
- the fraction is using an integer data type.
In this case the code generator creates a superfluous
multiplication which leads
to wrong calculation results. The the calculated fraction value
is always zero.
For example the generated incorrect code (inside the index
search routine) could
look like this:
*fraction = (uint8) (Aux_F32 * 256.F);
correct code would be:
*fraction = (uint8) Aux_F32;
Workaround: Also use floating-point data type for the fraction.
The problem is fixed by using the following patches or later
patches:
TargetLink 3.1p10
TargetLink 3.2p5
514 / 1260
ID:
KPR.2011.05.19.001
Title:
515 / 1260
ID:
KPR.2011.05.20.001
Title:
Incorrect code/compilable
516 / 1260
ID:
KPR.2011.05.27.001
Title:
Utility
517 / 1260
ID:
KPR.2011.05.27.004
Title:
Utility
ID:
KPR.2011.05.27.005
Title:
Simulation
518 / 1260
ID:
KPR.2011.06.01.001
Title:
Incorrect code/compilable
519 / 1260
ID:
KPR.2011.06.30.001
Title:
Incorrect code/compilable
ID:
KPR.2011.07.06.001
Title:
Utility
Description: TargetLink upgrade may fail if a Custom Code block's Custom Code file
property
is changed by the initialization commands of a masked subsystem. As
Simulink
will execute the initialization commands during the upgrade, this can lead to
problems with S-Functions for the Custom Code block. Then the upgrade will
fail
with errors like this:
*** E03210: UPGRADE FAILURE:
*** Failed to upgrade block
***
'CustomCodeUpgrade/Subsystem/Subsystem/Subsystem/SsWithInit/Custom
Code
Block'
*** MATLAB error message was:
*** Error using ==> tl_upgrade>FcnUpgradeCustomCode at 2848
*** For S-function 'MyCustomCode_flp', the number of defined parameters,
2, does
not match the number of parameters on the dialog of
'CustomCodeUpgrade/Subsystem/Subsystem/Subsystem/SsWithInit/Custom
Code Block',
3. These two values must be identical.
*** F03250: UPGRADE FINISHED WITH ERRORS:
*** The system
*** 'CustomCodeUpgrade'
*** was upgraded with errors. See error messages above.
Note: in general be careful when using initialization commands, i.e. make
sure
to check error codes from API commands etc. - this increases the possibility
to
detect problems.
Workaround: If you encounter such errors, following workarounds may be helpful,
depending on
the actual situation:
1) Delete old Custom Code S-Function DLLs before starting the upgrade,
and then
let tl_upgrade() rebuild them during the upgrade.
-- OR -2) Keep Simulink from executing the mask initialization commands, e.g. by
removing it in the mask at the beginning of the upgrade process and add it
again
after upgrade finished (e.g. by using tl_post_upgrade_hook.m and
tl_post_upgrade_hook.m functions).
-- OR -3) Try to avoid using mask initialization commands where possible, e.g.
maybe
Mask Parameter Dialog Callbacks can be used instead to change TargetLink
Custom
Code block properties.
521 / 1260
ID:
KPR.2011.07.06.002
Title:
Utility
522 / 1260
ID:
KPR.2011.07.26.002
Title:
Utility
Description: Comparing Data Dictionary project files with include files using
the Merge
Explorer does not show differences when the path to a
included file is defined
using the macro %MainDDDir%.
In such a case the Merge Explorer does not show any of the
Data Dictionary
objects contained in the included file of the compared project
file. This leads
to incorrect display of differences between the two compared
project files and a
merge of objects in the included file is impossible.
Workaround: Use the dsdd_compare command in MATLAB to see the
differences (no merge
possible).
-- OR -Separately compare the included files with the Data Dictionary
Merge Explorer.
ID:
KPR.2011.07.26.003
Title:
User interface
523 / 1260
ID:
KPR.2011.08.23.001
Title:
Incorrect code/compilable
524 / 1260
ID:
KPR.2011.08.23.002
Title:
Incorrect code/compilable
525 / 1260
ID:
KPR.2011.08.24.001
Title:
Incorrect code/compilable
526 / 1260
ID:
KPR.2011.08.24.002
Title:
Incorrect code/compilable
ID:
KPR.2011.08.24.003
Title:
527 / 1260
TargetLink 2.2 2.2.1 2.3 2.3.1 3.0 3.0.1 3.1 3.2 3.3 3.4 3.5
Class:
Incorrect code/compilable
"calls" to macros)
with internal states or global communication or unknown
contents or operations
with side effect.
AND
- There must be a subsequent conditionally executed control
flow branch
containing all reading accesses of "b" (or its elements that are
defined in the
original if / switch statement).
AND
- There are no other value assignments to "b" / the respective
elements of "b".
Workaround: 1. Switching on the Code Generator option
'EnableBlockDiagramBasedSwitchOptimization' (TargetLink
>= 2.3, this is also the
default setting) decreases the likelihood of this kind of error,
as it activates
further mechanisms inside the Code Generator.
OR
2. Assigning a variable class without MOVABLE Optimization
property to the
variable taking the role of "b". If this is not directly possible,
then
introducing an intermediate variable that has such a variable
class, e.g. by
inserting a Gain block with gain factor 1 in the model.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.2p4
529 / 1260
ID:
KPR.2011.08.24.004
Title:
Simulation
Description: The problem only occurs if you drive the "Interpolation (n-D)
Using Prelook-Up"
not directly with a "PreLook-Up Index Search" block. In such a
case, because of
a wrong TLC file, driving the block with an input signal outside
of the allowed
ranges, leads to wrong MIL simulation behavior when using
the Simulink/RTW
generated code for simulation.
For example driving the Interpolation (n-D) Using Prelook-Up
block with an index
signal smaller than zero, the value has to be saturated to zero
by the code that
is generated by Simulink, but there is an error in the saturation
code so that
the inputs may become out of range.
The allowed input signal ranges are:
Index signal = [0 .. number of axis points]
Fraction signal = [0 .. 1]
Note: such code is automatically generated by Simulink and
used implicit for
blocks inside of a referenced model, or by running a MIL a
simulation in the
accelerator mode.
Workaround: 1) Add a saturation block to limit the fraction and the index
signal block
inputs to their allowed ranges.
-- OR -2) If you are not using "Common output for index and fraction"
and you are using
TargetLink 3.0 or newer with Matlab R2006b or higher, please
use the
"Interpolation Using Prelookup" and the "Prelookup" blocks
instead as found in
the tllib. These blocks are not affected, only the old blocks as
described
above. Note: since TL 3.0 these old "Interpolation (n-D) Using
Prelook-Up" and
"PreLook-Up Index Search" have been moved to the
tl_needs_upgrade.
ID:
KPR.2011.08.24.005
Title:
TargetLink 2.2 2.2.1 2.3 2.3.1 3.0 3.0.1 3.1 3.2 3.3 3.4 3.5
Class:
Utility
531 / 1260
532 / 1260
ID:
KPR.2011.08.24.007
Title:
Simulation
Description: It is possible to start more than one simulation at once via the
"Run all and
produce coverage" command of the Simulink Signal Builder
block.
In MATLAB >= R2010b, starting simulations in this way leads
to the error message
Error reported by S-function 'tl_mil_handler76_s' in '<a
href="matlab:open_and_hilight_system (...)">.../MIL
Handler</a>':
Internal error: Error invoking
tlds_copy_data("logSignalList",<blockPath>)
if the signal history of at least one block is to be logged during
TargetLink
MIL simulation.
NOTE: TargetLink overflow detection and min/max logging are
not affected by this
problem.
Workaround: 1) If signal history logging is required during MIL simulation in
MATLAB >=
R2010b, starting simulations via Signal Builder block
command "Run all and
produce coverage" must be avoided. Note that Simulink itself
does not support
logging in this case. Instead "normal" simulations can be
started separately via
Signal Builder block "Start simulation" button for each desired
Group.
2) Before using the command to produce the coverage data,
set TargetLink's
Global Logging option to "Do not log anything". Later switch
the option back to
the desired value (e.g. "Log according to block data").
533 / 1260
ID:
KPR.2011.08.24.008
Title:
User interface
534 / 1260
ID:
KPR.2011.08.24.009
Title:
Incorrect code/compilable
535 / 1260
ID:
KPR.2011.08.24.010
Title:
Generated A2L file contains wrong addresses if bit fields are not "unsigned int"
Utility
Description: The ECU_ADDRESS in an A2L file can be wrong if a bit fields are used in
structures and the type of a bit field is not ?unsigned int? . For the generated
code the acutal C code type of a bit field can be specified in TargetConfig.xml
file which is located in
%DSPACE_ROOT%\Matlab\Tl\SrcFiles\<mycontroller>\<compiler>\TargetConfig.xml
at
element Bitfield->CodedType.
Note: In ANSI C a bit fields is always ?unsigned int?, but some cross compiler
supports bitfields with the type ?unsigned char?.
Please see the following example: All components of a structure have the
variable class ?DISP?. For the first structure ?MyStruct_NotOk? the
ECU_ADDRESS
of elements MyBfStruct and all following elements have wrong addresses.
The addresses of second structure ?MyStructOk? are for all elements correct.
struct MyStruct_NotOk {
UInt8 c_UInt8;
struct MyBfStruct
{
unsigned char bf_1 : 1;
unsigned char bf_2 : 1;
unsigned char bf_3 : 1;
}
UInt16 c_UInt16;
}
struct MyStructOk {
UInt8 c_UInt8;
struct MyBfStruct
{
unsigned int bf_1 : 1;
unsigned int bf_2 : 1;
unsigned int bf_3 : 1;
}
UInt16 c_UInt16;
}
Workaround: Keep the CodedType of a bit field to "unsigned int".
536 / 1260
ID:
KPR.2011.08.24.011
Title:
Code Generation aborts with a Fatal #99999 if a nonenhanced Inport is driven by a bus signal with constant and
non-constant values
ID:
KPR.2011.09.06.001
Title:
Incorrect code/compilable
# if COND
...
# endif
Unfortunately, the optimization leads to an internal
representation that leads
to an output of
# if COND
...
# else
# endif
and treats the code as if only
...
were present.
This leads to unjustified reduction of output variables to
automatic storage
duration or elimination of these output variables without
consideration of their
initialization behavior and initial values.
2) Wrong Condition
TargetLink is supposed to transform
# if COND
/* Nothing */
# else
...
# endif
to
# if !COND
...
# endif
Unfortunately, the optimization leads to an internal
representation that leads
to an output of
# if !COND
# else
...
# endif
and treats the code as if only
...
were present.
The most important problem is that this leads to the opposite
of the intended
behavior with respect to conditional compilation.
Apart from that, this leads to unjustified reduction of output
variables to
automatic storage duration or elimination of these output
variables without
consideration of their initialization behavior and initial values.
As one example, a variable which is used in the remaining
control flow branch
and needs static storage as well as an initialization will be
optimized to local
scope without any initialization.
538 / 1260
ID:
KPR.2011.09.19.001
Title:
Incorrect code/compilable
539 / 1260
540 / 1260
ID:
KPR.2011.09.21.001
Title:
Simulation
541 / 1260
ID:
KPR.2011.09.26.001
Title:
Incorrect code/compilable
542 / 1260
ID:
KPR.2011.09.26.002
Title:
Simulation
543 / 1260
ID:
KPR.2011.09.26.003
Title:
Utility
544 / 1260
ID:
KPR.2011.10.11.001
Title:
Incorrect code/compilable
Description: If the SwitchOn value is equal to the SwitchOff value for the
Relay block then
TargetLink generates code that differs from the Simulink
simulation behavior as
follows:
If the input singal of the Relay block is equal to SwitchOn or
SwitchOff
respectively, then Simulink holds OutOn (MIL) but the
generated code OutOff
(SIL/PIL).
Workaround: Avoid equal values for SwitchOn and SwitchOff
OR
use a Switch block instead of a Relay block to model with
clear semantics.
545 / 1260
ID:
KPR.2011.10.17.001
Title:
Incorrect code/compilable
ID:
KPR.2011.10.17.002
Title:
Incorrect code/compilable
546 / 1260
547 / 1260
ID:
KPR.2011.10.18.001
Title:
Utility
548 / 1260
ID:
KPR.2011.10.18.002
Title:
Simulation
549 / 1260
ID:
KPR.2011.10.18.003
Title:
Simulation
ID:
KPR.2011.11.08.003
Title:
550 / 1260
ID:
KPR.2011.11.15.001
Title:
Description: Code generation may terminate with an error message like the
following:
Error #17066: Cyclic includes detected: subsystem.h, udt_a.h
Type <structure type> is defined in 'udt_a.h', also used in
'subsystem.h'.
This may occur if
- a nested bus with at least 3 tiers is used, i.e. a bus which
contains a bus
which contains another bus AND
- in the associated bus port block(s) "Create bus structure"
property is enabled
for the complete bus hierarchy AND
- the types of the bus structures are implicit, i.e. either the
predefined type
IMPLICIT_STRUCT or user-defined struct types without
components AND
- the bus is passed by reference, i.e. the outermost bus has a
variable class of
FCN_REF_ARG or similar.
Workaround: 1) Set the code generator option 'StrictTypedefPlacement' to
'off'. This option
can be found via TargetLink Main Dialog > Advanced Tab >
All Options... > Code
Generation or set via in a pre_codegen_hook function.
-- OR -2) If the outermost bus structure type is a component-less
struct type: Set its
ModuleRef property to some Module (which may have to be
created for that
purpose).
551 / 1260
ID:
KPR.2011.11.15.002
Title:
User interface
552 / 1260
ID:
KPR.2011.11.18.001
Title:
Incorrect code/compilable
553 / 1260
ID:
KPR.2011.11.18.002
Title:
Incorrect code/compilable
Description: Using one of the blocks Bitwise Operator, Blocks Bit Clear, Bit
Set, Shift
Arithmetic and Extract Bits inside of a function reuse system
and
instance-specific parameter values, the generated code is
wrong and compilable.
Example:
A reused subsystem contains a Bit Set block, the Bit-Index
parameter is set
according to a Mask variable of the reused Subsystem. This
subsystem is used
twice, once with
Bit Index value 1 and once with Bit Index value 2. Then the
resulting code may
look like the following (incorrectly for both code instances the
fixed Bit Index
value 2 is used instead of an instance-specific value):
Void TL_SS(Void)
{
STEP_REUSED(Sa1_InPort1, &(Sa1_OutPort2));
STEP_REUSED(Sa1_InPort1, &(Sa1_OutPort1));
}
static Void STEP_REUSED(UInt16 SREUSED1_InPort,
UInt16 * SREUSED1_OutPort)
{
*(SREUSED1_OutPort) = SREUSED1_InPort | 2;
}
Workaround: - For a Bitwise Operator block with "Use bit mask" enabled
use a Variable Class
with explicit global scope to get correct code.
- Using a Bitwise Operator block with "Use bit mask" disabled
and specification
of the bit mask in a driving Constant block does not lead to the
misbehavior.
- For the blocks Bit Clear, Bit Set und Extract Bits use a
Bitwise Operator
block instead to work around the problem (with workaround
like above).
- The use of a Shift Arithmetic block with "external source"
enabled and
specification of the shift count in a driving Constant block does
not lead to
the misbehavior.
554 / 1260
ID:
KPR.2011.11.18.003
Title:
555 / 1260
ID:
KPR.2011.11.18.004
Title:
Modelling
556 / 1260
ID:
KPR.2011.11.18.005
Title:
Simulation
ID:
KPR.2011.11.18.006
Title:
Incorrect code/compilable
558 / 1260
ID:
KPR.2011.11.21.001
Title:
559 / 1260
ID:
KPR.2011.11.21.002
Title:
User interface
560 / 1260
ID:
KPR.2011.11.28.001
Title:
Incorrect code/compilable
561 / 1260
ID:
KPR.2011.11.29.001
Title:
Incorrect code/compilable
Description: Given a use case that selects one index of a vector that itself
is a copy of a
permutation or subset of another vector, TargetLink may build
an inccorect index
access in the generated code.
Example:
The indices stored in "Index[]" are selected from array "a" and
stored in array
"b". A subsequent operation uses only an arbitrary index "i" of
"b", e.g. based
on a calculation:
for (Aux_S32 = 0; Aux_S32 < 10; Aux_S32) {
b[Aux_S32] = a[Index[Aux_S32]];
}
...
do {
...
i = ...;
condition = f(b[i]);
...
} while (condition && (iter <= 9));
In this case, TargetLink can eliminate "b" but instead of
condition = f(a[Index[i]]);
TargetLink keeps the original index variable:
condition = f(a[Index[Aux_S32]]);
or omits "Index":
condition = f(a[i]);
Workaround: Make sure
- that the selection "b[i]" cannot take place (by inserting a
Rescaler block
with a non-ERASABLE variable class for the output variable)
OR
- that "b" has a variable class that is not ERASABLE
Note: ERASABLE is specified via the Optimization property of
a variable class.
562 / 1260
ID:
KPR.2011.11.29.002
Title:
Utility
ID:
KPR.2011.12.05.002
Title:
Incorrect code/compilable
563 / 1260
ID:
KPR.2011.12.07.001
Title:
Modelling
ID:
KPR.2011.12.07.002
Title:
Simulation
564 / 1260
565 / 1260
ID:
KPR.2011.12.07.003
Title:
Simulation
Description: TargetLink Custom Code blocks with state variables that are
vectors and are
initialized by scalars may produce access violations during
MIL/SIL/PIL
simulation.
Workaround: Specify an initial value whose size matches the state
variable's number of
elements.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.3p1
ID:
KPR.2011.12.07.004
Title:
Description: The Code Generator may abort with a fatal error #99999 when
a Variable Class
with AccessFunctionTemplate is used at the Table or Axis
variable of Look-Up
Table block and the 'Generate Map Struct' flag is set.
Note: since TargetLink 3.3 this situation is additionally limited
to
AccessFunctionTemplates which have the Kind ADDRESS,
ADDRESS_BY_PARAMETER or
DIRECT and the FunctionClass property references a class
with Macro = 'on'.
Workaround: 1) Disable 'Generate Map Struct'.
2) Or for TargetLink 3.3 or newer versions choose a Variable
Class for the Table
and Axis variable that does not use an
AccessFunctionTemplate with the properies
mentioned above.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.3p1
566 / 1260
ID:
KPR.2011.12.07.005
Title:
Utility
Description: A production code variable in the A2L file may have a wrong
scaling information
for COMPU_METHOD if the variable
- is a Data Dictionary variable
- AND is a vector
- AND it's Scaling property references 'VOID_SCALING'
- AND the variable references a Typdef object with a
Contraints object
- AND that Constraints object references a Scaling object with
LSB != 2^0 or
Offset != 0.
The scaling in the A2L file is incorrectly LSB = 2^0 and Offset
= 0.
Note: this is only a A2L file problem. The generated
production code is correct
as the Scaling at the Typedef overwrites the Scaling at the
Variable object.
Workaround: Use the same Scaling object for the Data Dictionary Variable
object and for the
Typdef object.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.3p1
ID:
KPR.2011.12.09.001
Title:
Incorrect code/compilable
567 / 1260
Description: If two or more Data Dictionary struct Variable objects have the
same name or a
name macro that results in the same code identifier and are
used in the same
model then TargetLink may internally create only one variable
and issue
confusing error messages like
Error #15505: Component <component> not found in
structured type <type>.
or
Error #17441: The block <block> uses the struct component
<component>. The
struct component is used multiple times. This is not allowed,
since the
component is associated with a variable class that has no
mergeable attribute
set.
Additionally TargetLink does not support the use of a Data
Dictionary struct
variable as template variables. I.e. you can not use name
macros that evaluate
to different values at different places in the model like $S, $I,
etc. so that
multiple instances appear. Unfortunately TargetLink does not
give a proper error
message that this is not supported. Instead TargetLink may
emit one of the
messages above. Please note that the approach of using Data
Dictionary Variable
objects as templates works fine for non-struct variables.
In both situations, i.e. using two or more struct variables with
same code
identifier or using a struct variable as templates, using a
variable class with
Optimization:MERGEABLE at the components of the struct
can lead in rare cases to
wrong code since TargetLink
may generate less struct variables than expected.
Workaround: Make sure that all Data Dictionary struct variables have uniqe
names (the use of
$R is not sufficient) AND do not use Data Dictionary struct
variables as
templates for multiple instances, i.e. do not use name macros
that evaluate to
different values in different locations in the model, like $S, $I,
etc.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.3p3
568 / 1260
ID:
KPR.2011.12.19.001
Title:
Modelling
569 / 1260
ID:
KPR.2011.12.22.001
Title:
Simulation
570 / 1260
ID:
KPR.2012.01.02.002
Title:
Simulation
571 / 1260
ID:
KPR.2012.01.02.003
Title:
Simulation
Description: Description:
While working with TargetLink it may happen that after building
the production
code SIL application or after starting the SIL simulation,
TargetLink reports
one of the following error message:
*** E02241: TLSS ERROR:
*** Error reported by the operating system:
*** Das angegebene Modul wurde nicht gefunden.
*** Cannot load
.\TLSim\<ModelName>\HostPC_<Compiler>\<ModelName>.dll
into the address space!
or
*** E02241: TLSS ERROR:
*** Error reported by the operating system:
*** The specifed module could not be found.
*** Cannot load
.\TLSim\<ModelName>\HostPC_<Compiler>\<ModelName>.dll
into the address space!
This error is issued although the affected file:
.\TLSim\<ModelName>\HostPC_<Compiler>\<ModelName>.dll
exists at the denoted
location.
The circumstances that lead to this error are not exactly
known. In some cases
this problem occured after another program using ActiveX
controls was executed.
Workaround: Contact dSPACE technical support.
The problem is fixed by using the following patches or later
patches:
TargetLink 3.1p10
TargetLink 3.2p5
TargetLink 3.3p1
572 / 1260
ID:
KPR.2012.01.03.001
Title:
Simulation
Description: When building the PIL simulation errors during linking for
MPC5604B TSM with
GreenHills compiler may appear because of unresolved
externals.
The cause of the problem is an incorrect DSFxp library path in
the file
"TsmInfo.xml" for the MPC5604BEVB/GHS51 and
MPC5604BEVB/GHS52.
Note: The linker errors only happen, if the DSFxp Library is
required in the
build process.
Workaround: Open the file " TsmInfo.xml "
"<TL_ROOT>\Matlab\Tl\SimFiles\MPC5604BEVB\GHS51"
(in TL32) or
"<TL_ROOT>\Matlab\Tl\SimFiles\MPC5604BEVB\GHS52" (in
TL33)
and change the property of the value "MyC=" from
"MPC55XXVLE " to "MPC560xBVLE".
Now open the TargetLink Preferences Editor once and close it
to refresh the
configuration (or restart MATLAB). After reopening the
TargetLink Main Dialog
the linker errors should appear anymore.
573 / 1260
ID:
KPR.2012.01.17.001
Title:
Incorrect code/compilable
574 / 1260
ID:
KPR.2012.01.17.002
Title:
Utility
575 / 1260
ID:
KPR.2012.01.17.003
Title:
576 / 1260
ID:
KPR.2012.01.17.004
Title:
577 / 1260
ID:
KPR.2012.01.17.005
Title:
Simulation
578 / 1260
ID:
KPR.2012.01.17.006
Title:
ID:
KPR.2012.01.17.008
Title:
Description: The code generation fails if the Extract Bits block has the
following settings:
- "Bits to extract" = "Range of bits" AND
- for the bit range only one value is specified, e.g. 5 or [5].
In such cases the TargetLink code generation terminates with
the following
error:
Fatal #10020: An internal error (LEDA exception: array::entry
index out of
range) has occurred.
Workaround: Specify the range of bits in the form [start end]. If only one bit
should be
extracted set the same value for start and end, e.g. [5 5].
579 / 1260
ID:
KPR.2012.01.17.009
Title:
User interface
Description: On MATLAB <= R2010a the step 'rescan bus hierarchy' for a
TargetLink busport
dialog crashes if the underlying Simulink port block's option
'Specify
properties via bus object' is enabled but the according input
field for
specifying the bus object is empty.
Workaround: Specify a valid Simulink bus object
or disable the option 'Specify properties via bus object'.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.3p2
580 / 1260
ID:
KPR.2012.02.07.001
Title:
581 / 1260
ID:
KPR.2012.02.07.002
Title:
Modelling
582 / 1260
ID:
KPR.2012.02.07.003
Title:
Simulation
ID:
KPR.2012.02.07.004
Title:
583 / 1260
ID:
KPR.2012.02.07.005
Title:
No warning and no generated code if header file for nonextern subsystem is explicitly included by AddFile block
584 / 1260
ID:
KPR.2012.02.07.006
Title:
Utility
585 / 1260
ID:
KPR.2012.02.07.007
Title:
Description: It is possible that the code generation aborts but the according
error messages
are missing. The problem occurs if the number of Data
Dictionary messages during
code generation exceeds the maximum Data Dictionary
message buffer size
(default: 4096 messages). This buffer is used not only for
collecting error
messages but also internal notes, so that it can grow to that
size during code
generation for large models.
Workaround: The maximum size of the internal Data Dictionary message
buffer can be increased
to avoid this problem. For this the following command can be
used in MATLAB
before starting the code generation, e.g. via a
pre_codegen_hook function
(example for a size of 1.000.000):
>> dsdd('SetMaxNumMessages', 1000000);
Note the message buffer is automatically cleared before every
code generation,
so such a huge number should be enough in most cases.
586 / 1260
ID:
KPR.2012.02.07.008
Title:
Utility
587 / 1260
ID:
KPR.2012.02.07.009
Title:
Incorrect code/compilable
588 / 1260
ID:
KPR.2012.02.07.010
Title:
ID:
KPR.2012.02.07.011
Title:
589 / 1260
590 / 1260
ID:
KPR.2012.02.08.001
Title:
API
ID:
KPR.2012.02.09.001
591 / 1260
Title:
Utility
593 / 1260
ID:
KPR.2012.02.09.002
Title:
Incorrect code/compilable
594 / 1260
ID:
KPR.2012.02.16.001
Title:
Utility
Description: In extended mode the XML import of the Data Dictionary will
not erport any error
if the numeric value of a property of a Data Dictionary object
cannot be
imported due to an invalid formatting of the numeric data
within the XML
element. Instead the problematic data is ignored and not
imported. This can lead
to loss of data without notice.
This is generally not a problem if the data was exported prior
by XML export of
the Data Dictionary. But if the XML was formatted by a foreign
tool or manually
formatted to become incorrect and thus it cannot be parsed.
Sample of valid and invalid formatted data:
Valid:
<ddProperty Name="Value">[1 2 3 0.5 ;0 0 0 0 ;0 0 0
0.87]</ddProperty>
Invalid:
<ddProperty Name="Value">
1 2 3 0.5
0000
0 0 0 0.87
</ddProperty>
Workaround: Make sure that the imported XML files content of numeric data
is in valid format
(e.g. by comparing to the exported XML).
595 / 1260
ID:
KPR.2012.02.21.001
Title:
596 / 1260
ID:
KPR.2012.02.28.001
Title:
Symbol Table Parser for LCC compiler does not find all static variables
Simulation
Description: The symbol table parser for the LCC host compiler does not find all static
variables. Thus problems may occur by using online parameter modification with
static variables and LCC is the selected mex compiler. In such a case the API
tl_sim_interface('GetDDVarAddr',.....) returns with the error message like:
*** E02405: SYMBOL ADDRESS NOT FOUND:
*** The address of the symbol could not be found. The reason was: Cannot find
the symbol 'VariantSwitch' below the data dictionary object
'//DD0/online_parameter_modification/Build_online_parameter_modification_HostPC_
LCC'.
Workaround: If possible use global scope instead of static.
The problem is fixed by using the following patches or later patches:
TargetLink 3.2p5
TargetLink 3.3p2
597 / 1260
ID:
KPR.2012.02.29.001
Title:
Description: If
- the numerator of a division operation has a 16 or 32 bit
signed integer type
AND
- the denominator has an 32 bit unsigned integer type AND
- the result of the division has a signed integer type
then a code pattern as follows is generated:
result = (Numerator < 0) ? (-((-Numerator) / Denominator)) :
(Numerator /
Denominator);
Although the code calculates correctly, there might occur a
compiler warning
when compiling the production code.
For example MSVC compiler emits "warning C4146: unary
minus operator applied to
unsigned type, result still unsigned" and the LCC emits the
warning " unsigned
operand of unary ? ?.
There is a cast to signed integer missing for the operand of
the first unary
minus.
Workaround: No workaround available.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.2p5
598 / 1260
ID:
KPR.2012.03.05.002
Title:
599 / 1260
ID:
KPR.2012.03.05.003
Title:
Incorrect code/compilable
600 / 1260
ID:
KPR.2012.03.05.004
Title:
601 / 1260
ID:
KPR.2012.03.06.001
Title:
602 / 1260
ID:
KPR.2012.03.06.002
Title:
User interface
603 / 1260
ID:
KPR.2012.03.06.003
Title:
Simulation
ID:
KPR.2012.03.06.004
Title:
Incorrect code/compilable
604 / 1260
ID:
KPR.2012.03.06.005
Title:
Incorrect code/compilable
605 / 1260
ID:
KPR.2012.03.06.006
Title:
ID:
KPR.2012.03.06.007
Title:
User interface
ID:
KPR.2012.03.06.008
Title:
606 / 1260
Class:
607 / 1260
Workaround: 1) Inspect the unoptimized code for calls like described above
or use the Data
Dictionary Subsystems area in order to identify variables with
access function
template used in the model.
2) For "b()[0] = a" or "b()[0] = (T) a" or "b()[0] = -a" or "b()[0] =
!a"
situations place a TargetLink Rescaler block before the block
leading to the
assignment.
3) Set the block output properties as follows:
a) Inherit properties == on
b) Class: A variable class that has the following properties
i) Optimization: { MOVABLE, SCOPE_REDUCIBLE }
ii) Scope: global
iii) Storage: default
4) If necessary, you have to abandon (3a)
5) Now, code generation with activated Optimization should
work. You can now try
to change the variable class of the Rescaler blocks to "default"
block by block
in order to identify the problematic areas.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.3p2
ID:
KPR.2012.03.06.009
Title:
Incorrect code/compilable
ID:
KPR.2012.03.06.010
Title:
Description: The code generation aborts with a fatal internal error if one of
the following
subsystems is placed in a reused system:
- a triggered subsystem with trigger type "either", '"rising", or
"falling" OR
- an enabled subsystem OR
- a subsystem that is triggered and enabled.
In this case code generation stops with an error message
similiar to the
following one:
Fatal #30016: Subsystem/Outer/Inner1/Out1 An internal error
occurred during
implementation of function reuse. Contact dSPACE support.
Reason: The variable
'SInner11_Out1' shall be used in the subsystem
'Subsystem/Outer/Inner1'. But it
was created for the subsystem 'Subsystem/Outer'. Reuse of
this variable is not
possible.
Workaround: No workaround available.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.3p2
609 / 1260
ID:
KPR.2012.03.06.011
Title:
Utility
610 / 1260
ID:
KPR.2012.03.19.001
Title:
Possibly wrong code or misleading error messages for nonscalar const, volatile or prefixed Variable object using type
with constraints
Incorrect code/compilable
611 / 1260
ID:
KPR.2012.03.21.001
Title:
Utility
ID:
KPR.2012.03.30.001
Title:
Incorrect code/compilable
612 / 1260
613 / 1260
ID:
KPR.2012.04.02.001
Title:
ID:
KPR.2012.04.17.001
Title:
Simulation
614 / 1260
ID:
KPR.2012.04.20.002
Title:
Incorrect code/compilable
615 / 1260
ID:
KPR.2012.04.27.001
Title:
Simulation
616 / 1260
ID:
KPR.2012.05.02.001
Title:
Description: If in Stateflow
- all the operands of an operation are unsigned (i.e. have
unsigned data type or
are positiv constant or have a positive range) AND
- at least one of the operands of that operation has a signed
type but min/max
values that define the value range of that operand to be
always zero or greater
AND
- at least one of the operands of the whole expression the
operation is part of
is scaled (LSB != 1.0 or Offset != 0.0) AND
- the operation is not the last operation on the right hand side
of an
assignment,
then the precision of that operation might be reduced
compared to TargetLink
versions before TargetLink 3.2.
Workaround: No workaround available.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.3p3
617 / 1260
ID:
KPR.2012.05.07.001
Title:
Incorrect code/compilable
ID:
KPR.2012.05.07.002
Title:
Utility
Description: Creating a netlist for the Autoscaling tool for a model with
nonvirtual busses
that pass From/Goto blocks aborts with an error:
*** F00000: ERROR DURING NETLIST CREATION:
*** The block identification while netlist creation failed.
*** ERROR:Index exceeds matrix dimensions.
Workaround: If possible use virtual buses.
Or avoid using From/Goto blocks for modelling nonvirtual
buses.
618 / 1260
ID:
KPR.2012.05.07.003
Title:
Incorrect code/compilable
619 / 1260
ID:
KPR.2012.05.07.004
Title:
API
Description: In the following case the Data Dictionary may report wrong
error messages during
upgrade or validation:
- a Data Dictionary file from TargetLink 3.1 or earlier is
upgraded with TL 3.3
AND
- there are included Data Dictionaries that are modified during
upgrade, which
results in warning messages #06341 and #06259
Then prior to the warning messages, an error message
#05040 is produced:
"Error #05040: Config: The specified object "Config" does not
exist."
Further it is also possible that the Code Generator aborts with
an error
messages if the Data Dictionary is not consistent:
W10603 DATA DICTIONARY INTERFACE MESSAGES
Error while reading Data Dictionary object. The following
required
properties are missing or invalid: The specified object "Config"
does
not exist.
E10602 DATA DICTIONARY INTERFACE MESSAGES
Could not read the Data Dictionary object.
Workaround: Create the missing Config object below /Pool/Autosar in the
Data Dictionary.
620 / 1260
ID:
KPR.2012.05.07.005
Title:
User interface
621 / 1260
ID:
KPR.2012.05.07.006
Title:
622 / 1260
ID:
KPR.2012.05.07.007
Title:
Utility
ID:
KPR.2012.05.08.001
Title:
Fatal #10007 if at the ports of virtual subsystem, located inside a referenced model or
incremental subsystem, reference components of a pointer to struct variable
Description: If a virtual subsystem is located inside a referenced model and at the InPorts
or OutPorts of the virtual subsystem components of a structure from Data
Dictonary are referenced which is defined as pointer to struct, the code
623 / 1260
geneneration for the code geneneration unit containing the reference to the
model terminates with a fatal error.
Since TargetLink 3.3 this is also the case if a virtual subsystem is located
inside an incremental subsystem.
The error message depends on the TargetLink version and the port type:
-------------------------------Error Messages in TargetLink 3.0
-------------------------------- For a TL Inport:
Fatal #10007:
Internal error. Error code: TlCSvModelReferenceDDReaderTools 956. Contact
dSPACE's technical support team
- For a TL Outport:
Fatal #10007:
Internal error. Error code: TlCSvModelReferenceDDReaderTools 1034. Contact
dSPACE's technical support team.
- For a Bus Inport:
Fatal #10007:
Internal error. Error code:
\Core\XcgIntermediateView\Sources\XcgIntermediateView\BlockContext\DataBlockCont
ext\TlCBcBusInportContext.cpp_ 614. Contact dSPACE's technical support team.
- For a Bus Inport:
Fatal #10007:
Internal error. Error code: TlCBcBusOutportContext 616. Contact dSPACE's
technical support team.
---------------------------------Error Messages in TargetLink 3.0.1
---------------------------------- For a TL Inport:
Fatal #10007:
Internal error. Error code: TlCSvModelReferenceDDReaderTools 956. Contact
dSPACE's technical support team
- For a TL Outport:
Fatal #10007:
Internal error. Error code: TlCSvModelReferenceDDReaderTools 1034. Contact
dSPACE's technical support team.
- For a Bus Inport:
Fatal #10007:
Internal error. Error code:
Core\XcgIntermediateView\Sources\XcgIntermediateView\BlockContext\DataBlockConte
xt\TlCBcBusInportContext.cpp_ 618. Contact dSPACE's technical support team.
- For a Bus Inport:
Fatal #10007:
Internal error. Error code: TlCBcBusOutportContext 620. Contact dSPACE's
technical support team.
---------------------------------Error Messages in TargetLink 3.1
---------------------------------- For a TL Inport:
Fatal #10007:
624 / 1260
ID:
KPR.2012.05.08.002
Title:
626 / 1260
ID:
KPR.2012.05.08.003
Title:
Incorrect code/compilable
627 / 1260
ID:
KPR.2012.05.09.001
Title:
Utility
ID:
KPR.2012.05.09.002
Title:
Utility
628 / 1260
ID:
KPR.2012.05.09.003
Title:
API
629 / 1260
ID:
KPR.2012.05.09.004
Title:
630 / 1260
ID:
KPR.2012.05.09.005
Title:
Modelling
Description: Simulink Data Type Conversion blocks can be enhanced to Targetlink Rescaler
blocks. When a Simulink system that contains Rescaler blocks is cleared from
TargetLink with the "Keep TL data for re-preparation" option set to "on",
TargetLink data is saved to the de-enhanced blocks to be restored during a
subsequent re-preparation. However, during a re-preparation Data Type
Conversion
blocks with saved TL data are not re-enhanced to TargetLink Rescaler blocks, but
remain unmodified.
Workaround: Write a post preparation hook function that re-enhances DTC blocks with saved TL
data:
hBlocks =
find_system(hSubSystem,'LookUnderMasks','all','RegExp','on','BlockType','DataTyp
eConversion','tag','.+');
for h=hBlocks'
tmp = tl_enhance_block(h,options,bs);
end
Note that this workaround does not include a Simulink --> TargetLink scaling
data mapping. This must be started independently with the tl_sync_system tool.
631 / 1260
ID:
KPR.2012.05.09.006
Title:
Utility
632 / 1260
ID:
KPR.2012.05.09.007
Title:
Utility
ID:
KPR.2012.05.09.008
Title:
633 / 1260
Description: Background
TargetLink root InPorts are the first TargetLink InPort blocks of
TargetLink
subsystems, incremental subsystems, referenced models
encountered on the input
signal lines of the system.
If the output variable of a TargetLink root InPort has a variable
class
referencing an AccessFunctionTemplate (AFT), then
TargetLink buffers the input
under the following conditions:
- The AFT has a Read AccessFunction that applies to the
variable (READ,
READ_INDEXED, READ_BY_PARAMETER,
READ_INDEXED_BY_PARAMETER) AND
- The FunctionClass referenced by the AccessFunction does
not set the
SIDE_EFFECT_FREE optimization property AND
- The CodeGenerationMode is Standard or AUTOSAR
TargetLink analyzes the resulting C Code, so several root
InPorts sharing the
same variable are considered together. TargetLink identifies a
function calling
all of them in order to find a location where the access
function can be called
as few times as possible; the result is buffered in an auxiliary
variable that
is accessed by the respective functions. Up to TargetLink 3.2,
the variable is
created "Static Global" and not subject to further optimization.
Starting from
TargetLink 3.3, the variable is created "Global" and subject to
subsequent
attempts to reduce it in scope.
Problem
TargetLink terminates with
Error #17054: / ... /Variables/MyInport: The variable
'Aux_MyInport_a' is
implemented with 'module local scope', but requires 'global
scope'.
Possible causes are, up to TargetLink 3.2:
- Aux_MyInport_a needs to be "Global" OR
- Aux_MyInport_a has been created in the wrong module
Workaround: Assign a FunctionClass with set SIDE_EFFECT_FREE
Optimization property to the
Read AccessFunction.
If you need the buffering, then model it explicitly:
- Use the variable as block output of exactly one TargetLink
InPort
- Insert either a Rescaler block (TargetLink >= 3.0) or an
additional
TargetLink InPort (TargetLink < 3.0) after the InPort and
specify this
subsequent block's output variable as needed
634 / 1260
ID:
KPR.2012.05.09.009
Title:
User interface
Description: If the 'More Infos about' plot window is opened for a simulation
in SIL or PIL
mode, it always displays LSB as an arbitrary number even if
the block property
'lsb' has to be represented as a power-of-two number.
This problem does not appear for a simulation in MIL mode.
Example:
The block output property 'arb' is 0 and 'lsb' is 2^-9.
The 'More infos about' plot window for this block output shows
the LSB value
2^-9 in MIL mode but 0.001953 in SIL and PIL mode.
Workaround: No workaround available
ID:
KPR.2012.05.11.001
Title:
Incorrect code/compilable
635 / 1260
Description: TargetLink currently does not support the use of variables with
an
AccessFunctionTemplate as Custom Code block variables.
This limitation is checked for AccessFunctionTemplates
referenced by the
variable's variable class. If a variable is used that has an
AccessFunctionTemplate or a variable class referencing an
AccessFunctionTemplate
is used, then TargetLink emits an error message, e.g.
Error #20624: Subsystem/Custom Code Block class
GLOBAL_AF used for p variable
has access function template
//DD0/Pool/Templates/AccessFunctions/AFT_Get
specified. Access functions are not supported for variables
used inside Custom
Code blocks.
As of TargetLink 2.2, struct components without an
AccessFunctionTemplate can
inherit AccessFunctionTemplates from their (recursive) parent
struct variables'
variable class. They inherit the first AccessFunctionTemplate
encountered on the
way to the "root" struct.
If a struct component that "inherits" it's
AccessFunctionTemplate is referenced
as block variable of a Custom Code block, then TargetLink
does not detect the
resulting problem. Instead the code generator may either
- terminate with an access violation (in combination with Fatal
Error #99999) OR
- give an unspecific error like #10014 without preceding
messages explaining the
problem OR
- generate wrong code, usually code that does not compile but
there are no
guarantees for not compiling such erroneous code OR
- accidenttaly produce the desired code.
Workaround: If one of the above undesired symptoms occurs, then check
all Custom Code block
variables referencing a struct component of a struct variable
specified in the
Data Dictionary project file. If one of the structs has a variable
class
referencing an AccessFunctionTemplate, then try another
variable class without
an AccessFunctionTemplate.
636 / 1260
ID:
KPR.2012.05.11.002
Title:
Modelling
637 / 1260
ID:
KPR.2012.05.14.001
Title:
A2L generation for external symbols fails with error 8662 due
to incorrect Variable objects in Data Dictionary Subsystems
area
Utility
638 / 1260
ID:
KPR.2012.05.23.001
Title:
639 / 1260
ID:
KPR.2012.05.23.002
Title:
Code generation aborts with Error #03019 for user library with Simulink
port blocks that have saved TargetLink data
Description: When a block is de-enhanced, it's TargetLink data can be saved to the
tag
property for restoring the date during a later re-enhancement. This also
applies
to Simulink port blocks that had been de-enhanced from Targetlink port
blocks.
The tag property is copied when a block is copied, for example, into a
new
library. Thus it may happen that a Simulink port block in a user library
unintentionally carries saved TargetLink data.
When the user library is used in a system for which code should be
generated,
code generation aborts with an error message #03019:
Error #03019: testModel/ ... /Subsystem/Filter:
block is not supported by TargetLink and no corresponding block is
defined. The
block has a library link to userLib/Filter. The library userLib is yet to be
prepared for TargetLink.
Workaround: Delete saved TL data in the port blocks' tag property. E.g. if <userLib> is
the
name of the user library:
hPorts = find_system(<userLib>,
'LookUnderMasks','all','RegExp','on','BlockType','Inport|Outport','Tag','.+');
set_param(<userLib>,'Lock','off');
for h=hPorts', set_param(h,'tag',''); end
save_system(<userLib>);
The problem is fixed by using the following patch or later patches:
TargetLink 3.3p3
640 / 1260
ID:
KPR.2012.05.23.003
Title:
Simulation
Description: To use the Microsoft Visual C++ 2010 Express with Matlab
64bit Version as a mex
compiler, Microsoft Windows SDK 7.1 must be installed.
But in spite of installation of Window SDK 7.1 the Microsoft
Visual C++ 2010
Express selected as mex compiler cannot be used to compile
the production code
simulation application for the SIL simulation. During the build
process linker
errors similar to the following occur:
LINKING PROGRAM ...
LINKING FAILED
LINKING FAILED. See
.\TLSim\mdl_BSD_Sim\HostPC_MSVC\mdl_BSD_Sim.err for
details
LINK : fatal error LNK1104: cannot open file 'uuid.lib'
MAKE PROCESS ABORTED
In ML 2011b it is also possible to select the Microsoft
Windows SDK 7.1 as a mex
compiler. In this case however TargetLink issues another error
message
*** E02387: DETERMINATION OF THE HOST COMPILER
LOCATION FAILED:
*** Internal error. Cannot determine the installation directory of
the selected
mex compiler. Contact dSPACE Support.
Workaround: If possible use another supported mex compiler.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.3p3
641 / 1260
ID:
KPR.2012.05.23.004
Title:
Code generation aborts with error #30016 if an actiontriggered subsystem is placed in a reused system
Description: The code generation aborts with a fatal internal error if one of
the following
subsystems is placed in a reused system:
- a subsystem that is triggered by an If Else block OR
- a subsystem that is triggered by a Switch Case block.
In this case code generation stops with an error message
similiar to the
following one:
Fatal #30016: Subsystem/ ... /aa/OutAA:
An internal error occurred during implementation of function
reuse. Contact
dSPACE support. Reason: The variable 'OutAA' shall be used
in the subsystem
'Subsystem/ReuseableSys1/aa'. But it was created for the
subsystem
'Subsystem/ReuseableSys1'. Reuse of this variable is not
possible.
Workaround: No workaround available.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.3p3
642 / 1260
ID:
KPR.2012.05.23.005
Title:
Code generation aborts with Error #30053 if a customerspecific function is called with different scalings from Stateflow
643 / 1260
ID:
KPR.2012.05.31.001
Title:
Utility
644 / 1260
ID:
KPR.2012.05.31.002
Title:
Incorrect code/compilable
Description: If a variable "x" is used as a state and the state update takes
place prior to
using the old value,
out = x;
x = in;
f(out);
then TargetLink does not eliminate the temporary variable
"out".
If "x" has a Variable Class referencing an
AccessFunctionTemplate with at least
one AccessFunction object that has a function class with set
SIDE_EFFECT_FREE
Optimization property, then it is possible that TargetLink loses
information
about the accessed variables and consequently optimizes
wrongly to
SetX(in);
f(GetX());
Workaround: There are two ways to suppress this optimization:
1) Make sure that "out" cannot be eliminated (via a variable
class without set
ERASABLE Optimization property)
2) Do not use SIDE_EFFECT_FREE.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.3p3
645 / 1260
ID:
KPR.2012.05.31.003
Title:
Modelling
646 / 1260
ID:
KPR.2012.05.31.004
Title:
Incorrect code/compilable
647 / 1260
ID:
KPR.2012.05.31.005
Title:
Simulation
648 / 1260
ID:
KPR.2012.06.15.001
Title:
649 / 1260
ID:
KPR.2012.07.03.002
Title:
API
Description: TargetLink Stateflow properties 'min' and 'max' are only stored
with about 4
digits after decimal point. Values that require more digits thus
may be reduced
in precision.
As TargetLink sets Stateflow properties as a whole, the
problem may always occur
in case any Stateflow property, even other than min/max, is
changed by a
TargetLink API command or GUI function. For example this
means especially
tl_set(), tl_upgrade(), the TargetLink Property Manager and
the Autoscaling
tool, the Rename&Adapt operation of the Data Dictionary
Manager if Stateflow
data is associated with Variable objects and also the creation
of such Variable
objects for Stateflow with the Model Browser.
In addition with TargetLink 3.x this problem may also happen
if Stateflow
scaling data is synchronized during System Preparation or via
System
Synchronization.
Note: other properties like e.g. sf.lsb are not affected by a
reduced precision.
Workaround: If more precision is required, then use Stateflow's own object
dialog or API to
set the Minimum/Maximum properties again after changing
any TargetLink Stateflow
property with TargetLink.
650 / 1260
ID:
KPR.2012.07.04.001
Title:
Incorrect code/compilable
651 / 1260
ID:
KPR.2012.07.04.002
Title:
API
652 / 1260
ID:
KPR.2012.07.04.003
Title:
Incorrect code/compilable
ID:
KPR.2012.07.04.004
Title:
Incorrect code/compilable
653 / 1260
ID:
KPR.2012.07.04.005
Title:
Utility
ID:
KPR.2012.07.04.006
Title:
Utility
ID:
KPR.2012.07.09.001
654 / 1260
Title:
Incorrect code/compilable
656 / 1260
ID:
KPR.2012.07.13.001
Title:
Modelling
657 / 1260
ID:
KPR.2012.07.26.002
Title:
Incorrect code/compilable
658 / 1260
ID:
KPR.2012.07.26.003
Title:
Utility
Description: It may happen that Data Dictionary objects that are newly
created during AUTOSAR
2.x/3.x import are not saved when the working Data Dictionary
is saved to a
file. Thus, when the saved Data Dictionary file is reloaded, the
objects newly
created by the AUTOSAR import are missing.
The problem cause why the newly created Data Dictionary
objects are not saved to
a file is that they still have the attribute 'temporary' set to 1.
Workaround: After AUTOSAR import set the attribute 'temporary' of the
imported Data
Dictionary objects to 0.
E. g. for Typdef and TypedefGroup objects this can be
performed by the following
m-script:
hTypes = dsdd('find', '/Pool/Typedefs', 'objectkind', 'Typedef');
for n=1:numel(hTypes)
errorCode = dsdd('SetAttribute', hTypes(n), 'temporary', 0);
end
hTypeGroups = dsdd('find', '/Pool/Typedefs', 'objectkind',
'TypedefGroup');
for n=1:numel(hTypeGroups)
errorCode = dsdd('SetAttribute', hTypeGroups(n), 'temporary',
0);
end
To perform the reset of the temporary attribute automatically
after every
ordinary AUTOSAR 2.x/3.x import you can place the reset
code in the
tl_post_arimport_hook.m file.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.3p4
ID:
KPR.2012.07.26.004
Title:
659 / 1260
TargetLink 2.2 2.2.1 2.3 2.3.1 3.0 3.0.1 3.1 3.2 3.3 3.4 3.5
Class:
660 / 1260
ID:
KPR.2012.07.26.005
Title:
Modelling
ID:
KPR.2012.07.28.002
661 / 1260
Title:
Incorrect code/compilable
662 / 1260
663 / 1260
ID:
KPR.2012.08.02.001
Title:
664 / 1260
ID:
KPR.2012.08.02.002
Title:
Utility
Description: In same cases you may use your own module for building a
SIL/PIL simulation
application and/or a standalone S-function of a TargetLink
subsystem instead of
a module generated by the TargetLink Code Generator. For
example, you wish use
an own module containing definitions for variables used in
generated production
code.
To accomplish this you can specify a Module object in Data
Dictionary and create
corresponding FileSpecification child objects with their
EmitFile property set
to 'off'.
Additional you have to specify the search path for your
modules at
/Config/TargetLink.
If you then build a SIL/PIL application the compilation
succeeds, but building a
stand-alone S-Function either by means of the Stand-alone
Model Manager Dialog
or tl_build_standalone or tl_tl2rti API functions may fail with an
error similar
to the following one:
D:\MATLAB\R2011B\BIN\MEX.PL: Error:
'.\TLSim\BuildStandaloneSFcn\<subsystem>\<module>.c' not
found.
Workaround: Specify your own module additionally via the AddFile block
placed at the root
level of the TargetLink subsystem and in a
post_codegen_hook function
delete the /Subsystems/<subsystem>/<modulename> module
object, if created by the
Code Generator.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.3p4
ID:
KPR.2012.08.02.003
Title:
665 / 1260
TargetLink 2.2 2.2.1 2.3 2.3.1 3.0 3.0.1 3.1 3.2 3.3 3.4 3.5
Class:
Incorrect code/compilable
Data Dictionary
which references a variable class from the Data Dictionay with
the
RestartFunction property set.
Variables will become part of the global bitfield structure if
they are bool and
scalar and if on the Advanced page of the TargetLink Main
Diaog the option "Use
global bitfields for boolans" ist activated.
Workaround: Avoid placement of the variables into the global bitfield
structure:
- For implicitly created variables specifies a variable template
in the Data
Dictionary. In the settings of the variable template select a
variable class
with the RestartFunction property set.
- For variables resulting from a block with activated "Inherit
properties"
setting select a variable class from the Data Dictionary with
the
RestartFunction property set.
ID:
KPR.2012.08.02.004
Title:
Simulation
Description: In case
- an output signal of a TargetLink subsystem is specified with
a Simulink.Signal
object and then
- the subsystem is set into SIL or PIL simulation mode
TargetLink produces an error message #02091 which reads
Error #02091:
The Simulink.Signal object OutSig specifies the signal of the
TargetLink
subsystem output port OutPort, and the Data
Validity/Signals/Signal Resolution
configuration parameter is set to 'Explicit and implicit'. SIL/PIL
simulation is
therefore not possible.
This message is sometimes misleading. Simulation is only
impossible if the
RTWInfo.Storage property of the Simulink.Signal object is not
"Auto".
Workaround: In case of RTWInfo.Storage = "Auto" the message can be
ignored.
667 / 1260
ID:
KPR.2012.08.06.001
Title:
668 / 1260
ID:
KPR.2012.08.08.001
Title:
669 / 1260
ID:
KPR.2012.08.08.002
Title:
Description: During code generation, a call stack like the following (for
TargetLink 3.3p3)
terminates the code generation unsuccessfully
Fault address: 3CD2D9C1 01:0036C9C1 C:\Program
Files\dSPACE TargetLink
3.3\Matlab\Tl\Bin\XcgCVT.dll
Call stack:
Address Frame
000000003CD2D9C1 0000000000C25010
0001:000000000036C9C1 C:\Program Files\dSPACE
TargetLink 3.3\Matlab\Tl\Bin\XcgCVT.dll
000000003CDBD66E 0000000000C250FC
0001:00000000003FC66E C:\Program Files\dSPACE
TargetLink 3.3\Matlab\Tl\Bin\XcgCVT.dll
000000003CA0964E 0000000000C253A0
0001:000000000004864E C:\Program Files\dSPACE
TargetLink 3.3\Matlab\Tl\Bin\XcgCVT.dll
000000003CF034DB 0000000000C254D4
0001:00000000005424DB C:\Program Files\dSPACE
TargetLink 3.3\Matlab\Tl\Bin\XcgCVT.dll
This problem can occur if several variables with access
function templates are
accessed in one statement and one of the variable accesses
necessitates creation
of an additional statement during the code generation (e.g. for
copying the
variable to an auxiliary variable).
Note: several kinds of AUTOSAR RTE API accesses are
realized via access
functions and thus may also trigger this problem.
Workaround: No workaround available.
670 / 1260
ID:
KPR.2012.08.08.003
Title:
Simulation
Description: The simulation mat file which can be saved and opened from
the 'Simulation' tab
of the TargetLink Main Dialog does not keep the 'unit'
property. Therefore the
plot window for a simulation which is opened from the mat file
does not show the
unit information.
Workaround: No workaround available.
ID:
KPR.2012.08.08.004
Title:
Utility
671 / 1260
ID:
KPR.2012.08.08.006
Title:
User interface
Description: Open the State Space Scaling Tool dialog from Discrete State
Space block or the
Transfer Function Scaling Tool dialog from Discret Transfer
Function block or
Discrete Filter block optimized output scaling can be
calculated. But the
calculated scaling cannot be set automatically to the output
variable.
Pressing of the OK button leads to error "??? Reference to
non-existent field
'maskType'."
Workaround: Use the scaling tool to calculate optimized scaling and then
maually transfer
the results.
ID:
KPR.2012.08.14.001
Title:
User interface
672 / 1260
ID:
KPR.2012.08.17.001
Title:
TLC file for TargetLink Custom Code blocks yields wrong simulation
results
Simulation
Description: For TargetLink Custom Code blocks, TLC files can be generated
enabling to run
the custom code in RTW generated applications. The TLC file is
needed when a
model is simulated in accelerator mode, when a Custom Code block
resides in a
referenced model, or when RTW code is needed for another purpose.
However, if
the following conditions are met, the TLC file yields wrong simulation
results:
- The Custom Code block has at least one input that is scaled, i.e. the
associated LSB != 2^0 and/or the Offset != 0.0.
- The "use production code for MIL simulation" property is set to "off".
In the TLC code, the input is scaled instead of being used as-is.
Example:
/* declaration of input u */
Int16 u;
u=
SCALE_FP_FX(Int16,%<LibBlockInputSignal(0,"","",0)>,0.00390625,0);
is generated for a scalar input u with Int16, 2^-8, 0.0 instead of
/* declaration of input u */
Float64 u;
u = (Float64)%<LibBlockInputSignal(0,"","",0)>;
Workaround: Modify the TLC file manually. Make sure that inputs are declared as
Float64 and
are not scaled with the SCALE_FP_FX macro, but used as-is.
673 / 1260
ID:
KPR.2012.08.23.001
Title:
Bus signal plot shows always the unit of the first bus element
for all elements
Simulation
ID:
KPR.2012.08.23.002
Title:
Utility
674 / 1260
ID:
KPR.2012.08.23.003
Title:
675 / 1260
ID:
KPR.2012.08.23.004
Title:
User interface
676 / 1260
ID:
KPR.2012.08.23.005
Title:
Incorrect code/compilable
677 / 1260
ID:
KPR.2012.08.23.006
Title:
Modelling
Description: In case of
- big model (> 5000 blocks) with TargetLink subsystem with
bus signals at its
inports AND
- the buses have at least dozens of signals with different data
types AND
- additionally, function-call signals run into the subsystem
the code generation may take long time, e.g. up to several
hours.
Workaround: Invoke tl_generate_code() with the CheckSystem option set to
"off".
The problem is fixed by using the following patch or later
patches:
TargetLink 3.3p4
ID:
KPR.2012.08.27.001
Title:
678 / 1260
679 / 1260
ID:
KPR.2012.08.27.002
Title:
User interface
680 / 1260
ID:
KPR.2012.08.30.001
Title:
User interface
Description: If a signal with a width > 1 enters a custom code block and
same scalings should
be applied for the vector signals elements, activating the
'Uniform elements'
checkbox incorrectly does not equalize the elements inside
the block data
accordingly to the currently displayed scaling specifications
visible in the
block dialog GUI. Therefore after applying, closing and
reopening the dialog,
the old settings are still in place and the checkbox is not
checked anymore, as
it reacts to the saved settings in the block data. Similar the
generated
production code may not use one uniform scaling for all vector
elements, but be
generated from the old data that was set for the block before.
Workaround: 1) Either apply the same scaling settings for each element.
or
2) Use the API to set equal scalings for all elements, e.g.
tl_set(<block>,
'output.lsb, [2^-10 2^-10 2^-10 2^-10 2^-10]).
The problem is fixed by using the following patch or later
patches:
TargetLink 3.3p4
681 / 1260
ID:
KPR.2012.08.30.002
Title:
682 / 1260
ID:
KPR.2012.09.03.001
Title:
Incorrect code/compilable
683 / 1260
ID:
KPR.2012.09.10.001
Title:
684 / 1260
ID:
KPR.2012.09.10.004
Title:
685 / 1260
ID:
KPR.2012.09.10.006
Title:
Simulation
ID:
KPR.2012.09.19.001
Title:
Incorrect code/compilable
SetB(a * 5);
f(GetB());
...
c = GetB() - 3;
Using auxiliary variables, the generated code instead is
Aux_ = a * 5;
SetB(Aux_);
f(Aux);
...
c = Aux_ - 3;
For the respective analysis, TargetLink does not sufficiently
respect
interprocedural relationships between the accesses of the
variable.
Example:
B = a * 5;
f(B);
g(); /* Call masks a value change of B */
c = B - 3;
TargetLink still transforms this to
Aux_ = a * 5;
SetB(Aux_);
f(Aux);
g(); /* Call masks a value change of B */
c = Aux_ - 3;
giving rise to an erroneous calculation of "c".
Note regarding "variables that are associated with an
AccessFunctionTemplate
applying to the variable":
Usually, a variable is associated with an
AccessFunctionTemplate via its
variable class.
Struct components can "inherit" the AccessFunctionTemplate
of a parent struct
(for TargetLink < 3.4, this always happens in
CodeGenerationMode Standard or
RTOS, for TargetLink >= 3.4, this can be influenced via the
PropagateStructToComponents property of the
AccessFunctionTemplate's Settings)
or can be subject to an access function call if one of its parent
structs has a
variable access function.
An AccessFunctionTemplate only applies to a variable, if it
contains at least
one AccessFunctionObject that specifies an access function
that can apply to
accesses to this variable (AccessFunction
Kind=READ_INDEXED does not apply to
687 / 1260
ID:
KPR.2012.09.19.002
Title:
Utility
688 / 1260
ID:
KPR.2012.09.28.001
Title:
Simulation
ID:
KPR.2012.09.28.002
Title:
Incorrect code/compilable
<operation> ...".
In addition to function calls, this problem also occurs for macro
"calls", e.g.
of TargetLink DsFxp macros.
A special case is related to moving expressions between
loops. Ordinarily,
TargetLink does not move code depending on a loop variable
between separate
loops.
In this case, TargetLink moves the code but does not adapt
the loop variable,
i.e.
for (Aux_ = 0; Aux_ < 12; Aux_++)
{
b[Aux_] = f(a[Aux_]);
}
...
for (Aux_S32 = 0; Aux_S32 < 12; Aux_S32++)
{
[Aux_S32] = (b[Aux_S32] > g(c[Aux_S32])) && (P[Aux_S32] >
0.);
}
becomes
...
for (Aux_S32 = 0; Aux_S32 < 12; Aux_S32++)
{
[Aux_S32] = (f(a[Aux_]) > g(c[Aux_S32])) && (P[Aux_S32] >
0.);
}
"Aux_" either is out of the valid index range (in this case 12) or
undefined,
depending on whether its original loop is subsequently
removed because it has
become empty.
Note that the optimization order strategy of TargetLink usually
precludes this
kind of situation.
690 / 1260
Workaround: Identify the functions and macros with return values taking a
vector or matrix
element argument (for a scalar parameter) affected by this
problem.
Then you can either insert a TargetLink Rescaler block with
non-ERASABLE
variable class after the function / macro return output of the
block leading to
the function call (this can be a subsystem or a block calling a
math, lookup
table or TargetLink Fixed-Point library function)
OR switch from function return value to a ref_param output if
possible.
For the loop case, it may be possible to use an atomic
subsystem for grouping
all vector code together which leads to merged loops and thus
permitted
intra-loop optimization.
691 / 1260
ID:
KPR.2012.09.28.003
Title:
Incorrect code/compilable
692 / 1260
ID:
KPR.2012.10.24.001
Title:
Error #02928 during code generation for path of AUTOSAR objects that contain
names of embedded Data Dictionary objects
User interface
693 / 1260
ID:
KPR.2012.10.31.001
Title:
Simulation
694 / 1260
ID:
KPR.2012.10.31.002
Title:
API
ID:
KPR.2012.11.12.001
Title:
Utility
695 / 1260
ID:
KPR.2012.11.12.002
Title:
Modelling
696 / 1260
ID:
KPR.2012.11.12.003
Title:
Modelling
ID:
KPR.2012.11.12.004
Title:
697 / 1260
Class:
Utility
Description: The import of AUTOSAR 2.x/3.x XML files fails, if the files use
a namespace
prefix, e.g.: <AR:SHORT-NAME> instead of <SHORTNAME>.
The following message is thrown by the import:
E08763: Error during AUTOSAR import
Error detected in attempt to import a SHORT-NAME. Missing
or empty mandatory
AR-PACKAGE element detected.
If multiple documents are imported, the problem occurs only if
the first
selected file uses a namespace prefix. For all other selected
files, the import
considers the prefix correctly.
Workaround: The workaround is to create a dummy AUTOSAR XML file
without a namespace prefix
and select the dummy file as the first file to import and
subsequently select
all other files.
Create a dummy AUTOSAR XML file dummy.arxml with the
following content:
<?xml version="1.0" encoding="UTF-8"?>
<AUTOSAR xsi:schemaLocation="http://autosar.org/3.2.2
autosar.xsd"
xmlns="http://autosar.org/3.2.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<TOP-LEVEL-PACKAGES>
<AR-PACKAGE>
<SHORT-NAME>dummy</SHORT-NAME>
</AR-PACKAGE>
</TOP-LEVEL-PACKAGES>
</AUTOSAR>
Replace both AUTOSAR version entries in the second line
with the actual AUTOSAR
version:
<AUTOSAR xsi:schemaLocation="http://autosar.org/3.2.2
autosar.xsd"
xmlns="http://autosar.org/3.2.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
Example for AUTOSAR 2.1.4:
<AUTOSAR xsi:schemaLocation="http://autosar.org/2.1.4
autosar.xsd"
xmlns="http://autosar.org/2.1.4"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
The file "dummy.armxl" must be the first file selected in the
import dialog.
The problem is fixed by using the following patches or later
patches:
TargetLink 3.3p5
TargetLink 3.4p1
698 / 1260
ID:
KPR.2012.11.12.005
Title:
Utility
ID:
KPR.2012.11.13.001
Title:
Incorrect code/compilable
699 / 1260
700 / 1260
ID:
KPR.2012.11.16.001
Title:
Utility
Description: During the import of AUTOSAR 2.x/3.x files the import checks
whether the port
object to be imported already exists in the Data Dictionary, but
the merge
routine erroneously does not consider the port type, thus port
objects maybe
incorrectly merged upon import.
Example.
A ModeReceiverPort with the identifier "MyPort" exists in the
Data Dictionary
referencing a ModeSwitchInterface.
An AUTOSAR XML file is imported, which contains a
DataReceiverPort with the same
short name "MyPort". The import will erroneously identify both
objects as equal,
because both objects are port objects and have the same
identifier. The import
does not consider that the port types of the objects are
different.
The import throws a warning informing the user about the
merge of objects of a
different type:
W08890: Warning during AUTOSAR import:
The following Data Dictionary port objects are overwritten by a
port with a
different type: ...
Workaround: There are two alternative workarounds available:
1) Rename the particular port object before the import, so that
the merge does
not affect that port object.
2) Set the ImportStrategy to "Overwrite" instead of "Merge".
You can set it in
the Data Dictionary at the property
"Pool/Autosar/Config/ImportExport.ImportStrategy". For
TargetLink <= 3.3, this
option is also available in the Import Dialog.
The problem is fixed by using the following patches or later
patches:
TargetLink 3.3p5
TargetLink 3.4p1
701 / 1260
ID:
KPR.2012.11.16.002
Title:
Incorrect code/compilable
702 / 1260
ID:
KPR.2012.11.19.001
Title:
703 / 1260
ID:
KPR.2012.11.20.001
Title:
AUTOSAR 4.x import fails with error 7100 when DISPLAYNAME contains SUP or SUB element
Utility
Description: The AUTOSAR import aborts with error 7100, if the display of
a unit contains
nested XML elements.
The elements can be e.g. the SUP and SUB subelement, like
<DISPLAYNAME><SUP>1</SUP><SUB>1</SUB><DISPLAY-NAME>
This is a valid AUTOSAR 4.x XML file, but the TargetLink
import mechanism is not
able to handle sub elements in DISPLAY-NAME.
Workaround: If possible remove or uncomment the SUP and SUB
elements, like from
<DISPLAYNAME><SUP>1</SUP><SUB>1</SUB><DISPLAY-NAME>
change to
<DISPLAY-NAME><!--<SUP>1</SUP><SUB>1</SUB>-></DISPLAY-NAME>
The problem is fixed by using the following patches or later
patches:
TargetLink 3.3p5
TargetLink 3.4p2
704 / 1260
ID:
KPR.2012.11.20.002
Title:
Utility
Description: The utility tl_pack_model bundles all files that are neccessary
to work with a
TargetLink model in a non-TargetLink environment. If
required, a generated
function ddv.m is part of this file collection. This ddv.m acts as
a cache for
values of Data Dictionary variables and thus makes the
simulation of the model
independent from the Data Dictionary.
In the case that the model contains a block of type
TL_DataStoreMemory that uses
a ddv() expression as initial value, the corresponding value is
missing in the
generated ddv() file and thus Simulink will use an empty initial
value for the
block. This may lead to simulation differences between the
original TargetLink
model and the packed model.
Workaround: Inspect and supplement the cell array ddvList in the generated
function with the
missing values. This cell array consists of variable names in
the first column
and the associated values in the second column.
705 / 1260
ID:
KPR.2012.12.07.001
Title:
706 / 1260
ID:
KPR.2013.01.11.001
Title:
Simulation
707 / 1260
ID:
KPR.2013.01.11.002
Title:
Simulation
708 / 1260
ID:
KPR.2013.01.11.003
Title:
Utility
ID:
KPR.2013.01.11.004
Title:
Utility
709 / 1260
ID:
KPR.2013.01.11.005
Title:
Modelling
Description: The default modules for the reuse structure types is the
module into which the
step function of the topmost reused subsystem/chart is
generated. If the reuse
system contains several subsystems/chart which are
generated into different
files, then the code generation may abort with an unspecific
error message about
cyclic includes because the other modules do need the root
reuse module for the
reuse structure type definitions.
Example:
Error #17066: Cyclic includes detected: a_module.h,
b_module.h
Error #10014: The code generation process failed. Check the
error messages above
for further details.
Workaround: Adjust the settings that the code of a reused system is
completly generated into
one file. This can be archieved by eliminating the module
settings at function
classes and function blocks inside the reused system or by
separating the reused
system into several reused systems (reuse in reuse).
710 / 1260
ID:
KPR.2013.01.14.001
Title:
Description: For TargetLink >= 3.3, it is possible that code generation does
not terminate if
- the Code Generator option "ExtendedLifeTimeOptimization"
is activated
(default) AND
- the Code Generator option "EfficientVectorHandling" is
activated (default)
AND
- the model contains For or While iterator systems or vectors
with a width
greater than or equal to the value of code generator option
LoopUnrollThreshold
For TargetLink >= 3.4, this problem additionally may occur if
- instead of or in addition to "ExtendedLifeTimeOptimization"
the Code
Generator option "AllowStructAssignments" is activated
(default) OR
- instead of or in addition to "ExtendedLifeTimeOptimization"
Access Functions
are widely used.
Workaround: Try deactivating the Code Generator option
"ExtendedLifeTimeOptimization"; for
TargetLink 3.4, if this does not help, try also deactivating
"AllowStructAssignments".
The problem is fixed by using the following patch or later
patches:
TargetLink 3.4p1
711 / 1260
ID:
KPR.2013.01.14.002
Title:
Incorrect code/compilable
712 / 1260
ID:
KPR.2013.01.14.003
Title:
Incorrect code/compilable
713 / 1260
ID:
KPR.2013.01.14.004
Title:
Description: Access Function calls for an AUTOSAR PIM struct variable, which is
passed
call-by-reference (via FCN_REF_ARG, FCN_REF_PARAM),
lead to a superfluous include of an RTE simulation frame file for the
TargetLink
subsystem (RTE_<subsystem name>.h) in the generated production
code.
Note: With TargetLink 3.4 by default the problem is shadowed by an
include
statement of the "RTE.h" file, as RTE.h is described by AUTOSAR
standard and is
generated by an RTE generator.
Workaround: 1) If possible avoid call-by-reference parameter passing mechanism for
PIM
struct variables.
OR
2) Set the NameTemplate property of
/Pool/Modules/TlPredefinedModules/AUTOSAR/Rte_Frame/ModuleInfo
to "Rte" (which
is the default since TargetLink 3.4).
714 / 1260
ID:
KPR.2013.01.14.005
Title:
Incorrect code/compilable
715 / 1260
ID:
KPR.2013.01.14.006
Title:
Incorrect code/compilable
716 / 1260
ID:
KPR.2013.01.14.007
Title:
User interface
Description: If a variable
- has a variable class with the Optimization property
MERGEABLE activated AND
- this variable is used in a customer-specific function or in a
custom look-up
function AND
- this variable is also specified in another TargetLink block
(like a Constant
block for example) AND
- this variable has a scaling that is defined in the Data
Dictionary,
then
"Warning #17443: <block1> Found mergeable variable
<variable> that is associated
with two different scalings. Possible loss of information.
Scaling1: <block1>,
Scaling2: <block2>."
might erroneously be emitted, although both scalings are
identical.
Workaround: No workaround available.
717 / 1260
ID:
KPR.2013.01.14.008
Title:
Incorrect code/compilable
ID:
KPR.2013.01.14.009
Title:
718 / 1260
ID:
KPR.2013.01.14.010
Title:
Simulation
719 / 1260
ID:
KPR.2013.01.14.011
Title:
Simulation
720 / 1260
ID:
KPR.2013.01.14.012
Title:
User interface
Description: For numeric property values (for example, the Value property
of a Variable
object), the Data Dictionary Manager and its dialogs support
hexadecimal values
such as "0x10000". After having been entered by the user, the
value is then
converted to the corresponding integer. However, the integer
is then always
saturated to the range [0, 2^31-1], which may be incorrect.
For example:
0x7FFFFFFF -> 2147483647
0x80000000 -> 2147483647
0xFFFFFFFF -> 2147483647
Workaround: Enter decimals instead.
721 / 1260
ID:
KPR.2013.01.14.013
Title:
Utility
722 / 1260
ID:
KPR.2013.01.14.014
Title:
Description: If a state chart has a data object with scope Data Store
Memory AND
- the corresponding Data Store Memory block references a
Data Dictionary
variable as Data Store Memory variable that is specified as an
AUTOSAR
interrunnable variable AND
- the State Chart is (directly or indirectly) placed inside a
subsystem that is
specified as a runnable
then the code generation in AUTOSAR mode fails with the
following message:
"Error #32013:
TL_Controller/Controller_Runnable/Chart1.IRV_pos:
The block references AUTOSAR interrunnable variable
Rte_Irv_Controller_LinPos as
a block variable. This is not permitted for this block."
Workaround: Delete the data object and connect Data Store Read/Write
blocks with the same
Data Store name to inputs/outputs of the state chart instead.
ID:
KPR.2013.01.14.016
Title:
User interface
723 / 1260
ID:
KPR.2013.01.14.017
Title:
Simulation
ID:
KPR.2013.01.14.019
Title:
Modelling
724 / 1260
ID:
KPR.2013.01.14.020
Title:
Utility
726 / 1260
ID:
KPR.2013.01.14.021
Title:
ID:
KPR.2013.01.14.022
Title:
728 / 1260
ID:
KPR.2013.01.14.024
Title:
Modelling
729 / 1260
730 / 1260
ID:
KPR.2013.01.16.001
Title:
731 / 1260
ID:
KPR.2013.01.16.002
Title:
Simulation
ID:
KPR.2013.01.24.001
Title:
Utility
732 / 1260
733 / 1260
Workaround: If possible specify or add add the LOWER/UPPER Limits for the
scaling in the
arxml file before import. E.g. in the example:
<COMPU-METHOD>
<SHORT-NAME>CM_MO_Drehzahl_01</SHORT-NAME>
<CATEGORY>SCALE_LINEAR_AND_TEXTTABLE</CATEGORY>
<DISPLAY-FORMAT>%g</DISPLAY-FORMAT>
<UNIT-REF DEST="UNIT">/teste/meter</UNIT-REF>
<COMPU-INTERNAL-TO-PHYS>
<COMPU-SCALES>
<COMPU-SCALE>
<DESC>
<L-2>Fehler</L-2>
</DESC>
<LOWER-LIMIT INTERVAL-TYPE="CLOSED">65535</LOWERLIMIT>
<UPPER-LIMIT INTERVAL-TYPE="CLOSED">65535</UPPERLIMIT>
<COMPU-CONST>
<VT>CxFFFF</VT>
</COMPU-CONST>
</COMPU-SCALE>
<COMPU-SCALE>
<LOWER-LIMIT INTERVAL-TYPE="CLOSED">0</LOWER-LIMIT>
<UPPER-LIMIT INTERVAL-TYPE="CLOSED">65534</UPPERLIMIT>
<COMPU-RATIONAL-COEFFS>
<COMPU-NUMERATOR>
<V>0</V>
<V>1</V>
</COMPU-NUMERATOR>
<COMPU-DENOMINATOR>
<V>4</V>
</COMPU-DENOMINATOR>
</COMPU-RATIONAL-COEFFS>
</COMPU-SCALE>
</COMPU-SCALES>
</COMPU-INTERNAL-TO-PHYS>
</COMPU-METHOD>
The problem is fixed by using the following patch or later patches:
TargetLink 3.4p1
734 / 1260
ID:
KPR.2013.01.24.002
Title:
Simulation
735 / 1260
ID:
KPR.2013.01.24.003
Title:
Simulation
ID:
KPR.2013.01.25.001
Title:
736 / 1260
ID:
KPR.2013.01.25.002
Title:
ID:
KPR.2013.01.25.003
Title:
Utility
Description: The autoscaling tool calculates wrong ranges for sum blocks
that appearance is
modified using spacers by inserting "|"-characters into the
inputs field.
For example:
"+++" and "++|+" do implement the same behavior, but the
autoscaling tool
calculates different ranges. The autoscaling tool calculates the
same range for
"++|+" as for "++-".
Workaround: Do not use the "|"-character to insert spacers.
737 / 1260
ID:
KPR.2013.01.25.004
Title:
Utility
738 / 1260
ID:
KPR.2013.01.25.005
Title:
739 / 1260
ID:
KPR.2013.01.29.001
Title:
Simulation
740 / 1260
ID:
KPR.2013.01.31.001
Title:
Simulation
Description: If
- a Bus Outport of the TargetLink subsystem is not enhanced
AND
- it is driven by an enhanced Bus Outport block (directly or
indirectly via
further not-enhanced bus outports) AND
- the bus contains two succeeding signals whose widths fulfill
the following
inequation: "[1st signal width] > [2nd signal width] + 1 > 1"
AND furthermore, the two signals are specified with one of the
following
settings depending on the enhanced Bus Outport block's
configuration:
1) the block is specified with AUTOSAR sender-receiver
communication and the
data elements to the signals are referencing types with the
same base type.
OR
2) the block is specified with AUTOSAR client-server
communication and the
operation arguments to the signals are components of the
same operation argument
of struct type AND the operation arguments to the signals are
referencing types
with the same base type.
OR
3) the block is not specified with any AUTOSAR
communication at all and the
signals are specified as components of the same bus struct
AND the signals are
referencing types with the same base type.
Then in such a situation building of the SIL or PIL simulation
fails with the
following error message:
Generating simulation frame files ... *** E90108: INTERNAL
ERROR:
*** Internal error. Contact dSPACE technical support.
*** The value of the Element property cannot be greater than
the vector width.
Workaround: Enhance the TargetLink subsystem's bus outport block.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.3p5
741 / 1260
ID:
KPR.2013.02.18.001
Title:
Incorrect code/compilable
742 / 1260
ID:
KPR.2013.02.18.002
Title:
User interface
743 / 1260
ID:
KPR.2013.02.19.001
Title:
Incorrect code/compilable
744 / 1260
ID:
KPR.2013.03.05.001
Title:
tl_set() fails for Custom Code blocks having more than one
parameter or state
API
Description: If a Custom Code block has more than one parameter or more
than one state, then
the parameter/state properties cannot be changed using
TargetLink API. An
attempt results in stack trace in MATLAB command window
like the following:
??? Comma separated list must have exactly one item.
Error in ==> tl_ddv_sync at 27
elseif data.(varName).useddvariablevalue
Error in ==> tl_customcode_api at 126
data = tl_ddv_sync(data, props{1}, props{end},
propertyValue);
Error in ==> tl_set>FcnTLSet at 485
[data, errorflag, msg] = fhBlockApiFcn('dynamicSync', data,
extData, d, pn,
PropertyValue);
Error in ==> tl_set at 193
[errorflag(m),msg{m}] = ...
Workaround: No workaround available.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.3p5
745 / 1260
ID:
KPR.2013.03.06.001
Title:
Utility
746 / 1260
ID:
KPR.2013.03.12.001
Title:
ID:
KPR.2013.03.12.002
747 / 1260
Title:
Description: If
- in the Data Dictionary an AUTOSAR Software Component is
specified with a
Runnable of kind "StepFunction" and another Runnable of
kind "RestartFunction"
AND
- the "StepFunction" Runnable is modeled as a subsystem in a
TargetLink model
AND
- this runnable calls one of the following RTE API functions
that are modeled in
TargetLink by Data Dictionary variable objects:
* Rte_Pim
* Rte_Calprm
* Rte_Prm
* Rte_CData
* Rte_IrvRead
* Rte_IrvWrite
* Rte_IrvIRead
* Rte_IrvIWrite
- AND the DD variable's (pre-defined) variable class has been
modified by
setting the property "RestartFunctionName" to "default",
then TargetLink generates the Runnable of kind
"RestartFunction" that is calling
the modeled RTE API function, but it does not create any
AUTOSAR access point
for this call. This might lead to the following problems:
1) An exported ARXML file does not contain the access point.
So an AUTOSAR
architecture tool (like SystemDesk) does not generate a
definition of the called
RTE API function. This leads to errors when trying to
compilate TargetLink's
AUTOSAR code with RTE code generated by an AUTOSAR
architekture tool.
2) Since TargetLink 3.4 building SIL/PIL might fail as well. The
make process
aborts complaining that the RTE API function definition could
not be found.
748 / 1260
ID:
KPR.2013.03.12.003
Title:
Simulation
749 / 1260
750 / 1260
ID:
KPR.2013.03.12.004
Title:
751 / 1260
ID:
KPR.2013.03.12.005
Title:
752 / 1260
ID:
KPR.2013.03.12.006
Title:
Incorrect code/compilable
ID:
KPR.2013.03.12.007
Title:
Incorrect code/compilable
753 / 1260
754 / 1260
ID:
KPR.2013.03.12.008
Title:
Incorrect code/compilable
755 / 1260
756 / 1260
757 / 1260
ID:
KPR.2013.03.14.001
Title:
Incorrect code/compilable
ID:
KPR.2013.03.18.002
Title:
Simulation
759 / 1260
ID:
KPR.2013.03.18.003
Title:
Incorrect code/compilable
760 / 1260
ID:
KPR.2013.03.19.002
Title:
Incorrect code/compilable
761 / 1260
ID:
KPR.2013.04.12.002
Title:
Incorrect code/compilable
762 / 1260
ID:
KPR.2013.04.12.003
Title:
Simulation
763 / 1260
ID:
KPR.2013.04.12.004
Title:
764 / 1260
ID:
KPR.2013.04.15.001
Title:
Simulation
ID:
KPR.2013.04.17.001
Title:
765 / 1260
Class:
Incorrect code/compilable
767 / 1260
ID:
KPR.2013.04.17.004
Title:
768 / 1260
ID:
KPR.2013.04.17.005
Title:
Incorrect code/compilable
ID:
KPR.2013.04.17.006
Title:
Simulation
769 / 1260
ID:
KPR.2013.04.17.007
Title:
ID:
KPR.2013.04.17.008
Title:
Incorrect code/compilable
770 / 1260
771 / 1260
ID:
KPR.2013.04.17.010
Title:
Incorrect code/compilable
772 / 1260
ID:
KPR.2013.04.18.001
Title:
Simulation does not work if Windows file system behavior for 8dot3 name creation is deactivated
Simulation
Description: If the Windows file system behavior for 8dot3 name creation is switched off, a
long path cannot be converted from
"D:\PROGRAM FILES\TARGETLINK 3.4" to the short 8dot3 form "D:\PROGRA~1\
TARGETLINK 3.4". As current TargetLink versions rely on 8dot3 names for
compiling the simulation, switching it off leads to different errors in
TargetLink, like the following:
===============================
ERROR: The source file
D:\PROGRAM
does not exist. Please generate code first and/or
check the installation
MAKE PROCESS ABORTED
===============================
===============================
GENERATING SYMBOL TABLE...
*** E08124: SYMBOL TABLE IMPORT:
*** Invalid XML file. The error message is:
*** The reading of the schema file
'C:\Programme\dSPACETL3_3\Dsdd\SymbolTabl
eParser' fails. At line 0
===============================
Workaround: Activate the 8dot3 name support in Windows (please see Windows help documents
etc.).
Note: Changing this does not change the files, but it does change the way that
NTFS displays and manages files. So, after enabling 8dot3 name creation
TargetLink must be installed again!
773 / 1260
ID:
KPR.2013.04.30.001
Title:
774 / 1260
ID:
KPR.2013.04.30.002
Title:
Modelling
775 / 1260
ID:
KPR.2013.05.14.001
Title:
776 / 1260
ID:
KPR.2013.05.14.002
Title:
Utility
ID:
KPR.2013.05.14.003
Title:
Description: The code generation will abort with an error E30052 for a
custom look-up or a
customer-specific Stateflow function that
- use a typedef for a struct variable AND
- that typedef is located in the Data Dictionary
- AND it is not placed directly in /Pool/Typedefs but in a
another Typedef group
below it.
Workaround: Place typedefs that should be used for a structure variable in
a custom look-up
script or a Stateflow customer-specific function script in
directly below the
Typedefs node in the Data Dictionary (and not in a further
subgroup).
777 / 1260
ID:
KPR.2013.05.14.004
Title:
Utility
778 / 1260
ID:
KPR.2013.05.14.005
Title:
779 / 1260
ID:
KPR.2013.05.14.006
Title:
Incorrect code/compilable
780 / 1260
ID:
KPR.2013.05.14.007
Title:
781 / 1260
ID:
KPR.2013.05.14.008
Title:
Incorrect code/compilable
782 / 1260
ID:
KPR.2013.05.14.009
Title:
Incorrect code/compilable
783 / 1260
ID:
KPR.2013.05.16.001
Title:
Code generation aborts with a fatal error 10007 when merging extern variables used in
several files
Description: Code generation may abort if a model specifies extern variables that should be
merged. That means, it contains several block variables with fixed, identical
names having variable classes with storage 'extern'. Furthermore, these
variables fulfill all of the following conditions:
- None of the variables has a variable class whose property 'module' is set AND
- Variables that are specified in the Data Dictionary do not have the property
'module' set AND
- According to the modeling, the variables are used in different files in the
generated code.
In this case, code generation may fail with a message like the following
Fatal #10007: Internal error. Error code:
...\Core\XcgCodeView\Sources\XcgCodeView\ICode\StatementTables\SymbolTable\Merge
Symbol\TlCMergeSymbolMerge.cpp_ 1702.
Workaround: 1) Use variable classes with specified 'module' properties for the variables.
(In case of DD variables, you can specify the DD variable property 'module'
instead.)
Or 2) disable optimization by specifiying optimization level 0.
784 / 1260
ID:
KPR.2013.05.16.003
Title:
Utility
Description: In case the virtual V-ECU is build for particular platform for the
first time
and the location of the required compiler was not specified yet
the user is
asked interactively to specify it.
If the compiler path was already specified, but TargetLink
does not find it at
the specified location, this request does not occur again, so
the user cannot
correct it.
Instead during compilation process an error is issued that
informs the user that
required compiler executable cannot be found.
For example for the GNU compiler this error looks like:
ERROR: The compiler executable
gcc.exe
does not exist in directory
C:\GCC3.4.5\bin\bin
Please check the installation of the compiler package
and/or the belonging environment settings.
Workaround: Correct the compiler path using the 'Set' action of the API
funktion
tl_vecu_compiler (see help of the tl_vecu_compiler for
details).
The problem is fixed by using the following patch or later
patches:
TargetLink 3.4p3
ID:
KPR.2013.05.16.004
Title:
Missing write (read) access to variable with only read (write) access function
Incorrect code/compilable
785 / 1260
Description: For TargetLink >= 3.3, block output variables (other than function Inport or
Outport blocks) with a variable class referencing an AccessFunctionTemplate are
not necessarily replaced by write access function calls and subsequent read
access function calls.
Instead TargetLink may use a local auxiliary variable in order to reduce code
size and execution time:
(1)
if (...) {
Aux_ = ...;
} else {
Aux_ = ...;
}
SetVar(Aux_);
... = ... Aux_;
The opposite code pattern may be used for parameters:
(2)
Aux_ = GetVar();
... Aux_ ...
... Aux_ ...
For states and merged variables, a preceding read from and a subsequent write to
an auxiliary variable are possible:
(3)
Aux_ = GetVar();
if (...) {
Aux_ = ... Aux_ ...
}
SetVar(Aux_);
... = ... Aux_;
If one of these code patterns is applied and there is explicitly (with intent)
no corresponding access function specified for writing (reading), then
TargetLink erroneously may omit writing (reading) of the accessed variable:
(1,3)
if (...) {
Aux_ = ...;
}
else {
Aux_ = ...;
}
/* missing write: SetVar(Aux_); */
... = ... Aux_;
(2,3)
/* missing read: Aux_ = GetVar();*/
if (...) {
Aux_ = ... Aux_ ...
}
SetVar(Aux_);
... = ... Aux_;
786 / 1260
Workaround: For TargetLink >= 3.4, set the reading access function's CreateLocalValueCopy
property to "avoid", e.g.
/Pool/Templates/AccessFunctions/AFT_Get/Settings/Get.CreateLocalValueCopy=avoid
For TargetLink < 3.4, you can add a TargetLink-defined macro access function
that essentially just gives you the missing assignment:
- Create a write AccessFunction object below the AccessFunctionTemplate's
Settings as appropriate (WRITE, WRITE_BY_PARAMETER, WRITE_INDEXED,
WRITE_INDEXED_BY_PARAMETER)
- Set its function class to a function class with Macro=on, e.g. GlobalMacro
- Leave the MacroBody empty
- If necessary, set ModuleRef
For all TargetLink versions: If all write (read) accesses for missing write
(read) access function take place in one module and if the variable is defined
in this module, then you also can set the code generator option
IgnoreAccessFunctionsInOwnModule to 'on' (e.g. via TargetLink Main Dialog >
Advanced > All Options ...). In this case, neither access functions nor
auxiliary variables are used in this module.
787 / 1260
ID:
KPR.2013.05.16.005
Title:
Incorrect code/compilable
788 / 1260
ID:
KPR.2013.05.16.006
Title:
Simulation
789 / 1260
ID:
KPR.2013.05.16.007
Title:
790 / 1260
ID:
KPR.2013.05.21.001
Title:
Generated code calculates incorrect results using computethrough-overflow with a fixed-point library division function
Incorrect code/compilable
791 / 1260
ID:
KPR.2013.06.03.001
Title:
Incorrect code/compilable
792 / 1260
ID:
KPR.2013.06.11.001
Title:
Simulation
793 / 1260
ID:
KPR.2013.06.11.002
Title:
Utility
794 / 1260
ID:
KPR.2013.06.11.003
Title:
Modelling
ID:
KPR.2013.06.26.001
Title:
Incorrect code/compilable
795 / 1260
796 / 1260
797 / 1260
ID:
KPR.2013.07.16.001
Title:
Utility
798 / 1260
ID:
KPR.2013.07.18.001
Title:
ID:
KPR.2013.07.30.001
Title:
Description: If
- a model contains a block (block A) for which saturation to the
implemented
range is specified (i.e. 'Saturate' is checked in the block
dialog) AND
- for that block saturation to one of the limits (limit A) is not
necessary
because the worst case range value for that limit is
smaller/greater than the
associated implemented limit AND
- saturation to the other limit is necessary AND
- that block feeds directly or not directly another block (block
B) that also
demands saturation to the implemented range and if
- for block B saturation to a limit is not necessary AND
- for block B saturation to that limit would be necessary, if for
limit A the
implemented limit could come up,
799 / 1260
800 / 1260
ID:
KPR.2013.07.30.002
Title:
Incorrect code/compilable
801 / 1260
ID:
KPR.2013.07.31.001
Title:
802 / 1260
ID:
KPR.2013.08.05.001
Title:
Utility
803 / 1260
ID:
KPR.2013.08.05.002
Title:
Utility
804 / 1260
ID:
KPR.2013.08.05.003
Title:
805 / 1260
ID:
KPR.2013.08.05.004
Title:
Incorrect code/compilable
Description: The change detection in the first call of a Stateflow chart shall
return always
0 (false). For example if a Stateflow input data is watched with
"hasChanged(in)" the result has to be 0 (false) in the first chart
execution
regardless which value the data "in" has. But the code
generated by TargetLink
returns a 1 (true) if the value of "in" is not 0 in that first
execution. Only
for the following chart exceutions the code calculates the
correct result.
Workaround: 1. Create a chart Local data - for example "FirstRun" - and set
its initial
value to 1.
2. Then modify the action/condition with the hasChanged
operator so that it
delivers always 0 if FirstRun==1 and sets FirstRun to 0.
ID:
KPR.2013.08.06.001
Title:
Incorrect code/compilable
806 / 1260
ID:
KPR.2013.08.06.002
Title:
Simulation
ID:
KPR.2013.08.14.001
Title:
ID:
KPR.2013.08.20.001
Title:
807 / 1260
808 / 1260
Workaround: Insert a Rescaler block between the block that leads to the
access necessitating
an auxiliary variable and the block referencing the struct
component. The
Rescaler can be set to "Inherit signal properties", its block
output variable
needs a variable class with an Optimization property that does
not contain
ERASABLE.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.4p3
ID:
KPR.2013.08.20.002
Title:
Utility
809 / 1260
ID:
KPR.2013.08.20.003
Title:
Modelling
810 / 1260
ID:
KPR.2013.08.20.004
Title:
811 / 1260
ID:
KPR.2013.08.20.005
Title:
Utility
812 / 1260
ID:
KPR.2013.08.20.006
Title:
Description: The following problem may happen for scalings used by structures:
Incremental code generation fails with an error message like the
following:
Fatal #08914:
Corrupted data found. The variable
/Subsystems/SubsystemName/FunctionName/Variables/VariableName
does not reference
a scaling object. Do not edit the subsystem area. Start codegeneration
for
incremental code unit <cgu> again.
The error occurs because the scaling which is referenced by the
variable is not
found, as it was not copied from the Pool area to the Subsystems area
in the
Data Dictionary by the previous (incremental) code generation run.
Workaround: The only workaround is to adjust the Data Dictionary Subsystem after
the code
generation, e.g. by executing a user_post_codegen_hook.m file and
copy the
scaling objects from Pool.
For example when using VOID_SCALING for a structure component,
execute the
command:
dsdd('Copy','source', '/Pool/Scalings/VOID_SCALING', 'destination',
'/Subsystems/SubsystemName/Scalings', 'access', 'rwrw');
The problem is fixed by using the following patch or later patches:
TargetLink 3.4p5
813 / 1260
ID:
KPR.2013.08.20.007
Title:
Utility
ID:
KPR.2013.08.20.008
Title:
Utility
814 / 1260
ID:
KPR.2013.08.20.009
Title:
Code generation aborts with fatal error #17005 for array index
calculations involving subtractions with unsigned result type
ID:
KPR.2013.08.27.001
Title:
Incorrect code/compilable
815 / 1260
ID:
KPR.2013.08.27.002
Title:
816 / 1260
TargetLink 2.2 2.2.1 2.3 2.3.1 3.0 3.0.1 3.1 3.2 3.3 3.4 3.5
Class:
Incorrect code/compilable
817 / 1260
Workaround: 1) Try to change your model in a way that clearly forces the
computation of A
before Tn, e.g. by a Stateflow chart which triggers first A and
then T1 by
function call output events.
Or 2) If the above described model situation is located inside
an atomic
subsystem, then add a branch line connection from ..->Tn to a
new Simulink
outport (having the highest port number) and just terminate
the port outside of
the atomic subsystem.
The problem is fixed by using the following patches or later
patches:
TargetLink 3.3p6
TargetLink 3.4p5
ID:
KPR.2013.08.28.003
Title:
Modelling
818 / 1260
ID:
KPR.2013.09.10.001
Title:
Incorrect code/compilable
819 / 1260
ID:
KPR.2013.09.18.001
Title:
User interface
820 / 1260
ID:
KPR.2013.09.18.002
Title:
Incorrect code/compilable
821 / 1260
ID:
KPR.2013.09.20.001
Title:
Utility
822 / 1260
ID:
KPR.2013.09.20.002
Title:
Incorrect code/compilable
ID:
KPR.2013.09.26.001
Title:
823 / 1260
824 / 1260
ID:
KPR.2013.10.01.001
Title:
Simulation
825 / 1260
ID:
KPR.2013.10.07.001
Title:
Incorrect code/compilable
826 / 1260
ID:
KPR.2013.10.11.001
Title:
Utility
ID:
KPR.2013.10.22.001
Title:
Simulation
827 / 1260
ID:
KPR.2013.10.22.002
Title:
Description: If
- an AUTOSAR model contains a subsystem that is specified
as a runnable AND
- the runnable belongs to a software component that is
prepared for multiple
instantiation AND
- the runnable subsystem does contain a statechart AND
- the statechart is triggering a function-call subsystem via a
function-call
event AND
- in the Stateflow Chart the event is called in a graphical
functions or in a
state
then in this case one of the following errors might occur:
- The code generation stops with error #17002: "The variable
'instance' is used
in function Ca2_XYZ which is defined in module ABC.c. The
variable is covered up
by a variable of identical name. Select a different name."
- The code generation succeeds, but building SIL/PIL is not
possible. The
compiler stops with an error message complaining about an
undeclared identifier
like "Instance_<SoftwareComponent>_XYZ".
Workaround: 1. Try to call the Stateflow function-call events in transitions
only.
Or 2. Try to approximate function-call events by either-edge
events using
queuing behavior. See the Stateflow documentation for more
about this.
ID:
KPR.2013.10.24.001
Title:
Incorrect code/compilable
828 / 1260
Description: If all the following conditions are fulfilled the update code,
writing the
constant values to the output variables of the Merge block, is
missing in the
generated code:
- The output signals of Constant blocks are combined via a
Mux block to a single
vector
__AND__
- At least one of the Constant blocks specifies a scaled
constant value (block
property "Allow signal specification" is enabled)
__AND__
- The output of the Mux block is passed to the not enhanced
inport of an atomic
subsystem
__AND__
- Inside the atomic subsystem the signal is passed directly or
only via routing
blocks to the not enhanced outport of the atomic subsystem
__AND__
- The outport of the atomic subsystem is connected with the
input of a Merge
block
Example:
Wrong code:
if (!(Sa1_InPort_EnableSignal)) {
Sa1_Merge[0] = Sa1_InPort2[0];
Sa1_Merge[1] = Sa1_InPort2[1];
}
Sa1_OutPort1[0] = Sa1_Merge[0];
Sa1_OutPort1[1] = Sa1_Merge[1];
Correct code expected:
if (Sa1_InPort_EnableSignal > 0) {
Sa1_Merge[0] = 1;
Sa1_Merge[1] = 2;
}
if (!(Sa1_InPort_EnableSignal)) {
Sa1_Merge[0] = Sa1_InPort2[0];
Sa1_Merge[1] = Sa1_InPort2[1];
}
Sa1_OutPort1[0] = Sa1_Merge[0];
Sa1_OutPort1[1] = Sa1_Merge[1];
Workaround: Enhance the outport of the atomic subsystem.
829 / 1260
ID:
KPR.2013.10.29.001
Title:
Simulation
Description: The TargetLink code generator doesn't generate stub code (.c
file) for a
variable with access function (macro).
This leads to SIL/PIL build process failures (linker fails with
unresolved
externals).
Workaround: Generate production code for a such variable for the
simulation build process.
E.g. generate code for all code generation units at once or
adjust module
ownership for the variable's module.
ID:
KPR.2013.10.30.001
Title:
Utility
830 / 1260
ID:
KPR.2013.11.06.001
Title:
Simulation
ID:
KPR.2013.11.06.002
Title:
Utility
Description: The error E08756 is thrown during the import of a COMPUMETHOD with
CATEGORY=TEXTTABLE and a UNIT-REF. Such COMPUMETHODs are not imported.
While this behaviour is correct for AUTOSAR < 3.2.2, it is
erroneous for AUTOSAR
3.2.2 which allows a UNIT-REF for TEXTTABLE COMPUMETHODs.
A message like the following will be emitted by the Data
Dictionary:
Error 10:42:19 E08756: Error during AUTOSAR import Error
detected in attempt to
import COMPU-METHOD <ScalingName>.
No UNIT-REF is allowed if the conversion type is
TEXTTABLE.
Workaround: No workaround available.
831 / 1260
ID:
KPR.2013.11.15.001
Title:
833 / 1260
ID:
KPR.2013.11.18.001
Title:
Utility
Description: The generation of the PDF documentation fails with the error
[ERROR] file:<filePath> The id
"anchor_<subsystemName>_<interfaceName>_AUTOSAR"
already exists in this document
*** E09999: ERROR USING DS_DOS:
*** Error when trying to invoke the command <command>
*** See log file <command>
if following conditions apply:
1) The production code to be documented was generated in
AUTOSAR mode AND
2) in the AUTOSAR software components interfaces with
identical names, but in
different Interface-Groups/Packages are defined.
For example (Data Dictionary excerpt):
AR
|--> Interfaces
|
|--> MyInterfaceGroup
|
|--> MyInterface
|
| --> MyInterface
Workaround: For PDF documentation generation no workaround is
available. However, the
generation of documentation in HTML or RTF format works.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.4p5
834 / 1260
ID:
KPR.2013.11.18.002
Title:
Utility
835 / 1260
ID:
KPR.2013.11.19.002
Title:
Simulation
ID:
KPR.2013.11.19.004
Title:
User interface
836 / 1260
ID:
KPR.2013.11.19.006
Title:
Simulation
837 / 1260
ID:
KPR.2013.11.19.007
Title:
Modelling
838 / 1260
ID:
KPR.2013.11.22.001
Title:
Utility
839 / 1260
ID:
KPR.2013.11.25.001
Title:
Utility
840 / 1260
ID:
KPR.2013.11.25.002
Title:
Simulation
841 / 1260
ID:
KPR.2013.11.25.003
Title:
Utility
842 / 1260
ID:
KPR.2013.11.25.004
Title:
Utility
843 / 1260
ID:
KPR.2013.11.26.001
Title:
Incorrect code/compilable
844 / 1260
ID:
KPR.2013.11.27.001
Title:
845 / 1260
ID:
KPR.2013.12.02.001
Title:
Modelling
846 / 1260
ID:
KPR.2013.12.06.001
Title:
847 / 1260
ID:
KPR.2013.12.12.002
Title:
User interface
ID:
KPR.2014.01.08.001
Title:
Incorrect code/compilable
848 / 1260
849 / 1260
ID:
KPR.2014.01.20.001
Title:
API
850 / 1260
ID:
KPR.2014.01.23.001
Title:
Wrong flags for bus struct components in the TRC file created
for standalone S-Functions
Simulation
Description: The code variables generated for the leaf components of the
bus signal, with the
exception of the first leaf, are described as "parameters",
instead of as
"outputs", in the user TRC file created by TargetLink's
Standalone Model Manager
and API commands for generating standalone S-functions.
Example from TRC file:
Sa1_FirstBusElement
{
type: flt(32,IEEE)
alias: "Sa1_FirstBusElement"
desc: "This is variable generated for the first bus's leaf signal.
The flags are
correct set."
flags: OUTPUT|READONLY
}
Sa1_SecondBusElement
{
type: flt(32,IEEE)
alias: "Sa1_SecondBusElement"
desc: "This is variable generated for the second bus's leaf
signal. The flags
are not correct set."
flags: PARAM
}
Workaround: No workaround available.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.4p5
851 / 1260
ID:
KPR.2014.01.28.001
Title:
ID:
KPR.2014.02.18.001
Title:
Utility
852 / 1260
ID:
KPR.2014.02.18.003
Title:
API
853 / 1260
ID:
KPR.2014.02.19.001
Title:
Utility
854 / 1260
ID:
KPR.2014.02.19.003
Title:
A2L File Generator does not take the min/max value specified
in the TargetConfig.xml file into account
Utility
855 / 1260
ID:
KPR.2014.03.05.001
Title:
Incorrect code/compilable
ID:
KPR.2014.03.17.001
Title:
Incorrect code/compilable
856 / 1260
857 / 1260
ID:
KPR.2014.03.18.001
Title:
User interface
858 / 1260
ID:
KPR.2014.03.18.002
Title:
859 / 1260
ID:
PR20030211-01
Title:
Modelling
ID:
PR20030715-06
Title:
User interface
Description: If from a block dialog the selection dialogs for Variable, Class,
Type or
Scaling are opened and then the model is closed without
closing the selection
dialog before, an error occurs.
Workaround: Close all Class/Type/Variable/Scaling selection dialogs before
closing the
model.
ID:
PR20030926-13
Title:
Modelling
860 / 1260
ID:
PR20031113-20
Title:
Modelling
Description: The simulation results differ critically between MIL and SIL if
variable
step size and inherit sample time for the SL inports are
selected.
Workaround: No workaround available.
ID:
PR20040109-08
Title:
MIL mode logging in loops may be wrong and differ from SIL
or PIL mode logging
Simulation
861 / 1260
ID:
PR20040220-25
Title:
Modelling
862 / 1260
ID:
PR20040227-24
Title:
Utility
Description: The date string in the code size information file does not show
the date when
the code size was evaluated. It shows the date of the makefile
fragment
<application>.mk in the same directory, which is generated at
'compile
target' time.
*******************************************************************
***** Code size information file for model: emw
***** Generated with TargetLink : 2.0
***** Compiled with : TASK60
***** 2004-02-23 11:02:09
Workaround: No workaround available.
ID:
PR20040312-19
Title:
863 / 1260
ID:
PR20040329-20
Title:
User interface
ID:
PR20040401-11
Title:
Simulation
864 / 1260
ID:
PR20040402-05
Title:
Utility
ID:
PR20040406-05
Title:
865 / 1260
ID:
PR20040407-04
Title:
Modelling
Description: Influenced of this problem are all Look-up Table blocks except
the Direct
Look-Up Table (n-D) block for which a special record layout
with direct
addressing - as described in TargetLink Advanced Practices
Guide pp. 196
chapter Custom Table Maps - is specified.
The look-up table mechanism reuses look-up table functions
and structs.
Whether a new struct/function is generated depends on the
data type of the
input, on the look-up table values, and on the implementation
details (search
method, use end values, etc.).
If two blocks have the same settings for these properties, only
a single map
structure type and a single look-up function are created. But
the components
of the two blocks may have different type attributes, e. g. the
first block
may have CAL as variable class and the second may have
only CONST. Since
these attributes are propagated to a single common structure
type the
settings of one block are overwritten. It is not predictable
which block with
its settings will be the source for the components' type
attributes.
Workaround: For all Look-Up Table blocks with a record layout as described
above select
the same axes variable classes for all instances.
866 / 1260
ID:
PR20040407-09
Title:
Simulation
867 / 1260
ID:
PR20040506-06
Title:
Utility
ID:
PR20040611-01
Title:
Simulation
868 / 1260
ID:
PR20040708-02
Title:
Modelling
869 / 1260
ID:
PR20040907-01
Title:
User interface
Description: For the output of some specific blocks only one of the
following types can be
specified:
- Bool
- Bitfield
- constrained user type with void scaling (LSB = 1, offset = 0)
and min, max
values equals 0 and 1 respectively.
An attempt to set a other type results in error message:
*** The current datatype
*** [typeName]
*** is not one of the currently defined Boolean types!
If constrained user type has once be selected the user can
modify it in Data
Dictionary, for example he can remove the constraints.
However during the
subsequently code generation no error/warning is issued to
inform the user that
such type is not allowable for the block output, whereas the
block dialog issues
an error.
The problem concerns the following blocks:
- Relational Operator
- SR FlipFlop (both outputs)
- JK FlipFlop (both outputs)
- D FlipFlop output !Q)
- D Latch (output !Q)
Workaround: Use only currently defined Boolean types for the output of the
blocks listed in
the description.
870 / 1260
ID:
PR20041015-02
Title:
Description: For relational operations like 'bit1 > bit2', where the boolean
operands are
mapped to bit types, casts are generated:
'((UInt8) bit1) > ((UInt8) bit2)'
In some cases these casts are superfluous, in others they
help to avoid a
compiler bug.
Workaround: No workaround available.
ID:
PR20041110-13
Title:
Incorrect code/compilable
871 / 1260
ID:
PR20041124-09
Title:
Modelling
ID:
PR20041125-05
Title:
Modelling
872 / 1260
873 / 1260
ID:
PR20050222-03
Title:
Incorrect code/compilable
874 / 1260
875 / 1260
Workaround: - Check all 1-D and 2-D Look-Up Table blocks that have their
table map set to a
mergable variable class. Ensure that all blocks that share the
same fixed name
for the table map have the same axis data for all table axes.
- Check all Discrete State Space blocks that have the check
box "Keep matrix
structure" disabled and mergeable variable classes for the
state space matrices.
Ensure that all blocks that share the same fixed name for the
state space matrix
struct have the same values for matrices A, B, C, and D.
- Check all Discrete Filter blocks that have the check box
"Keep vector
structure" disabled and mergeable variable classes for the
coefficients. Ensure
that all blocks that share the same fixed name for the
coefficient struct have
the same values for Numerator and Denominator.
- Check all Discrete Transfer Function blocks that have the
check box "Keep
vector structure" disabled and mergeable variable classes for
the coefficients.
Ensure that all blocks that share the same fixed name for the
coefficient struct
have the same values for Numerator and Denominator.
- Avoid merging look-up table maps with coefficient structs or
state space
matrix structs, as well as coefficient structs with state space
structs.
ID:
PR20050315-07
Title:
876 / 1260
ID:
PR20050414-04
Title:
Utility
Description: In Data Dictionary wrong entry for Lookup Table block may be
generated under
ModelView if the axis symbols are merged and used once as
x-axis and once as
y-axis: two block variables named AXIS_PTS_X may be
created, but only one is
allowed. The name of the second one should be
AXIS_PTS_Y.
This bug causes wrong A2L file output for this Lookup Table.
Workaround: Do not merge axis symbols.
877 / 1260
ID:
PR20050509-11
Title:
User interface
878 / 1260
ID:
PR20050621-13
Title:
Incorrect code/compilable
ID:
PR20050628-20
Title:
Description: The syntax how to change section names has changed with
the Tasking 2 compiler.
While the new style has been implemented for TOM
TriCore/Task22, it has not for
TOM TriCore/Task23.
Old:
/* new name for section 'rom' */
#pragma section rom = "near_MyCalSection" farrom =
"far_MyCalSection"
CAL Int16 Sa2_Gain_gain = 20480 /* 2.5 */ /* LSB: 2^-13
OFF: 0 MIN/MAX: -4 ..
3.9998779296875 */;
/* set default section names */
#pragma section
New:
#pragma section near
#pragma section far
CAL Int16 Sa2_Gain_
/* set default sect
#pragma section all
Workaround: No workaround available.
879 / 1260
ID:
PR20050712-07
Title:
Simulation
880 / 1260
ID:
PR20050721-08
Title:
Incorrect code/compilable
ID:
PR20050728-05
Title:
Modelling
Description: For the Simulink block it is possible to set "Inputs select this
object from
table" = Column, "Number of table dimensions" = 1 and
selected "Make table an
input", but for the TargetLink block this is not possible. The
specification
contains this settings, but it is not possible to select them in
the GUI.
Note: With this settings the Direct Look-up Table Blocks
behaviour is like a
vectorial signal line.
Workaround: Delete this Direct Look-Up Table block, in such cases this
block is not
necessary.
881 / 1260
ID:
PR20050728-20
Title:
API
882 / 1260
ID:
PR20050729-10
Title:
Modelling
Description: A file is included via an Addfile block with the setting "Compile
and link to
the production code application". A module with the same
name is specified
somewhere else in the model or in the associated dSPACE
Data Dictionary. But the
source file of the module and the file specified by the Addfile
block differ in
the file extension or path. This is an invalid specification that
may not be
detected during code generation. Instead the operation "Build
Host" or "Build
Target" may fail with a linker error.
Example:
A variable class is used having the "Module" property set to
"user_file".
Furthermore via an Addfile block the file "UserFiles\user_file.c"
is included
with the setting "Compile and link to the production code
application". Since
the source file of the module and the file specified in the
Addfile block differ
in the path the code generation should abort with an error.
Instead the code
generation succeeds but the operations "Build Host" and
"Build Target" fail with
a linker error.
Workaround: Do not include a file via an Addfile block with the setting
"Compile and link to
the production code application, if a module with the same
name is specified
somewhere else and the source files differ in the file extension
or path.
883 / 1260
ID:
PR20050804-03
Title:
Simulation
Description: In it's stdtypes.h the HCS12/S12X Metrowerks compiler typedefs Bool as int
(signed 16bit for this target), thus TargetLink also uses signed int for the
Bool type (generated in tl_basetypes.h with the information from
TargetConfig.xml). This may cause the SIL simulation on the Host PC to
calculate
wrong results, as int on the Host is 32bit (for IA32). Changing TargetLink's
typedef to signed short int does not work as the compiler then issues an error
about conflicting typedefs if stdtypes.h is included (indirect via math.h via
dsfxp.h).
Note: The PIL simulation calculates the correct results.
Workaround: Change Bool to 16bit signed short int in:
a) the compiler inlcude stdtypes.h (only needed if indirectly used in the TL
code)
b)
%TL_ROOT%\Matlab\Tl\SrcFiles\HCS12\Metrowerks12,20,31\TargetConfig.xml
(respective for S12X\Metrowerks41,45)
c) %TL_ROOT%\Matlab\Tl\SrcFiles\i86\<your mex compiler>\TargetConfig.xml
884 / 1260
ID:
PR20050808-06
Title:
885 / 1260
ID:
PR20050808-20
Title:
Simulation
886 / 1260
ID:
PR20050809-07
Title:
Incorrect code/compilable
887 / 1260
ID:
PR20050818-13
Title:
ID:
PR20050823-05
Title:
ID:
PR20050824-04
Title:
User interface
Description: If the zoomed x-range of the plot is small (e.g. 0 ms-10 ms),
an exponent is
used for displaying the current time. But the exponent is
drawn outside the
visible range of the plot window, therefore it seems that the
time values of the
plot axis are wrong.
Workaround: No workaround available.
ID:
PR20050831-02
Title:
889 / 1260
ID:
PR20050916-01
Title:
User interface
ID:
PR20050922-02
Title:
890 / 1260
ID:
PR20050923-03
Title:
Code generation aborts with an access violation if nonexternal macro has a return parameter
ID:
PR20050930-05
Title:
891 / 1260
ID:
PR20051005-05
Title:
API
Description: With Stateflow Vs. 6, Stateflow data objects can inherit their
data type, which
can be achieved by setting their type to "inherited". This is not
supported by
the TargetLink API.
- Trying to set the type (in TargetLink: sf.sftype property) with
the TargetLink
API via command line (tl_set function) fails with an error
message.
- The Property Manager does not offer "inherited" for
selection.
- The TargetLink API (tl_get function) returns "Float64" for the
sf.type
property if sf.sftype is "inherited". Likewise, the Property
Manager displays
"Float64".
Workaround: Use the Stateflow dialog to apply "inherited" to a Stateflow
object. This dialog
can be opened with Simulink's Model Explorer, or with the
TargetLink Property
Manager by double-clicking on the respective item.
ID:
PR20051017-01
Title:
Incorrect code/compilable
892 / 1260
ID:
PR20051020-07
Title:
Utility
893 / 1260
ID:
PR20051027-07
Title:
User interface
894 / 1260
ID:
PR20051117-01
Title:
895 / 1260
ID:
PR20051130-05
Title:
ID:
PR20051205-04
Title:
Simulation
896 / 1260
ID:
PR20051214-05
Title:
Utility
897 / 1260
ID:
PR20060113-06
Title:
Modelling
ID:
PR20060116-07
Title:
898 / 1260
TargetLink 2.2 2.2.1 2.3 2.3.1 3.0 3.0.1 3.1 3.2 3.3 3.4 3.5
Class:
Simulation
899 / 1260
900 / 1260
ID:
PR20060203-01
Title:
Modelling
901 / 1260
ID:
PR20060222-09
Title:
Simulation
ID:
PR20060306-03
Title:
Description: An error about defining different types with the same name
can be issued
although the types are equal if all following conditions hold:
- Two equal types with the same name are specified in a
custom look-up table
script
- Both types are not to be defined
- The template code containing one of the type definitions
contains an include
while the template code with the second type doesn't
Workaround: Specify includes in both template codes.
902 / 1260
ID:
PR20060309-03
Title:
Simulation
903 / 1260
ID:
PR20060310-02
Title:
API
Description: If you save a partial Data Dictionary file and this partial Data
Dictionary
contains Data Dictionary handle references inside this sub
tree, it is expected,
that these references are restored without any problems after
reloading this
Data Dictionary file into another Data Dictionary file. This is
not correct. If
the reference properties are stored as "Reference" ? e.g. as
path string ? then
resolving the references works. In the other case it is not and
leads to
unresolved references. But no warning is issued.
Workaround: Check if your partial Data Dictionary file contains Data
Dictionary handle
reference properties. If so convert them to use path strings
instead.
904 / 1260
ID:
PR20060315-07
Title:
Incorrect code/compilable
ID:
PR20060316-05
Title:
Description: Variables for states of Custom Code block are not moved to
the function reuse
structure. Thus they are not instance specific. This is a
limitation of the
TargetLink code generator. Currently neither a warning/error
thrown by the code
generator nor this limitation is mentioned in the
documentation.
Workaround: A state can be modeled by an additional Unit Delay block.
905 / 1260
ID:
PR20060322-08
Title:
Incorrect code/compilable
906 / 1260
ID:
PR20060323-06
Title:
Modelling
ID:
PR20060323-11
Title:
Description: In the typedef section of the Data Dictonary a base type can
be specified. It is
possible to set in the BaseTypeRename property of a base
type a link to a type
whose IsBaseType property is set to "off".
Furthermore it is not proved by the code generator that the
BaseTypeRename
property of a renamed base type contains a link to itself.
This may lead to wrong result of $(BaseType) name macro.
Workaround: Use correct specification of base type rename.
907 / 1260
ID:
PR20060323-13
Title:
908 / 1260
ID:
PR20060323-17
Title:
User interface
909 / 1260
ID:
PR20060323-23
Title:
User interface
ID:
PR20060324-12
Title:
User interface
910 / 1260
ID:
PR20060328-18
Title:
911 / 1260
ID:
PR20060330-09
Title:
Simulation
Description: Event triggered tasks with AutoStart property set to "off" are
not started
during SIL/PIL simulation. This a correct behaviour.
However, the user is not informed about it. Thus, it's difficult to
find the
reason for the differences between MIL and SIL/PIL
simulation.
Workaround: Set the AutoStart property of the event triggered tasks to "on".
ID:
PR20060330-13
Title:
Incorrect code/compilable
Description: If the code generation option TOM TriCore is chosen, a FIRfilter with circular
buffers is implemented through a macro call. A wrong macro
call is generated, if
the width of the delay line variables is less than the width of
the coefficient
variables. The chosen macro returns wrong results.
Workaround: Use the same variable type for the delay line parameters as
for the
coefficients.
912 / 1260
ID:
PR20060403-11
Title:
Incorrect code/compilable
Description: Wrong code is generated if the FIR Filter block with circular
buffer is placed
in a library in a reused subsystem. The code generator
ignores the reuse
specification completely, which results in compilable code, but
produces
incorrect results.
Workaround: Do not use circular buffers or do not use FIR filters with them
in a reused
library function.
ID:
PR20060404-06
Title:
Incorrect code/compilable
913 / 1260
ID:
PR20060404-09
Title:
Modelling
914 / 1260
ID:
PR20060405-15
Title:
Incorrect code/compilable
915 / 1260
ID:
PR20060407-05
Title:
Incorrect code/compilable
ID:
PR20060407-09
Title:
Modelling
916 / 1260
ID:
PR20060410-06
Title:
User interface
ID:
PR20060412-11
Title:
Utility
Description: When Simulink scaled data types are used in a model, these
scalings are
transferred to the replacing TargetLink blocks during Simulink
to TargetLink
conversion. However, after conversion has finished the model
might be
inconsistent, since TargetLink blocks do not support scaled
Simulink signals.
Workaround: Simulate with "true doubles".
917 / 1260
ID:
PR20060417-01
Title:
User interface
Description: If the Name column of the Block Explorer has scrollbars, the
width of the column
can only be modified by
- scrolling the column to its rightmost position (use the
horizontal scrollbar)
- drag & drop the limit between the buttons on top of the first
(Name) and the
2nd column
The Name column has scrollbars if items are out of view.
Workaround: If possible, enhance size of Block Explorer to have all items
displayed. Then,
the scrollbars disappear.
ID:
PR20060426-03
Title:
918 / 1260
ID:
PR20060504-01
Title:
919 / 1260
ID:
PR20060510-02
Title:
Simulation
920 / 1260
ID:
PR20060515-01
Title:
Simulation
ID:
PR20060524-01
Title:
User interface
Description: In the constant block dialog the variable type is not shown
correctly if it is a
renamed base type and
- the Variable Class is "default" and
- the option "Cast output signal to TargetLink type" is
activated.
Instead of the renamed base type, the actual base type is
shown. Moreover in the
Object Selection dialog that opens after pressing the [...]
Button, both the
renamed base type and the base type are shown (instead of
only the renamed
type).
Workaround: No workaround available.
921 / 1260
ID:
PR20060609-01
Title:
Utility
ID:
PR20060609-02
Title:
922 / 1260
ID:
PR20060614-01
Title:
Utility
ID:
PR20060614-02
Title:
Simulation
923 / 1260
ID:
PR20060619-69
Title:
Description: If all of the following conditions are fulfilled the code generator
creates an
initialization of an undefined variable which leads to a compiler
error:
- The TargetLink subsystem is a conditioned subsystem (e.g.
enabled or
triggered)
AND
- an outport of the TargetLink subsystem has scope
"ref_param" or "fcn_return"
AND
- the variable class template SLFcnInput is either not defined
or it is defined
and mapped to a variable class with scope "global"
AND
- the variable class template SLGlobal is mapped to a variable
class which has a
restart function name.
Workaround: Make at least one of the conditions described above not
fulfilled.
ID:
PR20060621-03
Title:
Simulation
924 / 1260
ID:
PR20060623-03
Title:
ID:
PR20060628-01
Title:
API
925 / 1260
ID:
PR20060704-01
Title:
Incorrect code/compilable
ID:
PR20060706-02
Title:
Utility
926 / 1260
ID:
PR20060710-01
Title:
User interface
ID:
PR20060710-05
Title:
User interface
ID:
PR20060710-06
Title:
Description: If a Sum block has more than two inputs auxiliary variables
are generated to
store intermediate results. These auxiliary variables are not
optimizable and
remain in the code.
Workaround: Since TargetLink 3.2 and newer activating the code generator
option
"DoNotUseAssignArithmeticForAccumulation" will improve the
generated code.
927 / 1260
ID:
PR20060712-01
Title:
ID:
PR20060712-07
Title:
User interface
928 / 1260
ID:
PR20060712-08
Title:
Incorrect code/compilable
ID:
PR20060717-06
Title:
Simulation
929 / 1260
ID:
PR20060721-03
Title:
Modelling
ID:
PR20060803-01
Title:
930 / 1260
ID:
PR20060811-01
Title:
Description: When using custom code by applying the Custom Code block,
and the custom code
file contains a string literal, it may happen that in the
generated code the
string literal is split into two lines at a space-character near the
line break
limit, making the code uncompilable.
Workaround: Raise the line break limit.
ID:
PR20060817-01
Title:
User interface
931 / 1260
ID:
PR20060818-01
Title:
ID:
PR20060824-01
Title:
Simulation
932 / 1260
ID:
PR20060830-05
Title:
ID:
PR20060831-07
Title:
Modelling
Description: Casts (explicit and implicit) from float type to boolean type in
Simulink/Stateflow are treated inconsistent as well in
Simulink/Stateflow as in
TargetLink. Sometimes such a cast is treated like a
comparision "!=0". Sometimes
it is treated like a cast to an integer type. Furthermore
the behaviour of TargetLink and Simulink/Stateflow is not
equal in every case.
The behaviour of Simulink/Stateflow can change from version
to version.
Workaround: Don't cast from float to boolean in the model. If such a cast is
not avoidable
model the behaviour you want explicit by using if-else
constructs.
933 / 1260
ID:
PR20060831-12
Title:
Simulation
Description: The Initialization of a Simulink model with stand-alone Sfunction fails if the
following conditons apply
- the data type for all outports of the TargetLink subsystem
that the
stand-alone S-function has been generated for is different
from double
AND
- the data type of the input signal of the subsystem replaced
by the subsystem
with stand-alone S-function is different from double.
In this case Simulink reports following error message:
"Cannot set the output port 1 data type of
'<modelName>/<subsystemName>/S-function
frame/TriggerPort' to <dataType>'. The
output port data type must be either 'double' or 'int8'."
Workaround: Set the output data type in TriggerPort block in
'<modelName>/<subsystemName>/S-function frame' to
double (instead of auto).
934 / 1260
ID:
PR20060901-03
Title:
Incorrect code/compilable
ID:
PR20060908-14
Title:
Modelling
935 / 1260
ID:
PR20060920-15
Title:
Incorrect code/compilable
ID:
PR20060926-15
Title:
Simulation
936 / 1260
ID:
PR20060928-17
Title:
Incorrect code/compilable
ID:
PR20061002-06
Title:
Modelling
937 / 1260
ID:
PR20061009-25
Title:
Incorrect code/compilable
938 / 1260
ID:
PR20061013-17
Title:
ID:
PR20061017-05
Title:
Utility
939 / 1260
ID:
PR20061018-05
Title:
User interface
Description: If a CustomCode variable uses a pool variable class with the property "Macro"
set to "on" and the variable has a value set in the block mask, then this value
does not appear in the DataDictionary Subsystem representation of the variable
after code generation (e.g. in won't appear in
DataDictionary>Subsystems/Name_Of_TL_Subsystem/Name_Of_TL_Module_Generated_For_
It/Variables/CustomCodeBlock_Variable->Value).
Workaround: No workaround available.
ID:
PR20061020-06
Title:
User interface
940 / 1260
ID:
PR20061023-09
Title:
Description: If the style definition XSL file is located in a folder that is in the
MATLAB
search path, but which is different to
%TL_ROOT%\Matlab\Tl\config\codegen, and
the file is specified via the TargetLink Main Dialog, then code
generation may
abort with the following warning and error message:
Warning #17108:
XSL warning: xml file is probably not well-formated. Line: 0, Col:
0 An
exception occurred! Type:RuntimeException, Message:The
primary document entity
could not be opened.
Id=%TL_ROOT%\Matlab\Tl\config\codegen\<StyleDefFIleName>
Fatal #17107:
An error occurred in processing XSL: mycconfig.xml could not be
opened. Please,
check if specified file name is correct or file exists!
Workaround: Set the style definition file via API command instead via the Main
Dialog:
tl_set(<model>t, 'codeopt.outputstylefile', <StyleDefFile>')
where <StyleDefFile> is the full file name including path.
ID:
PR20061025-01
Title:
Description: The warning #19615 "Due to the scaling of variable <var> its
initial value
<value> will become 0." is issued for a FIR Filter block, if both
of the
following conditions hold:
- the variable class of the coefficients is selected to be
"default"
- the accu width is equal to the delay line width.
Workaround: Switch to broader accu width or finer delay line width.
941 / 1260
ID:
PR20061030-09
Title:
Incorrect code/compilable
942 / 1260
ID:
PR20061101-03
Title:
Incorrect code/compilable
Description: If all of the following conditions are fulfilled, wrong code may
be generated
for a Merge block:
- A Merge block resides in an enabled subsystem X and
drives a Simulink Outport
of X AND
- The Simulink Outport has specified another initial value than
the Merge block
AND
- The Merge variable is not written during the execution of X.
Simulink behavior in this case:
X returns the initial value of the Simulink Outport when it is
executed.
TargetLink behavior in this case:
X returns the initial value of the Merge block when it is
executed.
Workaround: Specify equal initial values for the Merge block and the
Simulink Outport which
is driven by the Merge block.
943 / 1260
ID:
PR20061102-14
Title:
944 / 1260
ID:
PR20061102-18
Title:
945 / 1260
ID:
PR20061102-19
Title:
Incorrect code/compilable
946 / 1260
ID:
PR20061103-02
Title:
Incorrect code/compilable
947 / 1260
ID:
PR20061106-31
Title:
Description: Trying to generate code for 2D User Lookup Scripts does not
work correctly for
non-scalar Min/Max when referencing Data Dictionary
variables. Code generation
aborts with an error E0000.
Workaround: Do not use vectorized Min/Max values for DataDictionary
variables, but scalar
values (the scalar value is used for each element of the table).
ID:
PR20061107-10
Title:
948 / 1260
ID:
PR20061107-15
Title:
Simulation
ID:
PR20061109-15
Title:
Utility
949 / 1260
ID:
PR20061109-16
Title:
Utility
ID:
PR20061109-18
Title:
Simulation
ID:
PR20061109-21
Title:
Incorrect code/compilable
Description:
950 / 1260
ID:
PR20061109-24
Title:
Utility
Description: Checking code size does not work for an AUTOSAR model
(e.g. Target simulation
configuration SH2EEVB/HIT80, but the problem also occurs
with other Target
simulation configurations).
The following error occurs:
MAKE PROCESS ABORTED
*** E00000: MAKE PROCESS ABORTED WITH ERRORS:
*** There was an error executing the command
***
*** dsmake.exe -f
C:\dSPACE\matlab\tl\SimFiles\SH2EEVB\HIT80\makefile.mk
CODESIZE=ON model=DCMC
app=DCMC target=SH2EEVB_HIT80
***
*** See MATLAB Command Window for details.
Workaround: No workaround available.
951 / 1260
ID:
PR20061110-01
Title:
Utility
Description: If all of the following conditions are fulfilled the Data Dictionary
will
contain an incorrect AccessorNameTemplate:
- a Stateflow chart is specified to be an OSEK event triggered
task
- the Stateflow chart is triggered by multiple Stateflow events
- each Stateflow event is assigned to a separate OSEK event.
This may result in a wrong accessname in the exported OIL
file if the Stateflow
chart uses OSEK messages for intertask communication.
Workaround: Specifiy a Variable Class with scope global or static global
instead of default
(which is local) for the Sent/Receive Accessors of OSEK
messages if they are
sent/received by Stateflow charts which are triggered by
multiple OSEK events.
ID:
PR20061110-02
Title:
Incorrect code/compilable
952 / 1260
ID:
PR20061110-14
Title:
Code generation may abort with error #17434 for Bus Port
blocks using a Variable Class with an Access Function
template
ID:
PR20061110-16
Title:
Links in HTML file for the model-linked code view do not work
when response time of web browser is too long
Utility
953 / 1260
ID:
PR20061113-04
Title:
ID:
PR20061115-01
Title:
User interface
954 / 1260
ID:
PR20061115-05
Title:
Error #17073 for implicit created bus struct types that are not
merged if for one ore more components "Inherit Properties" is
active.
ID:
PR20061116-01
Title:
955 / 1260
ID:
PR20061117-08
Title:
ID:
PR20061121-08
Title:
Simulation
Description: If the following conditions are fulfilled the SIL/ PIL simulation
may not work:
- A function-call-triggered subsystem X is called indirectly*
from outside the
TargetLink Subsystem
AND
- X receives / sends data from / to the TargetLink Subsystem
border.
*indirectly means:
X is not called directly from outside the TargetLink Subsystem
but with a level
of indirection via one or more subsystems inside the
TargetLink Subsystem.
Workaround: No workaorund available.
956 / 1260
ID:
PR20061121-13
Title:
User interface
ID:
PR20061122-04
Title:
Description: Code generation is not possible for a FIR Filter block, if all of
the following
conditions hold:
- The FIR Filter block is located inside a subsystem for which
the generated
code can be inlined
- 'Inline Code' is selected for the FIR Filter block, while
"Generate Loops" is
not
Workaround: De-activate "Inline Code" in the FIR Filter block or activate
"Generate Loops"
or avoid inlining of the subsystem (e.g. by adding a function
block)
957 / 1260
ID:
PR20061122-05
Title:
ID:
PR20061122-06
Title:
Simulation
958 / 1260
ID:
PR20061123-08
Title:
Description: If "Generate Loops" is not selected for a FIR filter block, code
like
const Int16 * DelayLine;
Int16 * pDelayLine;
UInt16 * Counter;
pDelayLine = DelayLine + *(Counter);
is generated by TargetLink, where a cast is missing in the final
assigment. Some
compilers issue an warning about it, some issue an error
message, which makes
compilation impossible.
Workaround: Select "Generate Loops" for the FIR Filter block
959 / 1260
ID:
PR20061123-09
Title:
Utility
960 / 1260
ID:
PR20061124-07
Title:
Description: When using a data element with the data type "fixed point" in
a Stateflow chart,
the code generation with TargetLink may fail with the following
error message:
Error #17257: The data type 'error' is invalid for the variable
'xxx'.
This behaviour may occur under the following conditions:
- MATLAB R14SP3 (Stateflow 6.3) or higher is used and
- The resepctive data element has been newly created with
the MATLAB Model
Explorer without changing the default values for the properties
length and
signed.
Workaround: After changing one of the properties length or signed, the
code generation will
work. So for each new fixed point data element execute the
following steps:
- change the property signed to off.
- apply the changes.
- change the property signed to on.
- apply the changes.
961 / 1260
ID:
PR20061127-02
Title:
Incorrect code/compilable
962 / 1260
ID:
PR20061130-04
Title:
Modelling
963 / 1260
ID:
PR20061130-07
Title:
Modelling
ID:
PR20061130-14
Title:
Simulation
964 / 1260
ID:
PR20061201-02
Title:
User interface
ID:
PR20061201-07
Title:
Incorrect code/compilable
965 / 1260
ID:
PR20061204-03
Title:
Incorrect code/compilable
ID:
PR20061207-01
Title:
Incorrect code/compilable
967 / 1260
ID:
PR20061207-02
Title:
Modelling
Description: When using the option "Show function call trigger port" of the
ClientPort block,
the connected function call line will be removed when
initializing the model.
Workaround: Do not use the option "Show function call trigger port" and
place the ClientPort
block into a function call triggered subsystem.
ID:
PR20061208-01
Title:
Incorrect code/compilable
968 / 1260
ID:
PR20061213-03
Title:
Incorrect code/compilable
969 / 1260
ID:
PR20061214-08
Title:
Utility
970 / 1260
ID:
PR20061214-09
Title:
Utility
ID:
PR20061215-01
Title:
971 / 1260
ID:
PR20061218-14
Title:
Modelling
972 / 1260
ID:
PR20061219-09
Title:
User interface
973 / 1260
ID:
PR20061222-08
Title:
ID:
PR20061227-02
Title:
Description: Generated basetypes.h defines Bool as signed char whereas the static
tl_types.h
used for DsFxp library uses unsigned char (for all supported SH-2 compiler
versions). Note: the DsFxp library does not use the typedef for Bool.
Workaround: Manually change Bool to unsigned char in
%DSPACE_ROOT%\Matlab\Tl\SrcFiles\SH2\Hit<version>\TargetConfig.xml.
ID:
PR20070102-02
Title:
The File Export utility ignores Source Files added via the
TargetLink Addfile Block
Utility
Description: If a TargetLink Addfile block with the option 'Compile and link
to production
code application' is used, the associated file is not exported by
the file
export utility.
Workaround: It is possible to write an M script placed in a
post_export_files_hook function
to copy files associated with TargetLink Addfile blocks.
974 / 1260
ID:
PR20070108-02
Title:
975 / 1260
ID:
PR20070109-02
Title:
ID:
PR20070109-03
Title:
976 / 1260
ID:
PR20070110-01
Title:
API
Description: When exporting a complete Data Dictionary file as extended XML file
from //DD0
and re-import this file as a child of //DD0 - and not into //DD0 - a rather
confusing error message shows up. Further the structure of the reimported Data
Dictionary file is not maintained.
Workaround: Import the complete Data Dictionary XML file into //DD0, e.g. use the
"Root"
property of the import instead.
OR
Create a DataDict object explicitly by the following workaround and
import to
file into this node:
dsdd('Clear','//DD2')
dsdd('save','//DD2','file','datadictEntry.dd')
dsdd('Load','//DD0','file','datadictEntry.dd')
%now import into this new node
dsdd('import','format','xml','mode','extended','Root','//DD0','file','ExtendedX
mlFile.xml')
ID:
PR20070111-03
Title:
User interface
977 / 1260
ID:
PR20070111-04
Title:
ID:
PR20070112-02
Title:
978 / 1260
ID:
PR20070112-03
Title:
Utility
ID:
PR20070115-02
Title:
Description: The code generation for integrator block aborts with error
E99003 if all of the
following conditions hold:
- a RestartFunction is given for the variable class
STATIC_GLOBAL and
- for the Discrete-Time Integrator block the Forward Euler
integration method is
chosen and
- the input of that block is a 32bit integer type (signed or
unsigned).
Workaround: Avoid the combination of 32 bit integer input and Forward
Euler integration
method.
979 / 1260
ID:
PR20070115-06
Title:
Incorrect code/compilable
ID:
PR20070117-01
Title:
User interface
980 / 1260
ID:
PR20070118-01
Title:
Simulation
981 / 1260
ID:
PR20070118-02
Title:
ID:
PR20070118-03
Title:
Utility
982 / 1260
983 / 1260
ID:
PR20070118-04
Title:
Utility
ID:
PR20070118-07
Title:
Modelling
984 / 1260
ID:
PR20070123-01
Title:
Modelling
Description: The following two problems may arise when using incremental
code generation for
a Discrete-Time Integrator block residing in a function-call
triggered
subsystem:
1) Although the incrementally generated code is fine,
TargetLink shows incorrect
simulation behaviour if a function-call triggered subsystem
contains a Function
block that has incremental code generation enabled and a
Discrete-Time
Integrator block. Access to a SystemTime-Variable is needed
for this kind of
configuration, but with incremental code generation this
information is not
correctly passed to the TargetLink simulation frame. When
accessing the
SystemTime-Variable the return value is always zero, which
results in wrong
output values for the Integrator block.
2) If the Function block with incremental code generation
enabled and the
Discrete-Time Integrator block is located in a different
subsystem which is
located deeper inside a function-called triggered subsystem,
the latter is not
recognized and the TargetLink Code Generator expects a
fixed sample time to be
given for the integrator. As this contradicts an inherited
sample time (-1)
needed for Simulink model initialization, model initialization
fails and thus
code generation is not possible.
Workaround: Do not use incremental code generation if a Discrete-Time
Integrator block is
(transitive) located inside a function-call triggered subsystem.
985 / 1260
ID:
PR20070124-02
Title:
Utility
ID:
PR20070124-03
Title:
Simulation
986 / 1260
ID:
PR20070125-05
Title:
987 / 1260
ID:
PR20070126-01
Title:
Utility
ID:
PR20070129-06
Title:
988 / 1260
ID:
PR20070129-09
Title:
989 / 1260
ID:
PR20070129-14
Title:
Incorrect code/compilable
ID:
PR20070130-04
Title:
User interface
ID:
PR20070131-01
Title:
ID:
PR20070131-02
Title:
"Show output port" at Trigger port and Iterator port can cause
inefficient code
Description: "Show output port" at Trigger port and Iterator port can cause
inefficient code
because the actual range of the output is not taken into acount
for optimization
of the succeeding code.
Workaround: Insert a TargetLink InPort or a TargetLink OutPort behind the
"Show output
port". Enter Min / Max values according to the given situation:
- Trigger with "Trigger Type" = "rising": Min = 0; Max = 1;
- Trigger with "Trigger Type" = "falling": Min = -1; Max = 0;
- Trigger with "Trigger Type" = "either": Min = -1; Max = 1;
- Trigger with "Trigger Type" = "function call': Min = 0; Max =
2;
- For Iterator with "Iteration limt source" = "'internal": Min = 0;
Max =
<IterationLimit>;
- For Iterator with "Iteration limt source" = "external": Min = 0;
Max =
<max(first Iterator input)>;
- While Iterator with "Maximum numer of iterations" != -1: Min
= 0; Max =
<Maximum numer of iterations>;
- While Iterator with "Maximum numer of iterations" == -1: Min
= 0; Max =
<empty>;
991 / 1260
ID:
PR20070201-01
Title:
Modelling
992 / 1260
ID:
PR20070202-03
Title:
Simulation
ID:
PR20070205-03
Title:
993 / 1260
ID:
PR20070206-03
Title:
Incorrect code/compilable
994 / 1260
ID:
PR20070206-04
Title:
Simulation
Description: For Cosmic compiler version v4.7.6 and newer the PIL
simulation does not run but
aborts with an error message:
Error #02240:
Host PC - simulation target communication error: unknown
command.
Workaround: No workaround available.
ID:
PR20070207-02
Title:
995 / 1260
ID:
PR20070207-05
Title:
Simulation
996 / 1260
ID:
PR20070207-06
Title:
997 / 1260
ID:
PR20070207-07
Title:
ID:
PR20070208-03
Title:
Utility
998 / 1260
ID:
PR20070208-04
Title:
Utility
ID:
PR20070209-02
Title:
Simulation
999 / 1260
ID:
PR20070209-06
Title:
Modelling
Description: The output of TargetLink S-R Flip-Flop block and J-K Flip-Flop
block is always
of type double.
The data type of the corresponding Simulink block depends
on the model parameter
"Boolean logic signal" or "Implement logic signals as boolean
data (vs. double)"
(depends on MATLAB version). If this parameter is "Off",
Simulink S-R and J-K
Flip-Flop blocks have output data type double - same as
TargetLink. But if it is
"On", they have data type boolean.
This may lead to problems during simulation or initialization
due to the
mismatch of data type.
Workaround: Set model parameter "Implement logic signals as boolean
data (vs. double)" to
"Off". In this case, TargetLink and Simulink blocks have output
data type
double.
Another workaround is not available.
1000 / 1260
ID:
PR20070209-07
Title:
User interface
ID:
PR20070209-09
Title:
Utility
Description: The export of the AUTOSAR SWC description file from the
Data Dictionary
Subsystem object may crash, if the dependency list of the Cmodule that
implements the runnables is to long, for example more than
30. The exact length
cannot be named, since it depends on the names of the
dependency files.
Workaround: No workaround available.
1001 / 1260
ID:
PR20070213-01
Title:
Utility
ID:
PR20070213-03
Title:
User interface
1002 / 1260
ID:
PR20070214-01
Title:
Incorrect code/compilable
ID:
PR20070214-04
Title:
Production code for sin/cos with 64/32 bit input and 16 bit
result calculates wrong results
Incorrect code/compilable
1003 / 1260
ID:
PR20070215-06
Title:
Incorrect code/compilable
ID:
PR20070215-10
Title:
Modelling
1004 / 1260
ID:
PR20070215-13
Title:
Incorrect code/compilable
ID:
PR20070220-07
Title:
Incorrect code/compilable
1005 / 1260
ID:
PR20070221-03
Title:
ID:
PR20070223-02
Title:
1006 / 1260
ID:
PR20070226-01
Title:
Incorrect code/compilable
Description: If a For / While Iterator block has set "Iteration Limit Source" to
"external"
and "Show Iteration Variable" to "off" then the datatype of the
iteration
variable is always Int16. An iteration value > 32767 will
exceed the implemented
range of the variable. This will lead to undefined behavior of
the generated
code caused by overflows. No warning is given during code
generation.
Workaround: Set "Show Iteration Variable" = "on" then the datatype of the
iteration variable
is defined by "Iteration Variable Datatype". Choose a datatype
with a sufficient
range, e.g. Int32.
1007 / 1260
ID:
PR20070226-04
Title:
Incorrect code/compilable
1008 / 1260
ID:
PR20070227-03
Title:
Incorrect code/compilable
Description: The generated code for the trigonometric function atan can
easily result in
wrong code, if
- the input is 32 bit wide and
- the fixed point range of the input exceeds 16 bit
or if
- the input is 32 bit wide and
- the factor 1/ ( LSB(Input) * LSB(INPUT) ) cannot be
represented as 32 bit.
Workaround: Use 16 bit operands.
ID:
PR20070227-07
Title:
Utility
1009 / 1260
ID:
PR20070301-04
Title:
Incorrect code/compilable
ID:
PR20070301-07
Title:
Incorrect code/compilable
1010 / 1260
ID:
PR20070301-08
Title:
Incorrect code/compilable
1011 / 1260
ID:
PR20070301-10
Title:
Incorrect code/compilable
ID:
PR20070301-16
Title:
Incorrect code/compilable
1012 / 1260
ID:
PR20070302-15
Title:
Incorrect code/compilable
Description: A required transition action flag may not be reset to get correct
Stateflow
semantic if following is modeled in Stateflow:
A complex transition with several junctions and parallel paths
which contains
several sequenced transition actions
Workaround: Use conditions actions instead of transition actions.
ID:
PR20070302-17
Title:
1013 / 1260
ID:
PR20070305-11
Title:
Incorrect code/compilable
ID:
PR20070305-16
Title:
Simulation
1014 / 1260
ID:
PR20070309-01
Title:
Modelling
1015 / 1260
ID:
PR20070312-03
Title:
Utility
ID:
PR20070313-01
Title:
Description: If some signals of a bus signal are fed back into the same bus
and the feedback
loop only contains bus capable blocks TargetLink may abort
the code generation
with error #20160 "Selected signal for Bus Selector outport
<%i,n> not found".
Please refer to the Simulink manual for more details about bus
capable blocks.
This problem affects only MATLAB R14 and above.
Workaround: Place a non bus capable block, e.g. a Gain block, in the
feedback loop.
1016 / 1260
ID:
PR20070319-04
Title:
Utility
ID:
PR20070319-05
Title:
Utility
1017 / 1260
ID:
PR20070319-07
Title:
Utility
1018 / 1260
ID:
PR20070320-01
Title:
Incorrect code/compilable
ID:
PR20070320-03
Title:
Utility
1019 / 1260
ID:
PR20070320-06
Title:
Incorrect code/compilable
1020 / 1260
ID:
PR20070320-07
Title:
Incorrect code/compilable
Description: The following two problems may arise when using incremental
code generation for
a function containing a Rate Limiter block and residing deeper
in an enabled
subsystem:
1) TargetLink complains, if the sample time of the function
inport is set to
"inherited" and code generation aborts, although code
generation should be
possible.
2) Wrong code is generated, if a sample time is given at the
function inport and
the property "States when enabling" is set to "held" at the
Enable port. This
results in wrong simulation behaviour.
Workaround: No workaround available.
ID:
PR20070321-03
Title:
Simulink error message (TLDS error: Error -66) may occur during
MIL simulation
Simulation
1021 / 1260
ID:
PR20070322-02
Title:
Incorrect code/compilable
ID:
PR20070322-03
Title:
Description: The warnings 15353 ... 15363 (all of them due to additional
update operation(s))
may be thrown unnecessarily.
This is the case if the follow situations hold:
- An inport of chart or subsystem X is driven by an output of
another chart or
subsystem Y. Y is called directly or indirectly by X. The inport
of X and the
outport of Y are merged together (via variable class
MERGEABLE_GLOBAL for
example).
- An inport of chart or subsystem Y is driven by an output of
another chart or
subsystem X. Y is called directly or indirectly by X. The inport
of Y and the
outport of X are merged together (via variable class
MERGEABLE_GLOBAL for
example).
Workaround: No workaround available.
1022 / 1260
ID:
PR20070323-02
Title:
Utility
1023 / 1260
ID:
PR20070323-04
Title:
Modelling
1024 / 1260
ID:
PR20070323-05
Title:
Incorrect code/compilable
1025 / 1260
ID:
PR20070323-08
Title:
API
Description: The API command TL_GET can be used to obtain a list of all
property names of a
TargetLink block. Thereto the function has to be invoked with
a blockhandle as
sole argument. This method fails if the block is of type
TargetLink Main Dialog
or if the functions is invoked with a model handle as argument.
Workaround: No workaround available.
ID:
PR20070326-02
Title:
Simulation
1026 / 1260
ID:
PR20070326-03
Title:
1027 / 1260
ID:
PR20070329-01
Title:
Utility
1028 / 1260
ID:
PR20070330-01
Title:
Simulation
1029 / 1260
ID:
PR20070330-11
Title:
ID:
PR20070402-01
Title:
Modelling
1030 / 1260
ID:
PR20070403-01
Title:
Utility
1031 / 1260
ID:
PR20070404-03
Title:
ID:
PR20070410-01
Title:
Modelling
1032 / 1260
ID:
PR20070411-02
Title:
ID:
PR20070412-01
Title:
Incorrect code/compilable
Description: If the "N" input of a For Iterator block (For Iterator block with
"Iteration
limit source" set to "external") is driven by an unscaled
constant (Constant
block with variable class set to "default") with a non integer
constant value
the For Iterator subsystem may be executed one time more
than in Simulink due to
different rounding behavior of Simulink and TargetLink.
Workaround: Enter an integer value as constant value in the block dialog of
the Constant
block if the constant block drives the "N" input of a For Iterator
block.
1033 / 1260
ID:
PR20070413-01
Title:
Incorrect code/compilable
ID:
PR20070413-03
Title:
Utility
1034 / 1260
ID:
PR20070416-01
Title:
Utility
ID:
PR20070416-02
Title:
Utility
1035 / 1260
ID:
PR20070416-04
Title:
User interface
ID:
PR20070416-05
Title:
1036 / 1260
ID:
PR20070416-06
Title:
Utility
ID:
PR20070417-03
Title:
ID:
PR20070418-04
Title:
1038 / 1260
ID:
PR20070418-05
Title:
Modelling
ID:
PR20070418-06
Title:
1039 / 1260
ID:
PR20070419-04
Title:
Utility
ID:
PR20070419-05
Title:
Simulation
1040 / 1260
ID:
PR20070419-12
Title:
Incorrect code/compilable
ID:
PR20070419-13
Title:
ID:
PR20070419-14
Title:
Utility
ID:
PR20070420-01
Title:
1042 / 1260
ID:
PR20070420-02
Title:
Incorrect code/compilable
Description: The INIT section of a Custom Code block on the top level of
the TargetLink
subsystem may not result in production code. This will cause
differences between
MIL and SIL simulation.
The INIT section of a Custom Code block only results in
production code if one
of the following conditions hold:
- The Custom Code block resides in an enabled or ActionPort
triggered subsystem
with "States when enabling" or "States when action is
resumed" set to "reset".
- The Custom Code block resides in the TargetLink subsystem
or in an incremental
subsystem whose Function block has activated the option
"Force init function".
If the Custom Code block resides in the TargetLink subsystem
the missing
production code INIT section may cause differences between
MIL and SIL
simulation.
Workaround: If a Custom Code block has an INIT section and resides in the
TargetLink
subsystem or in an incremental subsystem insert a Function
block and activate
the option "Force init function".
1043 / 1260
ID:
PR20070420-14
Title:
1044 / 1260
ID:
PR20070423-01
Title:
Incorrect code/compilable
ID:
PR20070423-02
Title:
Utility
1045 / 1260
1046 / 1260
ID:
PR20070423-03
Title:
Utility
ID:
PR20070424-03
Title:
Utility
Description: When an old Data Dictionary created with Data Dictionary 1.1
(TargetLink 2.0) is
opened with a Data Dictionary 1.4 (TargetLink 2.2), it will be
converted. The
type of "CharacterSet" and "CharacterSetCodePage" is not
corrected and displayed
as "unknown type". If the user clicks on the value combo box
or if the context
menu "Open Editor" is chosen, the Data Dictionary Manager
shows assertions
and/or crashes. This applies to Data Dictionary files which are
not upgraded for
TargetLink 2.1.
Workaround: Run dsdd_upgrade within TargetLink 2.0.
1047 / 1260
ID:
PR20070502-07
Title:
Modelling
1048 / 1260
ID:
PR20070502-12
Title:
Incorrect code/compilable
ID:
PR20070502-20
Title:
Description: If the same struct type T is used multiple times, then detaching
struct members
from their parent struct (i.e. replacing them by a local auxiliary
variable) may
take place no longer if an additional struct variable of type T is
added to the
struct.
This problem may arise for function reuse and pointer-to-struct
variables.
Workaround: No general workaround available. Maybe the use of different
types reduces the
number of variables of same type in the struct.
1049 / 1260
ID:
PR20070503-02
Title:
ID:
PR20070503-06
Title:
Simulation
1050 / 1260
ID:
PR20070508-04
Title:
Modelling
ID:
PR20070508-07
Title:
1051 / 1260
ID:
PR20070509-14
Title:
Utility
ID:
PR20070510-12
Title:
Wrong code for Relay block with static output variable and
calibratable on/off values
Incorrect code/compilable
Description: If the output variable of the Relay block has scope "static
local", "static
global" or "global" and the output values ("Output On", "Output
Off") are
calibratable, modifications of "Output On" / "Output Off" only
take effect after
the switch points ("Switch On", "Switch Off") are reached.
Modification of
"Output On" takes effect after "Switch On" has been reached.
Modification of
"Output Off" takes effect after "Switch On" has been reached.
Workaround: Follow one of the following suggestions:
- Select a variable class with "Scope" = "local" and "Storage" =
"default" for
the Relay block's output variable.
- If you need a global output variable (e.g. for enable access
by calibration
tools) insert a Gain block behind the Relay block, set Gain
factor to 1 and
choose the variable class you need for the Gain block's output
variable.
ID:
PR20070510-22
1052 / 1260
Title:
Incorrect code/compilable
ID:
PR20070514-07
Title:
User interface
1054 / 1260
ID:
PR20070516-09
Title:
Simulation
ID:
PR20070521-02
Title:
Modelling
1055 / 1260
ID:
PR20070521-04
Title:
1056 / 1260
ID:
PR20070521-09
Title:
Modelling
Description: With Simulink 6.5 (MATLAB R2006b), new pre look-up table
blocks (Prelookup and
Interpolation Using Prelookup) have been introduced that offer
additional
functionalities. These blocks cannot be converted to
TargetLink. Attempts to
convert result in an error message:
Error #03001: example/Subsystem/Prelookup:
PreLookup block is not supported by TargetLink and no
corresponding block is
defined.
Workaround: 1) Design TargetLink Custom Code block with the same
functionality and have the
pre look-ups replaced by instances of this block. This
approach requires
considerable development efforts.
2) Use the previous Simulink pre look-up blocks, they are still
available,
although might become obsolete in future Simulink versions.
1057 / 1260
ID:
PR20070523-06
Title:
User interface
1058 / 1260
ID:
PR20070524-08
Title:
Incorrect code/compilable
1059 / 1260
ID:
PR20070524-10
Title:
Utility
ID:
PR20070524-19
Title:
1060 / 1260
ID:
PR20070524-31
Title:
Utility
ID:
PR20070525-05
Title:
Installation/licensing
1061 / 1260
ID:
PR20070529-05
Title:
Utility
Description: The used MATLAB version is R14 SP3 (or later) and the
property Simulink / Reuse
in MATLAB preferences is set to "replace".
In this case the execution of the document generation
(tldoc_default or
tldoc_rtf) leads to the effect, that the current Simulink model
window doesn't
show the Simulink model root anymore but the contents of a
subjacent subsystem.
Workaround: Change the Simulink / Reuse MATLAB preferences setting to
"mixed" instead of
"replace".
ID:
PR20070530-01
Title:
1062 / 1260
ID:
PR20070530-11
Title:
ID:
PR20070601-04
Title:
Simulation
1063 / 1260
ID:
PR20070605-03
Title:
Simulation
1064 / 1260
ID:
PR20070611-12
Title:
ID:
PR20070613-04
Title:
API
1065 / 1260
ID:
PR20070613-05
Title:
1066 / 1260
ID:
PR20070613-11
Title:
Incorrect code/compilable
1067 / 1260
ID:
PR20070613-12
Title:
ID:
PR20070619-18
Title:
Simulation
1068 / 1260
ID:
PR20070619-20
Title:
Utility
Description: The AUTOSAR Import/Export Module supports only COMPUMETHOD elements describing
the following types of conversions between internal and
physical values:
- linear converision (LINEAR)
- verbal conversion table (TAB_VERB).
All other conversion types, e.g:
- conversion table with interpolation (TAB_INTP)
- conversion table withput interpolation (TAB_NOINP)
- fractional ration function (RAT_FUNC)
are not supported.
Workaround: No workaround available.
1069 / 1260
ID:
PR20070619-22
Title:
Utility
Description: If an AUTOSAR 2.0 XML file like the following example extract
is imported into a
Data Dictionary, not all data is imported appropriate.
<DATA-RECEIVED-EVENT>
<SHORT-NAME>DataReceivedEvent1</SHORT-NAME>
<DESC>SrInterface1, DataElement1; Ms1Group,
Mode1</DESC>
<MODE-DEPENDENCY>
<DEPENDENT-ON-MODE-IREFS>
<DEPENDENT-ON-MODE-IREF>
<CONTEXT-REFS>
<CONTEXTREF>/Components/RComponent/Port6</CONTEXT-REF>
<CONTEXTREF>/Interfaces/MsInterface1/Ms1Group1</CONTEXT-REF>
</CONTEXT-REFS>
<TARGETREF>/Interfaces/Ms1Group1/ModeDeclaration1</TARGETREF>
</DEPENDENT-ON-MODE-IREF>
</DEPENDENT-ON-MODE-IREFS>
</MODE-DEPENDENCY>
...
<DATA-RECEIVED-EVENT>
The problems are:
- The references - described in the CONTEXT-REF property might not be imported
into Data Dictionary file. It may happen that a CONTEXT-REF
element is missing
in the Data Dictionary after the import.
- The mode data is imported as generic data instead as a
corresponding Data
Dictionary object, which reflects the kind of the data. The data
cannot be used
by TargetLink.
Workaround: No workaround available.
1070 / 1260
ID:
PR20070621-04
Title:
Incorrect code/compilable
ID:
PR20070622-01
Title:
Utility
1071 / 1260
ID:
PR20070622-04
Title:
ID:
PR20070622-10
Title:
Utility
1072 / 1260
ID:
PR20070625-02
Title:
Utility
ID:
PR20070625-03
Title:
Utility
ID:
PR20070625-09
Title:
Utility
1073 / 1260
ID:
PR20070625-10
Title:
Utility
ID:
PR20070626-02
Title:
Utility
1074 / 1260
ID:
PR20070627-01
Title:
Description: Currently, the operation "bit not" is not possible for constants.
TargetLink's code generation might issue an error if a bit not
operation is
specified for a variable which is replaced by a constant value
during
optimization.
This may happen, when the expression of a bit not operation
in a Stateflow chart
has constant value on all possible executions of that chart. If
this is
dicovered by the optimization, the expression will be replaced
by the constant
value which leads to an error at a later point of code
generation.
Workaround: Use a variable class, where the property Optimization is not
set to "ERASABLE".
If this problem occurs for a formal parameter of a graphical
function (i.e. a
formal parameter of a graphical function is the operand of a
"bit not" operation
inside the function and this function is always called with the
same value for
this parameter) then there are two alternative workarounds:
1) Use a variable class with Scope = "value_param" and
Optimization not set to
"ERASABLE"
2) Use the Option "Export Chart Level Graphical Functions
(Make Global)" in
Stateflow.
1075 / 1260
ID:
PR20070628-02
Title:
Utility
ID:
PR20070628-04
Title:
User interface
1076 / 1260
ID:
PR20070702-01
Title:
For data varianted property the current data variant item may
not taken into account
Utility
1077 / 1260
ID:
PR20070703-01
Title:
Utility
ID:
PR20070704-01
Title:
Incorrect code/compilable
1078 / 1260
ID:
PR20070711-04
Title:
Utility
ID:
PR20070711-10
Title:
Modelling
1079 / 1260
ID:
PR20070712-02
Title:
Utility
1080 / 1260
ID:
PR20070716-01
Title:
Modelling
Description: Given is a custom look-up function and a user script where the
function
interface is specified in that way, that a struct is passed callby-value
through the function interface. This is currently not supported
and an error
message like the following is issued during code generation:
Fatal #17413: speedmap/Look-Up Table: The
'TLSCRIPT_DEFAULT_VALUE_PARAM_V_C'
variable class is not allowed for the '<variable name>' struct.
The following
properties are wrong: Scope = value_param
Passing a structure as call-by-value parameter was supported
in early versions
of TargetLink.
Applying one of the scripts (test_lookup1d_script.m or
test_lookup2d_script.m)
to test the user script is not sufficient to find the problem,
because the test
script will pass in such case.
Workaround: Pass a structure as call-by-reference parameter.
1081 / 1260
ID:
PR20070719-01
Title:
Incorrect code/compilable
ID:
PR20070720-02
Title:
Modelling
1082 / 1260
ID:
PR20070724-01
Title:
Utility
"" /* LongIdentifier */
/begin LOC_MEASUREMENT
Sa1_sPI /* Identifier */
/end LOC_MEASUREMENT
/end FUNCTION
/begin FUNCTION
Fcn_Linearization /* Name */
"" /* LongIdentifier */
/begin DEF_CHARACTERISTIC
P_Sa2_Gain /* Identifier */
Sa2_Look_Up_Table_z_table /* Identifier */
Sa2_enable_lookup /* Identifier */
/end DEF_CHARACTERISTIC
/end FUNCTION
and is shown in the calibration tool like:
--> Fcn_controller
l--> Fcn_linearization
Workaround: No workaround available.
ID:
PR20070724-02
Title:
Utility
1084 / 1260
ID:
PR20070725-01
Title:
ID:
PR20070725-03
Title:
Utility
Description: When a user script is applied for 2D Lookup Table block, the
ModelView node of
the subsystem is not generated correctly during code
generation. Due to this
fact the entries for the lookup table axis are empty in the
generated A2L file.
Workaround: No workaround available.
1085 / 1260
ID:
PR20070725-05
Title:
Incorrect code/compilable
1086 / 1260
ID:
PR20070726-05
Title:
Wrong code is generated for a sum block with '--', where the
1st input is of floating point type, while all other I/Os are
integer
Incorrect code/compilable
1087 / 1260
ID:
PR20070727-01
Title:
Incorrect code/compilable
ID:
PR20070727-02
Title:
Incorrect code/compilable
1088 / 1260
ID:
PR20070727-03
Title:
1089 / 1260
ID:
PR20070727-04
Title:
Modelling
1090 / 1260
ID:
PR20070727-05
Title:
ID:
PR20070727-06
Title:
Simulation
1091 / 1260
ID:
PR20070731-07
Title:
Utility
1092 / 1260
ID:
PR20070801-01
Title:
Incorrect code/compilable
1093 / 1260
ID:
PR20070802-01
Title:
Incorrect code/compilable
1094 / 1260
ID:
PR20070803-01
Title:
Utility
ID:
PR20070809-05
Title:
Utility
ID:
PR20070814-01
1095 / 1260
Title:
ID:
PR20070815-01
Title:
Utility
ID:
PR20070816-01
Title:
Incorrect code/compilable
1097 / 1260
1098 / 1260
ID:
PR20070816-02
Title:
API
ID:
PR20070817-01
Title:
User interface
1099 / 1260
ID:
PR20070817-02
Title:
Modelling
1100 / 1260
ID:
PR20070817-03
Title:
1101 / 1260
ID:
PR20070820-02
Title:
1102 / 1260
ID:
PR20070821-01
Title:
1103 / 1260
ID:
PR20070823-04
Title:
Description: Given is a block which yields to more than one variable, e.g.
Gain block (output
and gain parameter). One variable is specified through a Data
Dictionary
variable, which has the module property set. One of the other
variables yields
to a local variable (e.g. using variable class "default").
During code generation the following error may be issued:
Error #17054: The variable <varname> is implemented with
'module local scope',
but requires 'global scope'.
TargetLink assumes that the local variable needs a global
scope, because of the
specified module of the other variable. This is wrong.
Workaround: - Remove the module entry in the Data Dictionary variable
-- OR -- Use global variables for the other block variables
1104 / 1260
ID:
PR20070824-01
Title:
Incorrect code/compilable
1105 / 1260
ID:
PR20070829-02
Title:
1106 / 1260
ID:
PR20070830-01
Title:
Utility
1107 / 1260
ID:
PR20070830-02
Title:
Utility
ID:
PR20070830-03
Title:
Utility
1108 / 1260
ID:
PR20070830-08
Title:
Set of software component port may result in error message in MATLAB command
window
User interface
Description: If a client port is set in AUTOSAR SWC SenderPort it may happen that errors are
issued in MATLAB command window. The error occurs if the port references an
operation, but no operation arguments are specified.
Example of error message:
??? Output argument "child" (and maybe others) not assigned during call to
"D:\dSPACE\matlab\tl\dlg\tl_manage_element_properties.m
(i_AddDataElementSignal)".
Error in ==> tl_manage_element_properties>i_AddDataElementSignal at 791
objAttributes = dsdd('GetAttributes',ddPath);
Error in ==> tl_manage_element_properties>i_AddDataElementSignal at 865
[tree,child] =
i_AddDataElementSignal(tree,parent,compName,ddPath,argumentFilter,removeVoidOper
ations);
Error in ==> tl_manage_element_properties>i_GetSignals at 728
tree =
i_AddDataElementSignal('','',name,ddPath,argumentFilter,removeVoidOperations);
Error in ==> tl_manage_element_properties at 111
[signals,tree] =
i_GetSignals(component,port,interfaceElement,filter,removeVoidOperations);
Error in ==> tl_swc_port_dlg>i_UpdateOptionsPage at 570
[dlgdata.signals,dlgdata.signalData] =
tl_manage_element_properties('Signals',data.component,ports{idx},'',filter,remov
eVoidOperations);
Error in ==> tl_swc_port_dlg>i_ManageOutputPage at 468
dlgdata = i_UpdateOptionsPage(dlgfig,dlgdata,pageNum);
Error in ==> tl_swc_port_dlg at 109
[dlgdata,bModified] = ...
Error in ==> D:\dSPACE\matlab\tl\dlg\dstabdlg.p>dstabdlg at 298
??? Error using ==> dstabdlg('Output',gcbf,'portEdit')
Output argument "child" (and maybe others) not assigned during call to
"D:\dSPACE\matlab\tl\dlg\tl_manage_element_properties.m
(i_AddDataElementSignal)".
??? Error while evaluating uicontrol Callback
Workaround: Assure a correct specification of interfaces and operations in Data Dictionary,
e.g. an operation argument.
1109 / 1260
ID:
PR20070831-06
Title:
Incorrect code/compilable
ID:
PR20070906-01
Title:
Simulation
ID:
PR20070911-03
Title:
Incorrect code/compilable
ID:
PR20070913-01
Title:
1111 / 1260
ID:
PR20070913-03
Title:
Incorrect code/compilable
1112 / 1260
ID:
PR20070913-05
Title:
Description: TargetLink does not support Action Port block on root level of
a TargetLink
subsystem or in a subsystem that is specified for incremental
code generation.
However TargetLink throws the following misleading error
message:
Error #15669: Operational/Action Port The action port is not
connected to a
valid event source.
Workaround: Do not use Action Port block on TargetLink root subsystem or
subsystem that is
specified for incremental code generation.
ID:
PR20070914-06
Title:
Incorrect code/compilable
1113 / 1260
ID:
PR20070918-04
Title:
Utility
1114 / 1260
1115 / 1260
ID:
PR20070918-07
Title:
Modelling
1116 / 1260
ID:
PR20070918-08
Title:
ID:
PR20070919-01
Title:
1117 / 1260
ID:
PR20070920-03
Title:
Simulation
ID:
PR20070921-02
Title:
1118 / 1260
ID:
PR20070924-01
Title:
API
1119 / 1260
ID:
PR20070925-01
Title:
ID:
PR20070925-02
Title:
Incorrect code/compilable
ID:
PR20070926-06
Title:
Simulation
1122 / 1260
ID:
PR20070928-08
Title:
1123 / 1260
ID:
PR20071002-01
Title:
1124 / 1260
ID:
PR20071002-02
Title:
Incorrect code/compilable
1125 / 1260
ID:
PR20071002-03
Title:
Modelling
ID:
PR20071008-01
Title:
Incorrect code/compilable
1126 / 1260
ID:
PR20071008-03
Title:
Incorrect code/compilable
ID:
PR20071008-06
Title:
Modelling
1127 / 1260
ID:
PR20071009-02
Title:
Incorrect code/compilable
ID:
PR20071009-03
Title:
Incorrect code/compilable
Description: Given is a macro, where its variable class has the optimization
property set to
"MERGEABLE", and the module property is set.
If the macro is merged with another macro of the same name,
the macro definition
is generated twice. One definition is in the header file, while
the other one is
generated in the related source file.
The generated code is still compilable because the macro
definitions are
identical.
Workaround: No workaround available.
1128 / 1260
ID:
PR20071010-01
Title:
Incorrect code/compilable
1129 / 1260
ID:
PR20071011-01
Title:
Modelling
ID:
PR20071012-01
Title:
Incorrect code/compilable
1130 / 1260
ID:
PR20071017-01
Title:
Wrong code generated for Switch Case block with one outport
Incorrect code/compilable
ID:
PR20071017-02
Title:
User interface
ID:
PR20071022-06
Title:
Utility
1131 / 1260
Description: If a source code contains custom code pattern, where the less
then character "<"
is used without space characters around, the code coverage
report may contain
cropped lines in browser window, because the statememt is
taken for HTML tag.
Example:
Custom Code pattern:
/* fxp_output_begin */
if( u1<u2 ) {
y = 1;
}
else {
y = 0;
}
/* fxp_output_end */
The code pattern in production code may be:
/* Custom code: Subsystem/Custom Code Block << output
code >> */
{
if(
Sa1_Custom_Code_Block_u<Sa1_Custom_Code_Block_u2 )
{
Sa1_Custom_Code_Block_y = 1;
}
else {
Sa1_Custom_Code_Block_y = 0;
}
}
The code pattern of code coverage report is shown in browser
window as:
/* Custom code: Subsystem/Custom Code Block << output
code >> */
{
if( Sa1_Custom_Code_Block_u
Sa1_Custom_Code_Block_y = 1;
}
else {
Sa1_Custom_Code_Block_y = 0;
}
}
The statement "<Sa1_Custom_Code_Block_u2 ) {" is taken
for an HTLM tag and not
visible in browser window.
Workaround: Use a code formatting with space characters acround less
then character, e.g. "a
< b", instead of "a<b".
1132 / 1260
ID:
PR20071024-02
Title:
Incorrect code/compilable
1133 / 1260
ID:
PR20071025-01
Title:
Incorrect code/compilable
ID:
PR20071030-02
Title:
Utility
Description: If you use the Data Dictionary Merge explorer for Data
Dictionary containing
includes files, these included files are not considered.
This may lead to the following effect:
Includes are done for the currently loaded Data Dictionary,
and this file is
compared to another file, also containing Data Dictionary
include files. Those
are not considered and therefore the corresponding content is
missing in the 2nd
file.
Workaround: No workaround available.
1134 / 1260
ID:
PR20071030-05
Title:
ID:
PR20071031-05
Title:
User interface
1135 / 1260
ID:
PR20071106-02
Title:
1136 / 1260
ID:
PR20071106-10
Title:
Simulation
1137 / 1260
ID:
PR20071109-45
Title:
Incorrect code/compilable
ID:
PR20071109-77
Title:
Description: If all of the following conditions are fulfilled the code generator
may abort
with an access violation:
- A For Iterator block resides in a subsystem whose storage
class is 'extern' or
which is configured for incremental code generation
-- AND -- The For Iterator block has 'Iteration limit source' set to
external.
Workaround: Specify Min / Max values in the block dialog of the block which
drives the For
Iterator block (outside the For Iterator subsystem).
1138 / 1260
ID:
PR20071112-13
Title:
Simulation
1139 / 1260
ID:
PR20071112-15
Title:
1140 / 1260
ID:
PR20071114-29
Title:
Conversion fails if a converted block modifies the block name during mask
initialization
Modelling
Description: The conversion of a block fails, if the following conditions hold for the
replacement block:
- The block modifies its name during mask initialization.
-- AND -- The mask option "Allow library block to modify its contents" is enabled.
During conversion an error like following is issed and the the conversion
aborts:
??? Error using ==> get_param
Invalid Simulink object name:
example_TL/Subsystem/Subsystem/Subsystem/Marmeladedsvyvtrkqo.
Error in ==>
D:\MATLAB_R2006ap\toolbox\simulink\simulink\getfullname.p>getfullname
at 19
type = get_param(Handle, 'Type');
Error in ==> tl_add_block at 39
destpath = [getfullname(varargin{2}) '/Subsystem/' get_param(varargin{2},
'name')];
Error in ==> tl2sl>i_TL2SL at 737
h=
tl_add_block(blockLibmaps(i).slblock,blockname,propvalpairs{7:end});
Error in ==> tl2sl at 471
[msgstruct,bSuccess] = i_TL2SL(blocks,blockLibmaps,options,msgstruct);
Workaround: Do not modify the replacement block's name in its mask initialization. To
display block information, use the block annotation and the tag parameter.
1141 / 1260
ID:
PR20071115-10
Title:
Modelling
1142 / 1260
ID:
PR20071119-06
Title:
Utility
1143 / 1260
ID:
PR20071119-08
Title:
Code generation for LUT with user scripts fails if parameters use the same Data Dictionary
variable
Description: Given is a model that contains a Look-up Table block, which uses a user script.
Code generation aborts if following conditions hold:
- More than one parameter is generated (e.g. row and column)
-- AND -- The parameters reference the same Data Dictionary variable
This leads to the following error during code generation:
Error #05013: Subsystem/Look-Up Table (2-D):
Object need not be created, because there is already such an object.
Object =
/Subsystems/CGTmpData/tlscript_Look_Up_Table__2_D_/Variables/MyDDVariableForRwAn
dColumn
The error is then followed by E10013 and E10014
Example:
In a Look-up Table (2D) block, the row and column vector should use the same
variable. In the user script two objects are generated, which reference both the
same Data Dictionary variable. The problem arises, due to the internal handling
of the objects. In general it is not necessary to create two objects of the same
content.
Workaround: Duplicate the variable in Data Dictionary and reference the original and the
copied variable for the objects (e.g. row and column).
For the name template you can use the same name for both variables, so in the
generated code there is only one variable used.
1144 / 1260
ID:
PR20071119-21
Title:
Incorrect code/compilable
Description: If all of the following conditions are fulfilled wrong code may
be generated for
a For Iterator or While Iterator:
- The For Iterator or While Iterator has an output which drives
a Simulink
outport of the For Iterator or While Iterator subsystem
-- AND -- For Iterator: 'Iteration limit source' is set to 'external'; While
Iterator:
'While loop type' is set to 'while'.
Workaround: Insert a TargetLink OutPort or a Gain block behind the For or
While Iterator.
ID:
PR20071119-27
Title:
Utility
1145 / 1260
ID:
PR20071120-03
Title:
Utility
ID:
PR20071120-07
Title:
Incorrect code/compilable
1146 / 1260
ID:
PR20071120-08
Title:
User interface
1147 / 1260
ID:
PR20071120-09
Title:
Incorrect code/compilable
Description: In the following rare situation a wrong initial value is set for an
actual
paramater:
An enabled (or triggered) system Y is placed inside an
enabled (or triggered)
system X.
The inner system Y contains a Simulink outport with an
TargetLink BusOutport
block as the associated predecessor. In the BusOutport block
several variables
are specified, but not a bus struct. A variable, which is not the
first one, has
scope fcn_ref_arg (call-by-reference). In the Simulink outport
init values have
been specified for these variables. The corresponding init
value of the
fcn_ref_arg parameter is different from the init value of the first
variable.
The outgoing signal is split in system X by a Bus Selector.
Here the first
variable and the fcn_ref_arg parameter are selected. Both
signal lines do end in
non-virtual TargetLink OutPort blocks connected to Simulink
outports of the
system X. There is no block on the signal lines between the
Bus Selector and the
TargetLink OutPort blocks.
In the TargetLink OutPort of the system X the variable
corresponding to the
fcn_ref_arg parameter is specified as in the inner system Y,
except of global
scope. In its associated Simulink Outport the init value of the
first variable
in the inner system Y is specified. So the init value in the
system X is
different to that one in the system Y.
In this case TargetLink takes the variable of the system X as
the actual
parameter of the step function call of system Y. But the actual
parameter in the
production code has a different init value than the one in the
model. This might
lead to differences between MIL and SIL simulation.
Workaround: No workaround available.
1148 / 1260
ID:
PR20071120-10
Title:
Utility
ID:
PR20071121-12
Title:
ID:
PR20071122-03
Title:
ID:
PR20071122-12
Title:
Utility
1150 / 1260
ID:
PR20071123-14
Title:
Description: If the first inport (U) of a Selector block with external source of
element
indices is driven by an not well-defined signal, no loops for the
init section
code are generated.
Example:
Given is a combined input signal, which contains two vectors.
/* Selector: Subsystem/Selector - init phase: */
Sa1_Selector_a[0] = Sa1_a[0];
Sa1_Selector_a[1] = Sa1_a[1];
Sa1_Selector_a[2] = Sa1_a[2];
Sa1_Selector_a[3] = Sa1_a[3];
Sa1_Selector_a[4] = Sa1_a[4];
Sa1_Selector_a[5] = Sa1_b[0];
Sa1_Selector_a[6] = Sa1_b[1];
Sa1_Selector_a[7] = Sa1_b[2];
Sa1_Selector_a[8] = Sa1_b[3];
Sa1_Selector_a[9] = Sa1_b[4];
Instead of these single statements, two loops should be
implemented for the code
of the init section.
An input signal is well-defined, if it consists of only one single
vector with
same scaling for all elements.
Workaround: Insert an auxiliary block before the first inport of the Selector
block to avoid
the creation of the auxiliary variable (here Sa1_Selector_a) for
the not
well-defined input signal.
1151 / 1260
ID:
PR20071126-07
Title:
Modelling
ID:
PR20071127-01
Title:
User interface
1152 / 1260
ID:
PR20071128-02
Title:
Arithmetic operation with constant operands ignores fixedpoint overflow if the result is floating-point
Incorrect code/compilable
1153 / 1260
ID:
PR20071128-08
Title:
Modelling
1154 / 1260
ID:
PR20071129-08
Title:
1155 / 1260
ID:
PR20071130-16
Title:
Modelling
1156 / 1260
ID:
PR20071130-24
Title:
Utility
1157 / 1260
ID:
PR20071205-02
Title:
Simulation
1158 / 1260
ID:
PR20071206-02
Title:
1159 / 1260
ID:
PR20071206-03
Title:
1160 / 1260
ID:
PR20071206-05
Title:
Utility
1161 / 1260
ID:
PR20071206-10
Title:
Utility
ID:
PR20071206-13
Title:
Utility
1162 / 1260
ID:
PR20071207-22
Title:
ID:
PR20071210-15
Title:
Incorrect code/compilable
1163 / 1260
ID:
PR20071211-05
Title:
Incorrect code/compilable
1164 / 1260
ID:
PR20071212-03
Title:
Utility
1165 / 1260
ID:
PR20071213-11
Title:
Utility
ID:
PR20071217-07
Title:
Incorrect code/compilable
1166 / 1260
ID:
PR20071218-10
Title:
At Gain block the autoscaling tool does not take arbitrary flag
and LSB of gain value into account
Utility
ID:
PR20071218-13
Title:
Incorrect code/compilable
1167 / 1260
ID:
PR20071218-15
Title:
Modelling
1168 / 1260
ID:
PR20071220-02
Title:
ID:
PR20071225-01
Title:
Modelling
1169 / 1260
ID:
PR20080103-02
Title:
Simulation
ID:
PR20080109-10
Title:
Utility
1170 / 1260
ID:
PR20080114-01
Title:
1171 / 1260
ID:
PR20080114-11
Title:
Modelling
Description: It may happen that a data type missmatch error is issued by Simulink, which
occurs during code generation, but not during common model initialization, e.g.
update diagram.
Imagine an AUTOSAR model using Simulink fixed-point data types, e.g. as inputs
and outputs of a Stateflow chart. A TargetLink Runnable Inport or Outport is
implemented as a direct signal connaction, thus such block is transparent for
signals with fixed-point data type in MIL simulation. An initialization is
possible. However, when code generation is started, TargetLink changes the
internal implementation of a Runnable port, which may leads to a data type
mismatch errors like
Error #01225:
--> Data type mismatch. Output port 1 of
'data_type_mismatch/controller/Subsystem/controller/Test_Runnable/Read_logical/R
te_Function1/Outport/In' is a signal of data type 'double'. However, it is
driving a signal of data type 'boolean'.
Workaround: It has to be pointed out, that TargetLink currently does not support a MIL
simulation with fixed-point data types. Therefore fixed-point data types may be
the reason for problems in a TargetLink subsystem. This is mainly based on the
fact that many TargetLink blocks cannot handle input signals with a fixed-point
data type. The TargetLink fixed-point types and a SIL and/or PIL simulation with
fixed-point types within the TargetLink code remain unaffected. Only Simulink
fixed-point types, which needs a fixed-point library license, are addressed.
Based on this knowledge a workaround would be to insert Data Type Conversion
blocks before a Runnable port to convert the data type to floating-point or
integer. Another workaround is to make the runnable ports virtual.
1172 / 1260
ID:
PR20080114-20
Title:
Incorrect code/compilable
ID:
PR20080117-05
Title:
Incorrect code/compilable
Description: If the following conditions are fulfilled the SIL and PIL
simulation behavior of
the generated code may differ from Simulink:
- An outport X of a Stateflow chart drives directy or indirecty
an outport Y of
a condionally executed subsystem (e.g. an enabled
subsystem)
-- AND -- The initial values of X and Y differ (Simulink outport: "Initial
output",
Stateflow outport: "Value attribues"->"Initial Value").
Workaround: Follow one of the following suggestions:
- Enter equal inial values for the Stateflow outport and for the
Simulink
outport.
- Insert a Gain block with Gain factor 1 between the Stateflow
outport and the
Simulink outport.
1173 / 1260
ID:
PR20080117-06
Title:
Utility
1174 / 1260
ID:
PR20080117-07
Title:
Incorrect code/compilable
1175 / 1260
ID:
PR20080117-14
Title:
Utility
Description: During export of an A2L file, errors may occur, but export
process does not
abort and continues if possible. In this case the generated A2L
file may be
incomplete. However such errors are not reported, neither in
the message
browser, nor in MATLAB command window, nor in the Data
Dictionary Manager
message window. They are only listed in the log file
"a2lexport.log".
If the A2l export is called using an API function like
dsdd('Export', ...) or
dsdd_export_a2l_file, it is difficult to check whether an error
occured or not,
especially due to the fact that the API funtions returns without
an error code.
Workaround: When using the MATLAB API command for A2L export, it is
possible to obtain
messages like errors afterwards.
To do this, following commands must be executed:
msgList = dsdd('GetMessageList'); % get all data dictionary
messages
idx1 = find([msgList.number] > 8600);
idx2 = find([msgList.number] < 8700);
a2lIdx = intersect(idx1,idx2);
a2lMsgList = msgList(a2lIdx);
ID:
PR20080121-11
Title:
User interface
ID:
PR20080121-12
Title:
User interface
ID:
PR20080121-14
Title:
Incorrect code/compilable
ID:
PR20080122-03
Title:
TargetLink 2.2 2.2.1 2.3 2.3.1 3.0 3.0.1 3.1 3.2 3.3 3.4 3.5
Class:
Incorrect code/compilable
1178 / 1260
ID:
PR20080124-02
Title:
Utility
ID:
PR20080124-08
Title:
1179 / 1260
ID:
PR20080124-09
Title:
1180 / 1260
ID:
PR20080125-02
Title:
Utility
ID:
PR20080125-05
Title:
Incorrect code/compilable
ID:
PR20080125-07
Title:
Incorrect code/compilable
1182 / 1260
ID:
PR20080129-05
Title:
Modelling
ID:
PR20080130-10
Title:
Simulation
1183 / 1260
ID:
PR20080130-12
Title:
Incorrect code/compilable
Description: If a variable is redefined using its old value and this new value
is used in a
conditionally executed control flow branch, then this definition
is erroneously
moved into the control flow branch.
Example for variable "State":
State = A && B && !State;
if (cond) {
if (State) {
...
}
...
} else {
...
}
becomes, erroneously,
if (cond) {
State = A && B && !State;
if (State) {
...
}
...
} else {
...
}
This may for example occur for the LastEvent calculation of a
D FlipFlop.
Workaround: Set optimization level to 0, otherwise no workaround available,
because the
LastEvent cannot be influenced.
1184 / 1260
ID:
PR20080204-07
Title:
Modelling
1185 / 1260
ID:
PR20080207-02
Title:
Modelling
Description: If there are multiple typedef objects in the Data Dictionary that
are specified
to be a rename of the same TargetLink base type, no error or
warning is issued.
Example:
The base type Int16 is referenced be two typedef objects that
are specified to
be base types (IsBaseType = 'on').
Typedef object properties of 'Int16':
IsBaseType: 'on'
BaseType: 'Int16'
BaseTypeRename: 'MyInt16'
Typedef object properties of 'MyInt16':
IsBaseType: 'on'
BaseType: 'Int16'
BaseTypeRename: 'MyInt16'
Typedef object properties of 'MyInt16_2':
IsBaseType: 'on'
BaseType: 'Int16'
BaseTypeRename: 'MyInt16_2'
MyInt16 and MyInt16_2 both claim to be base type renames
of Int16. TargetLink
does not issue any warning or error about this. It uses MyInt16
for Int16. If
the user tries to specify MyInt16_2 in a block, MyInt16 will be
used instead.
Workaround: Do not specify multiple base type objects referencing the
same TargetLink base
type.
1186 / 1260
ID:
PR20080207-06
Title:
API
1187 / 1260
ID:
PR20080207-09
Title:
ID:
PR20080213-03
Title:
Utility
1188 / 1260
ID:
PR20080214-02
Title:
Simulation
ID:
PR20080214-11
Title:
Incorrect code/compilable
1189 / 1260
ID:
PR20080215-02
Title:
Simulation
1190 / 1260
ID:
PR20080215-03
Title:
Incorrect code/compilable
1191 / 1260
ID:
PR20080215-05
Title:
1192 / 1260
ID:
PR20080218-01
Title:
Utility
1193 / 1260
ID:
PR20080222-03
Title:
API
1194 / 1260
ID:
PR20080222-06
Title:
Utility
1195 / 1260
ID:
PR20080225-01
Title:
Modelling
1196 / 1260
ID:
PR20080227-01
Title:
Description: Using a Look-Up Table block with varianted axis data may
lead to a missing cast,
if variable classes are used with different qualifiers for a
variant structure
component and the variant structure itself.
For example the axis data of a Look-Up Table block is
varianted and becomes a
component of a variant structure. In case of the look up table
1D and 2D block
the map structure becomes a component of the variant
structure too, if one of
the axis is varianted. If the variant structure has the type
qualifier const and
volatile (e.g. via variable class tamplate) and the axis data or
the map
structure has not set the same qualifiers (e.g. volatile is
missing), there is a
missing cast in the look-up table function call.
Compiling the generated code leads to a compiler error like
the following:
COMPILING FAILED. See myModule.err for details.
".\myModule.c", line xxx: error: argument type does not match
prototype
Workaround: To avoid this problem it is necessary that all of the variant
structures
components (for look up table blocks) have the same
qualifiers.
1197 / 1260
ID:
PR20080228-08
Title:
Modelling
1198 / 1260
ID:
PR20080228-11
Title:
Description: Code generation may abort with an access violation and Fatal
F99999 if a
relational operator is driven by at least one signal that
contains a complex
operation (multiplication, division, sum).
This may occur for a relational block with the described input
signals as well
as for the corresponding modelling in Stateflow.
Example:
A Sum block with two inports and operation "--" drives a
Relational block.
Workaround: For the example, use a Gain block with gain factor -1 in front
of the sum and
change the Sum block settings accordingly.
1199 / 1260
ID:
PR20080228-12
Title:
Type qualifier "volatile" not taken into account for look-up table
function parameter
1200 / 1260
ID:
PR20080307-02
Title:
Simulation
1201 / 1260
ID:
PR20080310-02
Title:
Utility
1202 / 1260
ID:
PR20080318-03
Title:
1203 / 1260
ID:
PR20080320-11
Title:
Utility
ID:
PR20080325-02
Title:
Utility
Description: The limits set for the Discrete-Time Integrator block are not
taken into account
during range propagation. They should taken into account as
min/max values as
long as there are no min/max values specified which constrain
the range even
further.
Workaround: Specify the limits as min and/or max value manually.
1204 / 1260
ID:
PR20080326-08
Title:
Incorrect code/compilable
1205 / 1260
1206 / 1260
ID:
PR20080326-10
Title:
Incorrect code/compilable
1207 / 1260
ID:
PR20080327-08
Title:
Incorrect code/compilable
1208 / 1260
ID:
PR20080401-01
Title:
1209 / 1260
ID:
PR20080401-02
Title:
1210 / 1260
ID:
PR20080402-12
Title:
Incorrect code/compilable
1211 / 1260
ID:
PR20080403-03
Title:
Modelling
1212 / 1260
ID:
PR20080403-05
Title:
Incorrect code/compilable
1213 / 1260
ID:
PR20080409-15
Title:
Simulation
1214 / 1260
ID:
PR20080411-04
Title:
Incorrect code/compilable
1215 / 1260
ID:
PR20080415-04
Title:
Utility
1216 / 1260
ID:
PR20080415-16
Title:
Simulation
ID:
PR20080416-11
Title:
ID:
PR20080421-04
Title:
Utility
title
INCONSISTETNT-LIMITS (8766) will be thrown. The reason
for this message was the
check of the defined limits by the AUTOSAR Import/Export
module. The check of
unsigned integer types doesn't allow negative offsets for
scaling objects and
throw an error as the result of this combination. This is wrong,
because
negative offset values are valid for unsigned integer types.
The scaling or the COMPU-METHOD in AUTOSAR could look
like this:
<COMPU-METHOD UUID="3410EB50-FBD0-40B6-A8B8A2C0C4CB1C38">
<SHORT-NAME>Test_UInt8_Scaling</SHORT-NAME>
<CATEGORY>LINEAR</CATEGORY>
<COMPU-INTERNAL-TO-PHYS>
<COMPU-SCALES>
<COMPU-SCALE>
<COMPU-RATIONAL-COEFFS>
<COMPU-NUMERATOR>
<V>-80</V>
<V>1</V>
</COMPU-NUMERATOR>
<COMPU-DENOMINATOR>
<V>2</V>
</COMPU-DENOMINATOR>
</COMPU-RATIONAL-COEFFS>
</COMPU-SCALE>
</COMPU-SCALES>
</COMPU-INTERNAL-TO-PHYS>
</COMPU-METHOD>
The scaling is defined as f(x) = -40 + 0.5*x, so the offset has a
negative
value.
The associated INTEGER-TYPE could be defined as followed:
<INTEGER-TYPE UUID="F2F9D2C9-51B5-4C7B-AC40DA0C02E3D466">
<SHORT-NAME>test_uint8</SHORT-NAME>
<SW-DATA-DEF-PROPS>
<BASE-TYPE-REF
DEST="SW-BASE-TYPE">/BaseTypeGeneric/uint8</BASETYPE-REF>
<COMPU-METHOD-REF
DEST="COMPUMETHOD">/TestPackage/Test_UInt8_Scaling</COMPUMETHOD-REF>
</SW-DATA-DEF-PROPS>
<LOWER-LIMIT INTERVAL-TYPE="CLOSED">0</LOWERLIMIT>
<UPPER-LIMIT INTERVAL-TYPE="CLOSED">255</UPPERLIMIT>
</INTEGER-TYPE>
Workaround: No workaround available.
1219 / 1260
ID:
PR20080421-07
Title:
Utility
ID:
PR20080422-04
Title:
Incorrect code/compilable
1220 / 1260
ID:
PR20080422-13
Title:
Utility
Description: If the TargetLink SWC Model Generator will be called with a model name equal to
the destination subsystem name an error will be thrown. The call of the SWC
Model Generator may looks like following:
tl_generate_swc_model(
'Model','TestModel','DestSubsystem','TestModel','SoftwareComponents','TestModel'
,'SwcDescFileNames','TestModel.xml')
The error that will be thrown in the MATLAB command window looks like:
??? Error using ==> get_param
block_diagram does not have a parameter named 'Position'.
Error in ==> tl_generate_swc_model>FcnReplaceTlSubsystem at 1528
destPosition = get_param(destSubsystem, 'Position');
Error in ==> tl_generate_swc_model at 468
FcnReplaceTlSubsystem(hTlSubsystemFrame, options.destSystemPath,
options.model, options.tlSubsystemId);
Workaround: As a workaround use a destination subsystem name that is not equal to the model
name.
For example:
tl_generate_swc_model(
'Model','TestModel','DestSubsystem','TestModel/TestModel','SoftwareComponents','
TestModel','SwcDescFileNames','TestModel.xml')
-- OR -tl_generate_swc_model(
'Model','TestModel','DestSubsystem','TestModelSubsystem','SoftwareComponents','T
estModel','SwcDescFileNames','TestModel.xml')
1221 / 1260
ID:
PR20080428-01
Title:
1222 / 1260
ID:
PR20080507-03
Title:
User interface
1223 / 1260
ID:
PR20080507-12
Title:
Incorrect code/compilable
ID:
PR20080507-13
Title:
#endif
Workaround: Avoid modeling situations that match the patterns for the AND
or OR
transformation if preprocessor-if symbols are involved.
ID:
PR20080507-14
Title:
ID:
PR20080513-01
Title:
Utility
1227 / 1260
ID:
PR20080513-05
Title:
Utility
1228 / 1260
ID:
PR20080514-03
Title:
User interface
Description: In the block dialog the scaling will be displayed in red although
the
specification is ok, if
- the scaling is specified for a type with constraints and
- the name of the scaling has less than four letters.
Workaround: Rename the scaling, that the name contains four or more
letters.
The problem is fixed by using the following patch or later
patches:
TargetLink 3.1p5
1229 / 1260
ID:
PR20080514-05
Title:
Incorrect code/compilable
1230 / 1260
ID:
PR20080514-08
Title:
Utility
Description: The Data Dictionary export of an AUTOSAR file according to version 2.1
contains
elements with the same UUID. After the export of the AUTOSAR nodes
ATOMIC-SOFTWARE-COMPONENT-TYPE and INTERNALBEHAVIOR, both nodes contain UUID
properties with the same unique identifier. The problem exists in
AUTOSAR files,
exported with the Data Dictionary Manager or with the Data Dictionary
MATLAB
API. No error message is thrown during export.
The first export of an AUTOSAR file doesn't contain the faulty UUID of
the
INTERNAL-BEHAVIOR node. As the
/Subsystems/<Subsystem>/Autosar/SoftwareComponents/<Subsystem>
node contains a
property named UUID with a set identifier, all further export operations
will
contain the error.
Workaround: To export an AUTOSAR file without equal UUIDs clear the UUID
property of the
/Subsystems/<Subsystem>/Autosar/SoftwareComponents/<Subsystem>
node, before
exporting an AUTOSAR XML file.
ID:
PR20080519-06
Title:
User interface
1231 / 1260
ID:
PR20080519-08
Title:
Simulation
ID:
PR20080519-13
Title:
Incorrect code/compilable
1232 / 1260
ID:
PR20080519-16
Title:
User interface
Description: When MATLAB is closed and the current Data Dictionary has
been modified, a
dialog opens which asks the user whether the Data Dictionary
should be saved to
file. The dialog presents a Cancel button, however, pressing
this button has no
effect, i.e. MATLAB shutdown is not cancelled.
Workaround: Save current Data Dictionary before shutting down MATLAB.
ID:
PR20080526-01
Title:
Incorrect code/compilable
1233 / 1260
ID:
PR20080527-06
Title:
Description: The code pattern of the Discrete Transfer Function block may
be optimized, if
some of the coefficients are -1, 0 or 1.
If such coefficients are present, some arithmetic operations
are superfluous and
can be neglected.
TargetLink applies this optimizations, although this may
contradict with some
variable properties.
Example:
The nominator coefficents are not specified using a Data
Dictionary variable and
have the variable class MERGEABLE_CAL, which means that
the coefficents are
calibratable and may be used more than once in the model.
The variable has to be
generates as a vector of given length and any vector element
must not be
eleminated.
Although TargetLink applies the optimization.
Only if the option 'Keep vector structure' is enabled, the right
vector will be
generated.
In contrast TargetLink generated the right vectors if the same
specification is
done using a Data Dictionary variable. Here the use of the
Data Dictionary
variable implies that a fixed variable has to be generated.
Workaround: Use 'Keep vector structure' or specify variable in the Data
Dictionary.
1234 / 1260
ID:
PR20080528-18
Title:
Incorrect code/compilable
1235 / 1260
ID:
PR20080529-18
Title:
Utility
ID:
PR20080529-20
Title:
1236 / 1260
ID:
PR20080530-14
Title:
Incorrect code/compilable
ID:
PR20080602-27
Title:
Simulation
1237 / 1260
????E.
In this case the fault is unclear for the user.
Workaround: Without a Simulink fixed point licence do not use Simulink
fixed-point data type
at the Outports of a TargetLink subsystem.
1238 / 1260
ID:
PR20080602-36
Title:
Incorrect code/compilable
ID:
PR20080603-09
Title:
1240 / 1260
ID:
PR20080604-04
Title:
Incorrect code/compilable
1241 / 1260
ID:
PR20080605-19
Title:
Wrong A2L entry when using user look-up table scripts for
equidistant axes
Utility
1242 / 1260
ID:
PR20080609-04
Title:
Utility
Description: In the generated A2L file the Interpolation and Index Search
block combination
are to be combined to one MAP or CURVE description.
This does not work correctly if the Interpolation block and
Index Search block
reside in different subsystems, even if only TargetLink prot
blocks are placed
between the Interpolation and the corresponding Index Search
block.
In this case the Interpolation and Index Search blocks A2L
entries are generated
as follows: For the variable related to the Interpolation block
(table
parameter) a CHARACTERISTIC entry of MAP or CURVE
type and for the variable
related to the Index Search block (break point data parameter)
an AXIS_PTS entry
is generated.
However at the CHARACTERISTIC entry representing the
table paramter of the
Interpolation block only FIX_AXIS are generated, instead of
the COM_AXIS
referring to the AXIS_PTS entries corresponing to the break
point data
parameters of the Index Search blocks connected to the
Interpolation block.
Workaround: No workaround available.
1243 / 1260
ID:
PR20080610-01
Title:
1244 / 1260
ID:
PR20080612-22
Title:
Description: If the input of a Demux, Mux or Data Store Write block ist an
non-virtual signal
the code generation fails with the error:
Fatal #10020:
An internal error (LEDA exception: array::inf index out of
range) has occurred.
Workaround: Do not use non-virtual signals as the input of a Demux, Mux or
Data Store Write
block.
1245 / 1260
ID:
PR20080613-04
Title:
Incorrect code/compilable
1246 / 1260
ID:
PR20080619-03
Title:
User interface
1247 / 1260
ID:
PR20080620-02
Title:
Utility
1248 / 1260
ID:
PR20080623-01
Title:
Utility
1249 / 1260
ID:
PR20080623-03
Title:
ID:
PR20080623-04
Title:
Incorrect code/compilable
1250 / 1260
ID:
PR20080626-03
Title:
Modelling
1251 / 1260
ID:
PR20080626-05
Title:
1252 / 1260
ID:
PR20080701-01
Title:
Incorrect code/compilable
Description: In a model there are two variables specified with the following
properties:
- they do have fix names that are identical,
- their properties except for their variable classes are identical,
- their variable classes do have the MERGEABLE
Optimization property set,
- the variable classes' storage properties are set to 'local',
- the variables are specified to be defined in the same
function, e.g. their
blocks are placed in the same subsystem,
- their variable classes are identical except for the scope
properties: the one
is set to 'static', while the other one is left to '<default>'.
In this case, TargetLink merges both variables in the
generated code, though
they differ in scope property. What's even worse is that the
variable's
definition may have or have not the static qualifier, depending
on the
adjustment of the blocks in the model.
Workaround: Specify different names for the variables.
-- OR -Do not specify fix names for the variables.
-- OR -Do not set the MERGEABLE optimization flag in the variable
classes.
1253 / 1260
ID:
PR20080701-03
Title:
Utility
Description: When using the Data Dictionary XML export and import
feature, invalid Data
Dictionary may be generated.
This occurs if variables or other Data Dictionary objects have
varianted
properties of type String and Float mixed which leads to an
XML file containing
wrong types.
After import of such a XML file the Data Dictionary contains
some variables (or
other Data Dictionary objects) of Type String for the Value and
the Variant
property which leads to an error in level 4 validation.
Workaround: Before importing the corrupted XML file this has to be
corrected. For example
you can try to correct the corrupted file by an m-script with the
following or
similar contents (sample):
xDoc = xmlread(file);
% Find a deep list of all <ddVariantProperty> elements.
allListItems =
xDoc.getElementsByTagName('ddVariantProperty');
%Note that the item list index is zero-based.
for i=0:allListItems.getLength-1
thisListItem = allListItems.item(i);
Type = char(thisListItem.getAttribute('Type'));
if strcmp(Type,'String')
bProblematicConfig = 1;
thisListItem.setAttribute('Type','');
end
end
xmlwrite(file,xDoc);
1254 / 1260
ID:
PR20080701-05
Title:
Incorrect code/compilable
ID:
PR20080701-08
Title:
Incorrect code/compilable
1255 / 1260
1256 / 1260
ID:
PR20080702-03
Title:
User interface
1257 / 1260
ID:
PR20080702-06
Title:
Utility
1258 / 1260
ID:
PR20080704-04
Title:
Incorrect code/compilable
ID:
PR20080707-03
Title:
1259 / 1260
ID:
PR20080711-06
Title:
Utility
1260 / 1260