i.MX8M-Plus Linux Release Y2023.09 (Yocto 4.0)

  • F&S i.MX8M-Plus Yocto Release 2023.09 (fsimx8mp-Y2023.09)


    Please see the file


    doc/FSiMX8MP_FirstSteps_eng.pdf


    for a description of how everything is installed and used. This doc sub-directory also contains other documentation, for example about the hardware of the boards and the starter kits.


    This is a major release for all F&S boards and modules based on the i.MX8M-Plus CPU (Solo, Dual and Quad), i.e. PicoCoreMX8MP(r2), armStoneMX8MP or efusmx8mp. More boards may be added to this family in the future. All these boards can work with software that is created from this release package.


    Please note that Yocto releases use a 'Y' for the version number. The version counting is independent form other releases.


    The release consists of the following files and directories:


    • Readme-yocto-f+s.txt Release notes (this text)
    • setup-yocto Script to download and install the Yocto release
    • binaries/ Precompiled images (full names)
    • sdcard/ Precompiled images (names as expected by
    • install script)
    • doc/ Hardware and software manuals, schematics


    Attention


    To use this release, you will have to update to Nboot 2023.09 and U-boot Y2023.09 first. For this we have added an U-Boot update script named "update.scr_disbaled" to the sdcard directory. Remove the "_disabled" and copy everything to an USB-Stick. Plug the USB-Stick to the board and start it.

    After the bootdelay the update should begin automatically. The board will reset 2 times. It will install Nboot, Uboot and Sysimg.

    When everything is complete the line

    "---- update COMPLETE! ----"

    will be printed to the console. Unplug the USB stick or the update will run again on the next reboot.


    Here are some highlights of this release.


    1. New Linux Kernel 5.15.71


    The Linux kernel is now based on 5.15.71

    - New optimizations for EXT4.

    - OverlayFS has better performance and copying up more attributes.

    - Many graphics improvements among the DRM/KMS drivers.

    - Linux 5.15 I/O can achieve up to ~3.5M IOPS per-core.

    - The PREEMPT_RT locking code was merged as a big step forward towards getting the real-time (RT) patches upstreamed in the Linux kernel.

    - Various scheduler improvements.

    - Various power management improvements.

    - Opt-in L1 data cache flushing on context switching as a security feature for the paranoid and other specialized conditions.

    - Improvements around compile-time and run-time detection of buffer overflows.

    - Additional protection around side channel attacks via clearing used registers prior to returning, making use of the compiler-side support.


    (https://www.phoronix.com/review/linux-515-features)


    Of course there are also many changes for other CPU types (like x86) and other graphics cores (like AMD, Nvidia, Intel) but these are not of interest here.


    2. New bootloader U-Boot 2021.04


    The U-Boot is now based on 2021.04.

    Additional to the security and feature updates of the mainline U-Boot, there has been many updates on the fsimage command and the general layout of the bootloaders in the flash memory. Because of this, it is necessary to update first the U-Boot, reset and the Nboot. You can use the update.scr from the sdcard directory for this.


    3. New Yocto version 4.0 Kirstone


    Updating Yocto to Version 4.0 Kirkstone. This provides many new package

    versions like Qt6.3 or Chroium 101. We have also updated the poky layer to version 4.0.11


    4. Improved Image versioning


    The exact versions of Nboot, U-Boot and Linux Kernel will now be printed

    during the boot process. If the image is build with an tagged commit the tag name will be printed. If the commit is not tagged, the git commits hash will be printed. If the image is based on an uncommitted git, the flag "-dirty" will be added to the last commits name.


    We use an own Linux version string that will be printed additionally to the mainline Linux version. This way modules that are built for the same Linux version with just some slight changes, can still be loaded without rebuilding the whole rootfile system.


    Linux device trees are also versioned with the current version of the linux git.


    You can check the versions of the different components at runtime at /sys/bdinfo/


    5. New Release concept over github


    We now provide our Linux gits over github at https://github.com/FSEmbedded. All release and pre-release states will be pushed here. For now, we will not push each single commit to github.


    Also the release sources are not added to the release tar anymore, but will be downloaded from github during the setup process.


    The versions of the different gits of a release can be looked up in the fs-release-manifest.xml file in the release tar directory.


    6. New Azurewave wlan driver


    Additional to the mainline SD-BT-8997 driver we now provide the NXP version. This driver supports additional security features, optimized. STA and AP modes and improved roaming.

    To activate the nxp mlan driver uncomment the respective lines in: recipes-kernel/kernel-modules/files/mxm-wifiex.conf Also comment out the line for the mainline mwifiex driver.

    Please note that bluetooth is currently not supported with the nxp-mlan driver. For Bluetooth please use the mainline driver.


    The following list shows the most noticeable changes in this release in more detail since our last release for this platform. Please note that the source code is also used for other platforms. This is why you will also find references to other CPU types and F&S boards here in the change log.


    u-boot-2021.04-fsimx8mp-Y2023.09 ()

    Supported boards: PicoCoreMX8MP PicoCoreMX8MPr2 armStonemx8MP

    efusmx8mp


    - Update to NXP u-boot-201.04

    - Add mcu_rdc settings to fsimx8mp

    - Improve Uboot versioning

    - Fix bootaux command

    - Introduce crc32 checksums for fsimage save command

    - Nboot can now be written to NAND flash with U-Boot

    (No kobs tool needed anymore)

    - Relocate U-Boot and Environment in fsimage save if needed

    - Have new NAND/MMC layouts for fsimx8mm/mn/mp

    - Uboot is now located in the boot partition of eMMC




    linux-5.15.71-fsimx8mp-Y2023.09 ()

    Supported boards: PicoCoreMX8MP PicoCoreMX8MPr2 armStonemx8MP

    efusmx8mp


    - Update to NXP Linux Version lf-5.15.71-2.2.0

    - Remove fsimx8m support

    - Switch to FSL_ASOC_CARD sound driver for sgtl5000

    - Add F&S Versioning for kernel and device tree

    - Improve uart dma support

    - Add leds-pca963x-fus driver and revert the original to

    the mainline driver

    - Enable power key support for PicoCore boards

    - Add imx8mp basler isp camera support

    - Add ast-adp-edt2 adapter support for efusmx8mp

    - Improve fsimx8m variants uart clock speed

    - Improve SDIO stability for Azurewave wlan chips

    - Add support to disable pin controls nodes in the device tree

    - Fix picocoremx8mp Bluetooth error after suspend-to-mem




    meta-fus-fsimx8mp-Y2023.09 ()

    Supported boards: PicoCoreMX8MP PicoCoreMX8MPr2 armStonemx8MP

    efusmx8mp


    - Create standalone meta-fus repository

    - Update meta-fus to Kirkstone (Yocto 4.0)

    - Add new packages to fus-image-std:

    fiwared, can-utils, libgpiod-tools, spitools

    - Add asound.state for wm8960 codec

    - Fix out-of-tree kernel module building

    - Add optional nxp-wifi driver support for Azurewave wlan

    - Add image for fsimx8mp basler camera support

    - Add calibration file for TSC2004 touch chip

    - Add layer versions to the final image

    - Set default Linux terminal to vt100

    - Remove U-Boot from sysimg

    - Add update script for updating NBoot, U-Boot and sysimg




    atf-5.15.71-fsimx8mp-2023.09 ()

    Supported boards: PicoCoreMX8MP PicoCoreMX8MPr2 armStonemx8MP

    efusmx8mp


    - Update to NXP version lf-5.15.71-2.2.1




    firmware-imx-8.10.1 ddr synopsys ()


    (no changes)




    Examples


    (no changes)




    Documentation


    - Update to version 1.5 of FSiMX8MP_FirstSteps_eng.pdf

    - Update to version 0.19 of LinuxOnFSBoards_eng.pdf


    Please download the hardware documentation directly from our website.

    Then you always have the newest version.

  • Support for our new SKIT-Display

    In order to use our new 7" LVDS-Display LCD.7.LVDS.1 for our i.MX8M-Plus boards, please apply the appended patches.


    There are two ways of applying the patches, depending on the used build-method.


    1.) Linux Kernel built separately

    If the used kernel is built independently from Yocto, copy the patches in your kernel main directory and execute the commands


    Code
    1. patch -p1 < 0001-Improve-leds-pca963x-fus-driver.patch
    2. patch -p1 < 0002-Improve-imx8mp-LVDS-clock.patch
    3. patch -p1 < 0003-Add-support-for-fsimx8mp-BT070L1060CS0I1ADA-display.patch

    If successful, start the build-process with the make command.


    2.) Integrate the patch in the Yocto-build process

    Implementing the patch directly in Yocto ensures that the patch is automatically applied when the Yocto build-process is executed.


    Copy the patch file in the directory


    <build_directory>/yocto-fus/sources/meta-fus/


    and execute

    Code
    1. patch -p1 < 0001-Add-SKIT-Display-for-Y2023.09.patch


    If successful, start the build-process with the bitbake command.


    This patch will be included in our next F&S i.MX8M-Plus Yocto Release.

  • I tried to add the SKIT-Display to my Yocto build, but I'm having issues. The patch applied (good), but the build fails:


    Code
    1. | make[1]: *** No rule to make target 'arch/arm64/boot/dts/F+S/picocoremx8mp-BT070L1060CS0I1AD-A.dtb'. Stop.
    2. | make: *** [/home/simon/src/fsimx8mp/fsimx8mp-Y2023.09/yocto-build/yocto-fus/build-fsimx8mp-fus-imx-wayland/tmp/work-shared/fsimx8mp/kernel-source/Makefile:1430: F+S/picocoremx8mp-BT070L1060CS0I1AD-A.dtb] Error 2
    3. | ERROR: oe_runmake failed
    4. | WARNING: exit code 1 from a shell command.
    5. ERROR: Task (/home/simon/src/fsimx8mp/fsimx8mp-Y2023.09/yocto-build/yocto-fus/sources/meta-fus/recipes-kernel/linux/linux-fus.bb:do_compile) failed with exit code '1'
    6. ```


    (I cleaned first using `bitbake -c cleansstate linux-bus` but that didn't help)

    Edit: I think I fixed it by making sure the patches are actually applied to the kernel, by adding these lines to linux-fus.bbappend:


    Code
    1. FILESEXTRAPATHS:prepend := "${THISDIR}/../skit-display/files:"
    2. SRC_URI:append = " file://0001-Improve-leds-pca963x-fus-driver.patch file://0002-Improve-imx8mp-LVDS-clock.patch file://0003-Add-support-for-fsimx8mp-BT070L1060CS0I1ADA-display.patch"

    Edited once, last by simonhausmann: Found a way to fix the issue. Might still be worth documenting if somebody applies to an existing tree. ().

  • Hello simonhausmann,


    I double checked my yocto build since it worked when I tested it. You're correct, your lines

    have to be added to the bbappend-file. It's a bit surprising why they're not included in the patchfile.


    Thanks for your post!

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.