on
2021-09-14
04:21 AM
- edited on
2024-01-10
07:51 AM
by
Laurids_PETERSE
STMicroelectronics OpenSTLinux follows Yocto deliveries;
A new yocto version is delivered each year:
https://wiki.yoctoproject.org/wiki/Releases
Two different kernel versions are delivered by Yocto
Each year STMicroelectronics delivers a new major OpenSTLinux x.0, followed six months later by OpenSTLinux x.1 based on the same Yocto release.
Then minor releases x.y.z are delivered under GitHub.
STMicroelectronics is responsible for the BSP components and provides support on deliveries for two years.
Userland components are delivered as examples.
Regarding security CVE patches for the components, the OpenSTLinux release takes the ones available when doing the release. It does not do the consolidation of a patch after the release. This is on your side (or with an STMicroelectronics partner like TimeSys).
For the contents of the OpenSTLinux release, see the release note below:
https://wiki.st.com/stm32mpu/wiki/STM32_MPU_OpenSTLinux_release_note
For changes on the release, see the release notes below with an example of OpenSTLinux 4.0.
https://wiki.st.com/stm32mpu/wiki/STM32_MPU_OpenSTLinux_release_note_-_v4.0.0/Changes_notification_%E2%80%93_v4.0.0
A release is a set of components: tf-a, u-boot, optee, and kernel.
The kernel is depending on optee services so you need to have aligned versions.
The versions are described in the release notes.
Note: You cannot mix components from a release to another release.
Consider the following questions below when you want to update to a new release:
The example below in this case is described with OpenSTLinux 2.x and OpenSTLinux 3.x.
Moving to a new major release on the customer side can require a large effort. It has to be evaluated and anticipated.
It depends how the board design is different from a STMicroelectronics reference board. Furthermore, consider the differences on a given OpenSTLinux release (BSP configuration differences, Yocto updates from a previous release).
It is advised to stay on this same version 2.x and take if possible the latest release 2.x for example OpenSTLinux 2.1 (more stable than 2.0).
It is not recommended to switch to the next release of OpenSTLinux 3.x (unless you have good reasons for that).
If you want to update your OpenSTLinux version, release 3.1 is always more stable than release 3.0.
It is better to switch directly from version 2.1 to version 3.1 instead of version 3.0.
If you are in the board bring up phase, it may be easier to use a previous stable release.
As an example use 2.1 instead of 3.0 just for the bring up phase (unless you have good reasons for using 3.0.)
We recommend the following articles:
The main reasons for these proposals are: 2.x and 3.x have the same stability on a STMicroelectronics board (same test plan and pass criteria).
However, the integration on the customer side will usually be more mature on a X.1 release (with half a year of experience).
Since OpenSTLinux4.0 firmware update is supported
Information is available in https://wiki.st.com/stm32mpu/wiki/Secure_Firmware_Update
To summarize:
A firmware update is possible for the bootchain except TF-A bl2 (fsbl).
The fip partition of the boot chain containing u-boot and optee can be updated.
OTA update is based on A/B partitions: STM32 MPU flash mapping - stm32mpu
This flash mapping is used for a firmware update feature from a version to another version.
The mechanism to switch between partitions A (boot chain A) and partitions B (boot chain B) is done thanks to the metadata partition.
During the firmware update phase only, check that a new boot chain is correctly booting before switching to a new partition, otherwise the boot remains on the previous boot chain.
Be careful as you may need to have another mechanism to handle the system recovery feature (like initramfs), in case of boot failures in normal boot mode.
As already mentioned, partitions of the same bootchain must be aligned on the same release: tf-a, u-boot, optee, and kernel.
A partner who already implements firmware update with STM32MP1 is foundries.io
Incremental Kernel & Docker App OTA Updates | Foundries.io
You can monitor the continuously updated patches in the ST GitHub (links provided below.)
STMicroelectronics/optee_os: Trusted side of the TEE (github.com)
Each component release has a list of CVE. ST does not consolidate these lists but they are public by the software providers.
The CVE monitoring process is done by the uboot, tf-a and optee communities, they are described here:
TF-A:
Optee:
For products using optee your company can register as a "Trusted Stakeholder" to be aware on vulnerabilities and corrections before they are published.
https://developer.trustedfirmware.org/w/collaboration/security_center/trusted_stakeholder_registration/
See the link below for a list of published vulnerabilities:
https://github.com/OP-TEE/optee_os/security/advisories?state=published
U-boot: (Example for version 2020.01)
Linux kernel: The CVE list is available with an example for kernel 5.15
You can work with third parties (like TimeSys) for consolidating patches.