Professional Documents
Culture Documents
This document details generic release version 2.8.0 (r2019-1) of the OpenECU developer
software and related tools, created on 15-Jan-2019. Some changes may not be backwards
compatible with older versions; please review the release notes to determine if there are
enhancements, bugs, or compatibility considerations in this release that impact you.
1.1. Introduction
This document is split into sections which detail how to install OpenECU, integrate OpenECU
with supporting tools, what changes have been made to OpenECU software, and how to
contact OpenECU technical support.
• Procedural steps to install the OpenECU software are given in the Installation section.
Review the installation steps to become familiar with the options available when OpenECU
is installed. In some cases, it is beneficial to have installed other packages before
OpenECU but this is not essential. Integration with other software packages is described
next.
• Integration with various third party applications supplied by other companies are detailed
in the Third party tools requirements and Integration notes for third party tools section.
Review the integration notes to become familiar with what tools OpenECU requires and
how OpenECU integrates and uses these tools. In some cases, you must change the
environment or tools before using OpenECU.
• A detailed change log to each release version of the OpenECU developer software is given
in the Change log section. A summary of each release is given in the Summary of releases
section.
Review the release notes to determine if there are enhancements, bugs, or compatibility
considerations in this release that impact you.
If you are upgrading from a software version other than the most recent one, review the
current release notes and all interim versions. For example, when you upgrade from v1.2
to v1.4, review the release notes for v1.3 and v1.4.
• A full User Guide and associated set of help files are installed as part of this install package
and can be accessed through Window's Start Menu, via an HTML browser or through the
MATLAB help browser.
• If you find an issue with OpenECU or require technical support, contact details can be
found in the Contact information section.
Release
The version, and sometimes name, assigned to the release. A
description of version numbering is given in the Version numbering
section.
New Features
New features introduced by this version, or significant changes to
existing features. New features are grouped into similar functional areas
making it easier to find related changes.
Backwards compatible
Whether the changes in the release retain backwards compatibility
with the immediately prior release. If the release is not backwards
compatible, review the changes which affect backward compatibility to
determine if the release affects your application.
Firmware upgrade
Whether there is a change in the release which might require a firmware
upgrade. The firmware of the ECU makes up the boot, reprogramming
and, in some cases, other permanently resident functionality of the ECU.
If the release indicates the need for for a firmware upgrade, review the
changes which affect the firmware to determine if the new or changed
features affect you.
2.1. Introduction
This chapter describes the installation process for the OpenECU Simulink Blockset package,
C-API package, and its dependencies.
• GCC Compiler
Note
GCC is an optional component in the OpenECU installation (installed by default).
Additionally, GCC support is currently in a beta stage. As such, there a number of
known limitations for compiling an OpenECU application with GCC. Please see the
“Integration notes for third party tools” of the “Release notes” for a list of known issues
building with GCC for further details.
To program and calibrate an OpenECU with an application, OpenECU integrates with the
following calibration tools. Only one calibration tool is required:
• PiSnoop
• ATI VISION
• ETAS INCA
• Vector CANape
In addition, if you need to add state diagrams to the model, then you will also need:
• Stateflow (to develop state flow diagrams inside your model) Simulink Coder generates C
code from the state flow diagrams inside your model.
Simulink Coder generates C code which does not lend itself to efficient repeatable testing.
When creating a production version of your product, you may need better control of the
structure of the C code generated from the model to reduce the cost of testing the C code
against any industry standards. Under these circumstances you will also need:
To compile the generated C code (from either Simulink Coder or Embedded Coder), you will
need one of the following compilers:
To program and calibrate an OpenECU with an application, OpenECU integrates with the
following calibration tools. Only one calibration tool is required:
• PiSnoop
• ATI VISION
• ETAS INCA
• Vector CANape
• MATLAB versions:
OpenECU works with a number of other applications, but these need not be installed prior
to the OpenECU developer software.
• Stateflow versions:
• Wind River (Diab) C compiler (versions 5.5.1.0, 5.8.0.0 and 5.9.0.0) for M110, M220, M221,
M250, M460 and M461 targets
• GCC Compiler (version 4.7.3 free compiler option) for M110, M220, M250, M460, M461
and M670 targets
Note
GCC is an optional component in the OpenECU installation (installed by default)
The applications above have been listed with a version or release number. These are the
versions or releases that OpenECU has been tested against. It may be that OpenECU will
work with other versions of these applications, but it is recommended against and Pi may not
provide technical support if these versions or releases are not used.
OpenECU developer software may not function correctly on encrypted drives. OpenECU developer software must be able to
create files on the host file system. If using an encrypted drive, be sure that permission settings will allow OpenECU to create
files. Pi Innovo cannot provide support for issues with encrypted drives.
b
Mathworks Simulink Coder includes functionality of RTW and Stateflow Coder.
c
All OpenECU targets use Freescale PowerPC microcontrollers. The M110, M220, M221, M250, M460 and M461 use an
MPC5534 microcontroller, the M670 uses an MPC5674F microcontroller. The M560 and M580 use an MPC5746C for the primary
microcontroller and SPC560P34 for the secondary microcontroller.
See the Technicical Specification for your target for more information.
d
OpenECU has only been tested using GCC Compiler version 4.7.3 and is in the beta stage. As such, there are a number of
known issues to keep in mind when compiling an OpenECU application using GCC. For further details, please see "Integration
notes for third party tools" for a list of known issues.
e
These tools have been tested for reprogramming, data logging, and calibration. Some of them have many other features which
have not been tested with OpenECU.
f
The OpenECU method of configuring ATI Vision uses standardised ASAP2 files. As a result, all future versions of Vision are
expected to be backwardly compatible (e.g., version 3.7 and version 4.0 are known to be compatible).
g
The following Vision toolkits are typically used when working with OpenECU: Data Acquisition Toolkit, Calibration Toolkit,
Universal ECU Interface Standard Toolkit, APOLLO Data Analysis Toolkit, CAN Interface Toolkit and HORIZON Scripting/Remote
API Toolkit. In particular, the HORIZON Scripting/Remote API Toolkit is required if OpenECU builds are to generate Vision strategy
files (.vst).
Some third party tools have been marked deprecated and support for these tools will be
removed in a future release of OpenECU.
The installation process for the OpenECU developer software is performed by a wizard. To
run the wizard, execute the appropriate installer program. The installation can be stopped at
any point by selecting the Cancel button.
The installer requires that the user has administrative rights to make changes on the
computer. If a user without rights is trying to execute the installer a dialog box will be
displayed and the installation stops. Login with an administrator account or contact your
network administrator and try again.
If a version of an OpenECU installer is already running, a dialog box will appear saying so.
Select OK (which stops the current installer) and change to the other OpenECU installer to
continue.
If a version of MATLAB is running, a dialog box will appear saying so. Quit all instances of
MATLAB, then select OK to continue installation.
The next windows to appear present the license agreement for using OpenECU developer
software and related software. Read the license agreements and if acceptable, select I accept
the terms of the License Agreement and then Next. If not acceptable, do not install the
software.
The next window to appear provides a number of components that can be installed or
patched.
Adjust the component selection as required (especially if you require the installer to update
an installed copy of ETAS INCA) and select the Next button.
The next window asks for a destination path to be specified. By default, the installer presents
a path to your local drive.
Warning
If the default path is changed, ensure that only digits, upper and lower case letters and
the _ character are used to specify directory names. An installation path that includes
any space characters will cause problems later on.
If the MATLAB integration component was selected, the next window presented provides a
list of installed and compatible versions of MATLAB. The example here shows that OpenECU
should be integrated with MATLAB R2008b.
Select which versions of MATLAB will be used with OpenECU and select the Next button.
If no version should be updated select None.
If no compatible versions of MATLAB were found, the next window presents the command
to run to add OpenECU to MATLAB (more details given in Section 2.5.4, “MATLAB”).
If the INCA-ProF integration component was selected, the next window presented provides
a list of installed versions of INCA.
Select which versions of INCA will be used with OpenECU and select the Next button. If no
version should be updated select None.
Note
If any version of INCA is selected, then the installer will add OpenECU integration to
all versions of INCA. This is simply a consequence of the way INCA works.
If no versions of INCA were found, the next window presents details on how to achieve this
by hand (more details given in Section 2.5.7, “ETAS INCA calibration tool”). The instructions
should be carried out when INCA-ProF runs.
If the Start Menu Shortcuts component was selected, then the next window presented asks
the user to select where in the Start menu the OpenECU items will be added. During install,
the installer adds short cuts to the documentation components selected and to the OpenECU
uninstall application.
Once installation has completed, the user is provided an option to read the getting started
guide, the release notes and to visit the OpenECU web site.
Release notes
If you are installing a new version of OpenECU, it is strongly recommended that
you read the release notes. Some releases of OpenECU change the functionality of
features which may have an impact on existing applications.
This section is a quick setup guide to get OpenECU working with your license. Consult
the license administration guide for more information on license management and
administration. This document is provided with the installation at "[install path]\doc_user
\License-Administration-Guide.pdf".
2.3.1.1. Server
• After installing the platform, copy the files in "[install path]\tools\flexera\i86_n3\" to your
designated license server. On that machine, run lmtools.exe.
• Select the "System Settings tab", check "Include Domain", and press the button that says
"Save HOSTID Info to a File".
• Email the file to Pi Innovo with the purchase order. When the purchase is complete, Pi will
send you a valid license file. (Or if you have already completed the purchase, reply to the
welcome email with this information)
• It is recommended that lmadmin license server manager be used to serve licenses. Run
the lmadmin installer to install the software. Once the installation is complete, copy the
vender daemon, openecu.exe, into the install directory, "C:\Program Files (x86)\FlexNet
Publisher License Server Manager\".
• Start the license server manager. You can then use the web interface to upload the license
file and start serving your license.
Note
If a license has not yet been purchased, email the file to Pi Innovo with the purchase
order. When the purchase is complete, Pi will send a valid license file. If the purchace
has already been completed, reply to the welcome email with this information.
• It is recommended that lmadmin license server manager be used to serve licenses. Run
the lmadmin installer and start the license server manager. The web interface can then be
used to upload the license file and start serving your license.
Note
Details on installing and using the lmadmin tool are in Chapter 9 of the License
Administration Guide, "[install path]\doc_user\License-Administration-Guide.pdf".
Note
lmgrd is also provided with the platform as an alternative to lmadmin; consult Chapter
10 of the License Administration guide for details on its use.
2.3.1.2. Client
• On the user development machine, set the environment variable
OPENECU_LICENSE_FILE to <port>@<hostname>to tell the OpenECU platform to look
for a floating license from the license server.
• Select the "System Settings tab", check "Include Domain", and Press the button that says
"Save HOSTID Info to a File" (see screen shot above)
• Email the file to Pi Innovo with the purchase order. When the purchase is complete, Pi will
send you a valid license file. (Or if you have already completed the purchase, reply to the
welcome email with this information) If a license has not yet been purchased, email the
file to Pi Innovo with the purchase order. When the purchase is complete, Pi will send a
valid license file. If the purchace has already been completed, reply to the welcome email
with this information.
The uninstaller requires that the user has administrative rights to make changes on the
computer. If a user without rights is trying to execute the uninstaller a dialog box will be
displayed and the uninstaller stops. Login with an administrator account or contact your
network administrator and try again.
If a version of an OpenECU uninstaller is already running, a dialog box will appear saying
so. Select OK and change to the other OpenECU uninstaller to continue.
The uninstaller presents the location of the previous install to remove. Select the Uninstall
button to continue (this will remove that version of OpenECU) or select the Cancel button
to stop the uninstall.
When uninstalling, if this version of OpenECU is present in MATLAB's PATH, then the
uninstaller will not remove the reference. Next time MATLAB is started, it will try to gain
access to the deleted OpenECU directory and will raise an error. When this occurs, manually
remove the OpenECU directories by selecting MATLAB's menu option File->Set Path....
Note
The OpenECU uninstaller does not remove the INCA-ProF configuration files for CCP.
2.5.4. MATLAB
2.5.4.1. Integration
The installer integrates the OpenECU package with MATLAB and Simulink. However, if for
any reason the installer could not find an installed version of MATLAB, the user can manually
integrate the OpenECU blockset by issuing the following MATLAB commands:
Note
where the text [install path] is replaced by the installed location of the OpenECU
blockset, e.g., c:\openecu\platform\1_9_2; and the text <release> is replaced
with the major version of MATLAB (e.g., 2013b or 2013b_64 for 64-bit versions of
MATLAB).
Once the path has been added, the user can check the OpenECU version by issuing the
following MATLAB command:
ver openecu
If nothing is printed, or an error message is returned, then the path specified by the addpath
command was incorrect and should be changed.
Warning: Model '...' was last saved using an old version (...) of Simulink.
For advice on upgrading this model to the current version of Simulink, see
the Upgrade Advisor.
> In oe_test_required_platform_vers at 26
In oe_make_rtw_hook at 153
In openecu_make_rtw_hook at 6
In general\private\openmdl at 13
In open at 159
In uiopen at 167
Workaround: Turn off the Notify when loading an old model option in Simulink's
preferences:
2.5.5. PiSnoop
2.5.5.1. Integration
Unlike some other calibration tools, during installation there is nothing special to be done
when integrating PiSnoop and OpenECU.
There have been integration issues between Vision and OpenECU, when the user
requests a build create a Vision VST (strategy) file. If OpenECU cannot create a strategy
file, then it may be necessary to register the COM interface for Vision by running the
RegisterCOMInterface.bat file included in the install of ATI Vision.
There have been reports of Vision interacting poorly with encrypted hard drives. At the
moment, it is not clear what the problem might be. On one occasion, Pi worked with ATI
and a customer and determined a work around that is not understood. The work around
was to rename the executable file for Vision to something longer than 11 characters.
ATI Vision 2006 (v3.2) is the earliest version for which CCP seed/key security has been
validated by Pi Innovo. Earlier versions may support CCP seed/key security (see the
relevant Vision documentation) but bugs in the CCP implementation on various targets
are known to exist. ATI have recommended that earlier versions should not be used, or
should be used with caution.
The INCA-ProF tool programs OpenECU over CCP using a set of configuration files. In order
to manually integrate these configuration files, the user must run INCA, open an experiment,
select manage memory then flash programming.
The user is then presented with a dialog box to browse ProF configurations, or a ProF settings
dialog box (in which case the user must select Configure...).
With the browse ProF configurations dialog box, select the "Install..." button and browse to
the install location of OpenECU:
[install path]\tools_integration\inca_prof
and select OK. This will have manually installed the INCA-ProF configuration file for
OpenECU.
Note
If manually integrating and the ProF files cannot be found in the location above, then re-
run the OpenECU installer and select the Integration -> INCA-ProF Integration option
and try again.
• On Choose your Activation Type window, select one of the following options:
• Permanent activation if you have been assigned with a license file from Wind River,
usually named WRSLicence.lic. The full path should point to the license file.
• Temporary activation if you wish to use the Wind River (Diab) compiler on an evaluation
basis, or temporary basis until a permanent license is provided.
• A reboot may be required to complete installation of the Wind River (Diab) compiler.
• If using one version of the Wind River (Diab) compiler, either setup the
OPENECU_DIAB_5_5_1_0 environment variable as described in the next point, or adjust
Window's system path to include the absolute path to the compiler's bin directory.
• If using more than one version of the Wind River (Diab) compiler (for instance, when you
are using two or more versions of OpenECU which require different versions of the Wind
River (Diab) compiler), the environment variable OPENECU_DIAB_5_5_1_0 must be set
to the absolute path to the compiler's bin directory. This macro must terminate in a “\”
and must use the DOS 8.3 short naming convention.
E.g., D:\Progra~1\diab\5_5_1_0\win32\bin\
The compiler incorrectly generates object code for “float <= float” comparisons, turning
the comparison into “float > float”. This issue has been resolved by removing the -
Xieee754-pedantic command line option to the compiler command line option to the
build configuration files.
The compiler incorrectly generates jump instructions in the object code if the jump
destination address differs from the address of the jump instruction by more than 15 bits
(signed). No warning or error is generated by the compiler. The result is a model which
does not behave as expected when run on target (usually the ECU appears as if it is
continually resetting).
To alert the user to this risk, an OpenECU build checks for large functions and issues a
warning message if any are found. The message takes the form:
Workaround (Simulink): RTW generates just a couple of C functions for the model, rather
than splitting major sub-systems into their own functions. Hence those functions can
become large enough to hit this compiler problem if the model is large. This can be
avoided by applying the atomic subsystem option to key subsystems in the model. RTW
generates a different C function for each atomic subsystem, where each resulting function
corresponds to just part of what would have been one large function. You should split any
large model up like this to avoid any one C function becoming large enough to hit this
compiler problem.
The compiler can generate non-existent labels such as ".L1013" when compiling code
involving large structures, such as those generated by TargetLink. The code then fails to
link because the labels are not defined. This has not yet been seen with Simulink builds
but it may possibly be seen in future.
The compiler rounds values when converting from floating point to integer, e.g. from "float"
to "signed long" (in terms of native types, otherwise known as F32 and S32 in the OpenECU
environment). For example, 3.6 as a float is rounded to 4 as an integer, but the C standard
requires that the fractional part is truncated, so a converted value of 3 would be correct.
Similarly -3.6 is rounded to -4 instead of being truncated to -3. This defect is fixed in version
5.8.0.0 of the compiler.
There has been a known issue which restricts the compiler to use Simulink lookup block.
When using Simulink lookup blocks, the Diab compiler would stop compilation with this
error message:
This has now been fixed, see F-CR 13325 in the release notes.
• Closed: compiling the main model file can take a long time.
Small models compile in a short period of time, but once the code presented to the compiler
exceeds a limit, the compiler takes a long time to compile the main model file (model-
name.c).
Workaround: the compiler sets aside an amount of memory for the compilation phase
and if the size of the model code exceeds the limit, the compilation slows down. This can
be avoided by increasing the size of the compiler's buffer using a command line option.
Add the pcomp_CompileOptions block to the model, set the mode parameter to Add
to options and set the compiler options parameter to -Xparse-size=100000. If the
compilation is still slow, increase the option value further.
• Follow the guidance given in Section 2.5.9, “Wind River (Diab) C Compiler v5.5.1.0”.
• If using a single version of the Wind River (Diab) compiler, either setup the
OPENECU_DIAB_5_8 environment variable as described in the next point, or adjust
Window's system path to include the absolute path to the compiler's bin directory.
• If using multiple versions of the Wind River (Diab) compiler (for instance, when you are
using two or more versions of OpenECU which require different versions of the Wind
River (Diab) compiler), the environment variable OPENECU_DIAB_5_8 must be set to the
absolute path to the compiler's bin directory. This macro must terminate in a “\” and must
use the DOS 8.3 short naming convention.
E.g., D:\Progra~1\diab\5_8_0_0\win32\bin\
There has been a known issue which restricts the compiler to use Simulink lookup block.
When using Simulink lookup blocks, the Diab compiler would stop compilation with this
error message:
This has now been fixed, see F-CR 13325 in the release notes.
• Follow the guidance given in Section 2.5.9, “Wind River (Diab) C Compiler v5.5.1.0”.
• If using a single version of the Wind River (Diab) compiler, either setup the
OPENECU_DIAB_5_9 environment variable as described in the next point, or adjust
Window's system path to include the absolute path to the compiler's bin directory.
• If using multiple versions of the Wind River (Diab) compiler (for instance, when you are
using two or more versions of OpenECU which require different versions of the Wind
River (Diab) compiler), the environment variable OPENECU_DIAB_5_9 must be set to the
absolute path to the compiler's bin directory. This macro must terminate in a “\” and must
use the DOS 8.3 short naming convention.
E.g., D:\Progra~1\diab\5_9_0_0\win32\bin\
There has been a known issue which restricts the compiler to use Simulink lookup block.
When using Simulink lookup blocks, the Diab compiler would stop compilation with this
error message:
This has now been fixed, see F-CR 13325 in the release notes.
The Diab 5.9.0.0 compiler generates object files that cause the Diab
ddump
command to generate the following error message during an application build.
The error appears to be benign and can be ignored. Currently, there is no known
workaround.
GCC is used with permission under the GPL Version 3. If GCC is installed with OpenECU, the
license file can be found in the [install path]\tools\gcc\ppc\docs directory of the
OpenECU install. If desired, a copy of the GCC source code can be found and downloaded
from the Pi Innovo website.
Support for GCC is currently in beta and as such, the user may run into issues which can
cause an application to fail to build or run correctly on target. Listed below are a set of known
issues when building an application using GCC. See Appendix A, Contact information for
details on how to get in contact with OpenECU support if support is needed for using GCC.
2.5.12.1. Installation
GCC is an optional component in the OpenECU installation and is installed by default.
When building a model that uses Simulink look up blocks, the compiler will emit diagnostic
messages similar to the following. These can be ignored.
• Information: GCC only supports non-VLE code. Therefore, the compiled code will be larger.
In general, GCC applications will be about 50% bigger than code generated by Diab.
• Information: The GNU linker locates data slightly differently than the Diab linker in the
final images. RAM and Flash memory utilization may be different for the same application
compiled by different compilers.
• Open: Applications built with GCC in general exhibit higher CPU loading than applications
build with Diab.
2.5.13. Python
Python is general purpose, high level interpreted programming language, distributed under
the PSF license which allows use in non open-source commercial applications. The license
can be found in the [install path]\tools\python\license.txt file.
2.5.13.1. Installation
Python is a required component of the OpenECU installation.
c:\windows\system32; or
c:\windows\syswow64
Locate the DLL referred to in the error message. The file will start with the characters “py”
and end with “.dll”. Group all Python DLLs and move them to a temporary location, then
restart OpenECU.
Temporarily moving DLLs will cause the other application to run incorrectly (and if DLLs
unrelated to Python are inadvertantly moved, then the applications that rely on those DLLs
may not run correctly). You can resolve this by returning the moved DLLs to their original
location, or possibly moving the DLLs to the location of the installed applications.
Note
The OpenECU installation of Python does not write files to the Windows directories,
or modify global registry entries relating to Python. As such, the OpenECU
installation of Python is entirely local to OpenECU and will not affect other packages.
Use these release notes, a log of changes to the software packages over time, when
upgrading to a newer version to learn about:
New Features
New features introduced by this version, or significant changes to
existing features;
Outstanding Issues
Any issues known to cause problems in the latest release.
• J1939 messaging support for various DMs (DM1 and DM2 transmit and decode included
as standard)
• Extended diagnostic trouble code support (basic DTC support included as standard)
Version number
A version number consists of three numbers, separated by periods:
major, minor and sub-minor. For instance, the version number 1.8.3 has
a major number of 1, a minor number of 8, and a sub-minor number of 3.
A version number is more recent than another, when its numerical value
is larger. For instance, version 1.8.3 is more recent than version 1.7.5.
Version tag
A version tag is a textual string used to identify development versions
of the software, and typically ends with a tag number. For instance, the
version tag pre-dev-2 would indicate the second development release
of the software.
Tags which start with pre indicate that the software is based on an earlier
version and that the final release of the software is likely to have the
same version number. For instance, the version number and tag 1.8.3-
pre-dev-3 indicates that the software is based on a version earlier than
1.8.3 and the final version of software will be 1.8.3.
Tags which start with post indicate that the software is based on the
same version and that the final release of the software is likely to have
the next version number. For instance, the version number and tag
1.8.3-post-dev-3 indicates that the software is based on the release
version of 1.8.3 and the final version of software will be 1.8.4.
Deprecated
Features of the product that will no longer be available or supported in
the future. Announcement of deprecation indicates features that should
be avoided. Features may become deprecated for different reasons. For
instance, an ECU may become redundant due to component availability.
Or it may be that a feature is considered extraneous and may be
removed to simplify the product.
End-of-life
Announcement of end-of-life follows deprecation, indicating features
that are no longer available or supported. For instance, an ECU that
is announced end-of-life will no longer be available for purchase.
Requesting support for a version of the developer software marked end-
of-life will result in a request to upgrade to a supported version of the
software.
ECU Replacement
M460 no replacement
M461 no replacement
M220 (revision 3) M220 (revision 4 or 5).
Block Replacement
pcx_CANStatus Replaced by the pcx_BusStatus block in version 1.8.4.
Function Replacement
pax_set_input_update_rate() No replacement, no longer required since version
1.8.0.
pax_set_output_update_rate() No replacement, no longer required since version
1.8.0.
pcfg_softswitch_m460() Replaced by pcfg_setup_m460() in version
1.8.0.
pcx_is_bus_unavailable() Replaced by pcx_get_bus_state() in version
1.8.4.
pdx_set_input_update_rate() No replacement, no longer required since version
1.8.0.
pdx_set_output_update_rate() No replacement, no longer required since version
1.8.0.
pj1939_pg_transmit() Replaced by pj1939_pdu1_transmit() and
pj1939_pdu2_transmit() in version 2.2.0
(r2013-2).
pss_set_switch() Replaced by pss_set_safety_switch() in
version 1.7.3.
Tool Replacement
FreeCCP Replaced by PiSnoop [http://www.pisnoop.com]
(demo or trial available on request).
RSIM Replaced by RTMODEL, RSIM is still included but
may not work with Matlab 2018a and above.
Third-party tools
The following third-party tool support will be removed in a future release.
ECU Replacement
A450 Replaced by M460 in version 2.1.0 (r2013-1).
G400 Replaced by G850 in version 2.1.0 (r2013-1).
G800 Replaced by G850 in version 2.1.0 (r2013-1).
G850 Replaced by M670 in version 2.4.0 (r2015-1).
M001 Replaced by X221 in version 2.1.0 (r2013-1).
a
M250 (revision 1) Replaced by M250 (revision 2) in version 2.1.0 (r2013-1).
M250-00H No replacement.
U82 No replacement.
X221 No replacement.
X657 No replacement.
a
If you have a revision 1 M250 ECU please contact Pi for details regarding replacement.
Developer software
The following developer software releases are marked end-of-life and
are no longer supported.
Block Replacement
pan_AngularAnalogInput Replaced by the pan_AngularAnalogInputVariable and
pan_AngularAnalogInputVariableAbs blocks in version 2.1.0
(r2013-1).
pan_AngularAnalogInputFixed Replaced by the pan_AngularAnalogInputVariable and
pan_AngularAnalogInputVariableAbs blocks in version 2.1.0
(r2013-1).
pdx_PeriodInput Replaced by the pdx_PwmInput block.
pdx_StepperMotorOutput No replacement.
pdx_SteppedOutput No replacement.
Block Replacement
pdx_TLE4953_Input No replacement.
pem_AddRateForATIEmulator No replacement.
ppp_Configuration No replacement.
put_BitwiseOp Replaced by the bitwise operator blocks supplied by
MathWorks as part of their Simulink block set.
put_Calmap1dTune No replacement.
put_Calmap2dTune No replacement.
put_CalValTune No replacement.
put_Config_M460 Replaced by the pcfg_Config_M460 block in version 1.8.1.
put_DisplayRates Replaced by Simulink's Sample Time Legend menu option in
version 2.5.0 (r2015-2).
Function Replacement
pan_config_angular_ad() Replaced by pan_config_angular_ad_fxd()
and pan_config_angular_ad_var() in
version 1.8.7.
pan_get_angular() Replaced by
pan_get_angular_ad_avg_fxd() in version
1.8.6.
pan_get_angular_ad_avg() Replaced by
pan_get_angular_ad_avg_fxd() and
pan_get_angular_ad_avg_var() in version
1.8.7.
pan_get_angular_ad_samples() Replaced by
pan_get_angular_ad_samples_fxd() and
pan_get_angular_ad_samples_var() in
version 1.8.7.
pan_config_angular_ad_fxd() Replaced by pan_config_angular_ad_var()
in version 2.4.0.
pan_get_angular_ad_avg_fxd() Replaced by
pan_get_angular_ad_avg_var() in version
2.4.0.
Replaced by pan_config_angular_ad_var()
pan_get_angular_ad_samples_fxd()
in version 2.4.0.
pdx_period_input() Replaced by pdx_pwm_input().
pdx_stepper_output() No replacement.
pdx_stepped_output() No replacement.
pdx_tle4953_input() No replacement.
pj1939_dm1_decode() Replaced by pj1939_dm1_receive() and
pj1939_dm1_decode_dtc() in version 2.6.0
(r2016-1).
pj1939_dm2_decode() Replaced by pj1939_dm2_receive() and
pj1939_dm2_decode_dtc() in version 2.6.0
(r2016-1).
Tool Replacement
Pop-header tool (pop_header.py) C-API interface tool (capi.py) option: --
output-s-rec in version 2.2.0.
Third-party tools
Support for the following third-party tools are marked end-of-life and
have been removed from the developer software package.
OpenECU now integrates with MATLAB R2017a and R2017b. Support for
R2008b, R2012a, and R2012b has been removed.
Calibration
Previously, any ASAP2 file generated through Simulink would set the data
type of any enumeration to LONG. If the data type of the enumeration in
the Simulink data dictionary differed, the ASAP2 file would be incorrect.
This has been fixed.
Code generation
A problem with the code generation files has meant that models with
names exceeding 22 characters in length will not build with the RTW-
RTMODEL autocoder. This has now been corrected
Previously, the A2L.err file was removed on a failed build. This file contains
useful information and is no longer removed on failed builds.
Communications
Corrected an error in the constant current driver auto zero function that in
most circumstances the channel that was zeroed would not be the same
channel that the application requested to zero.
• Issue building with 2-D and n-D lookup tables (A2L generation)
• Build Warnings
Added the ability for customers to turn off the build warnings for openecu
variables exceeding variable character limit
For this specific use case a CPU loading optimization had to be complted
in relation to the constant current blocks.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Previously, when the air/fuel mixture became too rich, the UEGO device
would provide a lambda reading (UA) of approximately 1V instead of the
saturated 0.65V. The root cause was traced to the initialisation of the
UEGO device. This change adjusts the initialisation and provides some
internal calibrations to further adjust initialisation without further changes
to the OpenECU platform library.
Now, the half-engine sync mode logic is only applied when running in
half-engine sync mode.
Now, all eTPU microcode angle variables use signed data types and
arithmetic to avoid missing and extra injection events.
Previously, if the port injection schedule was not set by the application
within the first second or so of the crank wheel starting to move, then port
injection pulse generation would occur but at the wrong angle. This has
been corrected.
Previously, the valid flag for constant current measurements would not be
set in some configurations. Now, the flag is correctly set to indicate that
valid measurement data is available.
Target ECU
Power cycling no longer triggers the unstable reset counter, This allows
the ECU to go to sleep and wake up without being held in reset due to
repeated resets.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.8.0-r2019-1 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
User documentation
The tech spec stated pin B11 was populated with SENT by default, but
pin B11 B11 is not populated with SENT by default. The tech spec has
been updated.
The m670 tech spec now has a warning stating Vref values can't be relied
on during a reset.
Added a clarification to the M110 tech spec for Pin A5 to clarify that the
pin has 2 default functions.
When integrating OpenECU with the ETAS INCA calibration tool during
OpenECU installation, there is a problem with part of the installation
Instead the ProF files should be installed directly using the ETAS INCA tool
(after installing OpenECU) using the procedure described in the Appendix
of the OpenECU User Guide on how to use INCA with OpenECU (under
section “Supporting Tools”).
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.8.0-r2019-1 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
• Peak and hold injector outputs fails when an out of range current or
frequency request is made by the application
Current or frequency requests in the range specified by the user guide are
correctly generated.
Both the PG transmit and PG receive interfaces will report an error if the
CAN bus is detected as bus-off when the interface runs (as well as other
conditions). During testing, it has been shown that the bus-off condition is
not detected correctly and thus any bus-off condition does not contribute
to the error report. The application must determine the bus-off condition
using the CAN status interface rather than relying on the PG transmit and
receive interfaces for full error reporting.
DM30 does not currently report results correctly for DM7 TIDs 248-250.
All DM30 results are reported as if TID 247 (return all scaled test results
for one SPN) was requested, instead of reporting a single test result. The
suggested work around is for single tests to be reported via the generic
j1939_PGTransmit block.
See CR 8211 (F) for detail. It is still possible for a bad access to cause
an exception which will continue to occur until the flash operation has
completed. If it does, a continuous loop is effectively entered until the flash
operation is over. If that operation is an erase, it may take long enough for
a watchdog exception to take place. Therefore this issue remains open
for further action in future to address this scenario. Note however that this
type of exception pattern occurs only very rarely even if NULL is repeatedly
read during flash operations, so it is now very much less probable that a
customer application will cause a reset in the manner described.
Work around this issue by selecting the required group, closing the block
mask parameter dialog, opening the block mask parameter dialog again,
then select the required I/O channel.
During the build process, checks are performed in case any PGNs have
been duplicated. Unfortunately, these checks sometimes flag duplications
erroneously.
The Simulink interface does not prevent an application model from using
the same channels in both a Synchronised PWM output block and in
another PWM output block. It is up to the developer to avoid this erroneous
double assignment.
• Check for initial frequency does not allow for clock source
The check for initial frequency for Peak and Hold Injector, PWM and
SPWM blocks does not yet take into account the clock source selected.
So, for example, if the slow clock is selected and an initial frequency of
greater-than 40Hz is selected, an error will not be generated when the
model is updated. The frequency will however be clipped to the allowed
range at run-time.
There are several known issues with the J1939 protocol stack
implemented in the OpenECU platform, these are detailed below:
The feature doesn't implement some timeout periods that are defined in
the J1939 specification.
• Support for ETAS INCA v5.1.2 has not been fully verified
The last time integration of OpenECU with INCA was tested was some
time back, when support for INCA was first introduced. Since then, ETAS
have produced newer versions of INCA but no further work to validate
integration has taken place.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Previously, the direct injection drop dead angle was specified through a
C-API function or Sim-API block during initialisation of the application, and
could not be changed whilst the application was running. This has been
changed to allow the application to modify the drop dead angle at any time.
• The application provides the engine position to the platform and in turn,
individual functions, such as analogue input sampling or injection pulse
generation, reschedules events at appropriate times. The adjustment
in engine position can range from a complete crank cycle, e.g., 360
degrees, to smaller than a crank tooth, e.g., 0.5 degrees.
OpenECU builds on, and utilises, various tools from third parties, including
C compilers, calibration tools and operating systems. See the third party tool
requirements section for a complete list of required and options software,
and the versions supported.
User documentation
The supported types for the Default state mask parameter of the
pdx_DigitalOutput Simulink block were limited to numeric types which
therefore excluded the boolean type (which is classed as logical and
hence non-numeric by Simulink). This has been changed to allow logical
(boolean) types as well.
Code generation
Two nuisance warnings are emitted by the A2L generation tools stating:
• That group name “” is not valid and will be replaced with UNNAMED.
Communications
It was found that PGNs with non-zero DP bits were not being reported to
the application. This has now been addressed.
Diagnostic trouble codes and read/write parameter IDs are supported over
the ISO-15765 and SAE-J1939 protocols.
Now, neither the extended diagnostics or core libraries clear the watchdog
timer periodically and the application can induce watchdog resets.
Examples
Previously, the examples exhibited various issues, from not being able to
load a model, to error emitted about I/O channel names, to missing library
links to spelling mistakes.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
For those ECUs (e.g. M670) endowed with a twin-engine enhanced Time
Processing Unit (eTPU), a problem was identified whereby the stack
for the second engine was not being properly accounted for, resulting
Previously, when memory was being accessed under high load, the
analogue input conversions could be applied to the wrong channel
assignments. This has been resolved.
With reference to CR (?), changes have been made to the channel names
of M670 knock processing pins.
From To
AIN (pin Y51) AIN (pin Y51 / build option)
AIN (pin Y51+Y52) AIN (pin Y51+Y52 / build option)
AIN (pin Y52) AIN (pin Y52 / build option)
AIN (pin Z48) AIN (pin Z48 / build option)
AIN (pin Z48+Z49) AIN (pin Z48+Z49 / build option)
AIN (pin Z49) AIN (pin Z49 / build option)
When an OpenECU model is loaded and the model uses any of these
channel names in a block, then for each block Simulink will generate a
warning message about an invalid channel name, and alter the block's
channel selection to be the first in the channel drop down. To correct this,
the user must update the block identified in each warning message to
select the required channel.
• Fixed scaling issue on M670 constant current output dither step size
The dither step size parameter of the pax_CcConfigTle8242 block was not
scaled correctly for the current sense resistor, resulting in a larger than
expected dither amplitude.
then the ECU would determine that the new schedule could not be met
but ignore the old schedule, resulting in a missed injection for one cycle.
Now, in the same circumstances, the ECU will determine that the new
schedule cannot be met but reuse the old schedule for the current cylinder
cycle, then switch to the new schedule for the next cylinder cycle. This
avoids a missing injection for one cycle.
Target ECU
Certain applications would cause the M110 target to repeatedly reset, and
then sit in reprogramming mode flashing 1-1-7. The cause of this has been
identified and fixed.
OpenECU builds on, and utilises, various tools from third parties, including
C compilers, calibration tools and operating systems. See the third party tool
requirements section for a complete list of required and options software,
and the versions supported.
During the build process, the archive files generated by referenced models
were not being cleaned up after rebuilt object files were appended, so that
older object files were retained that might be linked to erroneously. This
has now been fixed.
User documentation
• Specified that analog inputs on pins Y51, Y52, Z48, and Z49 are only
available as a hardware change option (see also CR 15361 (F)).
Interfaces similar to reading the CPU loading have been added for
the eTPU. For more detail, see the C-API psc_get_etpu_loading()
and psc_get_max_etpu_loading() functions, and Sim-API
psc_EtpuLoading block, in the user guides.
Calibration
Platform support has been added for the ETAS XETK-V2.0A emulator test
probe. It can be used for measurement, calibration, and reprogramming
of OpenECU M670 modules.
Communications
The M110 now supports 4 CAN buses, CAN C and D use a mcp2515 CAN
controller with SPI interface.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
SENT functionality has been enabled for several M670 inputs. The SENT
channels will only function correctly if the ECU has been optioned for
SENT.
See the M670 Technical Specification for details about the H-bridge and
SENT daughterboard.
• Added support for SENT sensors on the M670 H-bridge and SENT
daughterboard
When using the H-bridge and SENT daughterboard (for more details, see
the M670 Technical Specification), support for SENT sensors has been
added.
When the M670 spark outputs (pins Y37, Y38, Y39, Y40, Y44,
Y45, Y49, Y50) are used as GPI or DI injector outputs, the
pdx_digital_monitor_input() C-API function or pdx_Monitor
Simulink block can now be used to configure and retrieve electrical
diagnostic information, where previously this was only available when
these outputs were used as PWM or spark outputs.
Target ECU
OpenECU builds on, and utilises, various tools from third parties, including
C compilers, calibration tools and operating systems. See the third party tool
requirements section for a complete list of required and options software,
and the versions supported.
User documentation
As the Simulink Sample Time Legend feature was more accurate than
the put_DisplayRates block, the put_DisplayRates block was marked
deprecated in version 2.3.0 (r2014-1), and has now been removed. The
block is no longer available and will show as bad link in Simulink models.
Calibration
Previously, CCP DAQ security would not apply to the simple memory
upload commands. Now, CCP DAQ security applies to simple upload
commands as well as DAQ lists.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.6.0-r2016-1 or later. To upgrade the ECU's firmware
Previously, for values of integer type, the platform would ignore the
accuracy setting in the data dictionary and deffault to 0 decimal places.
This would cause problems for scaled fixed-point values. Now, all numeric
values support up to 6 decimal places.
Additonally, documentation has been added for the Scale and offeset
columns in data dictionaries. Please see the user guide for more
information.
Code generation
When the model build process creates a very large function, there is a
known issue with Diab 5.5.1.0 in which the object code may not have
been generated correctly. The build system would generate a warning
whenever a function exceeds the size limit, regardless of which compiler
was being used. This change removes the warning when the compiler is
not Diab 5.5.1.0.
Large image creation has been removed from the Simulink model make
files. The large images were necessary for older versions of calibration
tools, but the versions that required these files are no longer supported
by OpenECU.
• Updated Simulink-API-Examples
• Fixed a problem with GCC model builds that used shared source
libraries
Previously, there was a problem creating the shared source target archive
when the model used GCC. Now, the problem has been fixed.
Previously, simapi builds would fail if GCC was selected as the compiler
and the model used model referencing. Now, the makefile has been
updated so that the builds do fail.
Previously, during the build process for a model configured to use Simulink
Data Dictionaries which also uses 2D maps with different size X and Y
axis, an internal error would lead to missing ASAP2 entries in the A2L
file. Now, the internal error has been fixed and a warning message is
generated for unexpected issues.
Communications
The number of ODTs available for the M670 target was inadvertently set
to 15. This has been changed back to 30.
Diagnostic trouble codes and read/write parameter IDs are supported over
the ISO-15765 and SAE-J1939 protocols.
Fixed bug that could cause ECU to get stuck in a state where it constantly
tries to delete Freeze Frame data after clearing NVM.
Fixed issues with handling of NULL pointers, which could cause ECU to
reset.
J1939-73 specifies the resolution of the DM40 B1 timer, but not the
accuracy. Therefore, previously the DM40 B1 timer used an accuracy of
0.2 hr/count. This change improves the DM40 B1 timer to be 0.1 hr/count,
which is the same as the resolution.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
• Fixed an issue with the reported edge angles with multiple cam
inputs on M670
Previously, if multiple cam inputs were configured for the M670, the cam
edges returned by the pan_get_cam_wheel_teeth_angles() C-API
function or pan_CamWheelToothEdgeAngles Simulink block could be
incorrect even if the cam input has acheived synchronization after losing
sync with the crank wheel. A power cycle would be required to recover
from the issue. Now the cam input correctly reports the edge angles and
recovers after loss of crank sync.
Simulink will replace the XF3 channel in the SENT block referred to in the
warning message to the default. To ensure the correct pin is selected, the
user must update the model to select XA1 where pin XF3 was used.
• Knock valid flag not updated if knock window end angle is before
start angle
Previously, if the application set the knock window end angle before the
knock window start angle, a knock window would not be generated. Since
the knock valid flag was updated in the eTPU knock window code, the
knock valid flag would remain at 1 (valid) even though no knock data was
being generated. This has been fixed such that the knock valid flag will
now be 0 in this situation.
Inputs which use an eTPU channel only updated the calibration value at
initialization, which allowed the timeout value to be calibrated offline, but
not online. This software change allows the timeout value to be calibrated
online.
Previous limit was 8 cam teeth. This change increases the limit to 13.
Target ECU
• Adjusted linker allocations such that .sbss variables are less likely
to be in external RAM
Previously, M221 would build with GCC but would not run on target as the
non-VLE instructions used by GCC would cause the ECU to reset. This
issue has been fixed.
User documentation
Clarified in the M670 technical specification that pins Y20 and Y21 can be
used for any high-speed frequency input, not just turbo speed.
The ECU part numbers were updated to the latest released hardware part
numbers in the M670 technical specification.
Previously, the M670 tech spec UEGO connection table listed UEGO
parts that are not supported by M670 without hardware options. To reduce
confusion, these UEGO sensors were removed from the table and a note
was added to contact OpenECU Support if a different sensor is required.
Previously, the M670 technical specification stated that toggling just the
DOT reset channel for pins Y1 and Y5 would clear the diagnostic monitor
faults. This has now been updated to state that the Y1 and Y5 outputs
must also be set low for 325ms to clear the faults, and to reset the device
to the default state.
The modeling and design section contains a lot of useful information (such
as data dictionary naming rules) that will help the user get their models
correct the first time. This section was moved to the before the software
detail section at the recommendation of a customer.
The timing resolution of injection durations was added to the C-API and
Sim-API user guides.
The platform now has the ability have CCP messages configured with 29
bit CAN identifiers.
The ccp-messaging group in the capi file has new flags, cro-ext-id
and dto-ext-id, to select extended ID mode for either the CRO or DTO
messages.
Code generation
Examples
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
An analog output pin (A3) has been added to M221. The output creates a
variable resistance using a digital potentiometer. The C-API and Simulink
API have been updated for this new output.
Installation
Previously, there were two versions of the platform installer for 32bit and
64bit development environments.
The platform now counts instances of periodic task overruns. The C-API
function pkn_get_task_overrun_count() and Simulink-API block
pkn_TaskPeriodOverruncan be used to obtain the number of times a task
has overrun its period.
Target ECU
• G850
• U82
• X221
• X657
The following Simulink blocks are no longer supported by any ECU and
have been marked end-of-life:
• pem_AddRateForATIEmulator
• pan_AngularAnalogInput
• pan_AngularAnalogInputFixed
• pdx_PeriodInput
• pdx_StepperMotorOutput
• pdx_SteppedOutput
• pdx_TLE4953_Input
• ppp_Configuration
• put_Calmap1dTune
• put_Calmap2dTune
• put_CalValTune
The following C-API functions are no longer supported by any ECU and
have been marked end-of-life:
• pan_config_angular_ad()
• pan_config_angular_ad_fxd()
• pan_get_angular()
• pan_get_angular_ad_avg()
• pan_get_angular_ad_avg_fxd()
• pan_get_angular_ad_samples()
• pan_get_angular_ad_samples_fxd()
• pdx_period_input()
• pdx_stepper_output()
• pdx_stepped_output()
• pdx_tle4953_input()
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.5.0-r2015-2 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
OpenECU builds on, and utilises, various tools from third parties, including
C compilers, calibration tools and operating systems. See the third party tool
requirements section for a complete list of required and options software,
and the versions supported.
User documentation
Error and Warning codes are displayed while reading data dictionaries
and during the build process. This change adds links from the error codes
to the user documentation where each code is explained.
Calibration
Code generation
Type overrides have been added to the compilation stage to prevent type
conflicts with OpenECU library types that have the same width as Simulink
types.
Diagnostic trouble codes and read/write parameter IDs are supported over
the ISO-15765 and SAE-J1939 protocols.
Previously, the DTC Confirmed Fault bit was only set when a DTC was
active. Now, the Confirmed Fault bit is set when a DTC is active OR was
previously active.
There was a bug in the positive response suppression which would cause
a negative response to be transmitted in response to commands with the
suppression bit set, even if the diagnostic command was valid.
Examples
• Renamed extended_diagnostic_example
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Target ECU
Prior to this fix, the erase timeout did not scale with the erase size.
As a result, large erase operations could be prematurely terminated.
Additionally, a sequence error in the reprogramming driver could cause a
reprogramming timeout to go unreported.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.5.0-r2015-2 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
Previously, the platform library version for the M670 target was incorrectly
specified as 290. This would cause the incorrect major version to show in
some applications. Now, the target version is 500.
OpenECU builds on, and utilises, various tools from third parties, including
C compilers, calibration tools and operating systems. See the third party tool
requirements section for a complete list of required and options software,
and the versions supported.
• Removed spaces from the name field in the INCA-ProF files for
OpenECU targets
Previously, the names for the OpenECU profiles contained spaces. The
name is used by INCA as a directory name during installation. On
some systems, spaces in the directory names have caused integration
problems. Now, the profile names do not contain spaces.
User documentation
The M220 technical specification did not adequately describe the H-bridge
ready signal. The M220 technical specification has been updated with the
full details of this signal.
In the previous version of the M670 technical specification, it was not clear
that the correct build option must be specified when ordering an M670.
This has been clarified, along with stating that the Hall-effect option is the
standard build option.
The M670 technical specification has been updated with the correct pull-
up information on the spark outputs. The standard build versions that are
listed in the technical specification have also been updated to match the
lastest build package.
The M220 current monitors are not populated in the standard build, and
this was not clear from the technical specification. The M220 technical
specification was update to make it clear that the current monitors are not
standard, and a link was added to to the build options section.
Previously, all contact information directed the user to email Pi-Innovo with
any questions with regards to OpenECU support, but as of this time we
now have a support page detailing most common issues with OpenECU
and have decided to direct customers to there first.
Corrected the filter corner frequencies for the high-speed digital inputs in
the M220 technical specification.
The crank signal at the micro pin in the M670 ECU is inverted from the
signal at the connector. This inversion is now documented in the technical
specification.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Voltage monitors for the injector high side output pins (Z1 and
Z5) were added for the M670B (01T-068787-03M00-000), M670N
(01T-068803-02M00-000), and M670S (01T-068850-02M00-000) and
later hardware targets. These inputs will not return valid results on
previous revisions of the M670 hardware.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.4.1-r2015-1-sp1 or later. To upgrade the ECU's
firmware please contact OpenECU technical support as described
in Appendix A, Contact information.
Code generation
Communications
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.4.1-r2015-1-sp1 or later. To upgrade the ECU's
firmware please contact OpenECU technical support as described
in Appendix A, Contact information.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
• Correction to M670N Z18 and Z29 waveforms set with the wrong
channel
The waveform for pins Z18 and Z29 can be left uninitialized due to a bug
in the platform where the waveforms for Z6 and Z17 are used for Z18 and
Z29. If the application never calls the prop_WaveformSetChannel block
for Z6 and Z17, the waveforms are left at all zeros.
Previously, the M670 5A H-bridge would trigger a false current trip if invalid
parameters were supplied. This issue has been fixed.
The free running counter of powered resets and the limited unstable reset
counter have been made accessible to the application through both C-API
functions and Sim-API blocks.
Support for Simulink Data Dictionary files has been added in R2015a
and later. Support for text based data dictionary files is maintained
for backwards compatibility. A model configured to use a Simulink
Data Dictionary can be configured to disable the naming convention
requirements, while still providing support for generating ASAP2 files, with
either OpenECU or Simulink's built-in ASAP2 support. For full details, see
the OpenECU Sim-API user guide.
The platform tests eTPU code and data memory at platform initialisation
time. If the memory is faulty, the platform will raise an unrecoverable error
and reset.
The MISC feature has been enabled in the eTPU engine. If the eTPU
encounters a MISC error, then the platform will raise an unrecoverable
error and reset.
The platform checksums background parameter values, that are not under
control of the application. If a checksum error occurs, then the platform
will increment the associated fault counter. This is done for direct and port
injection functions.
New Simulink blocks and C-API functions have been added to read back
eTPU function parameters so that the application can verify the values are
correctly written to memory.
Continuously running internal RAM and ROM tests have been added for
the primary processor. Interfaces have been added to report the status
of the memory tests. The psc_decode_reset() C-API function and
put_Reset Simulink block have been modified to report memory corruption
as a potential reason for reset.
Diagnostic trouble codes and read/write parameter IDs are supported over
the ISO-15765 and SAE-J1939 protocols.
The option to obtain all the test results for all SPNs has now been added
(special TID 246) in line with the 2013 version of SAE J1939-73.
New C-API functions are provided together with new optional outputs from
the pdtc_Status Simulink block.
The Negative Response Codes for various services now updated to match
those specified in the standard.
Updates for systematic handling of suppress positive response bit for all
UDS services.
Updates to continue DTC settings which may have been turned off by
service $85, when we return to the Default Diagostic session.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.4.0-r2015-1 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
This change adds new C-API and Simulink interfaces for receiving and
decoding J1939-73 DM1 and DM2 messages. The old interface used a
single block to both indicate message reception and report the states of
a particular DTC. However, the message receive status was ambiguous
if multiple blocks were used to decode several DTCs from the same
message.
The new interface splits the decode functions into two C-API functions:
pj1939_dm1_receive to provide the overall message status, and
pj1939_dm1_decode_dtc for the values from each individual DTC of
interest (and DM2 equivalents).
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.4.0-r2015-1 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.4.0-r2015-1 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Additional I/O channels have been assigned for spark use on M250 to
drive smart coil drivers.
Additional I/O channels have been assigned for injector and/or spark use
on M220 to determine if 4-cylinder gasoline engine control is feasible.
When the M670 spark outputs (pins Y37, Y38, Y39, Y40, Y44,
Y45, Y49, Y50) are used as PWM outputs or smart spark outputs,
the pdx_digital_monitor_input() C-API function or pdx_Monitor
Simulink block can be used to configure and retrieve electrical diagnostic
information.
When the same pins are used as smart injector outputs, there are no
electrical diagnostics available.
The port injection functionality on the M220, M250 and M670 targets
has been extended to better match that of the G850 target. In particular,
an initial priming pulse is now supported, and split-fuel pulses are now
generated modulo 360 degrees after crank synchronisation but before full
engine synchronisation (i.e. before cam sync has been achieved).
For Sim-API, the initial priming pulse can be generated using the
pan_InitialInjection_GPI Simulink block, as for the G850. However the
interface differs slightly from the G850 in having an “enable” inport that
the application must use to actively request a pulse, and do so for each
instance of such a pulse.
• Added support for multiple cam wheels on M220 and M670 targets
• Added ability to read A6, A38, A39 and A42 as PWM inputs on M220
(if populated in PCB build)
For the M220 target, the C-API and Sim-API now support reading pins
A38, A39 and A42 as PWM inputs. Pin A6 is also supported for PWM input
functionality as a build option, but this is not available by default. Contact
Pi for more details about build options on the M220.
Installation
Upon installation, a new file will appear containing the license HOSTID
information as well as instructions on retrieving a license.
Target ECU
Support has been added for the M670 target ECU, which comes in three
varieties:
The design and architecture allow the ECU to be agnostic to fuel type
(diesel, gasoline, natural-gas, heavy-fuel, dual fuel), fuel injection type
(PFI, GDI, CRDI) and engine combustion cycle type (CI, SI, spark-assisted
CI).
In addition to the standard I/O, this powerful engine control module has
hardware support for the following advanced features that are critical to
modern day engine controls:
• Non-Powertrain applications
• Compiler support — support for the GNU GCC compiler when targeting
the primary processor (MPC5674F) and support for Freescale's S12
compiler when targeting the secondary processor (S12G).
OpenECU builds on, and utilises, various tools from third parties, including
C compilers, calibration tools and operating systems. See the third party tool
requirements section for a complete list of required and options software,
and the versions supported.
User documentation
The technical specifications have been removed from the C-API and Sim-
API user guides. The technical specifications continue to be available from
the Windows Start button, in both HTML and PDF formats.
The default stack size has been increased from 5120 to 8192 bytes. Note
that the amount of stack required depends on the application, and it is
strongly recommended that the actual stack use for any given application
be monitored, and the stack size be adjusted accordingly. Note also that
the stack use may change depending on the version of MATLAB used to
build the model, and various MATLAB build options.
The stack use can be monitored over CCP by reading the automatic
variable mpl_max_used_stack that is defined in the A2L file produced
when building the application. Within the application, it can be monitored
using the OpenECU psc_StackUsed block. This gives a high-water mark
of stack use, i.e. the maximum depth of stack since the ECU was powered
on or reset.
If the stack size is not large enough for the application, an access
exception will occur when the application is running. This can be checked
by monitoring the “access_reset” output of the OpenECU put_Reset
block. If such an exception occurs repeatedly (for example if the stack
The stack size used in the example applications (included in the installer
package) has been increased from 5120 to 8192 bytes. Note that the
amount of stack required depends on the application, and it is strongly
recommended that the actual stack use for any given application be
monitored, and the stack size be set accordingly.
For C-API, the stack use can be monitored over CCP using the
automatic variable mpl_max_used_stack that is defined in the A2L file
produced when building the application. It can also be monitored within
the application by calling the psc_get_used_stack_size() C-API
function. This gives a high-water mark of stack use, i.e. the maximum
depth of stack used since the ECU was powered on or reset.
The amount of memory allocated to the stack (in bytes) must be set
explicitly through the stack-size statement in the capi file. See the C-
API User Guide for further details.
• Fixed undefined outputs and possible high CPU load from cam
wheels that have failed configuration
A cam wheel can be left unconfigured if certain rules are broken, such
as the acceptance window straddling the missing hole region. Previously,
accessing cam information such as the synchronisation status, speed, or
edge angles for such a cam wheel gave ill-defined results, and could result
in high CPU load.
[...]\openecu\model\pan.mdl
[...]\toolbox\matlab\graph2d\pan.m % Shadowed
oe_adjust_model_path('begin')
To set the OpenECU library model folder at the end of the path, and
hence give the internal MATLAB pan.m function higher precedence, run
the command.
oe_adjust_model_path('end')
We have found during testing, that if the OpenECU library model folder
is left at the end of the path, it was possible to open and build OpenECU
models, even though warnings were displayed about the “pan” shadowed
file. If you are able to still build with the model path at the end, then you
might be able to just leave it at the end of the path.
oe_adjust_model_path('begin'); open('model');
oe_adjust_model_path('end')
oe_adjust_model_path('begin'); rtwbuild('model');
oe_adjust_model_path('end')
Calibration
• Fixed use of propagated signal names for map lookup points during
ASAP2 generation
A subsequent version of OpenECU will add the ability for the application
to define the number of CCP DAQs and ODTs.
Code generation
• Fixed issue when using the large image from a model build using
the GNU GCC compiler
in the model. Now the maximum length should be correctly used from the
Simulink model option.
• pai_AnalogInput
• pdx_DigitalInput
• put_FaultCheck
• put_SlewRateCheck
Communications
Previously, an issue was identified whereby the CANdb blocks would emit
errors when reading a CANdb database that had reserved words in the
node names or signal names. Additionally, the blocks would emit errors
when multiple senders were specified for the same frame in the the CANdb
file. These issues have been fixed.
In certain cases, the platform would raise an error when trying to parse a
negative floating point number in CANdb files. This problem has be fixed.
When building a model that uses Simulink lookup blocks, the Diab
compiler raises an error about a mismatch between Mathworks' lookup C
function prototypes and OpenECU calibrations. The Diab compiler options
have now been enhanced to turn the error into a warning that allows
compilation to continue. However, the Diab compiler continues to emit a
message:
Diagnostic trouble codes and read/write parameter IDs are supported over
the ISO-15765 and SAE-J1939 protocols.
The platform library has been modified so that the logic which clears
active, or inactive, faults intended to be called in response to J1939
requests now clears faults which any matching type, not just pure J1939
type as before.
Diagnostic Test Entity (DTE) results are now cleared when pdtc_ClearAll
is used, as appropriate for a J1939 DM11 request. Additionally, DME
status values (monitor run, monitor readiness) are also now cleared
automatically, whereas previously this was done only by the user
application making use of the "force incomplete" option.
The pdtc_TableCleared block also now correctly reports when DTCs are
cleared via pdtc_ClearAll.
A few instances of behaviour that did not strictly conform to ISO 15765-2
were identified. For example, ignoring unexpected frame types from the
test tool (while continuing to receive or send a segmented message) and
ignoring zero-length messages. These were corner cases that would not
normally be apparent with a real test tool. These issues have now been
fixed.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.4.0-r2015-1 or later. To upgrade the ECU's firmware
Updated to check for DTE and DME types to be either ISO or J1939 or
both and raise error if none of the choices are selected. Previously a build
exception occurred which did not usefully describe what was wrong.
Examples
Previously, the M220 NVM example incorrectly set the power hold state
during shutdown. This issue has been fixed.
Previously, an issue was identified whereby the firmware would not honour
FEPS override of CCP security settings when CCP development mode
had been enabled in the application. This issue is now fixed.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.4.0-r2015-1 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
The M220 was particularly vulnerable to this problem, because the power
hold function was enabled by default in application mode, such that ignition
voltage could be removed and the ECU would keep itself powered from
the Vpwr input. However, if flash reprogramming was initiated in that
state, power hold was disabled on the transition to programming mode,
and the ECU stayed powered just long enough to begin the flash erase
(at least at higher supply voltages) before powering down. This made
misprogramming of the flash relatively likely to occur.
The reset loop issue has now been fixed and M220 now defaults to leaving
power hold disabled in application mode.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.4.0-r2015-1 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Previously, if the schedule for a DI or GPI output was updated near the
on angle for the first pulse in the schedule, it was possible for either the
schedule to be skipped for the next engine cycle, or for the injector output
to be turned on for the duration of the next engine cycle. This issue has
been fixed.
Previously, a bug existed where the ECU would reset if the crank input
RPM increased by too high an amount in a single step. This issue is now
fixed.
A problem was identified when changing the PWM output from a non-zero
to a zero duty. If such a change was made when the output was in its active
state (i.e. during the duty stage), then for one period after the change the
output would go into its active state, before becoming inactive to reflect
the new duty. This problem has now been addressed.
Non-volatile storage
Storage of data across power cycles, including 1-d and 2-d adaptive map
updates using reverse interpolation.
This issue was likely to occur when using Simulink Embedded Coder and
Diab 5.9. The warning message would not affect the operation of the
model when running on target.
volatile memory storage option now being flash, rather than battery-
backed RAM.
OpenECU builds on, and utilises, various tools from third parties, including
C compilers, calibration tools and operating systems. See the third party tool
requirements section for a complete list of required and options software,
and the versions supported.
User documentation
The information for the M220 digital input on pin A11 has been updated
to reflect changes to the hardware from rev 4 onwards. The input is now
inverted, and the thresholds for high and low values are slightly different
to what was previously published.
• Documented that the M461 default CCP settings differ from normal
(250 kBps rather than 500 kBps)
The put_DisplayRates block does not always display the correct rates.
This block is now deprecated and will be removed in a future release.
Please use the Simulink Sample Time Legend instead.
Calibration
Simulink and C-API interfaces have been added for enabling CCP security
algorithm development mode. In this mode, security is disabled when the
ECU enters reprogramming mode as a result of application of FEPS during
startup. This mode allows customers to recover from a flawed security
routine.
Support has been added for CCP security in applications built with GCC.
If the security algorithm is supplied as an object file and the compiler is
GCC, then the object file must not use Variable-Length Encoding (VLE).
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.3.0-r2014-1 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
Code generation
The platform libraries, build settings, and necessary support files have
been updated to allow applications which utilise the DTC and extended
diagnostics features to be built with the GCC compiler.
Applications which use adaptive parameters can now be built with GCC.
The RTW configuration dialogs now have a check box to control if the
generated ASAP2 file for ATI Vision sets the flag to require flash voltage.
The default setting for builds no longer sets this flag; G850 users should
be aware that they need to manually check the box in RTW or add the flag
to their build scripts for C-API.
• Added warning messages when the data type of a DDE differs from
the generated C code
It is possible for Simulink Coder to generate code from a model that uses a
different data type for a signal, than the type defined by the corresponding
data dictionary.
A common example involves the Boolean data type. When using Simulink
Coder with either of RSIM or RTMODEL, the data dictionary can specify a
signal should have type Boolean, but the generated code can have data
type real_T (representing the signal type double). The generated code
will use four data bytes to store the signal but the generated ASAP2 file
will expect a single data byte to be allocated. When the calibration tool
attempts to read the signal, it will read the first data byte of four, showing
the wrong value on screen (usually 0 and 63, instead of 0 and 1).
The same is not true when using Embedded Coder. Embedded Coder will
check the data type of the signal against the data type of the corresponding
variable in MATLAB's workspace. When a mismatch is found, Embedded
Coder emits an error message and does not complete building the model.
To provide a similar check when using Simulink Coder with either RSIM or
RTMODEL, OpenECU will now check the data type generated by Simulink
Coder against the type in the data dictionary. When a mismatch is found,
a message is generated at the end of the model build. The message is
only a warning, allowing existing models with mismatches to continue to
build as before.
Now, OpenECU distributes and supports GCC version 4.7.3 built for
the powerpc-eabispe target. The GCC cross compiler for the powerpc-
eabispe target generates code with SPE floating point instructions. This
minimises the use of software floating point routines, thereby decreasing
the code size and execution time of OpenECU applications that are built
with GCC.
Diagnostic trouble codes and read/write parameter IDs are supported over
the ISO-15765 and SAE-J1939 protocols.
For C-API applications, two new interface functions have been added to
facilitate communications between the application and the diagnostic tool.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.3.0-r2014-1 or later. To upgrade the ECU's firmware
UDS service $2A allows the test tool to request that the ECU begin
automatic periodic transmission of one or more PIDs in a predefined range
until further notice.
UDS service $2C allows the test tool to define a new PID in terms of other
PIDs (or parts of them) and/or direct memory accesses.
These new services are now both supported by the platform library,
with new configuration items to control the memory reserved for these
functions.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.3.0-r2014-1 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
The ppid_Pid Simulink block has now been enhanced to allow the user
to configure the information that should be returned for that PID if service
$24 is used to request the scaling information. The raw data to be returned
for a $24 request can also be set as a C-API configuration file item.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.3.0-r2014-1 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
• Add flash code to indicate last reset was due to the watchdog
A new flash code, 123, has been added to indicate if the last reset was due
to a watchdog over-run. The flash code is active for both reprogramming
mode and application mode. See the technical specification for your ECU
for more information about flash codes.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.3.0-r2014-1 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
Installation
User documentation
Previously, not all blocks would correctly check whether they were
supported by a target ECU. This lead to situations where a build of a
model containing a block that was not supported, would lead to a linker
error, sometimes using a name unrelated to the block. For instance, on the
M220, the pss_OutputControl block failed the target check, and emitted
the following error when included in a model build:
Now, all blocks perform a target ECU test before allowing a model build
to proceed.
Calibration
Previously, if a data dictionary file was saved such that comments are
wrapped in quotes by the editing tool, the platform would not detect it as
a comment and throw an error.
Code generation
Previously, if the last entry in a GCC DWARF DIE list was an array then
the C-API tool would generate an error about an array index during ASAP2
generation and prevent an application build from completing. This has
been resolved.
The C-API tool worked correctly in the same circumstances with a Diab
ELF/DWARF file.
Diagnostic trouble codes and read/write parameter IDs are supported over
the ISO-15765 and SAE-J1939 protocols.
Note that an exit from programmingSession was already made after the
5 second timeout (causing a reset back into application mode and the
defaultSession), but only if at least one tester request had been made, or
if reprogramming mode was entered as a result of a programmingSession
request in the first place. That strategy is unchanged, and ensures that if
reprogramming mode is entered for some other reason (e.g. FEPS start
or CCP reprogramming) there is no automatic reset.
C-API Sim-API
pdtc_update_j1939_dtc() pdtc_DiagnosticTroubleCode
pdtc_clear_all() pdtc_ClearAll
pdtc_clear_all_if_active() pdtc_ClearAllIfActive
pdtc_clear_all_if_inactive() pdtc_ClearAllIfInactive
pdtc_commit_to_store() pdtc_Memory
pdtc_is_store_intact()
- pdtc_Table
pdtc_enable_periodic_lamp_updates() pdtc_EnablePeriodicLampUpdates
- pj1939_Configuration
pj1939_dm1_decode() pj1939_Dm1Decode
pj1939_dm1_transmit() pj1939_Dm1Transmit
pj1939_dm2_decode() pj1939_Dm2Decode
pj1939_dm2_transmit() pj1939_Dm2Transmit
pj1939_was_pgn_requested() pj1939_PgRequested
pj1939_pg_receive() pj1939_PgReceive
pj1939_pg_transmit() pj1939_PgTransmit
pj1939_pdu1_transmit()
pj1939_pdu2_transmit()
pj1939_inhibit_reprogramming() pj1939_InhibitReprogramming
Other diagnostic C-API functions and Sim-API blocks are available with
an extended-diagnostics license.
Previously, applications built with very large numbers of DTCs and with
generous freeze frame allocations showed a slow response to diagnostic
The process of clearing DTCs with associated freeze frame support has
now been made fast enough to meet the required UDS response time. An
application with 450 DTCs with up to 20 freeze frame records of each of
the available three types now shows a maximum response time of about
25 milliseconds to service $14 with around 20 DTCs active or pending.
Examples
In the CANdb example model, CCP was configured for the second CAN
bus. When the example model was programmed into the ECU for the first
time, the CCP bus would change and look as if the ECU was no longer
communicating. To prevent this situation, all example models configure
CCP to use the first CAN bus.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
• Fixed polarity of PWM on H-bridge driver for M220 and U82 target
ECUs
0.25 would cause the H-bridge to be on with a duty cycle of 0.75 (and
vice versa).
This has been fixed such that the H-bridge driver produces the correct
duty cycle.
This behaviour has been corrected, so that the data returned always
match the specified cylinder.
The platform software will now correctly synchronise with an engine with
the cam window in the range [0,360) (crank).
Installation
Non-volatile storage
Storage of data across power cycles, including 1-d and 2-d adaptive map
updates using reverse interpolation.
read out of order from the file to which it referred, which could conceivably
lead to a deleted file reappearing in the filesystem. This issue is now fixed.
Now, the file system avoids background file “defragmentation” moves until
the program has been running safely for a few seconds, unless any write
requests have been made by the application or platform.
Previously, for applications with high CPU loading, the period of the low
priority watchdog task could cause the watchdog to trigger unnecessarily.
To resolve this, the rate of the library controlled watchdog task has been
increased. As before, and if necessary, the application can take control of
the watchdog from the library through a build option.
Target ECU
Pin A45 on the M220 has the hardware capability of controlling current
to software-configured thresholds, although this is not currently exposed
at the library level. To clear the overcurrent trip reset reliably, those
thresholds need to be set to reasonably high levels (as PWM signals)
before the trip reset occurs. Before this change, the delay was too short,
and the trip started in a latched “tripped” state on some ECUs but not on
others.
Now, a suitable delay has been introduced (~2 milliseconds) during the
boot process such that the A45 overcurrent trip is reliably cleared before
the application software is started.
Additionally, the user guide and technical specification now warn that the
M220 pin A45 overcurrent trip may occur at unexpectedly low current if a
strong load is driven within ~18 milliseconds of application start-up.
User documentation
• Fixed error where some files would not be included in the chunked
Simulink user guide.
This has been fixed so that the files are now included.
The pan_EngineSync block help was missing. This has now been added.
• put_BitwiseOp
• put_Config_M460
An additional feature of the M250-00Z IMU is that the user can adjust the
sample rate of the data coming off of the accelerometer and gyroscopes.
These devices automatically have a default value set in place, but can
be changed, if desired, by calling pcfg_imu_rate() in the C-API or by
calling the pcfg_Config_IMU_M250 block.
In addition to reading the basic values off of the IMU, the user can also run
a self-test on the gyroscopes and the accelerometer to determine reliability
of the devices.
Please see the M250 Technical Specification for further detail on reading
IMU channels, and running self-test sequences.
The J1939 node address for the ECU can now be altered by calibration.
An automatic ASAP2 parameter is generated to define it.
Note
The node address is configured at power-up time. To have any
effect, the altered calibration value must be stored in flash and the
ECU rebooted.
The Raw data units parameter has been added to the pai_AnalogInput
block.
The pop_header.py tool is obsolete and has been removed from this
release.
The C-API interface tool is now packaged as compiled binary (*.pyc) files.
The capi.py file is still included as an entry point, so that command line
calls to capi.py still work.
help oe_create_model
Calibration
To support the GCC compiler, how calibrations are declared and defined
has changed. Each calibration must use the OE_CAL macro instead of the
deprecated use of volatile const or const volatile.
to be compatible with both Diab and GCC compilers. See the C-API
examples installed with OpenECU for further examples.
Note
For the moment, use of volatile const or const volatile will
continue to work correctly with the Diab compiler. This may change
in a future version of OpenECU.
Note
Other variable declarations that are not calibrations, that already use
the volatile and/or const qualifiers should continue to do so.
The change to use OE_CAL should only occur for calibrations.
Code generation
cs = getActiveConfigSet(bdroot);
set_param(cs, 'TLCOptions', '-aASAP2CanonicalSupportPSPEnable=1');
Added support to build applications using GCC 4.7.2 and binutils 2.23.1.
The necessary scripts and tools are now included with the OpenECU
platform installation.
Currently, support for building applications using GCC is limited. See list
below for details.
• The code size generated by GCC is about 50 percent larger than code
built with the Diab compiler
The mechanism for generating a build error when the code size exceeds
the space available was not completely robust. A small section of RAM
variable initialisation data is added to the end of the code proper, and this
was not being taken into account, so that if the code proper was just able
to fit but the initialisation data pushed the total memory use over the limit,
no error would occur and an image file would be generated. This would
then create an error when attempting to download. That has now been
rectified.
Communications
For the C-API, the C-API interface file name statement is used as the
string refered to by the EXCHANGE-ID message. The C-API tool has
been extended to support string translations. For example, this allow the
application to specify a string such as “Application for %target%”
and the C-API tool will convert %target% into the target ECU name. For
a complete list of translations, see the C-API user guide.
For the Sim-API, the put_Identification block has been updated to include
a new mask parameter for the application name. The format of the string
for this mask parameter is identical to the C-API name statement. See the
Sim-API user guide for details.
Desktop integration
Diagnostic trouble codes and read/write parameter IDs are supported over
the ISO-15765 and SAE-J1939 protocols.
Now, the security level attained can be used to decide whether flash
reprogramming or ReadMemoryByAddress ($23) are each allowed
independently, giving finer control over what different types of end-user
are permitted to do.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.2.0-r2013-2 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
Diagnostic support for UDS service $19 has been expanded to support
subfunction $03 reportDTCSnapshotIdentification and sub-function $04
reportDTCSnapshotRecordByDTCNumber. The additional sub-functions
necessitated the addition of new Simulink block parameters and
corresponding C-API tool options.
For UDS service $19, the new subfunctions supported are $07, $08,
$09, $0B, $0C, $0D, $0E, $12 and $13. The UDS severity-related
services necessitated the addition of a new Simulink block parameter and
corresponding C-API tool option to allow the UDS severity of each DTC
to be specified. This can also be calibrated.
The memory footprint of DTCs and some other records was reduced
however, by improved packing of the structured data.
The platform periodic pdtc task has had its period increased to 100ms and
its task priority reduced to just below the lowest-priority application task.
• Performance improvements
Examples
To support modules that do not have an ignition enable and use wake-
on-CAN to control sleep state, the boot programming mode code has
been modified. If the module is in programming mode and CCP messages
cease for more than a timeout, the module will power itself down
automatically.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.2.0-r2013-2 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.2.0-r2013-2 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
Previously, the ECU would simply set the MTA to a string representing the
ECU type when the ECU received a EXCHANGE_ID_CCP message.
Now, the ECU uses information from the master device part of the
EXCHANGE_ID message to set the MTA to various bits of information,
including the ECU type, manufacturing data (including the serial number
and part number) and an application defined string. See the CCP
compliance section in the user guide for details.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.2.0-r2013-2 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
Target ECU
Support for the M221 target ECU has been added for the Simulink
interface. The M221 technical specification provides an overview of the
supported ECU features. This is an interim release of software for M221
support and as such, some issues remain open which will be resolved
over subsequent releases. The known issues are listed below.
1. The "Monitor (d) (pin A3)" fault detection input and "DOT fault-latch (pin
A3)" clear fault output for pin A3 have not yet been tested.
3. The state of all output pins in reprogramming mode has not yet been
verified.
Other functionality
Documentation
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.2.0-r2013-2 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
The flash code "222" has been added to the firmware to indicate when the
loaded application is not validly licensed
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.2.0-r2013-2 or later. To upgrade the ECU's firmware
The Simulink block pnv_array now has an optional outport that will output
the entire adapted array contents.
The facility to select different memory configurations has been added for
targets M220, M250, M460 and M461.
User documentation
• Added error message when adaptives or DTCs are used with GCC
Neither Adaptives nor DTCs are supported by GCC. If the user attempts
to use them then the following error messages will be emitted:
Warning: DTCs are not yet supported by GCC-4.7.2 and will not be
enabled in this application.
Warning: To enable DTC functionality, please use a compiler that
supports it.
Warning: Adaptives are not yet supported by GCC-4.7.2 and will not be
The X657 has monitor signals which can be read internally to check
whether the analogue multiplexer chips are being signalled correctly.
However, those monitor signals were being internally configured in such
a way that some delay or cross-talk artefacts could be caused when
sampling analogue inputs routed through those multiplexers. This has now
been fixed.
Now, the help oe_create_model will display the ECU name, part and
issue number of all supported targets.
double. If a different data type were used for the mask parameter, it was
possible for incorrect values to be created during code generation.
Now, blocks either explicitly test mask parameter types and raise an error
if incorrect, or blocks automatically take the type of the mask parameter
into consideration when generating code.
Previously, when a python tool was called using the platform installation
of python but with PYTHON* environment variable set, errors could occur
to mismatched or non-existent paths.
This has been fixed by using the python -E option in all cases where the
platform calls python.
The license manager must be able to detect your license at build and
simulation times in order to complete successfully. Contact Pi Innovo if
you need to obtain a license.
Calibration
• Corrected errors in the ProF configuration files for the M220 target
affecting integration with ETAS INCA
Some mistakes in the ProF configuration files for the M220 target meant
that these files did not install correctly on the the ETAS INCA calibration
tool, resulting in errors when trying to use that tool with the M220. Those
mistakes have now been corrected.
Previously, in CR 8499 (F), support for automatic ASAP2 entries for the
RAM copies of adaptives was removed for both the C-API and Simulink
targets not using RTW based ASAP2 generation. Now support for these
automatic ASAP2 entries has been restored. Each adaptive parameter will
now behave as before with an automatic ASAP2 entry added matching
the name of the default value except for the insertion of an 'a' character
for the fifth character of the variable.
The previous change to the priority of the PDTC task in CR 10423 also
affected the automatic ASAP2 entries for task timing information. After
that change the variables named mpl_tt_xxx and mpl_mtt_xxx were
incorrectly generated such that one entry might reflect the time of a
different task. Now, automatic ASAP2 entries for task times correctly
match their respective tasks.
Code generation
'' is an invalid Class for a data dictionary entry (must be one of....
• Fix for errors during model update for the CANdb blocks.
Communications
The platforms handles DM7 messages as a special case for use with
the extended-diagnostics blockset. Previously, with extended-diagnotics
disabled, this would cause all DM7 messages to be eaten up by the
platform making pj1939_pgReceive blocks unable to interpret them. The
behaviour has been fixed so that this only happens when extended-
diagnostics is enabled. Now, when extended-diagnotics are disabled, the
DM7 message gets passed to the application.
This fix prevents the process which unqueues messages from becoming
stuck.
Diagnostic trouble codes and read/write parameter IDs are supported over
the ISO-15765 and SAE-J1939 protocols.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.2.0-r2013-2 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
Corrected the 'empty' message contents for DM30 and DM33 messages.
The X657 outputs A1 and A30 have inverted logic, such that when
the microcontroller pin is low, the output is turned on (drawing current
through a load). Previously, this occurred if CCP flash reprogramming
was initiated when in application mode, causing a transition (via a reset)
to reprogramming mode. Now the boot loader always ensures that the
outputs are not driven by default.
Note that the outputs B7 and B8 also have inverted logic, but are
specifically required by the X657 customer to turn warning lamps on when
the normal application software is not running correctly. These still drive
by default until turned off by application software.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.2.0-r2013-2 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
For MPC5xxx family units only, this update allows for the recovery of
the PSY Error Log (feature and error code) associated with the last
unrecoverable error, so that if the application restarts successfully the next
time, it can determine using psy_get_error() if internal problems such as
memory corruption errors caused the most recent reset.
Note
On recovery, the error code is clipped to 0xFF. All error codes used
in the platform for unrecoverable errors should be less than 0xFF.
Recoverable errors may use 16-bit codes.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.2.0-r2013-2 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
The application is only started if its checksum and that of the calibration
have passed validation. However, the boot loader can be started
in reprogramming mode for several reasons, with or without a valid
application or calibration. To satisfy diagnostic requirements for the boot
loader to report whether the application code or calibration data are intact,
the result of the start-up checksums are now made available in UDS PID
$F15B (read software fingerprint) as defined by the HIS reprogramming
specification.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.2.0-r2013-2 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
When the application code is running with FEPS active and a request
to reprogram over CCP or J1939 or UDS is received, the bootloader
code would drop the request when it detected that FEPS was active,
requiring a second attempt to reprogram. This situation can arise when
using an ATI hub that automatically applies FEPS during reprogramming.
The bootloader code has now been changed so that it ignores the FEPS
input in this context and continues to honour the original reprogramming
request instead.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.2.0-r2013-2 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
User documentation
Documentation for the following blocks has been deleted as they no longer
exist.
• psp_SPIInput
• psp_SPIOutput
Previously, there was an error in the CSS linking from the HTML
documentation that caused the styles to not display under certain
browsers.
This error has been fixed such that it works on major web browsers
(Mozilla Firefox, Google Chrome, Microsoft Internet Explorer).
The Diab 5.5.1.0 compiler has a known defect relating to large C functions,
and during a Sim-API build, OpenECU checks for large functions and
issues a warning if any are found, referring to the User Guide. However,
finding the relevant section of the User Guide has proved difficult, so the
User Guide description now quotes the build-time warning making it easier
to find.
Previously, support was indicated for ATI Vision v2.5 and above.
Additionally, examples in the user guide referenced an unsupported
version of ATI Vision.
Now, support for ATI Vision versions 3.6 and 3.7 are explicitly indicated in
the footnotes. Additionally, examples in the user guide no longer reference
unsupported versions of ATI Vision.
Added descriptive text to better describe how the digital outputs behave
depending on their selected polarity.
The Direct Injector interface now supports requests for both automatic
computation of duration from a volume request and an explicit duration.
If the application uses the new duration mode, the platform will simply
activate the injector for the amount of time specified by the application.
This change is in conjunction with CR 9040 (F) which allows for direct
specification of the pulse durations.
Calibration
Pi Innovo's PiSnoop tool has many functions that are useful in typical
OpenECU developments. It offers a cost-effective alternative to traditional
calibration tools, but its emphasis is more on software development than
calibration. It also includes features for working with CAN messaging,
J1939 and UDS/KWP/J1979 diagnostics.
The .elf file is also now output at the root level of the build alongside the
image and .a2l files to facilitate its use, giving access to data structures
and variables not available in the .a2l file. Also the base calibration image
file is similarly emitted to aid reflashing with modified calibrations using
PiSnoop.
Code generation
This change adds basic support for Model Reference to OpenECU ERT
based models using MATLAB/Simulink versions R2008b to R2012b .
Model references can now be built along with the parent model. The model
reference blocks currently only support native Simulink blocks and the
put_Identification block.
• Add support for Diab compiler versions v5.8.0.0 and v5.9.0.0 for
various ECU targets
For the M220, M250, M460, M461, U82, X221 and X657 targets, support
has been added for Diab v5.8.0.0 and v5.9.0.0 (existing support for Diab
v5.5.1.0 has been retained). For the C-API, see the updated installation
instructions for more. For the Sim-API, see the RTW setting section.
Diagnostic trouble codes and read/write parameter IDs are supported over
the ISO-15765 and SAE-J1939 protocols.
• Communications Control
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
New current monitor inputs have been added to a select few M220 output
pins as shown in the table below. The current monitor inputs are only
available on M220 ECUs that have the circuitry populated. On M220 ECUs
without the circuitry, the inputs will return 0V.
Note
This interface is experiemental and has very little testing.
• extend the range for stall-detection ratio parameter from [0, 1) to [0, 4)
to accomodate engines with lower inertia.
Note
This interface is experiemental and has very little testing.
Note
As part of the changes to the A/D sampling interface, the resolution
of the sample angle has been reduced from 0.1 degrees to 6
degrees.
As of this release, the software provides support for the angular blockset
(Sim-API) across various ECU targets as follows:
Note
Some blocks are not supported based on the overall configuration
for the angular blockset. For instance, the pan_CamWheelSpeed
block is not supported if the pan_CamWheelConfig block selects
application declared cam wheel synchronisation. See the user guide
for details.
An extension of CR 6635 (W). See CR 7196 (F) for a list of angular blocks
and their support across targets.
• Add support for the angular functionality on the M220 target ECU
Installation
Target ECU
The following ECU targets are no longer supported: A450, G400, G800
and M001.
User documentation
The release notes have been updated to include details about parts of
the OpenECU product which are marked deprecated (will no longer be
available in a future release of the product) and marked end-of-life (no
longer available for sale or support).
The function that checks that a given Simulink block is supported by the
target specified in a model was using an incorrect array bound in its list
of supported targets. As a result, these checks could sometimes fail. This
has now been corrected.
The block would revert its target setting to the first option on the list and
no further changes in functionality should occur. This has been fixed.
• X657 can now support any CAN bus in the range [0,2] and will
generate an error outside this range
The CAN bus values are range-checked for CCP, ISO diagnostics and
J1939. If the CAN bus value is outside the range supported by the target
an error will be generated. Previously an error was generated for bus 2
on X657, but this is now fixed.
Now, the psc_KickWatchdog block will reset the main processor watchdog
when the inport is non-zero.
The block has been fixed so that this warning is no longer raised.
Previously, support for ASAP2 entries for the RAM copy of the
adaptive variables use by the pnv_AdaptiveMap1d, pnv_AdaptiveMap2d,
pnv_AdaptiveScalar, and pnv_array blocks was removed.
Now this support has been added back in for Real-Time Workshop based
ASAP2 generation only. During the ASAP2 file generation process a new
ASAP2 entry will be added for each block following the naming format
<default-variable-name>_ram, the remaining fields for the ASAP2
entry will be the same as the default value.
The PEF (external flash) feature provides access to a serial external flash
memory used in X657 only. User documentation for this is now provided.
Additionally, internal documentation has been updated.
Calibration
The interaction of CCP with nvram during startup could cause very long
startup times; this has been improved.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.1.0-r2013-1 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
Code generation
• pai_AnalogInput
• pan_AngularAnalogInputConfig
• pan_EngineConfig
• pcx_CANdb_ReceiveMessage
• pcx_CANdb_TransmitMessage
• pcx_CANReceiveMessage
• pcx_CANTransmitMessage
• psc_BootBuildDate
• psc_BootVersion
• psc_PlatformBuildDate
• psc_PlatformVersion
• psc_PrgBuildDate
• psc_PrgVersion
• put_Reset
Previously, DDE names with a prefix and a single character for the name
(for instance, MAPd) would cause the C-API tool to fail when generating
ASAP2 files.
Communications
Diagnostic trouble codes and read/write parameter IDs are supported over
the ISO-15765 and SAE-J1939 protocols.
Corrected the various data limits and default values sent on DM40.
Enhanced user guide to add some hints for DM3/DM11 clearing of test
values.
• DM10 test mapping fixed when no DTEs with TIDs in range [1,64]
Previously any model which had DTEs defined, but none in the range
[1,64], would fail at build time. This has been corrected.
Previously, there were several blocks containing the parameter DTC Type
that, as one of the options had J1939 & ISO_DTC. This option has been
prone to misinterpretation because some DTC blocks with this option
selected refer to “either-or-both”, while others with this option selected
refer to “only both”.
The blocks that are affected and have been updated are: pdtc_ClearAll,
pdtc_ClearAllIfActive, pdtc_ClearAllIfInactive, pdtc_MatchExists, and
pdtc_ClearDtcs. These blocks have the parameter DTC Type
dropdown menu updated to say “J1939 or ISO_DTC”. The block
pdtc_DiagnosticTroubleCodeExt has it's DTC Type dropdown menu
updated to say “J1939 and ISO_DTC”.
Models that contain these blocks should be updated by opening the block
and selecting the DTC type. When a model using any of these blocks are
loaded, Simulink will emit warning messages, which can safely be ignored.
Service $3E now correctly handles Test Present requests with parameter
bytes 0x01 and 0x02 in addition to 0x00 and 0x80. 0x00 and 0x01
generate a positive response while 0x02 and 0x80 do not generate a
response.
Examples
• Changed M250 firmware to actively turn off pin A16 after power-on
or reset
Previously, the M250 firmware would leave pin A16 driven on, the default
configuration. This meant that pin A16 would be turned off only when the
application started to run (if written to do so), leaving pin A16 turned on
during reprogramming mode.
Now, the M250 firmware actively drives pin A16 off after power-on or reset.
Pin A16 will remain off in reprogramming mode, and the application will
need to actively turn pin A16 on if required. This means that pin A16 will
briefly glitch on after power-on or reset.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.1.0-r2013-1 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
Usually such a reset caused by invalid calibration data would trigger the
multiple reset detection logic, leaving the ECU in a state in which it could
be reprogrammed again. However, certain failure modes did not trigger
this logic, leaving an ECU that required FEPS to reprogram. Also, it was
conceivable that an application could run successfully with just a small
proportion of the calibration values invalid, leading to ill-defined behaviour.
After this change, if the application header is found to be intact by the boot
loader, it also checks the calibration header if one is referenced by the
application header. (For backwards compatibility with older builds, there
may be no such reference.) Furthermore if the calibration header defines
a full checksum over the calibration data, that is also validated. Only if all
validation passes is the application started; otherwise the ECU remains
in reprogramming mode.
Note that to allow calibration development work, the calibration area would
not normally have a full checksum. However, this can be generated using
the pop_header utility on production builds for the final calibration.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.1.0-r2013-1 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Fixed an error where a pulse schedule starting at or just after the crank
missing tooth could generate an incorrect pulse at crank zero before
engine synchronisation, and an incorrect first sequence of pulses the first
cycle after synchronisation.
Previously, the injection function could take up to 5 crank cycles from first
edges of the crank input before starting the injections. The first crank cycle
would provide crank sync. The next cycle would provide full engine sync.
Then there would be two skipped cycles. On the next cycle the injections
would start. Now the skipped cycles are removed. The injections now
occur either immediately after engine sync, or one crank cycle after if an
offset is declared during application declared cam sync.
Previously, the angular task would occassionally skip one engine cycle
due to an error in the feature which generates the angular task. This would
result in the appearance of one duplicated cylinder, and the spark outputs
would not be updated for that cycle, even the the injection could be.
Previously, the data for per-rev engine speed calculations was zeroed
when transitioning from 360 to 720 degree mode, resulting in a zero per-
rev engine speed result for up to two crank revolutions.
Previously, depending on how early the first tooth after the missing tooth
region arrived immediately after the ECU found crank synchronisation, the
ECU would incorrectly adjust the tracked angle resulting in an offset for
angle based functions such as injection and ignition.
• report an incorrect port width for the samples inport if averaging was
turned off.
Previously, the M220 pins A4, A6, A8 and A9 were marked as analogue
inputs rather than digital inputs. Reading these pins as analogue inputs
returned an undefined reading. These pins can no longer be read as
analogue inputs but can be read through various digital interfaces (such
as digital input, frequency input and so on).
Now, the tooth time capture occurs relative to TDC-firing for each cylinder.
As part of correcting this issue, the interface has changed from specifying
the teeth at application build time to specifying the teeth at application run-
time. As the interface was previously broken, rather than retain the old
interface marked deprecated, the existing interface has been replaced.
For the G400, G800 and G850 targets, the range of crank trigger wheel
patterns has been extended from [36, 60]-[1, 2] crank teeth to [12, 60]-[1,
3]. This extended range matches the M250 target.
Installation
Previously, if only the C-API library was selected for installation, the
corresponding HTML and PDF user guides were not given Start menu
links, although the files were installed. This is now fixed.
Target ECU
Originally, there was an issue with the H-bridge on the M250. Certain
mode transitions have caused a shoot-through problem causing damage
to the ECU. This was due to a lack of a proper amount of latency between
the time the PWM transitioning and the command signal transitioning. The
software has been adjusted so that the PWM signal is low for at least 100
microseconds while the command signal transitions.
This dead-time insertion is only inserted for one task cycle and only if the
PWM duty cycle is greater than 99%. Thus during a mode transition, it will
not be possible to command a 100% duty cycle for one task cycle.
User documentation
The user guides and release notes have been updated to document third
party tool requirements and compatibility.
The RTW option to generate old style ASAP2 map names was missing
from OpenECU ASAP2 generation options. This change updates the user
guide with explanations about this option.
• Added note about slow and fast current decay for peak and hold
injector outputs for M460 target
oe_switch_version
to determine which platforms are installed on your machine and which one
is currently active. You may use the command:
oe_switch_version [new-version]
Desktop integration
CCP seed/key security had previously been implemented, but not in a very
portable manner. Security was not available in reprogramming mode, and
there was no Simulink interface.
Note
For the C-API security algorithm functions require special treatment
during linkage. A new linker file excerpt is generated by the C-API
tool and this must be inserted into the main linker definition file at the
line containing the comment APP_FLASH_CODE_INSERT. A new
Python script called insert_at_tag has been added to facilitate this.
The C-API User Guide provides further information.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.0.0-r2012-1 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
Examples
There are now new examples for the customers to use and go over. These
new examples have been created for the M250 and the M220 platform.
New examples include: a utility demo, a non-volatile memory demo, an I/
O demo and a CAN demo.
Added a new example to the C-API examples. The example is set for the
M250 and the M220 platforms which demonstrate how to use the H-bridge.
Added two Simulink examples; one that demostrates how to use the
CANdb blocks for Mxxx and G850 ECUs; a second detailing the required
blocks and their implementation for the adaptive blocks (NVM), for Mxxx
ECUs only.
Target ECU
• Like the G400 and G800 ECUs, the G850 target is now deprecated
Pi will no longer sell G850s to new customers due to stock levels. For
the time being, support for existing G850 customers continues but new
features are unlikely to be ported to the G850.
This update includes the introduction of part number variables for the
bootloader (PBT), firmware (PRG), firmware upgrade (PRG2PRG) and
platform (PSC) products. An application build will include new automatic
ASAP2 entries which will show a valid value if the firmware, bootloader or
the platform are up to date or a default value if they are too old. The default
value is usually set to 0, however it is not excluded that meaningless
values be displayed for very old products.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.0.0-r2012-1 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
User documentation
Previously, the M220 preg.h header file was not correctly included with
the package installer. This resulted in a compilation error when building
applications, similar to:
toolbox information, but the library browser dialog would not update. This
could result in the wrong blockset lists displayed on screen.
Now, with R2008b onwards, the command will refresh the library browser
dialog. For earlier supported versions of MATLAB, e.g., R2006b, the user
must manually close and reopen the browser dialog to refresh the display
of blocksets.
Previously, the M220 preg.h header file was not correctly included with
the package installer. This resulted in a compilation error when building
applications, similar to:
[...] error (dcc:1621): can't find file preg.h
Also, the ppid_Pid block would output the incorrect value on the
override status outport when the PID's IOControlStatus was equal to
freezeCurrentState or shortTermAdjustment.
Previously, the Angular Drivers -> Crank Wheel section of the platform
library failed to include the pan_CrankWheelDigitalInput block. This is now
included.
Calibration
Now, automatic DDEs are properly handled and added to ASAP2 files on
model build.
Code generation
When building an application, any string based ASAP2 entries are now
correctly generated as “characteristics”, and are correctly displayed in
calibration tools. Platform string variables now stored in calibration area,
to allow migration of applications to an up-to-date platform but use an
existing calibration (file) from an older platform.
• Not all DDE items were added to ASAP2 files when building with the
Sim-API
DDE items were also being omitted from the ASAP2 file if a self referential
library link was found in the model. This was only a problem if the parent
library link was disabled.
Communications
Previously the parser would not accomodate CANdb files that used the
BA_DEF_REL_ or BA_DEF_DEF_REL_ tokens, resulting in inoperative
pcx_CANdb_ReceiveMessage or pcx_CANdb_TransmitMessage blocks.
Desktop integration
• Add checks to all TLC files to ensure an OpenECU system target file
is selected
If a Simulink model did not have an OpenECU system target file selected
from the RTW options, the RTW build failed with unhelpful error reports
from the per-block TLC files. All TLC files now check that we have an
OpenECU system target file selected, and produce a meaningful error
message if this needs to be corrected.
A number of the analogue inputs listed in the two angular sampling input
groups for G850 were assigned incorrectly and it was possible to have
both primary and secondary angular sample channels on same the A/D
device, resulting in the same A/D readings for both primary and secondary
groups. These pins have now been reassigned: E22, E32 and T29, along
with the removal of an the internal analogue channel C35+C36 that is not
sampled by the A/D device.
Diagnostic trouble codes and read/write parameter IDs are supported over
the ISO-15765 and SAE-J1939 protocols.
The freeze frame data length field in both DM4 and DM25, was reporting
the length as 1 byte bigger than expected. With the size of the data length
field excluded from the calculation of freeze frame data length, the correct
value is now reported.
The Simulink pdtc_Status block had no way of explicitly setting the block
execution rate. A mask parameter has been added for sample time.
The boot loader upgrade program (prg2prg) now waits for a delay time
(currently 1 sec) before beginning erase and flash operations after power
up or FEPS application (on those ECUs that require it). This makes the
process more robust against glitches in the power or FEPS coming up to
voltage.
For future flexibility, both options are now supported; with no length bytes
provided, the address number is treated as a flash block index, but if a
length is specified then it is still interpreted as an address. Please refer
to the MPC5534/5565 reference manual for flash block ranges (e.g. the
block indexed 0 is labelled "L0" (0x0000000 to 0x00003FFF), etc).
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.0.0-r2012-1 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
When in boot loader (reprogramming) mode, the ECU will now make a
transition to application (normal) mode if it receives a request to enter
the default session (e.g. $10 $01). This is required by the HIS flash
reprogramming specification.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.0.0-r2012-1 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
External pull up resistors have been removed leaving some pads floating.
This change turns on the internal weak pull-ups to protect against EMI.
This change effects both the firmware and the platform library.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.0.0-r2012-1 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
This change corrects the behaviour of the power-hold whilst the firmware
is active. The power-hold is not longer active during firmware execution.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.0.0-r2012-1 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
This change configures the M220 such that negative FEPS now works
correctly and enters reprogramming mode using the default CAN
configuration.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 2.0.0-r2012-1 or later. To upgrade the ECU's firmware
please contact OpenECU technical support as described in
Appendix A, Contact information.
The FEPS signal may not be correctly detected if asserted at the same
time as the ECU is powered up. This behaviour was not sufficiently
documented.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
pdx_QuadratureDecode
pdx_QuadratureDecodeAndFrequencyInput
pdx_SteppedOutput
pdx_StepperMotorOutput
ppp_Configuration
Previously, the initial drive request for indirect/serial digital and constant
current outputs were ignored and the output driver was turned off.
This incorrect initial state would persist until the first application
request to change the drive request. The pax_cc_output() and
pdx_digital_output() C-API functions, and pax_CcOutput and
pdx_DigitalOutput Sim-API blocks were affected. This issue has been
corrected.
Some output drivers have feedback signals which the processor monitors.
These feedback signals are connected to ground through a load, causing
a small current draw through the actuator, enough to dimly light a LED.
Installation
Non-volatile storage
Storage of data across power cycles, including 1-d and 2-d adaptive map
updates using reverse interpolation.
Secondly, some scenarios in which flash data might have been accessed
illegally while a flash program operation was in progress have been
avoided. In any case, no such illegal access was ever observed or
provoked in real applications.
Thirdly, the background file management process has been made more
robust against the filesystem becoming "locked" in certain scenarios, e.g.
repeated fast power cycling resulting in large numbers of part-written files
in flash. If necessary, old files are now deleted automatically until the
system is able to resume normal management operations. Also, greater
priority is now given to managing existing files, so that the process is not
unduly delayed by application-requested file writes, reducing the scope to
become "locked" in the first place (in applications making very frequent
write requests).
If the C-API application made such accesses continually, each time the
ECU then restarted, PFS would again attempt to erase the flash block
required and again a reset would occur when the application read through
NULL. This led to a cycle of resets until the multiple reset detection feature
of the boot loader prevented further application execution, leaving the
ECU in reprogramming mode. Once in reprogramming mode however,
the PFS feature would succeed in completing the erase correctly, so the
ECU would run normally if the power was cycled.
As the scenario above would become apparent only after PFS had cycled
through enough data to need to erase a block, there was a risk that an
otherwise well-validated application could fail only a long time after it has
been put into service, depending on NVM throughput in that application.
This would make for a serious yet difficult to detect or reproduce bug.
Target ECU
• External sensor power supply output (pin A25) did not turn on for
M220-00E
Pin A25 was stuck for M220-00E due to circuit depopulations. The issue
has been fixed by changing the settings for the microcontroller output
which controls this pin.
User documentation
• Updated user guides to explain that the GPI injector dead time
parameter is shared
• Update M220 tech. spec. to show that M220's have calibration RAM
Both documentation and images in the Sim-API user guide had grown out
of date over time compared to the completed step1 example models.
The Sim-API and C-API user guides have been updated to detail the worst
case conversion rate times for all A/D channels on each ECU.
The M250 technical specification was updated with a correction in the ECU
power input range and additional details on reverse battery voltage. A
section on RTD analogue input filtering has been added.
Target ECU
RAM is now tested continually in the background for bus faults or data
retention errors. If a fault is found, an unrecoverable error is taken as
program execution is otherwise likely to fail unpredictably. This also
applies to external RAM where used for application data (not calibration
shadowing) on certain targets. This is in addition to start-up RAM checks
performed by the boot loader.
Code and calibration areas are tested for corruption at run time if the
Calibration Verification Number (CVN) check is continually triggered by
the application. If corruption is detected, again an unrecoverable error is
raised. Downloading new calibration values via CCP is tolerated however.
This is in addition to start-up time checksumming of the code and
calibration, where used.
Corruption of NVM data on MPC5xxx targets which use the PFS (flash
filesystem) feature is also checked continually. If any file is found to have
become corrupt at run time, it is made unavailable for subsequent read,
so that the client software which would have used that data must instead
invoke its fallback strategy (e.g. using default values), just as if the data
had never been saved. This is in addition to start-up time checks which
determine what data is available.
Calibration
For FUNCTION statements in the ASAP2 file the maximum string length
was being exceeded if the Simulink model hierarchy had a deep nesting
of sub-systems. These comment strings are now limited to 255 characters
(any characters after the limit are removed). The model hierarchy,
represented using ASAP2 FUNCTION statement, is not limited.
Now, automatic ASAP2 entries for task times correctly match their
respective tasks.
Code generation
Communications
• Allow CCP and ISO diagnostics to work on all buses via calibration
on selected targets
Supporting CCP and ISO diagnostics on the second CAN bus of the X657
target also required a fix. Previously, CAN only operated on that bus if
traffic was also present on one of the other two buses. Now it works
correctly in isolation.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.9.2 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Diagnostic trouble codes and read/write parameter IDs are supported over
the ISO-15765 and SAE-J1939 protocols.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Non-volatile storage
Storage of data across power cycles, including 1-d and 2-d adaptive map
updates using reverse interpolation.
This issue did not have any effect on current Simulink applications. It
did not affect the writing of data to NVM or its retrieval in a Simulink
application. However, it could have affected user C-API applications using
this function. It is now resolved.
Target ECU
Previously the wrong A/D channel was selected for this function,
corresponding to the pin B30 voltage monitor.
Two functions are provided to allow reading and writing data (in multiples
of 2 bytes) to/from the serial flash chip. A further two functions allow an
individual flash sector or the whole device to be erased. The raw device
status and overall busy status may also be read when required.
The device may or may not be fitted to an ECU so during initialisation the
presence of the device is determined by looking for specific device details.
The flash memory may be read using CCP to allow stored data to be
extracted. As the device is a serial device connected on the SPI bus, a
virtual address is used with CCP accesses, such that the device appears
to be a memory mapped device in the processor's address space.
FreeCCP timeouts for short upload and upload commands have been
increased to 1 second. This has been necessary to support reliable CCP
reading of flash data.
Communications
Diagnostic trouble codes and read/write parameter IDs are supported over
the ISO-15765 and SAE-J1939 protocols.
Service $23 is now supported in both the main application and boot loader
builds. It can be used to upload areas of ECU internal memory, including
(where fitted) the PEF feature external flash.
C-API options are provided to allow or disallow support for this service
depending on the type of diagnostic session in progress and whether
seed and key SecurityAccess ($27) authentication has been passed.
The default behaviour is to disallow access, so existing projects will
not have memory contents made available to external diagnostic tools
unexpectedly.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.9.1 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Note that this global multi-frame priority option does not affect the
pj1939_PgTransmit block, for which the message length is fixed for a
given block instance, and which always uses the inport priority.
Note that this global multi-frame priority option does not affect the
pj1939_pg_transmit() C-API function, for which the message
length is passed as a function argument, and which always uses the
corresponding priority passed in the function call.
Note that the penalties for erasing CARB permanent or EURO non-
erasable DTCs during normal operation without complying with any
relevant legislation may be severe. The customer is responsible for adding
suitable checks to the application to ensure that unconditional erasing
of DTCs will only take place under suitable conditions as permitted by
legislation.
Note that the use of these overrides will cause the message contents to
deviate from the specified J1979 standards and may result in unexpected
bahaviour from a connected test tool.
Simulink support for J1939-73 messages DM32 and DM34 has been
added.
Previously DM24 only reported Expanded Freeze Frame SPNs; and for
these it always reported that Scaled Test Results were not supported.
Functionality has now been added to correctly report SPNs associated
with Scaled Test Results.
A DM25 freeze frame block has been added. The list of SPN(s) to be
recorded by a DM25 freeze frame is entered as a calibratable vector, as
such the list of SPN(s) is calibratable.
Note unlike other freeze frames only a single DM25 freeze frame can exist
within a given model.
The Simulink block has 2 additional outports. One outport indicates the
availability of the CVN, while the other outport indicates if the CVN is
currently being calculated.
The C-API interface has been decomposed into 2 separate functions. One
function simply initiates the CVN calculation. While the other function is
used to poll the result of the CVN calculation.
• Add Simulink support for J1939 messages DM7, DM8, DM10 and
DM30
Simulink support for J1939-73 messages DM7, DM8, DM10 and DM30
has been added.
Support for J1939 DM4 (freeze frames) has been added. This CR relates
just to packing and unpacking the messages. The underlying structures
to store and maintain freeze frames is be addressed under CR7228.
Partial support for J1939 DM24 has been added. This allows the
identification of the DM25 expanded freeze frame SPNs. See CRs 8402
and 8403 for support for Scaled Test Results and Data Stream. This CR
relates just to packing and unpacking the messages.
Support for J1939 DM25 (expanded freeze frames) has been added. This
CR relates just to packing and unpacking the messages. The underlying
structures to store and maintain freeze frames is be addressed under
CR7228.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
This new feature introduces two new digital inputs that read the
commanded state of the peak/hold outputs.
Target ECU
Support for the X221-000 target ECU has been added for the C
and Simulink interfaces. As with all targets, select the ECU through
the put_Identification block, save, close and reopen the model before
selecting any I/O channels.
• Only clear DTE test value/max/min on reset, and not when test has
not been run this step
Previously some PWM output channels could get stuck in the fully driven
state when changing from low to high duty cycles within the 0.5Hz to
1.05Hz frequency range.
Calibration
Fix to script that generates the ASAP2 file so that Simulink subsystems
that begin with a number are modified with an underscore to conform to
the ASAP2 standard.
with 1.9.0. A new option has been added to allow ASAP2 file generation
to use the old or new map names. This can be accessed in the Simulink
model through the menu option, Tools|Real-Time workshop|Options|
OpenECU ASAP2 generation by ticking "Generate old style ASAP2 map
names".
Code generation
Communications
Previously the J1939 stack did not conform to the specified latency of 50
to 200 ms between successive data frames of a BAM message.
Previously, the J1939 stack did not allow the application to queue multiple
transport messages with the same destination address (including the
global address). This has now been corrected and provided there are free
buffers available, multiple transport messages with the same destination
address will be queued.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.9.1 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Previously, various links in the C-API and Sim-API user guides did not
work. These have now been corrected.
Diagnostic trouble codes and read/write parameter IDs are supported over
the ISO-15765 and SAE-J1939 protocols.
When DM1 (or DM2) decode blocks were configured to look for different
DTCs from the same source address, the timestamp information was only
updated for one of those blocks: the timestamps of the other blocks just
read zero. This has now been rectified.
• Default value for DM10 bit position now available for DTEs
As part of the CVN calculation a CRC is calculated for each of the following
memory regions:
Calibration header
Calibration data
Application ISRs
Application exceptions
Application header
Application code
Where the memory region size exceeded 65535 bytes the CRC was only
partially done on the memory region. In such an instance the reported CVN
would not reflect alterations to certain parts of memory. This was due to
the memory region size being inadvertently interpreted as a 16 bit value.
To fix this issue the memory region size is now treated as a 32 bit value.
• DM7, 8, 30 failure(s)
The correct PGN is now reported in the NACK for DM7. The test
values are no longer incorrectly limited to U8. Split requirement
[LLR.PLAT.J1939.73.DM7-RX.002] into two separate requirements and
reworded.
Previously the SPN data was transmitted via DM4 and DM25 most-
significant byte first. A change has been made to match the J1939-71
standard, such that alphanumeric SPN data is still transmitted most-
significant byte first, but all other SPN data is transmitted least-significant
byte first.
This fixes a problem whereby the SPN and FMI information, in a J1939
DM32 message response, was being placed in the wrong bit positions.
• Software fingerprint PID with different read and write IDs supported
on X657
The HIS UDS flash reprogramming document specifies that the software
fingerprint PID is written via one ID and read via another (0xF15A and
0xF15B respectively). For X657 only, a write request to 0xF15A is now
internally remapped so that it writes to 0xF15B, and similarly with the
KW2000-3 LIDs 0x5A and 0x5B.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.9.1 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
• Updated to allow the user to define the name of the DM25 calibration
Previously the vector calibration that defined the contents of the J1939
DM25 freeze frame had to be called stpv_dm25_spn_set. This has now
been changed so that the user must now define it's name.
• DMs 20, 21, 29, 30, 31, 32, 33, 34 and 35 are now sent to a specified
destination address
Previously, DMs 20, 21, 29, 30, 31, 32, 33, 34 and 35 were being
broadcast globally. This has now been corrected.
Extra functionality has been added to the PFF feature to undertake some
file checking at start up. This includes checks that no freeze frame files
exist outside the expected range for the current application. Any such
freeze frame files found are deleted. This means that NVM is not wasted
on old freeze frames from a previous application build, which will not be
accessed by the current application.
A correction was made to the way the system handles DTCs and freeze
frames going out of sync as a result of undetected corruption / failure to
store data in NVM. At startup freeze frames are checked against DTCs to
check for discrepancies. This may result in unwanted freeze frames being
deleted. A change to this functionality was made to correct an issue that in
extremely rare cases might result in access to all freeze frames being lost.
DTC states are changed correctly (ageing to Previously Active and Clear)
based on the engine running time. However under some situations, the
platform did not register that an NV write is required to update the non-
volatile copy of the states. This affected the output of the pdtc_Memory
block in Simulink and the pdtc_dtcs_modified() function in C. This
issue has now been fixed.
J1979 service $09 InfoType $06 CVN now gives the correct response
pending $78 NRC behaviour if a request is received before the CVN
calculation is complete
• Corrected response to J1979 $02 request for PID $00 for non-
existent freeze frame
Previously if a J1979 service $02 request for PID $00 was received for
a freeze frame that had not been stored, the ECU ignored the request.
The code has now been corrected to match the J1979 SEP2010 standard,
which indicates that the ECU should respond with data showing that just
PID $02 is supported.
Previously, when any DTC was activated with an associated freeze frame,
a freeze frame would be captured. Data for this freeze frame would then be
available on J1979 $02. Service $02 should only report emissions related
DTCs. So a change has been made to only capture freeze frames for
emissions DTCs.
This change corrects an issue where the baud rate in the bootloader was
always set to 500kbaud, irrespective of the configured application or the
default baud rate.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.9.1 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Frequency range selection for U82 C-sample pins A16, A17, A45 and A46
would not work correctly. This has been corrected.
Target ECU
Previously, the memory layout on X657 was adequate for the current
software and enabled run-time calibration and execution on "production"
units with only 256 KB of external SRAM. However, new customer
software became too large to work with that layout.
Support for J1939 SPNs has been added to the diagnostic feature. This
allows an application to define a PID with a specific SPN, which then
allows it to be specified for capture in a freeze frame.
These so-called NV-PIDs are suitable for storing dates, serial numbers
and configuration parameters that must be set post-production using a
diagnostic tool.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.9.0 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Support for J1979 8-bit PIDs and Keyword 2000-3 8-bit LocalIdentifiers
have been added to the diagnostic feature. InputOutputControl is also
handled for applicable PIDs via either their KW2000 8-bit IDs or the
previous 16-bit CommonIDs which are also used by UDS.
The API now requires the application to define the hardware part number
(identifying which variant of the generic target is being used), the option
(where applicable, 000 by default), and the issue number. This allows one
to support in software different hardware variants and issues under the
same generic target name.
For C-API:
The path to the target required when building an application, and also the
flags to be passed to the compiler to identify the ECU for which the code is
being built, have changed. New options have been added to the C-API tool
to enable the correct path and flags to be automatically generated from the
C-API interface file within the batch file used to build the application. The
C-API examples have been updated to use this mechanism and should
be used as a template.
For Simulink:
When opening a model for the first time after this release, please observe
the following procedure to ensure that channel settings are not defaulted.
Firstly open the model in Matlab; then close it again without saving it, while
keeping Matlab open. Then open the model a second time. Check that
the channels in your model have not been defaulted (i.e. all set to the first
element of the list of available channels). Now select the correct hardware
part number for your target, if the correct one is not already shown, and fill
in the correct issue number. Only once you are satisfied that the channel
settings are all unaffected should you save the model.
The reason for this procedure is as follows. The available channels are
a function of the target type. If the target type cannot be resolved or has
changed, then the set of available channels will be changed and default
values will replace those that are no longer available. To prevent this from
happening, some bridging code converts the old target information into
the new format. However, to do this it has to locate the put_Identification
block within the model, and this operation alone (via a Matlab command)
causes the channel information to be reset. Hence the need not to save
the model on this first visit. The bridging code caches the location of the
put_Identification block within the model, so that when the model is loaded
for a second time, there is no need to locate the block. The bridging
code can now update the target information without the loss of channel
information.
Calibration
Code generation
The Sim-API has been modified to use the C-API tool to create glue
code to the platform library, and to create ASAP2 files. This change
is significant and may cause unforseen backwards compatibility issues
or other problems in general, that we will try to address as quickly as
possible.
The following file must be added to the list of object/library files to be linked.
• %OPENECU_LIB%platform_obd_diab_5_5_1_0.a
Note that the change above refers to the environment variables used
in the batch files for building the examples distributed with OpenECU.
Customer batch/make files may use different environment variable
names, or may use absolute paths. In this case, the environment
variables %OPENECU_LIB% and %OPENECU_DIAB% must be replaced as
appropriate to locate the OpenECU library files and the Diab compiler
respectively.
• Added support for using the C-API tool during the build process
To enable the production of SIL2 code, the Simulink code generation has
been rebased on the CAPI tool and the old mechanism has been removed.
Simulink configuration of CCP seed/key security has not yet been added.
Simulink builds will default to having no CCP security.
A2L files generated for CANape are automatically configured for CCP
seed/key security - see the user guide for more details. Configuration of
other calibration tools for CCP seed/key security is not currently supported
and is considered the responsibility of the customer.
Communications
Added time stamp functionality to the CAN receive functions and blocks.
application, a count of the number of times the message has been queued
rather than immediately sent, and a count of the number of times the
message has been successfully transmitted on the CAN bus.
Added functionality to provide CAN bus status: error active, passive error,
and bus-off.
Desktop integration
Diagnostic trouble codes and read/write parameter IDs are supported over
the ISO-15765 and SAE-J1939 protocols.
• Add CAPI support for J1939 messages DM35, DM36, DM37, DM38,
DM39 and DM40
CAPI support for J1939 messages DM35, DM36, DM37, DM38, DM39
and DM40 has been added. Simulink block support will be covered as a
separate change.
The results can then be used by the application to generate data for certain
elements of J1939 messages DM35 to DM40, but may also be used for
other purposes.
Also the InfoType block has been updated to support infotype $0B, In-use
Performance Tracking (IPT), of service $09 in J1979. In future releases,
infotype $0B's interface will be deprecated as it will be carried out in the
platform.
For Infotype 0x06 (CVN), the InfoType block should only be used in
conjunction with the psc_CvnCalc. block. As the trigger input to the
psc_CvnCalc block is needed to update InfoType 0x06. The connection
between the input trigger to psc_CvnCalc and allowing InfoType 0x06 to
update with a new value is implemented in the platform. In a future release
this connection shall be made available in the application.
This CR adds the ability to calibrate DTCs to meet either set of regulations.
Transitions based on engine running time are disabled by setting the
Changes made to add outports to the blockset to report the state of in-
use performance ratio data.
CAPI support for J1939 DM32, DM33 and DM34 has been added.
Simulink block support will be covered as a separate change.
CARB does not specify what should happen if a fault recurs when a
DTC is in Previously Active state. Formerly the DTC went directly back to
Active. Now the calibration pdtc_transition_prev_act_to_pend allows one
to select whether it should go back to Active or back to Pending. To avoid
premature clearing of DTCs, if a DTC has transitioned from Previously
Active to Pending, and a drive cycle then occurs where the test passes
for the entire drive cycle, the DTC will return to Previously Active (with its
warm-up cycle counter cleared).
• Add CAPI support for J1939 DM7, DM8, DM30 and ISO-15765 service
$06
CAPI support for J1939 DM7, DM8, DM30 and ISO-15765 service $06 has
been added. Simulink block support will be covered as a separate change.
Simulink block support for DM3, DM6, DM11, DM12, DM23, DM27 and
DM28 has been added.
A Scaling block has been added. Standard J1979 scalings are available
in a drop down list.
Support for J1939 DM messages DM5, DM20, DM21 and DM26, related
to diagnostic readiness reporting has been added.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.9.0 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
The boot-loader has been split into two stages. The first stage is new and
is activated when the ECU is disconnected from other CAN nodes and
attached to Pi equipment. The primary boot-loader stage is present to
allow for detailed inspection of ECUs returned from the field. The second
stage is the same as the existing reprogramming mode of the ECU.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.9.0 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Alpha support for J1939 reprogramming has been added to the firmware.
See the high-level design documentation for details relating to interface
and functionality (fs_j1939_reprogramming.doc, dated 13 May
2011).
Functionality Release
Security exchange with dummy security algorithm This
Security exchange with Savanna specific security Subsequent
algorithm
Does not include processing for DM14, DM15 and DM16 This
messages unrelated to boot-load
Firmware handling of DM14, DM15 and DM16 This
messages for boot-load reprogramming. Includes: boot-
load, erase, write, read, operation complete and EDCP
generation message handling
Firmware transmission of ECU identification information Subsequent
Documentation for J1939 reprogramming Subsequent
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.9.0 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.9.0 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Pin Condition
A21 < 1V
A22 < 1V
A23 > 4V
A33 > 4V
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.9.0 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
• ADC calibration in the bootloader has been added for the U82 target
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.9.0 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Pin Condition
A21 < 1V
A22 < 1V
A23 > 4V
A35 > 4V
Note
Support for ADC calibration in the bootloader has not yet been
added. This may result in the sampled voltages being skewed.
The extent to how much an uncalibrated ADC can skew the
sampled voltage is unknown and thus this CR should be considered
experimental. The addition of an ADC calibration should resolve this,
CR 6547 (W) has been raised to an ADC calibration. This work will
be completed in a later release.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.9.0 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
The peak current and hold current thresholds for outputs A13 and A14 in
the U82 configuration Simulink block will now accept calibration names
referenced to the data dictionary file. This allows these thresholds to be
changed by reflashing the module over CCP rather than having to rebuild
the model.
Now the blocks are supported on the G850 target but the resolution of the
angle outport is limited to the resolution of the crank trigger wheel. For
instance, with a 32-2 patterned crank trigger wheel, the resolution of the
angle outport is 11.25°.
• Extended support in the angular feature for G400, G800 and G850
targets
The angular functionality was previously left broken for G400, G800 and
G850 targets as part of the CR 2515 (W). As part of this change, angular
support in the Simulink blockset has been extended to support the G400,
G800 and G850 targets, and MATLAB R2010a. See CR 7196 (F) for a list
of angular blocks and their support across targets.
The H-bridge interface for the U82 target has been extended to handle
driving two of the BLDC output pins as an H-bridge, with the third pin left
floating.
• Extended the range of PWM and Injector outputs for U82 target
The U82 target can achieve two frequency ranges, [0.1, 40] Hz and [0.5,
10000] Hz, selectable through the C-API function pcfg_setup_u82() or the
Sim-API block pcfg_Config_U82.
Note
The C-API function pdx_hbridge_out() has changed prototype
and is therefore not backwards compatible.
In this situation, check the H-bridge block for the correct settings and
save the model. The block will continue to work as before.
Note
The offset parameter is not modifiable during application run-time.
Changing the frequency for related offset outputs during application
run-time must be avoided to maintain the correct offsets.
Note
The Sim-API documentation not complete and not included in this
release. A later release will complete the documentation.
Note
On the U82 target, the peak-and-hold output interface replaces the
synchronised PWM output interface.
Warning
Use pins A13 and A14 in peak-and-hold mode only. Using pins A13
and A14 in PWM mode will result in undefined behaviour (see the
pcfg_Config_U82 block). A later release will correct this issue.
The angular block set has been extended to decode a crank trigger wheel
for the U82 target. Extended crank wheel decode for the U82 target, to add
an option to disable angle clock generation and to function independently
of a cam sensor input.
At the Sim-API level, a mask parameter labelled Generate angle clock has
been added to the block pan_CrankWheelConfig. Untick the new mask
parameter and do not use the pan_EngineConfig block in your model to
enable only crank trigger wheel decoding.
Added draft support for driving a BLDC output on the M250 option 00H
target. Note: the angular functionality on the M250-00H target has been
removed for eTPU code space purposes.
Non-volatile storage
Storage of data across power cycles, including 1-d and 2-d adaptive map
updates using reverse interpolation.
For the existing non-volatile storage of DTC and adaptive parameter data,
this improves robustness because previous data can be retrieved if the
most recent stored data is corrupt (e.g. because the ECU lost power during
the storage operation). Also, previous data is only used if the version
Note
The corresponding Simulink blocks still suspend execution while the
data is saved, matching their previous functionality. Therefore there
is no need to modify existing Simulink models at this time.
For C-API use, the new PFS feature allows user code to read, write, and
delete “files” in flash memory. This provides a general-purpose method of
storing non-volatile data specific to the application. Saving can be done
during real-time execution of the application. See new user guide material
for details.
Target ECU
Support for U82 C-sample has been changed to support the reduced I/O
set of the XNOx-sample. An application, built for the U82 C-sample target,
can be run on C-sample or XNOx-sample ECUs. However, when run on
C-sample, the following C-sample I/O channels are affected and will not
perform as expected:
Pin Comment
A3 Affects digital output
A4+A5+A6 Affects BLDC output, current fault monitor
A9 Affects digital input
A10 Affects digital output, current trip and threshold monitors
A14 Affects digital output, peak/hold thresholds, clock, mode
and current trip monitor
A16 Affects digital output, current trip and dwell monitors
A17 Affects digital output, current trip and dwell monitors
A19 Affects digital input
A46 Affects digital output, current trip, threshold and voltage
monitors
B2 Affects digital input
B3 Affects digital ouptut
B5 Affects digital input
Pin Comment
B6 Affects digital input and voltage monitor
B7 Affects digital input
B8 Affects digital input
B12 Affects digital output and current threshold monitor
Support for the M220-00 target ECU has been added for the C
and Simulink interfaces. As with all targets, select the ECU through
the put_Identification block, save, close and reopen the model before
selecting any I/O channels.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.9.0 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Calibration
Code generation
• ECU reset when DTCs cleared on engine running timer where DTCs
have freeze frames
Upon clearing a DTC based on the engine running timer, where the DTC
had a least one associated freeze frame, the ECU was found to reset.
The DTC engine running timer task was not previously allowed to access
the file system. Freeze frames are stored in NVM via the file system. When
the DTC engine running timer task attempted to delete a freeze freeze, it
failed to acquire the file system resource and thus invoked an ECU reset.
To resolve this issue the DTC engine running timer task has been allowed
access to the file system.
The following features have been modified or removed to free RAM for
U82 applications:
These changes free up around 6.1 KiB of RAM using a test application
that uses most of the U82 interfaces. Further RAM savings have been
made by optimising the data layout of the diagnostic trouble code feature
in W-CR 7805.
• Fix build dependencies so that if a new task rate is added the RTW
object files rebuild
Previously, if a new task rate was added and the model rebuilt then it
would fail at the link stage. The workaround was to remove the model build
directory and rebuild.
The C-API tool supports DDE renaming when generating the ASAP2 file
(for instance, changing prefix_name into name.prefix). However, DDE
names which do not follow those laid out by the user guide, for instance
TRUE, caused the renaming logic to fail.
The DDE renaming logic is now more tolerant of names which do not follow
the naming pattern laid out by the user guide.
The C-API tool supports placing each DDE in zero or more hierarchical
groups. But the C-API tool would not deal with groups without a name,
causing the tool to report an exception.
Previously, if a library link was present in a model and active, then the
oe_update_model_for_ddes MATLAB script would fail and stop a
model build or a configuration set change from occurring.
Communications
A zero-length Erase, Write or Read does not make sense and therefore
they are now rejected.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.9.0 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.9.0 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Fixed installer so that essential DLL for Vector drivers was released with
FreeCCP.
When using Vector interfaces, the "-device <value>" option may now
be used to set the interface channel being used. This is the same option
used to select the channel on Kvaser interfaces.
Kvaser interfaces were previously unreliable with FreeCCP. This was due
to the bit sampling time values used. These values have been fixed so
that FreeCCP may now be used reliably with Kvaser interfaces.
Minor fix to allow retries after certain CAN receive failures, when checking
that data was transmitted OK.
Kvaser CAN support is selected using the -kvaser command line option.
For more information about FreeCCP, see the user guide or use the
command line option -h when running FreeCCP.
After this change, prg2prg is now supported for X657. The external
watchdog is also serviced during flash erase operations in boot loader or
prg2prg, so that large flash areas can be safely erased without the external
watchdog causing a reset. This will be important later in the life of the
microcontroller when the specified maximum erase times become much
longer (up to 7.5 sec).
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.9.0 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
FreeCCP previously would not work with 29-bit CAN IDs on Vector
hardware. This has been fixed at FreeCCP version 4.1.0.
Diagnostic trouble codes and read/write parameter IDs are supported over
the ISO-15765 and SAE-J1939 protocols.
A buffer is used to store freeze frame data while it awaits storage in NVM.
This buffer is designed to wraparound in the case that multiple freeze
frames are awaiting storage and a new freeze frame is captured.
Low level testing has identified an error in the indexing of this data under
some conditions. This results in incorrect indexing into the buffer. The
result of this being that storage of new freeze frame data may be prevented
until the module has been reset.
In two instances it was noted that the setting of a flag to trigger freeze
frame deletion was missing. This would only be noticeable in some
extreme cases: if the memory allocated to storing freeze frames was full
then new freeze frames might not be stored because other freeze frames
had not been successfully deleted.
DTC structures have been changed so that only the minimum data
necessary is stored in NV. Further data is stored in RAM where necessary,
but this is still significantly reduced. Overall reductions should be 18 bytes
per DTC for NV usage and 12 bytes per DTC for RAM usage.
Some DTC table structures were found to have been stored in RAM
instead of in Flash. These have been correctly moved to Flash, saving 12
bytes of RAM per DTC.
DTC structures have also changed. Handling of DTCs has always required
the coder to pass a "const" and an "NV" section separately, which could
lead to inconsistent data being passed to the relevant functions. DTC
structures have now been changed so that the "const" structure only
is passed to the relevant functions. The "const" structure for each DTC
then references the relevant "NV" structure and a new "variable" structure
(stored in RAM). The coder does not (and should not) therefore need to
concern themselves with a DTC's internal data.
The change to DTC structures and DTC-related functions means that this
is not backwardly-compatible for customers using the C-API interface with
C code. This is encapsulated by the relevant Simulink blocks though, so
this change is backwardly-compatible for customers using the Simulink
interface.
Changes have been made to DTC state handling for warm-up cycles to
better match our understanding of the legislative requirements. See user
documentation for a detailed description of the new behaviour.
• Fixed bugs in the DTC state machine (when DTC controlled by the
platform)
1. When a DTC is in state Active, a test failing within a drive cycle would
not have been detected.
If any DTC is active then a DM1 message was incorrectly sent every time
a call to dm1_transmit is made. And conversely, if no DTCs are active
then no DM1 message was sent at all.
This has been fixed to correctly follow J1939-73 revised Feb 2010. The
ECU now sends DM1 every 1s, regardless of whether any DTCs are
active or not. If a DTC changes to/from active state between 1s DM1
transmissions then a further DM1 is sent, but no further DM1s are sent for
changes of state of this DTC for this 1s period.
• Fixed bug whereby the updating of MIL-on timer and distance was
missing from platform controlled DTC updates
There was an “off by one” error related to the drive and warm-up cycle
parameters defined for use with the DTC state machine. This has now
been addressed.
Freeze frames are now captured when a J1979 DTC becomes active from
being previously clear or inactive; or when a DTC goes pending. This
is as required by California Code of Regulations On-Board Diagnostic
System Requirements. In addition, the freeze frames are cleared when
the corresponding DTCs are cleared. See user guide for more details.
A problem with the way application version information was stored with
freeze frame data was causing freeze frame data to be rejected when read
out of non-volatile memory. This has now been fixed.
The DTC lamp status is 2-bit field with four values: 0 = Slow flashing; 1
= Fast flashing; 2 = On continuously; 3 = Off. Previously, at initialisation
and when DTCs were cleared, the lamp status was being set to 0 =
Slow flashing rather than to 3 = Off. This applied to clearing DTCs
by the C-API functions pdtc_clear_all(), pdtc_clear_all_if_active() and
pdtc_clear_all_if_inactive(), and by the Simulink blocks pdtc_ClearAll,
pdtc_ClearAllIfActive and pdtc_ClearAllIfInactive. The lamp statuses are
now set correctly.
The functions already took a parameter to specify the DTC type, so the
functional interface is unchanged. The functions now use this parameter
correctly to select the desired DTC type to clear.
• Fix bug wherein application crashed when there were zero DTCs
Lamp state prioritisation now works correctly when multiple DTCs are
active across multiple DTC tables. For each lamp, the highest-priority state
for that lamp will be selected from all active DTCs in the selected DTC
table.
Examples
Now, when the step1 example is built without following the user guide, a
warning message is emitted and the build stops without completing.
The voltage ranges for A21, A22, A23 and A33 have been narrowed to
avoid accidental entry to reprogramming mode on reset (related to CR
6377 (W) and CR 6729 (W)). Thus to enter reprogramming mode, apply
the following combination of voltages to the specific pins prior to ECU
power up:
Pin Condition
A21 < 0.05V
A22 < 0.05V
A23 > 4.95V
A33 > 4.95V
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.9.0 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
• Updated firmware to allow CCP and J1939 to use the same CAN bus
while reprogramming
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.9.0 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
This change configures the M220 such that negative FEPS now works
correctly and enters reprogramming mode using the default CAN
configuration.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.9.0 or later. To upgrade the ECU's firmware please
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.9.0 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
The software has been updated to add support for C-sample U82 ECUs
and to remove support for A-sample U82 ECUs. Changes from A-sample
to C-sample include:
Warning
Do not run A-sample software on C-sample ECU, or vice-verca.
Doing so may damage the ECU.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.9.0 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
In models without the TDC-firing trigger, the fastest model rate task
definition was incorrectly dropped from the schedule. This has been
corrected.
Installation
Now, the installer does not skip updating MATLAB's path for MATLAB
R2010a.
Target ECU
This fixes a problem whereby the in-use performance ratio data that was
stored to NVM upon power-down was not being restored upon power-up.
• Added some missing I/O channels for testing purposes (spare SPI
based channels)
User documentation
It wasn't clear that the array written to by these functions through the
pcxf_msg_data argument should be 8 bytes in length. This has been
clarified in the C-API user guide.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
The OpenECU blockset can now be used with Matlab R12.1, R13.1,
R14.1, R14.2, R2006b, R2007b, R2008b, R2009a and R2010a.
Note
A future release of OpenECU will remove support for R12, R13 and
R14.
Calibration
Further details are described in the “Supporting tools” section of the user
guides.
Diagnostic trouble codes and read/write parameter IDs are supported over
the ISO-15765 and SAE-J1939 protocols.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Previously, unlike the adaptive 1d map lookup block, the adaptive 2d map
lookup block would not allow vector signals as inports.
Now, the adaptive 2d map lookup block allows vector signals as inports, so
long as all vectors are of the same size. It is acceptable to have a mixture
of scalar and vector inputs to the block.
Code generation
Previously, each C-API application used its own linker file, which defines
the memory map and how to arrange objects within that map. However,
this made it difficult to alter or upgrade the memory map or linker settings,
as any changes would have to be applied to each such linker file. Now,
the linker file is constructed from master files in the platform library.
Existing C-API applications should be modified to use the new linker file
arrangement. To do this, use the installed example applications as a
template. The batch (.bat) file has a new line to construct the linker file
and then the invocation of the Diab linker command “dld” is modified to
use that linker file.
Communications
Now only the first instance of a signal is processed by default in any one
message, and processing continues, so that such a CANdb file can be
used without editing.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Now, the SPWM driver has been corrected to handle 100% duty cycle,
and abrupt frequency changes without stopping the channel.
• Correction to PWM output for some G400, G800 and G850 pins to
give the correct duty cycle and frequency
Communications
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.8.4 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Now, the checksum region size is always identical in both the boot-loader
and the compile time calculation.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.8.4 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Now, the idle background task can use model resources, access digital
I/O through the PDX feature, and access CAN communications through
the PCX feature.
Note
Please contact us if you need SIL2 compliance so we can confirm
whether or not your own application's use of the C-API is covered
by our development process.
Diagnostic trouble codes and read/write parameter IDs are supported over
the ISO-15765 and SAE-J1939 protocols.
The C-API has been updated to add support for the following services
through the PDG, PDTC and PPID features:
ID Service Notes
0x03 ReadEmissionDTCs Reports only DTCs defined as
(J1979) emission-related
0x04 ClearEmissionDTCs Clears only DTCs defined as
(J1979) emission-related
0x14 ClearDiagInfo Clears all ISO DTCs (not J1939-
(KW2000-3/UDS) only DTCs)
0x18 ReadDTCByStatus All DTCs, regardless of emissions
(KW2000-3) severity
0x19 ReadDTCInfo 16-bit DTCs currently output,
(UDS) higher byte zero
0x22 ReadDataByCommonID Used to read PID values
(KW2000-3/UDS)
0x2F IOControlByCommonID Used to override PID values
(KW2000-3, UDS)
0x3E TesterPresent Ping to maintain communications
There is now more than one type of DTC, a J1939 DTC and an ISO DTC.
The platform treats both as the same, unifying both so that the same set
of DTCs can be accessed over J1939 and ISO communication protocols.
The C-API tool has been updated to support the same, introducing
the iso_diagnostics statement to declare ISO communication
parameters, introducing the pid_data statement to declare PID entities,
and introducing the dtc statement to declare unified diagnostic trouble
codes. See the C-API user guide for further details.
Now, the ECU firmware has been updated to detect repeated resets. If a
repeated reset is detected, the firmware will enter reprogramming mode
and flash code 117. To restart the application, the ECU ignition or power
must be cycled.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.8.3 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
The ECU firmware has been updated to include a full checksum of the
application (where previously the boot-loader would only checksum the
header of the application). This results in an increased boot duration but
mitigates the risk of running an application which has become corrupt.
Note
There is no support yet for allowing a calibration tool to update
the calibration checksum. If the application calibration data
is checksummed, then cal-on-the-fly functionality will still be
supported, but reprogramming a modified calibration will result in
a failed checksum test during boot mode, and the ECU will enter
reprogramming mode flashing code 118.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.8.3 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.8.3 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Now, the angular blockset has been refactored into a more orthogonal
interface. There are individual configuration blocks for each aspect of the
angular functionality, which will allow smaller parts of the blockset to be
used without invoking functionality that is not required
Note
Due to the refactoring, support for angular functionality on the G400,
G800 and G850 targets in the Simulink blockset is broken. This will
be corrected in a future release.
Now, the C-API tool automatically adds the background task to each
resource declared in a C-API interface specification file, allowing the
background task to acquire resources used by higher priority tasks.
Target ECU
• Replaced support for M250 rev-1 ECUs with support for M250 rev-2
ECUs
The software has been updated to remove support for M250 rev-1 ECUs
and add support for M250 rev-2 ECUs. All M250 rev-1 ECUs will be
replaced with M250 rev-2 ECUs.
Note
If you have a M250 rev-1 ECU please contact OpenECU technical
support as described in Appendix A, Contact information.
Angular support for diesel engines has been added. In particular the
platform provides the following functionality:
• Crank synchronous A/D input capture — can sample two A/D inputs on
an angle basis (up to 8 samples per cylinder);
The C-API interface tool has been updated to extend some error and
warning messages with unique identifiers (where previously messages
were reused in situations were another message would have been more
helpful), and the user guide updated accordingly. See the C-API user
guide for a complete list of error messages.
Previously, include files with relative paths (like the statement include-
dde-tabbed-c ../interface_specification/foo.dde) where
taken relative to the invocation directory, not the directory of the interface
specification file, leading to confusion.
Now, include files with relative paths are taken relative to the directory of
the interface file that includes the file.
Now, the application can acquire more than one resource sequentially
without the platform software incorrectly causing a reset.
• Issue with using the fastest model rate as the angular task
The platform was using the fastest rate for the angular
task. This caused various issues with Simulink blocks that
tracked time. To rectify this, the block set has been extended
to provide support for a non-periodic trigger for angular
functionality (see Sim-API blocks put_BufferedRateTransition_Read and
put_BufferedRateTransition_Write).
However, this new feature is still experimental and should not be used.
To continue to use the fastest model rate as the angular task, ensure the
Provide TDC calc trigger? parameter in the pan_EngineConfig block is
unticked and that the Angular rate functionality (deprecated) RTW option
is ticked.
Calibration
Previously, a 2-D look-up y-axis array was rejected if it contained less than
3 elements, but the minimum allowed axis array size is 2 elements.
Code generation
task
{
name = stp_task;
priority = 1;
function = stp_task_100ms;
}
then the C-API tool would incorrectly generate a warning about the task's
offset being more than twice the task's period, allowing an application build
to complete. The resulting application would cause the ECU to reset.
Now, the C-API tool raises an error asking for the task's period to be
defined, and stops an application build from continuing.
Without direction from a Simulink model, RTW will generate the majority
of the model code in one function. As the size of the model increases, the
size of the function increases. It has been discovered that Diab 5.5.1.0 will
silently generate incorrect code when the function size becomes too large.
The workaround for this issue is described in Section 2.5.9.2, “Known
defects”.
Communications
Previously, the J1939 receive and transmit blocks both incorrectly stated
the enumerations to use for LS and MS byte packing. The dialog stated
that MS byte packing corresponded to value 0 and LS byte packing
corresponding to value 1, unlike the user guide which stated the opposite.
Now, the J1939 receive and transmit blocks specify the same values as
the user guide.
Now, the instructions explain the use of the key position (ignition) switch
input.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Previously, on the A450, M001, M250, M460 and M461 ECUs, some PWM
output channels could generate the wrong PWM signal for one cycle, when
changing from a non-zero duty cycle to zero duty cycle. When the issue
occurred, the PWM signal would generate 100% duty cycle for one cycle,
then revert to the requested duty cycle.
Now, changing from a non-zero duty cycle to a zero duty cycle is correctly
handled.
Now, when the configuration is set to PWM then the platform software will
configure the hardware to allow current recirculation back to VPWR.
• Issue with locale settings and the use of the degree symbol in the
angular block set
Previously, the angular block set was using the ASCII degree symbol and
this in turn caused MATLAB to issue an error when using the block set.
The platform no longer uses the ASCII degree symbol, and models using
the angular block set would load without error in any locale.
Previously, the pdx_pwm_output() function would not clip the duty cycle
to the range [0, 100]% if the frequency was also clipped. This could result
in an incorrect PWM signal.
Previously, some versions of the software would incorrectly index the task
timing data in the ASAP2 file, for instance, the task timing for task B would
be displayed when viewing the task timing for task A.
Now, the task timing in the ASAP2 file is correctly aligned with the task
timing data recorded by the ECU.
Target ECU
Previously, the relation between the duty cycle on the input and the actual
H-Bridge driver used inconsistent pictures to illustrate the behaviour. The
documentation has been updated to remove the inconsistency.
The A450 technical specification stated that all A450 ECUs had power
hold functionality enabled. This wasn't the case; only a few A450
ECUs had power hold functionality enabled on the PCB. The technical
specification has been updated accordingly.
The G850 technical specification has been updated to correct and clarify
various issues:
1. Pin C46 (ISP-R) is inverted. Ignition switch on (VBAT) reads close to 0V,
ignition switch off reads close to 5V (in software, the range is scaled
down from VBAT to 5V). The trip point is around 1.5V +- 0.2V.
3. Added in details about ECU protection modes for each of the output
drivers.
Previously, the G850 technical specification showed that pins E69 and
E70 were independently driven with independent feedback signal, where
in fact those pins were driven from the same internal signal but had
independent feedback signals.
The intent of this change is to try to avoid unexpected errors during a build
if the compiler has not been setup correctly. In these circumstances, the
messages printed during a failed build were hard to understand. For more
information about the checks performed, issue:
help oe_check_compiler
oe_check_compiler
Now, the template makefile has been updated to exclude the use of
rt_matrx.c and rt_printf.c, which allows the build of a model with
at least one embedded S-function to complete.
In a continuing effort to provide access to all of the ECU I/O and to provide
consistent naming for I/O channels, there have been some recent changes
to the C-API macro names.
Code generation
Now, the underlying issue causing the error message has been removed.
Communications
Previously, with M2xx and M4xx ECUs, external interrupts (CAN and
SPI) could become incorrectly suspended while application code tasks
executed. This was seen to result in missed CAN receive messages in an
application with high CPU loading and high CAN traffic, and issues with
CCP data acquisition.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
The digital input block would honour the inversion parameter during model
simulation but not when running on the target ECU. The issue has been
corrected.
Non-volatile storage
Storage of data across power cycles, including 1-d and 2-d adaptive map
updates using reverse interpolation.
Previously, the adaptive scalar, map and array, and the utility map blocks
could cause MATLAB to crash if the block parameters were only partially
populated.
Now, the underlying issue causing the crashes have been removed.
Now, the underlying issue causing the crash has been removed.
Target ECU
The following external pin voltage ranges have been corrected: E23, E28,
E29, C7, C9, C15, C21, C26, C29, T16, T17, T24 and T25 and T28.
• Removed selection of current trip level for pins A1, A11, A21 and
A31 on the M461-00 ECU
Although early issues of the M461-00 ECU have the ability to select current
trip thresholds, later issues do not. The pcfg_Config_M461 Simulink block
and pcfg_setup_m461() C-API function have been removed.
Previously, the order of include files from the C-API mattered (psy.h had
to be included prior to other C-API headers, pdtc.h had to be included
prior to pj1939.h.
Now, the include order is unimportant. There is also a new header file,
openecu.h which includes all of the C-API header files.
Affects C-API
Note
Currently, there is no mechanism to control the duration of the
watchdog timer.
Affects C-API
Affects Sim-API
The psc_KickWatchdog block provides the model control over when the
watchdog timer is reset. If the block is not present in the model, then the
platform software continues to reset the watchdog timer automatically.
Note
Currently, there is no mechanism to control the duration of the
watchdog timer. See the block help for more details.
Affects Sim-API
Affects Sim-API
Affects Sim-API
Affects Sim-API
Two blocks were added to provide access to time (both absolute and
relative). The ptm_SimulinkTime block provides access to Simulink's task
timers, in seconds, milliseconds or microseconds. The ptm_RealTime
block provides access to the ECU's processor timers, in seconds,
milliseconds and microseconds. Both blocks provide the time since the
start of simulation or since the start of the ECU power up, as an absolute
time. And both blocks provide the time since the last time the block was
executed (or the start of the model in the first instance).
Affects Sim-API
Affects Sim-API
Affects Sim-API
In R14.1, R14.2 and R2008a, the OpenECU User Guide (Simulink) is now
available to read through the MATLAB help browser. Simply select the
Simulink menu item Help -> Product Help and select the OpenECU User
Guide.
Code generation
Support for Embedded Coder has been added to the blockset. There
are a series of support blocks to quickly switch between the various
auto-coders supported by OpenECU (see prtw_ConfigUsingRtwEc,
prtw_ConfigUsingRtwRtmodel and prtw_ConfigUsingRtwRsim).
Affects Sim-API
using the three code formats supported by RTW (namely, RSIM, GRT
and ERT formats). The blocks change the model's target specification file
for the corresponding code format and update the model's configuration
parameters
The prtw_Build block initiates a model build using the model's current
configuration parameters.
Affects Sim-API
Communications
• Added support for 250 kBps default baud-rate (in addition to the
500 kBps setting) in reprogramming mode for G850, A450, M460, and
M461 targets
Now there are two different versions of boot and prg images that can be
flashed into the ECU.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.8.1 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.8.1 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
• Ensure all A/D channels are sampled at least twice as quick as the
fastest software task
The A/D channels are now sampled twice as quick as the fastest software
task (1 millisecond) to ensure that if the software requires a new sample
every millisecond, it can have one.
Affects Sim-API
Affects Sim-API
Affects C-API
Affects Sim-API
Target ECU
• Added selection of current trip level for pins A1, A11, A21 and A31
on the M461 ECU
• Provide selection of current trip level for pin A31 on the M460 ECU
To support this, the C-API PCFG feature functions now return a code
indicating whether the function was successful or not, based on the
function arguments.
Support for the M250-00 target ECU has been added for the C
and Simulink interfaces. As with all targets, select the ECU through
the put_Identification block, save, close and reopen the model before
selecting any I/O channels.
M250-00 provides outputs than can be either high or low side via software
select. New internal digital output channels have been added to select the
output configuration.
• Added blocks to support G400, G800, G850 and M250 target ECU
configuration
Affects Sim-API
hardware options for input filtering and trip point detection on some
pins. The G400, G800 and G850 blocks replace the previously hidden
calibration mechanism for doing the same.
Previously, the platform library would use 64-bit wide floating point values
for constants. The use of double caused various calls to support libraries
to be called, slowing down simple arithmetic operations in some library
functions.
Now, the platform library uses 32-bit wide floating point values for
constants, avoiding expensive calls to support libraries. The overall result
is a reduction in run-time when calling certain platform functions. Although
the application as a whole will run more quickly, the application code itself
is unaffected by this change.
Affects C-API
The angular API PTPU has been replaced by the equivalent PAN API.
Please replace use of the PTPU API with the PAN API. In a future release,
the PTPU API will be removed.
Calibration
Now, under the same circumstances, the C-API interface tool will raise an
error explaining the problem.
Communications
Previously, the CCP driver would reject requests for data from ROM
memory groups of the ECU when monitoring variables, only allowing data
to be read from RAM groups. However, ATI Vision ignores the rejection
and expects data for rejected groups. In turn, the ECU sends the variable
data as expected but would fill out rejected groups with uninitialised data.
In combination, these two mechanisms result in unexpected data being
displayed by Vision. The issue affected build and version automatic DDEs,
such as mpl_plat_build_day.
Now, the CCP driver accepts requests for variable data in ROM memory
groups and Vision correctly displays the data.
Examples
Now, the C-API example linker files have been updated accordingly and
the C-API examples build without errors.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Target ECU
The cold-junction temperature input for the M460 allows for accurate
calculation of the thermocouple inputs. Although the M461 doesn't
include thermocouple inputs, the cold-junction input is still available.
Previous versions didn't include the cold-junction input as there were no
thermocouple inputs. Now, the cold-junction temperature input for the
M461 is available as a means to determine the ECU temperature.
Affects Sim-API
The versions of software for 1.5.x, 1.6.x and 1.7.x support various features
and hardware targets, but no one version of the software supported all
features and all hardware targets. By merging all versions together, there
is now one main version, which should lead to less confusion and easier
support.
• The range of values used to drive constant current outputs has changed
from [0, 255] (G400) and [0, 511] (G800, G850), to [0, 4096] across all
targets.
• To facilitate the merge, the knock related angular blocks have been
disabled (affecting the G400 and G800 targets). A future release will re-
enable this functionality.
Communications
Now, the display output from FreeCCP has been reformatted to improve
clarity, and the version number of the target CCP implementation is always
printed. In particular the verbose mode print-out is easier to read and
interpret.
Target ECU
The C-API has been extended to include the G850 target ECU. Some of
the notable changes include:
• The C-API has been extended to include functionality for engine control,
including synchronisation to the crank and cam trigger wheels, injector
and coil driving. At a later date this API will be extended for knock signal
processing.
typedef struct
{
U16 adc_raw
F32 adc_eng;
U8 fault;
}
ADC_T;
ADC_T adcs[10];
as adcs[..].adc_eng.
While extending the C-API for the G850 target, there are some changes
which affect compatibility with previous versions of the OpenECU
software:
• The pax_set_input_update_rate(),
pax_set_output_update_rate(),
pdx_set_input_update_rate() and
pdx_set_output_update_rate() API functions have become
deprecated. Their use is no longer necessary. Calls to these API
functions should be removed from application code.
Note
The C-API now supports the following ECUs: A450, G850, M460
and M461.
Calibration
Microsoft Excel, useful for editing the column data of a dictionary file,
does not reject the use of ** (but does reject the use of --, replacing the
comment with #NAME).
Code generation
Affects Sim-API
Now, as well as adjusting the build process to try to avoid these problems,
a build directory which matches the OpenECU and MATLAB version,
avoiding the problem altogether.
Communications
Previously, the J1939 receive and transmit blocks rejected use of the last
bit in a J1939 message.
Now, the last bit of a J1939 message can be accessed without an error
message.
Examples
Previously, the C-API example build batch files would contain incorrect
path locations for the OpenECU installation path and Diab installation
path.
Now, the installer correctly adjusts the path locations (the user must still
update the batch files for the location of the Diab installation).
Target ECU
• Corrected the gain in the cold junction voltage equation in the A450
and M460 technical specifications
Note
At this time, no technical support will be provided for the GRT
(RTMODEL) auto-coder. A future release will finalise support for
the GRT (RTMODEL) auto-coder and add support for Embedded
Coder.
• The supporting commands have changed name so that all begin with oe
to differentiate them from other commands of the same name in other
packages. The changes are outlined in the following table:
In R14.1, R14.2, R2006b, R2007b and R2008b, the OpenECU User Guide
(Simulink) is now available to read through the MATLAB help browser.
Simply select the Simulink menu item Help -> Product Help and select the
OpenECU User Guide.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Code generation
Previously, if a model was build using one version of OpenECU, then the
version of OpenECU updated, then the model was rebuilt using the new
version, the resultant build would not always work correctly. This occurred
because some compiler options held in files in the build directory from
the older version of OpenECU were not overwritten with newer compiler
options.
Communications
Now, decoding of the CAN bus-off event has been corrected, such that
CAN message transmissions are no longer delayed and the CAN bus-off
condition is correctly reported to the application.
Now, the CANdb transmit block no longer clips the signed number to zero
before packing into the CAN message for transmission.
Previously, the CANdb parser could not understand some forms of the
embedded CANdb SIG_KIND_ statement resulting in both the CANdb
receive and transmit block not showing the requested message signals
as inports and outports.
Non-volatile storage
Storage of data across power cycles, including 1-d and 2-d adaptive map
updates using reverse interpolation.
Previously, the platform software would catch this exception and reset the
ECU. If power were accidentally lost during a Flash operation, this could
result in the ECU appearing to be working in reprogramming mode, but
to be inactive in application mode. Reprogramming the ECU would not
rectify the failure if the adaptive or diagnostic trouble code non-volatile
Flash data groups were affected.
Target ECU
See the technical specification regarding the M461-00 for details about the
functional capabilities of the ECU. The M461 ECU is similar to the M460
ECU, with the following differences:
• analogue input pins A8, A6, C7, C17, C39, C40 and
C27;
The boot code major version number is different for each ECU target. This
number is available for reading, in case the application needs to verify
what target it is running on.
Affects Sim-API
Target ECU
See the technical specification regarding the M460-00 for details about the
functional capabilities of the ECU. The M460 ECU is similar to the A450
ECU, with the following differences:
Affects C-API
Calibration
Now, capitalised DDE names are correctly resolved in ASAP2 files (which
are then subsequently read correctly by ATI Vision).
Examples
Affects C-API
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Now, reprogramming software forces the high side switch open, which
disables the actuator supply channels. Note, the reprogramming software
runs when the unit is powered up with FEPS line asserted.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.7.3 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
When utilising pins A5, A15, A25, A31, A35, C5, C10, C15 and C20
as digital outputs in either the Simulink blockset or C-API, the platform
software would drive the incorrect pin. When utilising the pins as PWM
outputs (or in the case of A31 as an injector output), the platform software
would drive the correct pin.
Affects Sim-API
Affects C-API
OpenECU Library
Included is a library (with associated C header
files) which when linked with an application provides
access to the target ECU functionality.
Affects Sim-API
The Simulink/RTW blockset has been updated to match the C-API (for the
A450-00) and will continue to match the API in the future.
Target ECU
Previously, pin C29 was listed as a digital and frequency input in the
technical specification. This was incorrect, pin C29 is unused.
Calibration
• Added support for the scale and offset columns in the data
dictionary files
Affects Sim-API
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Affects Sim-API
This block allows the model to generated a pair of PWM signals, where
the second PWM signal is synchronised to the first. Currently, this block
is supported on the A450-00 target only.
Affects Sim-API
This block allows the model to control the operation of the output drivers.
Previous targets (G400, G800, G850) automatically turned on the output
drivers regardless of model state. The output control block allows the
model to control whether the output drivers are turned on or off. Currently,
this block is supported on the A450-00 target only.
Target ECU
Affects Sim-API
A new A450-00 target has been added to the list of supported OpenECU
targets. The A450-00 hardware is designed for emissions control, but
can be used for numerous applications. Some OpenECU functionality has
changed for the A450-00 target.
The target has a dedicated output pin for flash codes. The output can be
connected to a bulb or lamp and the ECU will cause the bulb to flash a
code. The code converts into a 3 digit number which gives an indication
of the ECU's state (for instance, the flash code may tell the user that the
ECU is running in reprogramming mode).
The target range of PWM and frequency inputs differs from other targets.
The target can measure frequency signals and drive PWM signals in the
range [0.5, 10000] Hz.
The A450-00 target does not support battery backed RAM. The non-
volatile memory blocks raise an error if storage to battery backed RAM
is selected.
Communications
Affects Sim-API
Now, all targets are limited in the number of receive and transmit
messages only by the size of memory of the target.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
• Blocks which work with analogue inputs have changed output range
Affects Sim-API
To clarify the interface across all targets, all blocks which provide analogue
conversion, generate their results as if the conversion were 0 to 1023 full
scale for unsigned inputs, and -1024 to 1023 full scale for signed inputs.
Code generation
Affects Sim-API
Support has been added for Diab v5.5.1.0 (existing support for Diab v4.4b
has been retained). See the RTW settings for OpenECU and updated
installation instructions for more.
Calibration
During a model build for the G850 target, OpenECU would generate an
INCA ASAP2 file and specify the length of the DAQ lists as 16 long, but
the DAQ lists were 15 long. This resulted in INCA generating the following
log message:
ECU reports 15 ODTs in DAQ 3 but 16 are reported as available
in your QPBLOb. Please check the ASAP2 file.
Code generation
Previously, RTW would appear to leave out an RTW C header file when
generating the template makefile if a MAX block was used in the model.
The end result was a compilation error during a model build.
Now, the OpenECU build process will workaround this issue by including
the missing header file.
Communications
Previously, the CANdb parser could not understand some forms of the
embedded CANdb SIG_KIND_ statement resulting in both the CANdb
receive and transmit block not showing the requested message signals
as inports and outports.
Previously, when the blockset was presented with a J1939 CANdb file the
supporting tool would raise an error regarding the length of some J1939
messages (which can be between 0 and 1785 bytes in length, compared
to between 0 and 8 bytes in length for CAN messages). The error was
correctly caught but not presented to the user.
Affects Sim-API
The J1939 section of the user guide has received one minor update for
clarification.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Now, the feature incorporates the pin number in the calibration name
making each automatic frequency input calibration unique.
Target ECU
Previously, some G850 ECUs would incorrectly disable the outputs for
pins E4, E35, E36, E37, E38, E50, E52, E53, E54, E55, E67 C1, C13 and
C32 on a periodic basis, regardless of the requested enable state from
the application.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.6.4 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Now, the G850 correctly determines the FEPS state during power on.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.6.4 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Memory emulation
• Correct error when building for the ATI M6 emulator (G400 only)
Previously, when building a G400 model for use with an ATI M6 emulator,
the build would fail with the error message:
Target ECU
Note
After opening a model that uses the “IMRC4 monitor” channel, the
corresponding psp_SPIInput block channel must be changed to
“IMRC monitor”.
Communications
The CCP driver has been re-written in an effort to improve the response
time of the ECU to calibration commands. Previously, at high CPU loading,
the model was given preference when both the model and CCP work
needed to be done, and this meant that CCP response messages could be
delayed and miss their deadlines, causing the calibration tool to complain.
Although this situation can still occur (there is only so much the ECU can
do in a period of time), this problem should be less apparent.
The driver matches the functionality of the existing driver with most CCP
commands, but some CCP commands have been dropped (see the User
Guide, section “CCP compliance” for details).
pj1939_Configuration
Use this block to declare that J1939 will be used on a particular CAN
link, and to define other characteristics of the J1939 messaging.
pj1939_PgRequested
Use this block to determine if a J1939 node has requested a PG.
pj1939_PgReceive
Use this block to receive a fixed-length J1939 and extract the contents
of that message. Similar to the pcx_CANReceiveMessage block.
pj1939_PgTransmit
Use this block to pack data into a fixed-length J1939 message and to
transmit it. Similar to the pcx_CANTransmitMessage block.
pj1939_Dm1Decode
Use this block to determine if a DM1 message has been received from
a J1939 node, and to extract the state (active or not) of a DTC (based
on the SPN, FMI and CM values of the DTC).
pj1939_Dm1Transmit
Use this block to transmit a DM1 message containing the currently
active DTCs, from a table of DTCs declared in a pdtc_Table block.
pj1939_Dm2Decode
Use this block to determine if a DM2 message has been received from
a J1939 node, and to extract the state (previously active or not) of a
DTC (based on the SPN, FMI and CM values of the DTC).
pj1939_Dm2Transmit
Use this block to transmit a DM2 message containing the previously
active DTCs, from a table of DTCs declared in a pdtc_Table block.
Diagnostic trouble codes and read/write parameter IDs are supported over
the ISO-15765 and SAE-J1939 protocols.
pdtc_Table
Use this block to declare a table of DTCs. The table contains a list of
DTCs which can be stored in non-volatile memory and acted on as a
whole (for instance, to clear all DTCs, or to send a SAE J1939 DM1
message).
pdtc_DiagnosticTroubleCode
Use this block to define a DTC. The DTC has a type (of which there is
currently on a J1939 type of DTC), that defines the content of the DTC.
J1939 DTCs have a SPN/FMI/CM identifier which uniquely identifies
the DTC, along with the state of four lamps. The DTC has a state
which, depending on the DTC type, determines whether the DTC is
active or not.
pdtc_ClearAll
Use this block to set all DTCs in a DTC table to the clear state.
pdtc_InactivateAll
Use this block to set all DTCs in a DTC table to the inactive state.
pdtc_Memory
Use this block to record the tables of DTCs in non-volatile memory.
Calibration
1. The firmware has been updated to accept and respond to the CCP
GET_S_STATUS and SET_S_STATUS commands. This change affects
the OpenECU firmware and OpenECU developer software.
3. The installer has been updated to include PROF support files for each
of the OpenECU targets (G400, G800 and G850). This change affects
the OpenECU developer software.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.6.2 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Communications
Now, since the CCP reimplementation (CR 1139 (VI)), this option is no
longer supported and has been removed from the blockset. When a model
is opened in Simulink, there will an error, similar to:
This can be safely ignored. When the model is saved, closed, and
reopened, the error message will no longer be present.
Previously block mask raised an error when trying to use the last bit of
the message.
Previously the selectable set of CAN baud rates was 1000, 500 and 250
kBps.
Now the selectable set of CAN baud rates is as follows: 1000, 500, 250,
125, 100, 83.333, 62.5, 50 and 33.333 kBps.
Examples
Previously there were example models for G400 and G800 targets.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Previously, output signal generated with latest valid duty-cycle, after input
signal had become stationary.
Now, output signal is set to either low or high voltage, after input signal
had become stationary. High if latest valid duty-cycle had the signal high
for most of the time, low otherwise.
Installation
Previously, if an INCA installation had its PROF files removed, then the
OpenECU installer would not correctly install OpenECU PROF files if
asked to.
Now, the OpenECU installer will install the PROF configurations in all
circumstances.
Non-volatile storage
Storage of data across power cycles, including 1-d and 2-d adaptive map
updates using reverse interpolation.
Previously, the array block would incorrectly initialise the working copy of
the default data, if the default data was a vector of floating point values.
• Improve documentation
Corrected and improved description for PNV feature. Added CCP default
baud rate value. Added example for controlling PWM output transition by
toggling duty cycle between 0 and 1.
Target ECU
Improved the labelling of various coil, injector and knock diagrams, added
a little more information to the FAQ, and added a table of software
components against version.
Now the specific HBVRx channel appears in the drop down menu
description.
• HCS12 software
In previous release, reflash over CCP protocol was only supported for
HCS12 application code.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.6.2 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
• HCS12 documentation
Target ECU
for Simulink. See the third party tool requirements section for a list of C
compilers, their versions and versions of Simulink supported by OpenECU
developer software.
The logical outports for the put_Reset block were always typed as
double. This ignored the RTW optimisation setting for logical signals. The
put_Reset block now adheres to the RTW optimisation setting, and will
change the outport types to boolean if the optimisation is set.
Target ECU
• HCS12 software
G850 unit has two HCS12 CPUs, named LSI-HCS12 and eQuizzer-
HCS12. The software running an each HCS12 is composed by an
application and a bootloader, the latter is the same on both CPUs.
The bootloader runs when either FEPS line is asserted or the CRC test on
the application code fails. It is capable of reprogramming the application
code but not itself.
LSI-HCS12 may be flashed with either UNI or LSD (Low Side Drive) driver
application.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.6.1 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Calibration
Previously, any valid sub-system name was passed to the ASAP2 file
with minimal change (spaces were changed to '_' characters). The ASAP2
Now, the DAQ message list transmissions occur in a task with higher
priority that the model tasks, resulting in messaging that mets the CCP
standard timeout value.
Communications
Previously, the CANdb parser could not understand some forms of the
embedded CANdb BA_ statement resulting in both the CANdb receive
and transmit block not showing the requested message signals as inports
and outports.
Examples
Memory emulation
Target ECU
Recently the OpenECU web page has been updated and reference links
have moved. Web page links in the documentation were not updated at
the same time as web page.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Installation
Calibration
Previously, if the model name supplied to the script matched that of a build
in function, the function would fail to create the necessary OpenECU files.
For instance, the model name 'doc' would cause the script to fail.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Non-volatile storage
Storage of data across power cycles, including 1-d and 2-d adaptive map
updates using reverse interpolation.
Previously, the block would incorrectly read the adaptive increment, adapt
and reset inports resulting in a block which would not adapt under
simulation.
Now, the block correctly reads the adaptive increment, adapt and reset
inports, correctly determining the value of each.
Memory emulation
ATI memory emulator support has been added to the software. To make
use of the M6, add up to four pem_AddRateForATIEmulator blocks to the
model, set the sample rate of each to match the sample rates already
present in the model and set the number of ASAP2 items accordingly
(maximum of 256 items per rate). The maximum number of sampled
items can be increased for a model rate by adding more than one
pem_AddRateForATIEmulator block to the same model rate.
Calibration
Previously, the ASAP2 generation script failed due to some of the more
recent R14.x blocks.
Installation
• The installer says only MATLAB R12.1, R13.0 and R13.1 are
supported
Previously, the installer would tell the user that only R12.1, R13.0 and
R13.1 were supported, if it could not find a version of MATLAB to integrate
with, even though R14.1 and R14.2 are supported.
Target ECU
The technical data sheets have been updated to show support for the
knock sensor pins.
Calibration
Communications
Communications
Previously the parser would expect a plain integer at the end of an attribute
statement in the CANdb file but a quoted string would be valid as well.
This resulted in a cryptic message when a model (that refered to a CANdb
file of this form) was updated or built.
Calibration
When a model is loaded, the DDE files are read into the workspace. The
values of these DDEs in the workspace form the calibration values during
a build of a model. Up to now, the size of these arrays and maps defined
in the built ASAP2 file was based on information from the DDE files and
not from the workspace.
The size of arrays and maps defined by the ASAP2 file can now be taken
from either the DDE files or from the workspace. This feature is turned by
unticking the RTW option Re-read build list before building and ticking the
RTW option Derive ASAP2 array and map sizes from the workspace.
Code generation
Now, there is a new RTW option, Continue building if creation of ATI Vision
strategy file fails, which controls whether to stop or continue the build when
the strategy file generation fails.
Communications
The selectable set of CAN baud rates has been changed from 1000, 500
and 250 kBps to include 125, 100, 83.333, 62.5, 50 and 33.333 kBps.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.5.13 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Added details of how to configure two OpenECUs and ATI Vision to work
together, when both ECUs are new. See Appendix B, Supporting tools of
the OpenECU User Guide for more.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Non-volatile storage
Storage of data across power cycles, including 1-d and 2-d adaptive map
updates using reverse interpolation.
To support the new block, there is a new DDE type for arrays which uses
the v character in the DDE naming scheme (similar to the use of the c
character when declaring scalar calibrations).
Previously, very basic models required some signals that RTW could not
optimise away before the model could be built completely.
Now, very basic models can be built without the need to add dummy
functionality.
Calibration
Now, the ASAP2 generator uses a short function name which allows an
ASAP2 file to be generated, regardless of the model name size.
Now, data dictionary entries which match the naming scheme of CR 242,
are not flagged in error when the data dictionary is read.
Previously, the scalar tune block would not simulate correctly. The value
of the block's parameter was incorrectly retrieved from Simulink and this
incorrect value was written to the block's outport. This has been corrected.
Communications
• Update signal outports for the CAN receive blocks whenever a CAN
message is received
Now, under the same circumstances, the CAN receive block for that CAN
ID processes the last received message at each iteration.
Now, the changes made for CR 480 have been removed. The CCP DAQ
list messages may be transmitted outside of the timing requirements of
the ASAP CCP standard.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
The User Guide for the stepper motor block gave insufficient detail relating
to how the stepper block maintained the desired position for the stepper.
The User Guide has been updated to make this clearer.
The User Guide for the quadrature decode blocks lacked a description
of what a quadrature encoder is, and sometimes gave insufficient details
regarding the quadrature signal and block workings. The User Guide has
been updated to address these issues.
Corrected error messages relating to the minimum and maximum raw and
engineering parameters in the pai_AnalogInput block. If the minimum was
greater than the maximum, an incorrect error message was displayed.
Previously, the User Guide and blocks relating to PWM output claimed a
minimum frequency of 10Hz or 2.9Hz. However, the minimum frequency
of the blocks is higher than this. Furthermore, the blocks did not correctly
clip the requested frequency to the minimum frequency possible. As
a result, incorrect PWM signals could be generated if the requested
frequency was below the minimum frequency possible.
Now, the minimum PWM frequency is set to 15.3Hz for all PWM blocks.
The minimum is tested against when the model is updated and when the
model is running on the target.
Previously, the period input block would incorrectly set the timed_out
port every 71 minutes.
Memory emulation
Non-volatile storage
Storage of data across power cycles, including 1-d and 2-d adaptive map
updates using reverse interpolation.
Now the pnv_Status block, under simulation, sets the outputs to the value
of the corresponding simulation inport.
The documentation was not clear about what data was adapted in the
PNV non-volatile memory adaption blocks. OpenECU adapts a copy of the
DDE declared in the Adaptive Scalar (default) or Adaptive Z Data (default)
mask parameter. If the same DDE appears in more than one block, then
OpenECU will adapt the same copied parameter more than once.
Now, if numerical values are typed directly into the block mask an error
message is raised when the Apply or OK button is pressed in the block
mask. The user need to create a DDE item and use its identifier in the
mask parameter.
Target ECU
Previously, the technical specification for the G800 claimed the target has
2 MiB of external Flash. This was incorrect, the G800 has only 1 MiB of
external Flash. The technical specifications have been corrected.
Now, to free some workspace memory, all constant data from a build is
placed in the calibration group.
Communications
Previously, the User Guide documentation for the CANdb transmit block
incorrectly refered to a sample time parameter of the block. There is no
sample time parameter; the block inherits its sample time.
Installation
Previously, the installer could prevent the user from completing the
installation if a compatible version of MATLAB could not be detected.
Target ECU
Now the User Guide no longer lists B42 as supported and the Simulink
blockset does not allow the user to select pin B42 or its corresponding
monitor.
Non-volatile storage
Storage of data across power cycles, including 1-d and 2-d adaptive map
updates using reverse interpolation.
Previously, if the model used large amounts of RAM on a G800, the data
would not be retained across power or reset cycles. This resulted in the
adaptive data being reset to its default values on power up.
Calibration
Whether the build list and data dictionaries are re-read prior to a build or
not is controlled through an RTW option.
Enumerations can now be specified for data dictionary entries and are
extracted to the ASAP2 file. More information can be found in section 5
of the user manual.
Name Description
mpls_model_build_time The date and time when the model was built.
mpls_model_copyright The copyright notice for the model taken from the
put_Identification block.
Name Description
mpls_model_description The model description taken from the put_Identification
block.
mpls_model_name The name of the built model.
mpls_model_version The model version number taken from the put_Identification
block.
mpls_plat_build_time The date and time when the platform was created.
mpls_plat_copyright The platform's copyright notice.
mpls_plat_target The hardware target the model was built to be run on.
mpls_plat_version The version of the platform the model was built against.
What ASAP2 files are generated at the end of a build and what is
contained in the ASAP2 file can be controlled through a number of RTW
options. The RTW options can be accessed by opening an OpenECU
model and selecting the menu option Simulation -> Simulation
parameters... then browsing to the OpenECU options under Real-
Time Workshop. More details are given in the User Guide.
Added a heirarchy of DDEs to the ATI Vision ASAP2 file. The heirarchy
can be navigated by model sub-system, by type (maps, scalars, etc.) and
by DDE prefix.
Code generation
• Extend RTW options to control whether model links are broken prior
to a build
Whether all model links are broken or not is controlled through an RTW
option. Breaking model links has been shown to save RAM with some
versions of RTW. This functionality is only available for MATLAB/Simulink
R12.1.
What build images (S-record files, Intel HEX files, etc.) are produced at
the end of an OpenECU build can be controlled through a number of RTW
options. The RTW options can be accessed by opening an OpenECU
model and selecting the menu option Simulation -> Simulation
parameters... then browsing to the OpenECU options under Real-
Time Workshop. More details are given in the User Guide.
Examples
Previously, the manual only showed how to create DDEs for 1-d map
lookups.
Target ECU
Previously, the User Guide and technical specification showed pin J1-27
and J1-48 on the G400 target as unsupported but they were a selectable
outputs.
Note
The output on pin J1-27 latches when driven on.
Added monitor or feedback fault information for the VPS (pin A39) output
on the G800 target.
Previously, an OpenECU model build which had the RTW "generate code
only" option selected, would not stop after the code was generated and
would attempt to compile the model.
Calibration
The automatic variable has been renamed to use the mpl prefix, like
all other automatic ASAP2 entries. The variable is only automatically
generated if a Tune block is present in the model.
Now, the DDE fields or columns can be declared in any order so long as
the Name field appears first and at a minimum, the following fields must
be present (others are now optional):
DDE files may now contain blank lines and comment lines in much the
same way that unit files can. A comment starts the line using the --
characters. More information is given in section 5 of the User Guide.
The prefix mpl is reserved by the platform. Data dictionary files should
contain named entries using the mpl prefix (with the exception of a few
items).
Code generation
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Previously, if the coil output was on when the engine stopped turning, the
coil output would not be turned off.
Now, the ratio of the tooth immediately before and after the missing tooth
region and the missing tooth region are compared.
Previously, the platform would not schedule coil pulses when the engine
accelerated slowly, leading to failed starts.
Installation
Previously, the release notes and installer gave the wrong command and
path information when an instance of MATLAB could not be found.
Target ECU
• FP (pin B27)
Previously, the constant current output on the G800 (pin A39) did not work.
Requesting a constant current output between 0 and 1A resulted in the
constant current output turning half on or off.
Now, the constant current output can be variably changed between zero
and full scale.
Warning
The generic pin name of A39 and B3 have been corrected as part of
this change. Any SPI output block which used the generic pin name
for A39 or B3 will need to be updated the first time it is used with this
version (or any subsequent version) of the developer software.
• The SPI input block loses the G400 VBAT channel setting
Previously, if the SPI input block was setup to read the internal VBAT
processed analogue input, it would revert to the default channel when the
model was next loaded.
Communications
Now, the CAN bit settings have been corrected and operation verified on
two different vehicle networks.
Added a simple bitwise operator block that takes two signals and applies
one of AND, OR or XOR to the signals. Although later versions of MATLAB
supply a similar block, MATLAB R12.1 does not.
Tested against R14.1 and R14.2 only. Model references, shared utilities
and elapsed timers are not yet supported. See the OpenECU User Guide
for more details.
The existing pins are named after powertrain applications. The names are
not always clear in a generic context or in a powertrain context where the
pin is reused for a different function.
Name Description
AIN analogue input
DIN digital input
AOT analogue output
DOT digital output
Monitor feedback of output
Added a platform version control block where the user may select that a
model must work with:
Command Description
ver openecu Display version information about the installed
OpenECU Simulink blockset.
help openecu Display information about the available OpenECU
commands.
info openecu Display the changes to the OpenECU Simulink
blockset for each version.
the OpenECU and PixCal User Guides, the change log for each version of
the OpenECU Simulink blockset, the example models, Simulink blockset
library models, and to various web pages including the OpenECU update
web site.
create_openecu_model(...)
• Added block to show the model rates and the model rate colours
Added a block which shows the model rates and the model rate colours.
The model must be updated twice for the block to show the model
information.
Calibration
Previously, only one ASAP2 file was generated at the end of a build for
the calibration tool specified in the pcp_CCPConfiguration block.
Now, an ASAP2 file is generated at the end of the build for each supported
calibration tool and the setting in the pcp_CCPConfiguration block has
been removed.
As well as a flat list of all data dictionary elements, the generated ASAP2
file now contains a set of kinds. The kinds sort data dictionary elements
based on model hierarchy, on type and on prefix, making it easier to find
related elements.
This is a preliminary feature and may change in the future. In order for
this feature to work, the inputs to a map lookup must be named with a DD
entry. If a block divides the signal so that the signal to the map is unnamed,
the feature will not output the map lookup information to the ASAP2 file.
Communications
The Simulink blockset now supports the use of Vector CANdb files in the
CAN receive and transmit blocks.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Added the average engine speed and acceleration calculated over 720°
or more, to the existing engine speed and acceleration blocks.
A set of blocks have been added to support knock detection (using the
HIP 9011 device).
Installation
• Reimplement installer
• uninstall correctly
These issues and others have been addressed by re-writing the installer.
• pan_EngineConfig
• pdx_FrequencyInput
• pdx_PeriodInput
• pdx_QuadrateDecodeInputAndFrequencyInput
• pnv_adaptive_checksum
• pnv_adaptive_map1d
• pnv_adaptive_map2d
• pnv_adative_scalar
• pnv_status
• pdx_DigitalInput
• pdx_DigitalOutput
• pdx_PWMOutput
• pdx_PWMVariableFrequencyOutput
Warning
Any model loaded using this version of the platform will lose the
inversion information of each of those blocks.
Any model that uses these blocks and contains an inversion, will
need to reset the inversion setting after loading the model for the
first time.
• pnv_AdaptiveChecksum
• pnv_AdaptiveMap1d
• pnv_AdaptiveMap2d
• pnv_AdaptiveScalar
• pnv_Status
• put_Calmap1d
• put_Calmap2d
• put_CalvalTune
• put_Calmap1dTune
• put_Calmap2dTune
Changed various inport and outport names to reflect actual usage (e.g.,
replace real_value with duty_cycle in pdx_pwmoutput block).
Calibration
Previously, the ASAP2 generator would output conversion rules for two
entries that might not be used by the reset of the ASAP2 file. In this case,
when the file was read into INCA, INCA would generate a warning for each
unused entry.
Now, the ASAP2 generator only outputs used conversion rules and INCA
no longer reports any warnings.
Data dictionary error handling has been extended to read a units file (if
available) and raise an error if any DDE does not use one of the units from
that file. If no units file exists, no checks are made on the units of any DDE.
The ASAP2 entries for tune and adaptive items were previously limited to
the first element of any map and were always of a specific type. These
ASAP2 entries are now fully formed.
Previously, reading a buildlist with a missing data dictionary file would lead
to a fatal error.
Previously, the load time for large data dictionaries could be lengthy.
Code generation
Previously, if inf or -inf were used in a model, an OpenECU build would not
complete (an error was raised that noted various variables were missing).
Now, the RTW rt_nonfinite.c file is linked with the model objects and
rt_InitInfAndNaN() is called to initialise the missing variables prior
to model start.
Communications
Warning
Any model using this block will loose any CAN baud settings. These
settings must be reset the first time they are used with this version
of the platform.
The following CAN blocks have changed to include a drop down for
selecting a CAN bus:
• pcx_CANConfiguration
• pcp_Configuration
• pcx_CANReceiveMessage
• pcx_CANTransmitMessage
Warning
Any model using these blocks will loose any CAN bus settings.
These settings must be reset the first time they are used with this
version of the platform.
Examples
The set of examples has been extended from the step1 model to include
the following:
Name Description
two_pot_demo Similar to step1 but shows how to combine more
than one input to achieve a similar effect.
multi-rate An example of how to exchange information
between parts of a model that run at different
rates.
fixed angular An example of how to configure a model to read
from a crank wheel and generated fixed injector
and spark outputs.
openecu_examples
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Now, the platform angular ASAP2 entries are only created if the model
has angular functionality enabled.
Now, if angular functionality is not selected then around 800 bytes of RAM
is freed up.
Non-volatile storage
Storage of data across power cycles, including 1-d and 2-d adaptive map
updates using reverse interpolation.
Previously, if Flash storage was selected for adaptives and the pnv_Status
block was ordered after other adaptive blocks, then adaptives would not be
stored in Flash correctly and would not be retained across power cycles.
Target ECU
Previously, the I/O mapping made monitors for pins 2 and 6 available.
These were never intended to be used and provided no feedback. These
monitors have been removed.
• Cache target and target I/O information to speed model load and
update
Now, tests on a model with lots of I/O show the caching has reduced the
load time from 45 seconds to 25 seconds. Further work to be done to
improve other aspects of using find_system.
Calibration
Up to the first 5 ASAP2 entries which could not be found in the final image
are displayed at the end of a build.
Support has been added to select a generic ASAP2 output or support for
the ETAS INCA or ATI Vision calibration tools.
Support has been added for generating ASAP2 statements which support
the ETAS INCA tool (tested against version 5.1.2 (hot-fix 3)). These
statements define the CCP parameters (CAN message identifiers, logical
station address etc.) and the memory regions.
Support has been added for generating ASAP2 statements which support
the ATI Vision tool (tested against version 1.9.1). These statements define
the CCP parameters (CAN message identifiers, logical station address
etc.) and the memory regions.
When importing the ASAP2 file into ATI, do not select any strategy presets.
Code generation
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Support has been added for a stepper motor output block. A description of
its functionality can be viewed by selecting the block's help or by reading
the OpenECU User Guide.
Added the ability to update an already scheduled injector pulse more than
once per engine cycle. The updates include changes to dead time, flow
time and start angle.
If the update happens before the pulse has already started, the start
angle and duration can change. If the update occurs during the pulse, the
duration can be changed. If the update occurs after the pulse has been
delivered, and the duration has been extended, a new post pulse will be
started.
Non-volatile storage
Storage of data across power cycles, including 1-d and 2-d adaptive map
updates using reverse interpolation.
Adaptive constants, 1-d and 2-d maps can now be stored in battery backed
RAM (as before) or to Flash storage.
• Adaptive blocks don't simulate correctly when more than one of the
same type exists in a model
Now, each adaptive block separates its work data making each adaptive
block independent.
Previously, under simulation, the result of a table lookup would be the first
z-data element regardless of the x and y input values.
Calibration
Previously, a change forced the build list to have the same file name as
the model filename - a restriction on previous functionality.
Code generation
Now, the ASAP2 file generation always occurs. A side effect of this is that
the user is asked to reload the build list each time a build starts.
Previously, various files are generated in the same directory as the built
model. These included various versions of the image files and some
temporary files from the ASAP2 generation.
File Description
model_name.a2l ASAP2 file
model_name_strategy_cal_image.s37 S-record of built model
model_name_strategy_cal_image.hex Intel HEX record of built
model
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Previously, the block allowed odd numbers of cylinders, but this would
cause supporting scripts to fail. At the moment, only even numbers of
cylinders are supported. Odd numbers of cylinders can be configured by
selecting 1 more cylinder in the pan_EngineConfig block but not wiring it
into the system.
Previously, RTW would generate code which relied on an absolute time for
the pai_AnalogInput block under certain circumstances. OpenECU does
not maintain absolute time (as it will eventually saturate a floating point
variable and fail, see CR #357), so the analogue input block would fail
when determining fault conditions.
Now, RTW does not generate code which relies on absolute time and fault
detection works.
Previously, as the engine speed increased then the start and end angles
for injector and coil pulses would become less reliable. Part of the problem
is in the hardware filtering of the crank input signal (a linear increase of up
to 1° happens between 100 RPM and 8000 RPM) and part of the problem
was due to the way the processor time stamped crank teeth edges.
Now, although the hardware filtering still introduces a lag, the time
stamping of crank teeth edges has been improved significantly (see CR
#384).
Previously, the ECU would occasionally produce an initial fuel pulse after
the main injection pulses had started.
Calibration
Previously, a clean install did not add a Tune region to the ATI Vision INI
file (if present).
Code generation
Previously, if a model did not contain an adaptive table block, the build
would fail.
Installation
Previously, an executable file was missing from the installer. This resulted
in a failure to load an OpenECU model.
model is running and reuse this information across power cycles (by
applying battery power to the module's keep alive pin).
The blocks are stored in the "Module Non-Volatile Memory" section of the
OpenECU Simulink blockset. See the installed help files for more.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Previously, when the engine configuration block is copied from the library
to a model, a large number of errors are displayed in the MATLAB
command window. This was due to empty mask parameters in the block.
Code generation
Previously, the build process only created Motorola S-records of the model
image.
Now, the build process produces Motorola S-records and Intel Hex files of
the model image. The ATI Vision calibration tool can read both S-records
and Hex files, the ETAS INCA calibration tool can read Hex files.
Target ECU
Now, if a model has an engine configuration block, all use of the CID
(G400) and CID1 (G800) channels are raised as an error, but use of the
CID2 (G800) channel is allowed. Multiple use of the CID2 channel still
correctly results in an error.
Calibration
Code generation
• Move table lookup and interpolate source code into platform library
Examples
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Calibration
Previously, all floating point values were specified to have 4 digits after
the decimal place.
Now, the accuracy column is used to determine how many digits should
be displayed by the calibration tool. For instance, the accuracy values
100.01, 0.01 and .01 will cause the calibration tool to use 2 digits after the
decimal point. If the column is left empty, the default is 4 decimal digits
for a floating point value and is unchanged from previous functionality for
other data types.
The PixCal manual is included with the OpenECU platform installer but is
intended for reference only. To purchase the tool and Simulink blockset,
or for further details contact Pi (see section 1.3).
Communications
Now, OpenECU will allow sessions that match the station address given
in the CCP configuration block. If there is no CCP configuration block in
the model, reprogramming mode defaults to a station address of zero.
OpenECU devices that have never been programmed before default to a
station address of zero.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.1.0 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Examples
Calibration
Now, OpenECU continues to transmit data while the user is changing the
calibration. Further investigation will be required to determine if the CAN
data stream continues to transmit uninterrupted as required.
Communications
1. use of the new model settings (even through not all of the model code
or calibration was successfully downloaded);
2. use of default settings (CRO: 1785, DTO: 1784, Station ID: 0, CAN bus:
0, CAN bus baud rate: 500 kBps).
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.1.0 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Previously, the ASAP error file would contain a reference to the internal
platform signal phwl_synced_with_crank. This signal has been renamed,
hence the error.
Now, the ASAP tools correctly reference the signal name and the warning
has been removed.
Communications
• Updates
Added better VectorDB parsing; added support for bitwise operators (and,
or and exclusive-or); updated version of language support to 2 (the output
of the CANTranslator tool and the platform must match before the platform
will run the translator code).
Affects Gateway
Target ECU
Communications
• Updates
Allow a translation to use one Vector DB file to declare both receive and
transmit messages; extend the language to distinguish which message is
meant when it is declared as both received and transmitted; allow more
than one Vector DB file to refer to the same CAN bus nodes.
• Fix error when more than the maximum receive messages were
declared
The platform would crash if it was asked to allocate more than maximum
receive messages per bus, or in total.
The translation would not invert a signal if the not operator was applied to
it, i.e., false was converted to false, true was converted to true.
• Accept Vector DB files with signal lengths > 32 bits, but reject their
use in the translation
Code generation
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Target ECU
Code generation
Communications
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Previously, when the injector or coil monitor was used and the model
contained an engine configuration block, the stronger channel testing
would reject the use of the monitor channel, due to its textual name.
Now, the injector and coil monitors can be used whether the model has
angular functionality or not.
Target ECU
Previously, GSS2 monitor was accidentally removed from the I/O channel
selection.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Communications
The signal must have type uint8_T and must be exported global
(otherwise, the platform will raise an error when attempting to build). If the
signal is present in the model, the build process generates an ASAP entry,
otherwise no ASAP entry is generated.
When set, the following CCP operations will not be honoured (but other
implemented CCP operations are):
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
All angular channels have been added to the I/O mapping. CPS and CID
can now be used in most digital input blocks, and INJx and CDx can now
be used as digital and PWM outputs.
To support this, the following model checks have been added. The model
does not start to build if any of these tests raises an error.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Previously, only I/O channels on the same block type were tested to be
unique.
Calibration
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.0.4 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
The CCP settings defined in a model are now shared with the
reprogramming software. On a new ECU or an ECU without application
code (erased or corrupted state), the reprogramming software uses a
default of 500 kBps on CAN-0 (CRO and DTO of 1785 and 1784). On
an ECU with a valid application, the reprogramming software will use the
same CCP settings as the model application code.
Note
To enable this functionality, the ECU's firmware must be upgraded
to revision 1.0.4 or later. To upgrade the ECU's firmware please
contact OpenECU technical support as described in Appendix A,
Contact information.
Communications
The previous bit timing settings for a G400 device at 1000 kBps CAN were
incorrect. This fix adjusts the timing and has been tested using an ATI hub.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
The underlying TPU frequency input function has been changed from
PPWA to PTA. This provides a wider timing range than before (32-bit
accumulation of pulses rather than 16 bit) and the flexibility to accumulate
multiple pulses to average over.
The block mask for the frequency input block has changed to remove the
minimum pulse period (used to mask noise) and to add a timeout duration
(above which if the input signal has not transitioned through a complete
pulse, the block shows the signal as stuck).
The overall timing rate of the TPU (which includes more than the
PTA function) is exposed through the mplc_tcr1_scalar calibration. The
calibration is 16 bits long, and can take any even value between 2 and
128. A special case of 0 represents the default scaling . The following table
shows the timing rate for a variety of values.
Target ECU
• G400 CDA and CDB pins are now available as PWM outputs
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Whether the platform has been the crank input shaft turn or not, is now
available as an outport from the pan_EngineConfig block. The condition
for changing from stopped to turning is to have detected three teeth
transitions within 350ms.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
A period measurement block is now available as part of the block set. The
period measurement block provides a low time and a high time of an input
pulse train. See the online help for more.
Whether the platform is synchronised to the crank shaft input signal or not,
is now available as an outport from the pan_EngineConfig block.
Whether the platform is synchronised to the cam shaft input signal or not,
is now available as an outport from the pan_EngineConfig block.
If you wish to modify the input characteristics of HEGO filtering; CID, OSS,
CPS, TSS, VSS for VRS or Hall effect; or the NOMI and MAXI trip points
please contact Pi OpenECU support.
Target ECU
Calibration
With certain automatic platform ASAP entries, the generated ASAP file
would not contain necessary record descriptions to complete the definition
of those entries. This in turn would cause ATI to crash when it read the
ASAP file.
This error occurs with the OpenGateway tool. When the OpenGateway
configuration file refers to a valid ASAP entry from a pre-built model, it
reports that it cannot find its address during linking.
Examples
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Help files for the following blocks are available online: engine configuration
block, frequency input block, period input block, quadrature decode input
block, identification block, automatic platform ASAP entries.
Communications
Previously, the top most bit of any extended CAN identifiers was forced to
zero, causing problems receiving and transmitting CAN messages where
the top most bit was one.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Now, user can select n-m, where n ranges from 36 to 60 and m ranges
from 1 to 2.
Now, n-2 case acts in the same way as the n-1 case, when synchronised
with the cam wheel or not.
Code generation
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Previously, the PWM output block took the requested frequency as a block
parameter, making the frequency fixed at build time.
Input/output drivers
Each target ECU is designed with a different set of input and output
conditioning circuitry. Interfaces provide access, from simple low-side digital
output drive to stepper motor output drive and crank trigger wheel input
decoding.
Each MIOS PWM output can scale the system clock. This feature is used
to generate as much resolution in each PWM output as possible. Under
certain circumstances, an incorrect clock scalar would be calculated,
resulting in a coarser resolution that possible. When this occurred,
the PWM signal would have a signal that approximated the requested
frequency and duty cycle.
website
Support.OpenECU.com [http://Support.OpenECU.com]
If you still have questions after searching through the FAQ, or want to discuss sales or
proposals, you can contact main office:
Tel
+1 734 656 0140
Fax
+1 734 656 0141