Architectures Changelog
Notation
A line prefixed by []
describes a change that only applies on a
specific configuration:
[Core Engine Capability/Instruction Set/C Compiler]
:
Core Engine Capability
Mono
: Mono-Sandbox (default)Tiny
: Tiny-SandboxMulti
: Multi-Sandbox
Instruction Set
ARM9
: ARM ARM9Cortex-A
: ARM Cortex-ACortex-M
: ARM Cortex-MESP32
: Espressif ESP32RX
: Renesas RXx86
: Intel x86
C Compilation Toolchain
ARMCC5
: Keil ARMCC uVision v5. See also ARM Linker Specific Options.Clang
: ClangGCC
: GNU GCC Compiler. See also GNU LD Specific Options.IAR
: IAR Embedded Workbench for ARM. See also IAR Linker Specific Options.QNX65
: BlackBerry QNX 6.5QNX70
: BlackBerry QNX 7.0
[8.2.0] - 2024-09-19
Core Engine
[Multi] - Increased execution quota precision
[Multi] - Added function
LLKERNEL_quantaConsumed(int32_t quanta)
inLLKERNEL.h
, allowing a native function to increment the quantum counter of the current execution context.[Multi] - Fixed watchdog which prevents the Core Engine to stop because of a pending thread.
[Multi] - Added new functions to Low Level API
LLMJVM_MONITOR_impl.h
for CPU Control monitoringvoid LLMJVM_MONITOR_IMPL_on_quota_reset(int32_t context_id, int32_t quota)
: called by the Core Engine when the quota for an execution context is updated.void LLMJVM_MONITOR_IMPL_on_quota_reached(int32_t context_id)
: called by the Core Engine when the quota for an execution context has been reached.void LLMJVM_MONITOR_IMPL_on_quantum_counters_reset()
: called by the Core Engine when all the quantum counters are reset to zero.void LLMJVM_MONITOR_IMPL_on_thread_added_to_context(int32_t thread_id, int32_t context_id)
: called by the Core Engine when a thread is added to an execution context.
Integration
Add Architecture tools compatibility with SDKs running on JDK 17 and JDK 21.
Fix message to correctly display the BSP location, ensuring compatibility with both SDK 5 and SDK 6.
Simulator
[Multi] - Fixed, in
KF
, wrong assertion thrown when starting a Kernel on the Simulator with a pre-installed Application, occurring only when assertions were enabled on Simulator.
[8.1.1] - 2024-06-17
Core Engine
[Multi] - Fixed call to
LLKERNEL_IMPL_freeFeature(int32_t handle)
with handle0
when an FO file is corrupted or not compatible with the Core Engine.
Foundation Libraries
Fixed unexpected java.lang.NullPointerException when a runtime exception or a native exception occurs in a try-with-resources block, and the method AutoCloseable.close() throws an exception.
Fixed Throwable.getSuppressed() which exposes a private mutable member.
Fixed Throwable.printStackTrace() which does not print suppressed exceptions.
Fixed Throwable.printStackTrace() which erroneously printed the thread name.
Integration
[ESP32] Fixed copy of
microejapp.s
into the C project.Fixed properties defined in VEE Port
release.properties
file not passed to the SOAR.Fixed Virtual Device that could not override HIL options for debugging the Mock.
Fixed build and run scripts end-of-line (EOL) characters if a Linux VEE port is built on Windows.
Removed warning messages related to missing HIL debug options when running the Simulator.
Simulator
Fixed breakpoint not taken into account by IntelliJ Idea’s debugger when a class is not loaded during the startup.
Fixed boostrap thread which could be visible in the thread list when debugging.
Fixed debugger error when clinit code takes time to execute.
Fixed debugger stuck when stepping over another breakpoint in Eclipse.
Fixed missing traces when debug logs are activated.
SOAR
[Multi] - Fixed the 64 KB size limitation for Java Strings section that caused an
AssertionError
in the SOAR when building a Sandboxed Application.
Tools
Fixed Resource Buffer Generator that keeps a lock on input files and prevents them from being deleted.
[8.1.0] - 2023-12-22
This Architecture version update introduces the following main features:
Updated Feature installation flow to support Code chunks. A Feature can now be installed to ROM without the need of the Code size in RAM.
Support for debugging ASLR Executables
Support for debugging MCU targets
Support for debugging Multi-Sandbox Executables
Updated the options to select the Core Engine capability. See Migrate Core Engine Capability Configuration.
Added the VEE Port option
com.microej.runtime.capability
Removed the
Multi Applications
module from the platform configuration fileValue of the
BON
constantcom.microej.architecture.capability
is nowmono
instead ofsingle
when the Core Engine capability is Mono-Sandbox.
Support of THALES Sentinel License Manager
Added a default application for early-stage VEE Port integration without the need of a SDK license.
If you plan to migrate a VEE Port from Architecture 8.0.0
to Architecture 8.1.0
, consider the Architecture 8.0.0 Migration chapter.
Core Engine
Added option com.microej.runtime.core.gc.markstack.levels.max to configure the maximum number of elements of the Garbage Collector’s mark stack.
In
sni.h
, clarified the behavior ofSNI_createVM()
,SNI_startVM()
, andSNI_destroyVM()
when restarting the Core Engine. See also the Core Engine implementation section.Fixed missing default initialization of the options core.memory.javaheap.size and core.memory.immortal.size.
[Multi] - Added a check when
LLKERNEL_IMPL_getFeatureHandle()
returns0
. Corresponding error code isLLKERNEL_FEATURE_INIT_ERROR_NULL_HANDLE
.[Multi] - Removed Feature installation in RAM (legacy In-Place Installation mode). See Migrate Your LLKERNEL Implementation.
[Multi] - Updated Feature installation boot sequence: all Feature handles are now retrieved prior to initializing them.
[Multi] - Updated check of Kernel UID at the beginning of Kernel.install(java.io.InputStream), before allocating Feature sections.
[Multi] - Updated the specification for
LLKERNEL_IMPL_allocateFeature()
function to return the handle0
if the Feature could not be allocated.[Multi] - Updated the specification for
LLKERNEL_IMPL_getAllocatedFeaturesCount()
function to ensure that it returns a valid result at any time, even if it is only called by the Core Engine during startup.[Multi] - Updated the specifications for
LLKERNEL_IMPL_getFeatureAddressRAM()
andLLKERNEL_IMPL_getFeatureAddressROM()
functions to returnNULL
when an incorrect index is provided. This change is only forLLKERNEL
TCK purposes, as the Core Engine only invokes these methods with valid indices.[Multi] - Added an option to enable RAM Control at VEE Port build (disabled by default).
Foundation Libraries
Fixed, in
BON
, ResourceBuffer.readString() which does not increment correctly the position in the buffer.Fixed, in
BON
,-1
returned by ResourceBuffer.available() instead of0
when the end of the buffer is reached.Fixed, in
BON
, invalid value returned by ResourceBuffer.available() on the Simulator.Fixed, in
BON
, potential crash when calling ResourceBuffer.close() several times on aResourceBuffer
loaded with the External Resources Loader.
Integration
Updated Architecture End User License Agreement to version
SDK 3.1-B
.Removed warning messages related to missing KF options when running the SOAR or the Simulator in Mono-Sandbox.
Simulator
Added compatibility with IntelliJ IDEA IDE to debug applications.
Added message when waiting for a connection in debug mode.
Fixed debugger verbose mode.
Removed bootstrap thread from the debugger vision.
Fixed debugger suspend count on threads handling.
Fixed stop issue on static method entry breakpoint.
SOAR
Fixed trimming of leading or trailing spaces in immutable strings
[Multi] - Fixed integration of the bytecode verifier in Feature mode.
[Multi] - Improved the error message thrown when no Feature definition file is found and displayed the classpath to better guide developers in identifying potential causes.
Tools
Updated SOAR and VM Model Readers
Added support to retrieve the Core Engine memory regions (used by the VEE Debugger Proxy to generate a memory dump script (see Generate VEE memory dump script))
Added an API to relink the SOAR Model objects, i.e. change their associated addresses (used by the VEE Debugger Proxy to support ASLR Executables debug)
Added new APIs to load Kernel and Features SOAR Model objects (used by the VEE Debugger Proxy to support Multi-Sandbox Executable debug)
[ARMCC5] - Fixed SOAR Debug Infos Post Linker tool to throw a dedicated error when the SOAR object file does not contain the debug section.
[Multi] - Fixed missing first null entry in the symbol table generated by the Firmware Stripper.
[8.0.0] - 2023-06-27
Note
This Architecture requires SDK version 5.7.0
or higher (see SDK Version).
This major Architecture version update introduces the following main features:
Added compatibility with dynamic linkers enabling Address Space Layout Randomization (ASLR).
Added Feature build on device. For that, the SOAR has been deeply redesigned and split into multiple phases. The most noticeable change is about the SOAR Information File that is now composed of 3 files.
Added Feature portability. The same
.fo
file can now be installed:On any Executable built from the same Kernel Application (
microejapp.o
). The VEE Port C code can be modified and relinked without requiring to rebuild the.fo
file anymore.On different Kernel Applications provided some conditions are met. Basically, a
.fo
built on Kernel 1 can be installed on Kernel 2 if the exposed Kernel APIs are left unchanged. See Feature Portability Control for more details.
Redesigned Feature installation flow. A Feature can now be installed in any byte-addressable memory mapped to the CPU’s address space, including ROM. For that,
LLKERNEL
Low Level APIs have been fully rewritten. See Feature installation for more details. Former Feature installation in RAM is preserved and is now called In-Place Installation. Former static Feature installed by the SDK (using the Firmware Linker tool) is removed in favor of Feature persistency at boot.
If you plan to migrate a VEE Port from Architecture 7.x
to Architecture 8.x
, consider the Architecture 7.x Migration chapter.
Core Engine
Renamed Core Engine sections to fully respect the ELF standard naming convention.
Removed check when passing a non-immortal array in SNI if VEE Port option
core.sni.nonimmortal.access
was set tofalse
.Removed
LLBSP_isInReadOnlyMemory
in Core Engine Abstraction Layer (LLBSP.h
file).Clarified
LLMJVM_IMPL_getCurrentTime
API contract in Core Engine Abstraction Layer (LLMJVM_impl.h
file).Updated
Trace
C library from version1.0.0
to2.0.0
. See Migrate Trace C Library Usage.Renamed header file
trace.h
intoLLTRACE.h
to avoid filename conflicts.Renamed C functions
TRACE_xxx
intoLLTRACE_xxx
.
Fixed potential crash when Core Engine is restarted after a call to System.exit(int).
[Multi] - Added option com.microej.runtime.kernel.dynamicfeatures.max to configure the maximum number of Features that can be dynamically installed.
[Multi] - Added option com.microej.runtime.kf.waitstop.delay to configure the maximum time allowed for a Feature to stop.
[Multi] - Fixed missing release of allocated Feature buffers after Core Engine exits (In-Place Installation mode).
Foundation Libraries
Updated
KF
to version1.7
:Added heap memory control: Module.getAllocatedMemory(), Kernel.setReservedMemory() and Feature.setMemoryLimit() methods.
Added load of a Feature resource (Feature.getResourceAsStream() method).
Updated
KF
dynamic loader to support the new Feature installation flow.Removed Foundation Libraries API Jars and Javadoc.
Removed Unknown product - Unknown version comment in auto-generated Low Level API header files.
Removed the
Serial Communication
modules group, including the Foundation LibrariesECOM
andECOM-COMM
. See Migrate ECOM-COMM Module.Removed the deprecated
Device Information
module group, including the Foundation LibraryDevice
. See Migrate Device Module.Fixed Option(checkbox): Embed UTF-8 encoding defaults to
true
when building a Standalone Application using MMM.Fixed
KF
to call the registered Thread.UncaughtExceptionHandler when an exception is thrown in FeatureEntryPoint.stop().Fixed unexpected java.lang.NullPointerException thrown by the
skip
method of an InputStream returned by Class.getResourceAsStream(). This error only occurs with a resource loaded by the External Resource Loader.Fixed the behavior of
available
,read
,skip
,mark
,reset
andclose
methods of an InputStream returned by Class.getResourceAsStream() and previously closed.Fixed the
LLEXT_RES_read()
Low Level API specification (the buffer passed cannot benull
).[Mono] Fixed an unexpected
FeatureFinalizer
exception or infinite loop when a Standalone Application touches aKF
API in some cases.[Tiny] Fixed an unexpected SOAR error when a Standalone Application touches a
KF
API.[Multi] Fixed exception thrown when calling Kernel.removeConverter().
[Multi] Fixed an unexpected
NullPointerException
thrown byej.kf.Kernel.<clinit>
method in some cases.[Multi] Fixed KF watchdogs not triggered correctly when several expire at the same time.
Integration
Added support for resolving Front Panel in Workspace before the included Front Panel.
Added Memory Map Scripts for Eclasspath
Math
,Formatter
andDateFormat
.Updated default value of VEE Port configuration option
vendorURL
.Updated Memory Map Scripts for
MicroVG
library.Updated Memory Map Scripts for Eclasspath
Executor
library.Updated output Map file location to
soar/[application_main_class].map
(formerly namedSOAR.map
).Removed unused
SOAR.o
file. It is available atbsp/microejapp.o
.Renamed MicroEJ launch Build dynamic Feature to Build Feature.
[Multi] Fixed the SOAR output files from being deleted when the Clean intermediate files option is enabled.
Simulator
Added Mock debug mode.
Added missing default values for the properties
s3.slow
,console.logs.period
, ands3.hil.timeout
when launching the Simulator from the command line.Added a check for unsupported access to the Class instance of a primitive type (e.g.
byte.class
).Added HIL Engine debug logs when verbose option is enabled.
Added log of the Mock classpath when verbose option is enabled.
Added log of Mock resolution errors (class or method not found).
Added support for mark/reset on an InputStream returned by Class.getResourceAsStream().
Fixed “Internal limits” error in HIL engine when too many array arguments are used at the same time by one or several native methods.
Fixed slow reading with an array of bytes of the input stream returned by Class.getResourceAsStream(String).
Fixed configuration of the Java heap size using Option(text): Java heap size (in bytes). The legacy
core.memory.javaheapsum.size
option is not more supported.Fixed Option(text): Immortal heap size (in bytes) default value when running a Standalone Application using MMM.
Fixed stop of the HIL Engine if Simulator was terminated before the connection is established.
Fixed load of the Mock classes in the classpath order (left-to-right).
Fixed the missing error check when loading an immutable file referencing an external object id (the
importObject
directive is required).Fixed initialization of transparent images in the Front Panel when the initial color is not fully opaque. (introduced in version 7.11.0)
[Multi] Fixed the computation of object sizes. The 4-byte KF header was missing.
SOAR
Added support for Resource alignment constraint.
Added a check for legacy
.system.properties
files in the Application Classpath. The build process is stopped and an error is reported. See Migrate Legacy System Properties Files.Added a check for unsupported access to the Class instance of a primitive type (e.g.
byte.class
).
Tools
Updated the serial PC connector to JSSC
2.9.4
, including support for macOS aarch64 (M1 chip).Removed Test Suite Engine. If needed, the Test Suite Engine is available in the Build Kit.
Removed Immutables NLS library. Use Binary NLS add-on library instead.
Fixed an incorrect generation of a debug file beside the memory file when launching the Heap Dumper.
[Multi] Added Heap Dumper support for dynamically installed Features.
[maintenance/7.20.5] - 2024-05-24
Foundation Libraries
Fixed, in
BON
, ResourceBuffer.readString() which does not increment correctly the position in the buffer.Fixed, in
BON
,-1
returned by ResourceBuffer.available() instead of0
when the end of the buffer is reached.Fixed, in
BON
, invalid value returned by ResourceBuffer.available() on the Simulator.Fixed, in
BON
, potential crash when calling ResourceBuffer.close() several times on aResourceBuffer
loaded with the External Resources Loader.
[7.20.1] - 2023-04-10
Foundation Libraries
Fixed Float.parseFloat(…) and Double.parseDouble(…) that don’t throw a NumberFormatException when the given string is empty.
Fixed float and double to string conversions that contain an unecessary
+
sign in the exponent.
[7.20.0] - 2023-04-04
Known Issues
Float.parseFloat(…) and Double.parseDouble(…) don’t throw a NumberFormatException when the given string is empty.
Float and double to string conversions contain an unecessary
+
sign in the exponent.
Core Engine
Added the capability to customize implementation of the function that performs an atomic exchange operation.
[ESP32] - Remove default implementation of the function that performs an atomic exchange operation. The Core Engine abstraction layer implementation has to implement the C function
int32_t LLBSP_IMPL_atomic_exchange(int32_t* ptr, int32_t value)
.
Foundation Libraries
Fixed uninitialized pointer access in the External Resources Loader, which can cause a system crash when reading data from a resource.
[7.19.0] - 2023-02-16
Known Issues
Float.parseFloat(…) and Double.parseDouble(…) don’t throw a NumberFormatException when the given string is empty.
Float and double to string conversions contain an unecessary
+
sign in the exponent.
Core Engine
Added the capability to customize implementation of the functions that convert strings to float/double values and vice-versa.
[Cortex-A/Clang] - Fixed wrong float/double arguments passed to the SNI natives.
Tools
Removed dependency on GNU
ar
program to createmicroejruntime.a
archive file.
[7.18.1] - 2022-10-26
Integration
Fixed License Manager issue with JDK 8u351 or higher (
[M65] - License check failed [tampered (3)].
).
[7.18.0] - 2022-09-14
Integration
Added support for Windows 11.
Added License Manager support for macOS aarch64 (M1 chip).
Removed warning when launching Applications or Tools with JDK 11 (Warning: Nashorn engine is planned to be removed from a future JDK release).
SOAR
Added grouping of all immutables objects in a single ELF section.
[7.17.0] - 2022-06-13
Core Engine
Fixed potential premature evaluation timeout when Core Engine is not started at the same time as the device.
Fixed potential crash during the call of
LLMJVM_dump
when printing information about the Garbage Collector.Added new functions to Low Level API
LLMJVM_MONITOR_impl.h
(see Advanced Event Tracing):void LLMJVM_MONITOR_IMPL_on_invoke_method(void* method)
: called by the Core Engine when an method is invoked.void LLMJVM_MONITOR_IMPL_on_return_method(void* method)
: called by the Core Engine when a method returns.
[Cortex-M] - Added support for MCU configuration with unaligned access traps enabled (
UNALIGN_TRP
bit set inCCR
register).
Foundation Libraries
Updated
KF
to version1.6
:Added Kernel.canUninstall() method.
Integration
Fixed some Architecture tools compatibility issues with SDKs running on JDK 11.
Fixed missing default value for ShieldedPlug server port when running it with MMM (
10082
).Updated Memory Map Scripts for
ej.microvg
library.Updated Architecture End User License Agreement to version
SDK 3.1-A
.
Simulator
Added class file major version check (<=51). Classes must be compiled for Java 7 or lower. Set the options property
S3.DisableClassFileVersionCheck
tofalse
to disable this verification.Added native method signature in the stack trace of the UnsatisfiedLinkError thrown when a native method is missing.
Fixed HIL engine method
NativeInterface.getResourceContent()
that generates a runtime error in the Simulator.Fixed error “Internal limits reached … S3 internal heap is full” when repeatedly loading a resource that is available in the classpath but not referenced in a
.resources.list
file.Fixed OutOfMemoryError when loading a large resource with Class.getResourceAsStream().
Fixed
A[].class.isAssignableFrom(B[].class)
returningfalse
instead oftrue
whenB
is a subclass ofA
.Fixed potential “Internal limits reached” error when an OutOfMemoryError is thrown.
Fixed error “Cannot pin objects anymore” when passing repeatedly immutable objects to a native method.
Fixed properties not passed correctly to the mocks when the Virtual Device is executed from a path that contains spaces.
[Multi] - Fixed an unexpected error when
kernel.kf
file is missing and KF library is used: “Please specify a ‘kernel.kf’ file to enable Kernel & Features semantics.”[Multi] - Fixed type
double[]
not recognized inkernel.api
file.
SOAR
Fixed internal error when using a BON constant in an if statement at the end of a
try
block.Fixed internal error when a
try
block ends with anassert
expression while assertions are disabled.[Multi] - Raise a warning instead of an error when duplicated
.kf
files are detected in the Kernel classpath. Usual classpath resolution order is used to load the file (see MicroEJ Classpath).[Multi] - Fixed SOAR error when building a Feature that uses an array of basetypes that is not explicitly declared in the
kernel.api
file of the Kernel.[Multi] - Optimized “Build Dynamic Feature” scripts speed by removing unnecessary steps.
[7.16.3] - 2022-04-06
Core Engine
[Cortex-M/IAR] Fix unaligned stack pointer when calling SNI native functions in ARM IAR architectures.
[7.16.2] - 2021-11-10
Core Engine
[Cortex-M/GCC/ARMCC5] Fix unaligned stack pointer when calling SNI native functions in ARM GCC and ARMCC architectures with non-ASM Core Engines.
[7.16.1] - 2021-07-16
Core Engine
[GCC] Fixed wrong inlined extern symbol access (affects only some GCC architectures until version
6.x
). This produces an unexpectedjava.lang.OutOfMemoryError: Stacks space
exception at boot time.
[7.16.0] - 2021-06-24
Known Issues
[Multi] - SOAR may fail to build a Feature with the following message:
1 : KERNEL/FEATURE ERROR [M25] - Type double[] is expected to be owned by the Kernel but is not embedded.
Workaround is to explicitly declare each array of basetypes in your
kernel.api
file:<type name="int[]"/> <type name="long[]"/> <type name="short[]"/> <type name="double[]"/> <type name="float[]"/> <type name="byte[]"/> <type name="char[]"/> <type name="boolean[]"/>
Notes
The Device
module provided by the Architecture is deprecated
and will be removed in a future version. It has been moved to the
Device Pack. Please update your VEE Ports.
Core Engine
Added a dedicated error code
LLMJVM_E_INITIALIZE_ERROR (-23)
whenLLMJVM_IMPL_initialize()
,LLMJVM_IMPL_vmTaskStarted()
, orLLMJVM_IMPL_shutdown()
fails. Previously the generic error codeLLMJVM_E_MAIN_THREAD_ALLOC (-5)
was returned.Added automatic heap consumption fing when option
com.microej.runtime.debug.heap.monitoring.enabled
is set totrue
Fixed some parts of
LLMJVM_checkIntegrity()
code were embedded even if not called[Multi] - Fixed potential crash during the call of
LLMJVM_checkIntegrity()
when analyzing a corrupted Java stack (make this function robust to object references with an invalid memory address)
Foundation Libraries
Added source code for
KF
,SCHEDCONTROL
,SNI
,SP
implementationsUpdated
KF
API with annotations for Null analysisUpdated
SNI
API with annotations for Null analysisUpdated
SP
API with annotations for Null analysisUpdated
ResourceManager
implementation with annotations for Null analysisUpdated
KF
implementation:Added missing Kernel.getAllFeatureStateListeners() method
Updated code for correct Null analysis detection
Fixed Feature.getCriticality() to throw IllegalStateException if it is in state
UNINSTALLED
(instead of returningNORM_CRITICALITY
)Fixed potential race condition between Kernel.addResourceControlListener() and Kernel.removeResourceControlListener(). Adding a new listener may not register it if another one is removed at the same time.
Integration
Added a new task in ELF Utils library allowing to update the content of an ELF section:
Declaration:
<taskdef classpath="${platform.dir}/tools/elfutils.jar" classname="com.is2t.elf.utils.AddSectionTask" name="addSection" />
Usage:
<addSection file="${executable.file}" sectionFile="${section.file}" sectionName="${section.name}" sectionAlignment="${section.alignment}" outputDir="${output.dir}" outputName="${output.name}" />
Updated Architecture End User License Agreement to version
SDK 3.0-C
Updated copyright notice of Low Level APIs header files to latest SDK default license
Updated Architecture module with required files and configurations for correct publication in a module repository (
README.md
,LICENSE.txt
, andCHANGELOG.md
)
Simulator
Added an option (
com.microej.simulator.hil.frame.size
) to configure the HIL engine max frame sizeFixed load of an immutable byte field (sign extension)
Fixed java.lang.String constructors
String(byte[] bytes, ...)
when passing characters in the range[0x80,0xFF]
using defaultISO-8859-1
encodingFixed potential crash in debug mode when a breakpoint is set on a field access (introduced in version
7.13.0
)Fixed wrong garbage collection of an object only referenced by an immortal object
SOAR
Fixed the following compilation issues in
if
statement with BON constant:too many code may be removed when the block contains a
while
looppotential
Stacks merging coherence error
may be thrown when the block contains a nestedtry-catch
statementpotential
Stacks merging coherence error
when declaring a ternary expression with Constants.getBoolean() in condition expression
Fixed
assert
statement removal when it is located at the end of athen
block: theelse
block may be executed instead of jumping overRemoved names of arrays of basetype unless
soar.generate.classnames
option is set totrue
[Multi] - Fixed potential link exception when a Feature use one of the
ej_bon_ByteArray
methods (e.g.ej.kf.InvalidFormatException: code=51:ON_ej_bon_ByteArray_method_readUnsignedByte_AB_I_I
)[Multi] - Fixed SOAR error (
Invalid SNI method
) when one of the ej.bon.Constants.getXXX() methods is declared in akernel.api
file. This issue was preventing from using BON Constants in Feature code.
Tools
Updated Code Coverage Analyzer report generation:
Automatically configure
src/main/java
source directory beside a/bin
directory if availableAdded an option (
cc.src.folders
) to specify the source directory (require SDK5.4.1
or higher)Removed the analysis of generated code for
synchronized
statementsFixed crash when loading source code with annotations
Fixed Memory Map scripts:
ClassNames
group may contain duplicate sections withTypes
groupFixed load of an ELF executable when a section overlaps a segment (updated ELF Utils, Kernel Packager and Firmware Linker)
Fixed Firmware Linker to generate output executable file at the same location than the input executable file
[7.15.1] - 2021-02-19
SOAR
[Multi] - Fixed potential VM crash when declaring a Proxy class which is
abstract
.
[7.15.0] - 2020-12-17
Core Engine
Added support for applying Feature relocations
Foundation Libraries
Updated
KF
implementation to apply Feature relocations using the Core Engine. The former Java implementation is deprecated but can still be enabled using the optioncom.microej.runtime.kf.link.relocations.java.enabled
.
Integration
Updated the Architecture naming convention: the usage level is
prod
instead ofdev
.Fixed generation of temporary properties file with a
.properties.list
extension instead of deprecated.system.properties
extension.
SOAR
Fixed crash when declaring a clinit dependency rule on a class that is loaded but not embedded.
Tools
Fixed Memory Map Script
All
graph creation to prevent slow opening of large.map
file in Memory Map Analyzer.
[7.14.1] - 2020-11-30
Core Engine
[Multi/x86/QNX7] - Fixed missing multi-sandbox version
Tools
Fixed categories for class names and SNI library in Memory Map Scripts
[7.14.0] - 2020-09-25
Notes
The following set of Architecture properties are automatically provided
as BON
constants:
com.microej.architecture.capability=[tiny|single|multi]
com.microej.architecture.name=[architecture_uid]
com.microej.architecture.level=[eval|prod]
com.microej.architecture.toolchain=[toolchain_uid]
com.microej.architecture.version=7.14.0
Note
Starting from Architecture 8.1.0, com.microej.architecture.capability
constant is set to mono
instead of single
when the Core Engine capability is Mono-Sandbox.
The following set of VEE Port properties (customer defined) are
automatically provided as BON
constants:
com.microej.platform.hardwarePartNumber
com.microej.platform.name
com.microej.platform.provider
com.microej.platform.version
com.microej.platform.buildLabel
Foundation Libraries
Updated
EDC
UTF-8 encoder to support Unicode code points as supplementary charactersFixed java.lang.NullPointerException thrown when java.util.WeakHashMap.put() method is called with a
null
key (introduced in version 7.11.0)
Integration
Added all options starting with
com.microej.
prefix asBON
constantsAdded all properties defined in
architecture.properties
as options prefixed bycom.microej.architecture.
Added all properties defined in
release.properties
as options prefixed bycom.microej.platform.
Added all properties defined in
script/mjvm.properties
as options prefixed bycom.microej.architecture.
Added an option (
com.microej.library.edc.supplementarycharacter.enabled
) to enable support for supplementary characters (enabled by default)Updated Memory Map Scripts to extract Java static fields in a dedicated group named
Statics
Updated Memory Map Scripts to extract Java types in a dedicated group named
Types
Fixed generated Feature filename (unexpanded
${feature.output.basename}
variable, introduced in version 7.13.0)Fixed definition of missing default values for memory options (same values than launcher default ones)
[Tiny,Multi] - Added display of the Core Engine capability when launching SOAR
SOAR
[Multi] - Added a new attribute named
api
in Kernelsoar.xml
file indicating which types, methods and static fields are exposed as Kernel APIs[Multi] - Fixed potential link error when calling Object.clone() method on an array in Feature mode
Tools
Updated the serial PC connector to JSSC
2.9.2
(COM port could not be open on Windows 10 using a JRE8u261
or higher)
[7.13.3] - 2020-09-18
Core Engine
[QNX70] - Embed method names and line numbers information in the application
[Cortex-A/QNX70] - Fixed wrong float/double arguments passed to the SNI natives (introduced in version 7.12.0)
Simulator
Fixed unnecessary stacktrace dump on Long.parseLong(…) error
Fixed UTF-8 encoded Strings not correctly printed
Tools
Updated Memory Map Scripts for
ej.library.runtime.basictool
library
[7.13.2] - 2020-08-14
Core Engine
[ARM9/QNX65] - Fixed custom convention call
[x86/QNX70] - Fixed SIGFPE raised when overflow occurs on division
[x86/QNX70] - Fixed issue with NaN conversion to int or long
Tools
Fixed Feature build script for SDK 5.x (introduced in version 7.13.0)
Updated Memory Map Scripts for MicroUI 3 and Service libraries
[7.13.1] - 2020-07-20
Core Engine
[ESP32] - Fixed potential PSRAM access faults by rebuilding using esp-idf v3.3.0 toolchain (
simikou2
)
[7.13.0] - 2020-07-03
Core Engine
Added
SNI-1.4
support, with the following newLLSNI.h
Low Level APIs:Added function
SNI_registerResource()
Added function
SNI_unregisterResource()
Added function
SNI_registerScopedResource()
Added function
SNI_unregisterScopedResource()
Added function
SNI_getScopedResource()
Added function
SNI_retrieveArrayElements()
Added function
SNI_flushArrayElements()
Added function
SNI_isResumePending()
Added function
SNI_clearCurrentJavaThreadPendingResumeFlag()
Added define
SNI_VERSION
Added define
SNI_IGNORED_RETURNED_VALUE
Added define
SNI_ILLEGAL_ARGUMENT
Updated the documentation of some functions to clarify the behavior
Added a message to IllegalArgumentException thrown in an SNI call when passing a non-immortal array in SNI (only in case the VEE Port is configured to disallow the use of non-immortal arrays in SNI native calls)
Added function
LLMJVM_CheckIntegrity()
toLLMJVM.h
Low Level API to perform heap and internal structures integrity checkUpdated
KF
implementation to useSNI-1.4
to close native resources when the Feature is stopped (ej.lang.ResourceManager
is now deprecated)Updated
LLMJVM_dump()
output with the following new information related toSNI-1.4
native resource management:Last native method called (per thread)
Current native method being invoked (per thread)
Last native resource close hook called (per thread)
Current native resource close hook being invoked (per thread)
Pending Native Exception (per thread)
Pending
SNI
Scoped Resource to close (per thread)Current Garbage Collector state: (running or not, last scanned object address, last scanned object class)
LLMJVM
schedule request (global and per thread)
Updated non-immortal array access from SNI default behavior (now allowed by default)
Fixed thread state displayed by
LLMJVM_dump
for threads inSLEEP
stateFixed
sni.h
header file function prototypes using theSNI_callback
typedefFixed crash when an OutOfMemoryError is thrown while creating a native exception in SNI
[Multi] - Fixed runtime exceptions that can be implicitly thrown (such as NullPointerException) which were not automatically exposed by the Kernel
[Multi] - Fixed passing Kernel array parameters through a shared interface method call. These parameters were passed by copy instead of by reference as specified by
KF
specification[Multi] - Fixed execution context when jumping in a catch block of a ej.kf.Proxy method (the catch block was executed in the Kernel context instead of the Feature context)
[ARMCC5] - Fixed link error
Undefined symbol _java_Ljava_lang_OutOfMemoryError_field_OOMEMethodAddr_I
with ARM Compiler 5 linker (introduced in version 7.12.0)
Foundation Libraries
Updated
SNI
to version1.4
Updated internal library
Resource-Manager-1.0
as deprecated. UseSNI-1.4
native resources insteadUpdated Thread.getId() method implementation to return the same value than
SNI_getCurrentJavaThreadID()
functionOptimized SNI.toCString() method by removing a useless temporary buffer copy
Fixed
EDC
implementation of String(byte[],int,int) constructor which could allocate a too large temporary bufferFixed
EDC
implementation of Thread.interrupt() method to throw a java.lang.SecurityException when the interrupted thread cannot be modified by the the current threadFixed
EDC
implementation to remove remaining references to java.util.SecurityManager class when it is disabledFixed
EDC
implementation of Thread.interrupt() method that was declaredfinal
Fixed
EDC
API of Thread.interrupt() to clarify the behavior of the methodFixed
EDC
API of java.util.Calendar method to specify that non-lenient mode is not supportedFixed
EDC
API of java.io.FilterInputStream.in field to be marked@Nullable
Integration
Updated Architecture End User License Agreement to version
SDK 3.0-B
Simulator
Added
SNI-1.4
support, with the following new HIL engine APIs:Added methods
NativeInterface.suspendStart()
andNativeInterface.suspendStop()
to notify the simulator that a native is suspended so that it can schedule a thread with a lower priority
Added
KF
support to dynamically install Features (.fs3
files)Added the capability to specify the Kernel UID from an option (see options in
Simulator
>Kernel
>Kernel UID
)Added object size in generated
.heap
dump filesOptimized file accesses from the Application
Fixed crash in debug mode when paused on a breakpoint in SDK and hovering a Java variable with the mouse
Fixed potential crash in debug mode when putting a breakpoint in the SDK on a line of code declared in an inner class
Fixed potential crash in debug mode (java.lang.NullPointerException) when a breakpoint set on a field access is hit
Fixed potential crash in debug mode (ArrayIndexOutOfBoundsException)
Added support for JDWP commands
DisableCollection
/EnableCollection
in the debuggerFixed invalid heap dump generation in debug mode.
Fixed crash when a Mockup implements
com.is2t.hil.StartListener
and this implementation throws an uncaught exception in the clinitFixed verbose of missing resource only when a resource is available in the classpath but not declared in a
.resources.list
fileFixed heap consumption simulation for objects instances of classes declaring fields of type
float
ordouble
Fixed Device UID not displayed in the Front Panel window title (introduced in version 7.11.0)
Fixed loading of a resource from a JAR when the path starts with
/
Fixed potential deadlock on Front Panel startup in some cases
Fixed Thread.getState() returning
TERMINATED
whereas the thread is runningFixed Simulator which may not stop properly when closing the Front Panel window
Fixed Front Panel which stops sending widget events when dragging out of a widget
[Multi] - Fixed monitor that may not be released when an exception occurs in a synchronized block (introduced in version
7.10.0
)[Multi] - Fixed invalid heap dump generation that causes heap analyzer crash
[Multi] - Fixed potential crash (java.lang.NullPointerException) in debug mode when debugging an Application (introduced in version 7.10.0)
[Multi] - Fixed error when using
KF
library without defining akernel.kf
file in the Kernel (introduced in version 7.10.0)
SOAR
Added an option (
soar.bytecode.verifier
) to enable or disable the bytecode verifier (disabled by default)Removed size related limits in Architecture Evaluation version
Tools
Added
SNI-1.4
support to HIL engineUpdated Heap Dumper to verbose information about the memory section when an overlap is detected in the HEX file
Updated Memory Map Scripts (Security, DTLS, Device)
Fixed License Manager (Evaluation) random crash on Windows 10 when a VEE Port is built using
Build Module
buttonFixed License Manager (Evaluation) wrong UID computation after reboot when Windows 10 Hyper-V feature is enabled
Fixed HIL engine to exit as soon as the Simulator is disconnected (avoid remaining detached processes)
Fixed ELF to Map generating symbol addresses different from the ELF symbol addresses (introduced in version 7.11.0)
Fixed Heap Dumper crash when a wrong object header is encountered
Fixed Heap Dumper failure when a memory dump is larger than the heap section
Fixed Heap Dumper crash when loading an Intel HEX file that contains lines of type
02
[7.12.0] - 2019-10-16
Core Engine
Updated implementation of internal OutOfMemoryError thrown with the maximum number of frames that can be dumped
Updated
LLMJVM_dump()
output with the following new information:Maximum number of alive threads
Total number of created threads
Maximum number of stack blocks used
Current number of stack blocks used
Objects referenced by each stack frame: address, type, length (in case of arrays), string content (in case of String objects)
[Multi] - Kernel stale references with the name of the Feature stopped
Foundation Libraries
Fixed
EDC
implementation of Throwable.getStackTrace() when called on a OutOfMemoryError thrown by Core Engine or Simulator (either the returned stack trace array was empty or a java.lang.NullPointerException was thrown)[Tiny] - Fixed
EDC
implementation of StackTraceElement.toString() (removed the character.
before the type)[Multi] - Fixed
KF
implementation of Feature.start() to throw an ExceptionInInitializerError when an exception is thrown in a Feature clinit method
Simulator
Updated implementation of internal OutOfMemoryError thrown with more than one frames dumped per thread
By default the
20
top frames per thread are dumped. This can be modified usingS3.OutOfMemoryErrorNbFrames
system property
Fixed wrong parsing of an array of
long
when an element is declared with only 2 digits (e.g.25
was parsed as2
)Fixed error parsing of an array of
byte
when an element is declared with the unsigned hexadecimal notation (e.g.0xFF
) (introduced in version 7.10.0)Fixed crash when ResourceBuffer.readString() is called on a String greater than
63
characters (introduced in version 7.10.0)Fixed code coverage
.cc
generation of classpath directoriesFixed crash during a GC when computing the references map of a complex method (an error message is dumped with the involved method name and suggest to increase the internal stack using
S3.JavaMemory.ThreadStackSize
system property)[Multi] - Added validity check of Shared Interface declaration files (
.si
) according toKF
specification[Multi] - Fixed processing of Resource Buffers declared in Feature classpath
SOAR
Added a new option
core.memory.oome.nb.frames
to configure the maximum number of stack frames that can be dumped when an internal OutOfMemoryError is thrown by Core Engine
Tools
Updated Heap Dumper to verbose detected object references that are outside the heap
Updated Heap Dumper to throw a dedicated error when an object reference does not target the beginning of an object (most likely a corrupted heap)
Updated Heap Dumper to dump
.heap.error
partial file when a crash occurred during heap processingFixed Heap Dumper crash when processing an object owned by a Feature which type is also owned by the Feature (was working before only when the type is owned by the Kernel)
Fixed Firmware Linker potential negative offset generation when some sections do not appear in the same order in the ELF file than in their associated LOAD segment
Fixed Code Coverage Analyzer potential generated empty report (wrong load of classfiles from JAR files)
[7.11.0] - 2019-06-24
Important Notes
Java assertions execution is now disabled by default. If you experience any runtime trouble when migrating from a previous Architecture, please enable Java assertions execution both on Simulator and on Device (maybe the application code requires Java assertions to be executed).
Calls to Security Manager are now disabled by default. If you are using the Security Manager, it must be explicitly enabled using the option described below (likely the case when building a Multi-Sandbox Firmware and its associated Virtual Device).
Front Panel framework is now provided by the Architecture instead of the UI Pack. This allow to build a VEE Port with a Front Panel (splash screen, basic I/O, …), even if it does not provide a MicroUI port. Moreover, the Front Panel framework API has been redesigned and is now distributed using the
ej.tool.frontpanel.framework
module instead of the legacy Eclipse classpath variable.
Known Issues
SOAR
Internal SOAR error
orStacks merging coherence error
thrown when anif
statement (being removed) is declared at the end of atry
block:try { ... if (Constants.getBoolean(XXX)) { // constant resolved to false ... // code being removed } } catch (Exception e) { ... }
Core Engine
Added
EDC-1.3
support for daemon threadsAdded
BON
support for ej.bon.Util.newArray(T[],int)[Multi/ARMCC5] - Fixed unused undefined symbol that prevent Keil MDK-ARM to link properly
Foundation Libraries
Updated
EDC
to version1.3
(see EDC-1.3 API Changelog)Updated the implementation code for correct Null analysis detection (added assertions, extracted multiple field accesses into a local)
Fixed PrintStream.PrintStream(OutputStream, boolean) writer initialization
Removed useless String literals in java.lang.Throwable
Updated UTF-8 decoder to support Unicode code points
Updated
BON
to version1.4
(see BON-1.4 API Changelog)Updated
TRACE
to version1.1
Added a BON Constant (
core.trace.enabled
) to remove trace related code when tracing is disabled
Fixed
KF
to call the registered Thread.UncaughtExceptionHandler when an exception is thrown by the first Feature thread
Integration
Added new options for Java assertions execution in category
Runtime
(core.assertions.sim.enabled
andcore.assertions.emb.enabled
). By default, Java assertions execution is disabled both on Simulator and on Device.Updated options categories (options property names left unchanged)
Added a new category named
Runtime
Renamed
Target
toDevice
Moved
Embed All type names
option fromCore Engine
toRuntime
Moved
Core Engine
underDevice
Removed category
Target > Debug
and movedTrace
options toRuntime
Removed category
Debug
and moved all sub categories underSimulator
Renamed category
JDWP
toDebug
Added an option (
com.microej.library.edc.securitymanager.enabled
) to enable Security Manager runtime checks (disabled by default)
Simulator
Added a cache to speed-up classfile loading in JARs
Added
EDC-1.3
support for daemon threadsAdded
BON-1.4
support for compile-time constants (load of.constants.list
resources)Added
BON-1.4
support for ej.bon.Util.newArray()Added Front Panel framework
Updated error message when reaching Simulator limits
Removed the
Bootstrapping a Smart Software Simulator
message when verbose mode in enabledFixed Object.clone() on an immutable object to return a new (mutable) object instead of an immutable one
Fixed Object.clone() crash when an OutOfMemory occurs
Fixed potential crash when calling an abstract method (some interfaces of the hierarchy were not taken into account - introduced in version 7.10.0)
Fixed
OutOfMemory
errors even if the heap is not full (resources loaded from Class.getResourceAsStream() and ResourceBuffer creation were taken into account in simulated heap memory - introduced in version 7.10.0)Fixed potential crash when a GC occurs while a ResourceBuffer is opened (introduced in version 7.10.0)
Fixed potential debugger hangs when an exception was thrown but not caught in the same method
[Multi] - Fixed wrong class loading in some cases
[Multi] - Fixed wrong immutable loading in some cases
SOAR
Added
BON-1.4
support for compile-time constants (load of.constants.list
resources)Added bytecode removal for Java assertions (when option is disabled)
Added bytecode removal for
if(ej.bon.Constants.getBoolean())
patternthen
orelse
block is removed depending on the boolean conditionWARNING: Current limitation: the ``if`` statement cannot wrap or be nested in a ``try-catch-finally`` statement
Added an option for grouping all the methods by type in a single ELF section
com.microej.soar.groupMethodsByType.enabled
(false
by default)WARNING: this option avoids to reach the maximum number of ELF sections (65536) when building a large application, but affects the application code size (especially inline methods are embedded even if they are not used)
Added an error message when
microejapp.o
cannot be generated because the maximum number of ELF sections (65536) is reached
Tools
Updated License Manager (Production) to debug dongle recognition issues from command line (see Check Activation with the Command Line Tool).
Updated License Manager (Production) to support dongle recognition on macOS
10.14
(Mojave)Fixed ELF To Map to produce correct sizes from an executable generated by IAR Embedded Workbench for ARM
Fixed Firmware Linker
.ARM.exidx
section generation (missing section link content)Updated deployment files policy for VEE Ports in Workspace, in order to be more flexible depending on the C project layout. This also allows to deploy to the same C project different Applications built with different VEE Ports
VEE Port configuration: in
bsp/bsp.properties
, a new optionoutput.dir
indicates where the files are deployed by defaultApplication (
microejapp.o
) and Runtime library (microejruntime.a
) are deployed to${output.dir}/lib
. Architecture header files (*.h
) are deployed to${output.dir}/inc/
When this option is not set, the legacy behavior is left unchanged (
project.file
option in collaboration withaugmentCProject
scripts)
Launch configuration:
Device > Deploy
options allow to override the default VEE Port configuration in order to deploy each file into a separate folder.
Fixed wrong ELF file generation when a section included in a LOAD segment was generated before one of the sections included in a LOAD segment declared before the first one (integrated in ELF Utils and Firmware Linker)
Fixed wrong ELF file generation when a section included in a LOAD segment had an address which was outside its LOAD segment virtual address space (integrated in ELF Utils and Firmware Linker)
[7.10.1] - 2019-04-03
Simulator
Fixed Object.getClass() may return a Class instance owned by a Feature for type owned by the Kernel
[7.10.0] - 2019-03-29
Core Engine
Added internal memories checks at startup: heaps and statics memories are not allowed to overlap with
LLBSP_IMPL_isInReadOnlyMemory()
[Multi] - Updated Feature Kill implementation to prepare future RAM Control (fully managed by Core Engine)
[Multi] - Updated implementation of ej.kf.Kernel: all APIs taking a Feature argument now will throw a java.lang.IllegalStateException when the Feature is not started
Foundation Libraries
Updated
KF
library in sync with Core Engine Kill related fixes and Simulator with Kernel & Features semanticUpdated
BON
library on Simulator (now uses the same implementation than the one used by the Core Engine)
Integration
Added generation of
architecture.properties
file when building a VEE Port. (Used by SDK5.x
when manipulating VEE Ports & Virtual Devices)
Simulator
Added
Embed all types names
option for SimulationAdded memory size simulation for Java Heap and Immortal Heap (Enabling
Use target characteristics
option is no more required)Added Kernel & Features semantic, as defined in the
KF-1.4
specificationFully implemented:
Ownership for types, object and thread execution context
Kernel mode
Context Local Static Field References
Partially implemented:
Kernel API (Type grained only)
Shared Interfaces are binded using direct reference links (no Proxy execution)
Feature.stop() does not perform the safe kill. The application cannot be stopped unless it has correctly removed all its shared references.
Not implemented:
Dynamic Feature installation from Kernel.install(java.io.InputStream)
Execution Rules Runtime checks
Tools
Updated Memory Map Scripts (Bluetooth, MWT, NLS, Rcommand and AllJoyn libraries)
Fixed
Kernel Packager
internal limits error when the ELF executable does not contains a.debug.soar
sectionFixed wrong ELF file generation when segment file size is different than the mem size (integrated in
ELF Utils
andFirmware Linker
)Fixed Simulator COM port mapping default value (set to
disabled
instead ofUART<->UART
in order to avoid an error when launch configuration is just created)Fix ELF To Map: the total sections size were not equal to the segments size
[7.9.1] - 2019-01-08
Tools
Fixed ELF objcopy generation when ELF executable file contains
0
size segmentsFixed
Stack Trace Reader
error when ELF executable file contains relocation sections
[7.9.0] - 2018-09-20
Core Engine
Fixed OutOfMemoryError thrown when allocating an object of the size of free memory in immortals heap
SOAR
Optimized SOAR processing (up to 50% faster on applications with tens of classpath entries)
[7.8.0] - 2018-08-01
Tools
[ARMCC5] - Updated SOAR Debug Infos Post Linker tool to generate the full ELF executable file
[7.7.0] - 2018-07-19
Core Engine
Added a permanent hook
LLMJVM_on_Runtime_gc_done
called after an explicit java.lang.Runtime.gc()Updated internal heap header for memory dump
SOAR
Added check for the maximum number of allowed concrete types (avoids a Core Engine link error)
Tools
Added
Heap Dumper
tool
[7.6.0] - 2018-06-29
Foundation Libraries
[Multi] - Updated
BON
library: a Timer owned by the Kernel can execute a TimerTask owned by a Feature
[7.5.0] - 2018-06-15
Internal Release - COTS Architecture left unchanged.
[7.4.0] - 2018-06-13
Core Engine
Removed partial support of
ej.bon.Util.throwExceptionInThread()
(deprecated)[Multi/Linux] - Updated default configuration to always embed method names
[Multi/Cortex-M] - Optimized KF checks execution for array & field accesses
Foundation Libraries
Updated ej.bon.Timer to schedule ej.bon.TimerTask owned by multiple Features
Simulator
Fixed implementation of Class.getResourceAsStream() to throw an IOException when the stream is closed
SOAR
[GCC] - Fixed
microejapp.o
link with GCC 6.3
Tools
Added a retry mechanism in the Testsuite Engine
Added a message to suggest increasing the JVM heap when an OutOfMemoryError occurs in the
Firmware Linker
toolFixed generation of LL header files for all cross compilation toolchains (file separator for included paths is
/
)[Cortex-A/ARMCC5] - Fixed SNI convention call issue
[ESP32,RX] - Fixed
Firmware Linker
tool internal limit
[7.3.0] - 2018-03-07
Simulator
Added an option for the IDE to customize the mockups classpath
Fixed Deadlock in Shielded Plug remote client when interrupting a thread that waits for block modification
[7.2.0] - 2018-03-02
Core Engine
[Multi] - Enabled quantum counter computation only when Feature quota is set
[Cortex-M/IAR] - Updated compilation flags to
-Oh
Simulator
Added a hook in the mockup that is automatically called during the HIL engine startup
Added dump of loaded classes when
verbose
option is enabledFixed Runtime.freeMemory() call freeze when
Emb Characteristics
option is enabledFixed ShieldedPlug server error after interrupting a thread that is waiting for a database block
Fixed crash
Access to a wrong reference
in some casesFixed java.lang.NullPointerException when interrupting a thread that has not been started
Fixed crash when closing an HIL engine connection in some cases
[Multi] - Fixed KF & Watchdog library link when
Emb Characteristics
option is enabled[Multi] - Fixed XML Parsing error when
Emb Characteristics
option is enabled
[7.1.2] - 2018-02-02
SOAR
Fixed SNI library was added in the classpath in some cases
[maintenance/6.18.0] - 2017-12-15
Core Engine
[Multi] - Enabled quantum counter computation only when Feature quota is set
[Cortex-M/IAR] - Updated compilation flags to
-Oh
Simulator
Fixed Runtime.freeMemory() call freeze when
Emb Characteristics
option is enabled[Multi] - Fixed KF & Watchdog library link when
Emb Characteristics
option is enabled[Multi] - Fixed XML Parsing error when
Emb Characteristics
option is enabled
Tools
Updated
Kernel API Generator
tool with classes filtering
[7.1.1] - 2017-12-08
Tools
[Multi/RX] - Fixed
Firmware Linker
tool
[7.1.0] - 2017-12-08
Core Engine
[Multi/RX] - Added KF support
Integration
Fixed
SNI-1.3
library name
SOAR
[RX] - Added support for ELF symbol prefix
_
Tools
Updated
Kernel API generator
tool with classes filtering
[7.0.0] - 2017-11-07
Core Engine
Added SNI-1.3 support
SNI_suspendCurrentJavaThread()
is not interruptible via Thread.interrupt() anymore
Foundation Libraries
Updated to
SNI-1.3
[6.17.2] - 2017-10-26
Simulator
Fixed deadlock during bootstrap in some cases
[6.17.1] - 2017-10-25
Core Engine
Fixed conversion of
-0.0
into a positive value
[6.17.0] - 2017-10-10
Tools
Updated Memory Map Scripts for TRACE library
[6.16.0] - 2017-09-27
Core Engine
Fixed External Resource Loader link error (introduced in version 6.13.0)
[6.15.0] - 2017-09-12
Core Engine
Added a new option to configure the maximum number of monitors that can be owned per thread (8 per thread by default, as it was fixed before)
Foundation Libraries
Fixed ECOM-COMM internal heap calibration
SOAR
Added log of the class loading cause
[6.14.2] - 2017-08-24
Tools
Fixed
Firmware Linker
tool script (loadactivity.xml
from the wrong folder)Fixed load of symbol
_java_Ljava_io_EOFException
that can be required by some linkers even if this symbol is not touched
[6.14.1] - 2017-08-02
Simulator
Fixed Device Mockup too long initialization that may block the Front Panel Mockup
Foundation Libraries
Fixed BON
.types.list
potential conflicts with KF
Tools
Modified
Firmware Linker
internal scripts structure for new Virtual Devices tools
[6.13.0] - 2017-07-21
Core Engine
Added support for ej.bon.ResourceBuffer
Foundation Libraries
Updated to
BON-1.3
SOAR
Added support for
*.resourcesext.list
(resources excluded from the firmware)
Tools
Added BON Resource Buffer generator
[6.12.0] - 2017-07-07
Core Engine
Added a trace when IllegalMonitorStateException is thrown on a
monitorexit
Tools
Added property
skip.mergeLibraries
for Platform Builder.Updated the serial PC connector to JSSC
2.8.0
.
Simulator
Fixed unexpexted java.lang.NullPointerException in some cases
[6.11.0] - 2017-06-13
Integration
Fixed useless watchdog library copied in root folder
[6.11.0-beta1] - 2017-06-02
Core Engine
Added an option to enable execution traces
Added Low Level API
LLMJVM_MONITOR_impl.h
Added Low Level API
LLTRACE_impl.h
Foundation Libraries
Added
TRACE-1.0
[6.10.0] - 2017-06-02
Core Engine
Optimized java.lang.Runtime.gc() (removed useless heap compaction in some cases)
[6.9.2] - 2017-06-02
Integration
Fixed missing properties in
release.properties
(introduced in version v6.9.1)Fixed artifacts build dependencies to private dependencies
[6.9.1] - 2017-05-29
SOAR
[Multi] - Fixed selected methods list in report generation (removed Kernel related method)
[6.9.0] - 2017-03-15
Base version, included into SDK 4.1.