10.4. Limitations

10.4.1. Evaluation License

The platform for MIMXRT595-EVK is built with the MicroEJ Architecture in evaluation format. Some runtime limitations can occur during the application execution. The following message is printed when an evaluation limitation is reached:

Evaluation limits reached.

The following Java OutOfMemoryError can also occur for the same reason:

Exception in thread "UIPump" java/lang/OutOfMemoryError
at java/io/OutputStreamWriter.write(OutputStreamWriter.java:86)
at java/io/PrintStream.print(PrintStream.java:146)
at java/lang/Throwable.printStackTrace(Throwable.java:146)
at java/lang/Throwable.printStackTrace(Throwable.java:74)
at ej/microui/MicroUI.errorLog(MicroUI.java:110)
Exception in thread "Thread1" java/lang/OutOfMemoryError
at java/io/OutputStreamWriter.write(OutputStreamWriter.java:86)
at java/io/PrintStream.print(PrintStream.java:146)
at java/lang/Throwable.printStackTrace(Throwable.java:146)
at java/lang/Throwable.printStackTrace(Throwable.java:74)
at java/lang/Thread.handleUncaughtException(Thread.java:557)
Exception in thread "UIPump" java/lang/OutOfMemoryError
at java/io/OutputStreamWriter.write(OutputStreamWriter.java:86)
at java/io/PrintStream.print(PrintStream.java:146)
at java/lang/Throwable.printStackTrace(Throwable.java:146)
at java/lang/Throwable.printStackTrace(Throwable.java:74)

The evaluation limitations are described here.

10.4.2. Additional Watchfaces

The deployment and the installation of new watchfaces (see Deploy Additional Watchface) require two buffers. Both buffers are defined in linker file mimxrt595_freertos-bsp/projects/microej/iar/MIMXRT595Sxxxx_cm33_flash.icf.

  • FEATURE_LOADER_RAM_BUFFER: the usart feature loader uses this buffer. Its size must be equal to or larger than the additional watchface’s feature file (.fo). After the feature installation, this buffer remains unused until the next feature deployment.
  • KERNEL_WORKING_BUFFER: this buffer is used to install the features (parsing of the .fo file, link with the main application, etc.). It can contain several features. When there is not enough memory to install a new feature, an exception is thrown during the feature installation. The feature installation is so discarded, and the main application keeps running without the new feature.

The kernel build configuration defines some memory settings that restrict the resources that additional watchfaces can use. These settings can be changed in the build/common.properties file of the com.microej.demo.watch.vg project:

  • core.memory.feature.max.threads: the maximum number of threads per application.
  • core.memory.threads.size: the maximum number of threads in the whole firmware (kernel and applications).
  • core.memory.javaheap.size and core.memory.javaheapsum.size: the size of the Java heap used to allocate the objects in the whole firmware.