MicroEJ Core Engine Abstraction Layer implementation for FreeRTOS.
This module implements the LLMJVM
Low Level API for MicroEJ Platforms connected to a Board Support Package based on FreeRTOS.
See the MicroEJ documentation for a description of the LLMJVM
functions:
-
Install
src
andinc
directories in your Board Support Package. They can be automatically downloaded using the following command lines:svn export --force https://github.com/MicroEJ/AbstractionLayer-Core-FreeRTOS/trunk/inc [path_to_bsp_directory] svn export --force https://github.com/MicroEJ/AbstractionLayer-Core-FreeRTOS/trunk/src [path_to_bsp_directory]
-
Implement the MicroEJ time functions, as described in microej_time.h.
-
The
LLMJVM_IMPL_scheduleRequest
schedule request function in LLMJVM_FreeRTOS.c uses a software timer. In order to correctly schedule MicroEJ threads, check the following elements in the FreeRTOS configuration file:- Timers are enabled with
#define configUSE_TIMERS 1
configTIMER_TASK_PRIORITY
is higher than MicroEJ task priorityconfigTICK_RATE_HZ
: can depend on the application, if it needs a 1 ms precision then the tick rate would be 1000 Hz, the recommended value is between 100 Hz and 1000 Hz
- Timers are enabled with
None.
This Abstraction Layer implementation can be validated in the target Board Support Package using the MicroEJ Core Validation Platform Qualification Tools project.
Here is a non exhaustive list of tested environments:
- Hardware
- STMicroelectronics STM32F7508-DK
- Espressif ESP-WROVER-KIT V4.1
- Compilers / Integrated Development Environments:
- IAR Embedded Workbench 8.50.6
- STM32CubeIDE version 1.3.0 (using GNU GCC toolchain)
- Espressif IoT Development Framework (
esp-idf
) v4.4.4 (using GNU GCC toolchain)
- FreeRTOS versions:
- FreeRTOS V10.4.3
- FreeRTOS V10.2.0
- FreeRTOS V8.2.0
This Abstraction Layer implementation is MISRA-compliant (MISRA C:2012) with some noted exception. It has been verified with Cppcheck v2.10. Here is the list of deviations from MISRA standard:
Deviation | Category | Justification |
---|---|---|
Rule 8.4 | Required | The Cppcheck analysis is made only on this LL code |
Rule 5.5 | Required | Intentional usage of macros to define native functions. |
Rule 7.2 | Required | Error detected in FreeRTOS third library. |
- MicroEJ Architecture
7.x
or higher. - FreeRTOS
8.2.0
or higher.
N/A.
None.
Copyright 2020-2023 MicroEJ Corp. All rights reserved. Use of this source code is governed by a BSD-style license that can be found with this software.