i.MX8MN Linux Release Y2021.10 (Yocto)

  • i.MX8M-Nano Linux Release Y2021.10 (Yocto)


    This is a major release for all F&S boards and modules based on the i.MX8M-Nano CPU (Solo, Dual and Quad), i.e. PicoCoreMX8MN. 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.


    The release consists of two files:


    fsimx8mn-Y2021.10.tar.bz2

    This is the main release itself containing all sources, the binary images, the documentation, examples and the toolchain.


    sdcard-fsimx8mn-Y2021.10.tar.bz2

    If you copy the contents of this archive to an SD card, you can install our precompiled standard system in a very straightforward and comfortable way on the board. The SD card archive is meant for people who just want to try a release first without having to download the quite large main archive. Its content is also contained in the main release archive, so if you want to download the main archive anyway, you don't need to bother with the SD card archive.


    These tar archives are compressed with bzip2. So to see the files, you first have to unpack the archives

    Code
    1. tar xfv fsimx8mn-Y2021.10.tar.bz2

    This will create a directory fsimx8mn-Y2021.10 that contains all the files of the release.


    Please read the file doc/FSiMX8MN_FirstSteps_eng.pdf. It describes the first steps when working with the board and gives references for further information.


    !!!! Important !!!


    Please note that this release is only compatible with PicoCoreMX8MN of Board Revision 1.30. The Board Revision can be found at the top Site of the board, printed in golden letters. (PCoreMX8MN Rev 1.30 TOP) Please contact F&S if you are owning a PicocoreMX8MN revision 1.20 or lower and want to use this release.


    This does not apply for PCBs for DDR3L based PicocoreMX8Mx. (Rev. 1.20 PCoreMX8Mx) Here, the release can be used from revision 1.20 upwards.


    !!!! Important !!!


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


    Here are some highlights of this release.


    1. New Boot concept for i.MX8MN based boards (fsimx8mn-NBoot)


    The fsimx8mn-NBoot is a first stage bootloader preinstalled to the boards, similar to the fsimx6 Nboot.It handles many board-specific configurations like the DRAM initialization or assembly variants so the user does not need to care about it.


    It does not yet offer the full functionality of the fsimx6 NBoot, like an own command line, but will be further developed in this direction.


    NBoot and U-Boot can be easily updated using the new fsimage command, that automatically flashes to the right hardware partitions. For more information on the fsimage command please see the Linux On F&S Boards documentation chapter "Command fsimage To Handle F&S Images".


    2. New Linux kernel 5.4.70


    The Linux kernel is now based on version 5.4.70.


    From https://kernelnewbies.org/Linux_5.4:

    This release includes the kernel lockdown mode, intended to strengthen the boundary between UID 0 and the kernel; virtio-fs, a high-performance virtio driver which allows a virtualized guest to mount a directory that has been exported on the host; fs-verity, for detecting file tampering, like dm-verity, but works on files rather than block devices; dm-clone, which allows live cloning of dm targets; two new madvise() flags for improved app memory management on Android, support for new Intel/AMD GPUs, support for the exfat file system and removing the experimental status of the EROFS file system; a new haltpoll cpuidle driver and governor that greatly improves performance for virtualized guests wanting to do guest-side polling in the idle loop; and blk-iocost, a I/O cgroup controller that attempts to calculate the cost of I/O more accurately. As always, there are many other new drivers and improvements.


    3. New eMMC-Image format sysimage


    We introduce a new image format for eMMC based boards, that contains a raw Uboot partition, a FAT32 Boot partition for Kernel and device trees, and an ext4 partition for the rootfs. This image can be flashed to the eMMC as a whole, allowing an easy update of the system at once. For further information please the Linux On F&S Baords documentation chapter Mass Storage Devices -> eMMC.


    Please note that the sysimage layout of Buildroot and Yocto currently differ so exchanging separate partitions between those two might not work. This will be fixed in future releases.


    4. Usage of KMS output-chain for DRM bridges


    To ensure the usage of different bridges and panels the kernel mode setting (KMS) will now be used for our device trees. The concept behind KMS is to create one or multiple DRM pipelines consisting of an encoder, bridges and a panel with one or more connectors. The idea is that the display driver knows the display modes that each member of the pipeline supports and can configure a valid display mode for the pipeline.

    [Source: https://www.kernel.org/doc/html/latest/gpu/drm-kms.html]


    5. Yocto 3.0 (Zeus)


    With this release systemd will be the default init system for the example-fus-images.


    Systemd is a init system and service manager for Linux operating systems. It provides a system and service manager that runs as PID 1 and starts the rest of the system. Systemd provides aggressive parallelization capabilities, uses socket and D-Bus activation for starting services, offers on-demand starting of daemons, keeps track of processes using Linux control groups, maintains mount and automount points, and implements an elaborate transactional dependency-based service control logic.

    [Source: https://www.freedesktop.org/wiki/Software/systemd/]


    It is configured via the systemctl application.


    Also the root file system will now be mounted as read-write by default. This can be changed to read-only when setting up the build enviroment via the fus-setup-release.sh script. See LinuxOnFSBoards_eng.pdf for a detailed description.


    6. New toolchain fs-toolchain-9.3-armv8ahf


    It showed that some packages needed newer Kernelheaders to compile. So we have updated the toolchain again. Please use this new toolchain together with the code of this release.


    Remark: When changing the toolchain, you should always clear the compiler cache, e.g.


    rm -r ~/.ccache ~/.ccache-buildroot


    Otherwise the compiler may mix up precompiled code from the cache with newly compiled code, causing strange runtime errors.


    7. Documentation


    In the past, the documentation that was included in the release package itself was often superseded by newer versions on our website. But people continued to use the outdated version of the release, causing unnecessary complications.


    To avoid this, from now on only the software related documentation is directly included in the release and we have added a chapter to FSiMX8MN_FirstSteps_eng.pdf that contains direct links to the appropriate resources on our website. There you can download the newest versions of hardware documentations, schematics, layout files, certificates, accessories, add-ons, adapters and similar things.


    The software documentation is completely reworked. The FSiMX8MN_FirstSteps_eng.pdf document now really only shows a basic introduction to the work with boards of the fsimx8mn architecture. And there is a new document LinuxOnFSBoards_eng.pdf that shows a more in-depth view of a Linux system in general and of the F&S versions of NBoot, U-Boot, Linux and Buildroot/Yocto in particular. This is still work in progress, some chapters are not fully done yet and will be revised in the future. Check our website from time to time to see if there is a newer version of this document.



    =========================================================================


    The following list shows the most noticable changes in this release in more detail since our last pre i.MX8M-Nano release. 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 changelog.



    u-boot-2018.03-fsimx8mn-Y2021.10 (30.10.2021)

    ---------------------------------------------

    Supported boards: PicoCoreMX8MN


    - Correct boot from ubi environments to create F&S Updater volumes

    - Add env import/export cmd

    - Fix commands to create F&S Updater volumes in fsimx8mn


    u-boot-2018.03-fsimx8mn-Y2021.09 (24.09.2021 - not released)

    ---------------------------------------------

    Supported boards: PicoCoreMX8MN


    - Add support for board GAR3

    - Add support for board vand3

    - Increase NBoot version to 2021.07

    - F&S Update Framework interface fixed

    - Improve environment variables for fsimx8mm F&S Updater

    - Move enum fsimg_mode from fs_image_common.h to fs_image_common.c

    - Change fsimx8mn to use NBoot

    - Add -ddr3l/-lpddr4 to device tree names for fsimx8mm/fsimx8mn

    - Change ingress delay for KSZ9893R Ethernet switch on fsimx8mm/mn

    - Allow optional board-fdt in BOARD-CFG files

    - Add correct fuse values for fsimx8mn

    - Increase size for fs_sys_prompt[]

    - Handle new eMMC layout on fsimx8mn

    - On fsimx8mn, disable code to detect if running on secondary SPL

    - In fat_fus.c, handle files > 2GB better

    - Remove unused folder fsimx8mx_nano

    - Fix building process for fsimx8mm

    - Adjust NAND areas for fsimx8mn nboot

    - Add USB Type C OTG functionality

    - Add variant of PCoreMX8MN




    linux-5.4.70-fsimx8mn-Y2021.10 (30.10.2021)

    -------------------------------------------

    Supported boards: PicoCoreMX8MN


    - Improve tsc200x-core touch driver

    - Improve tsc200x-core touchscreen driver

    - Improve panel-simple driver of drm/panel

    - Improve sec_mipi_dsim-imx.c driver

    - Improve lontium-lt9211.c bridge driver

    - Improve devicetree picocoremx8mm-ddr3l-lcdif-adp-mipi2rgb.dts

    - Add new devicetree picocoremx8mm-ddr3l-lcdif-g050tan01.dts

    - Add tbs2 mipi2rgb device tree

    - Enable adp-mipi2rgb for fsimx8mn

    - Use panel-lvds driver for output of TC358775

    - Enable USB Type-C for picocoremx8mn-lpddr4

    - Enable adp-mipi2lvds1 for fsimx8mn


    linux-5.4.70-fsimx8mn-Y2021.09 (24.09.2021 - not released)

    -------------------------------------------

    Supported boards: PicoCoreMX8MN


    - Fix ee0350-mipi-disp touch interrupt pin

    - Revert NXP commit MLK-24133 arm64: SAI1_RXD0 and SAI1_MCLK pins only

    - Enable I2S_B for PicoCoreMX8MP

    - Add cpu freq powersave, conservative governor fix to fsimx8mp_defconfig

    - Add mwifiex node to picocoremx8mp device tree

    - Improve picocoremx8mp Cortex-M7 support

    - Improve support for imx6ul-touchscreen controller

    - Add driver for lontium-lt9211 RGB2LVDS converter

    - Add full device-tree support for PicoCOMA7

    - Improve support for picocoremx6ul revision 1.20

    - Add support for picocoremx6ul100 on architecture fsimx6ul

    - Improve support for picocom1.2

    - Improve architecture fsimx6 PCIe setup

    - Improve support for ADP-MIPI2LVDS1 for fsimx8mm

    - Add support for ADP-MIPI2RGB adapter for fsimx8mm

    - LF-3132: dmaengine: imx-sdma: raise up channel0 priority after resume

    - Enable Polling of the status register for USB-C ptn5110

    - Change naming for device trees of PicoCoreMX8MM_MN_Mx

    - Use simple-panel driver for tc358775 with j070wvtc0211

    - Improve device trees for fsimx8mn




    yocto-3.0-fsimx8mn-Y2021.10 (30.10.2021 based on Yocto 3.0 Zeus)

    ----------------------------------------

    Supported architectures: fsimx8mn


    - Include all weston binaries for fus-image-std

    - Add mipi2rgb for fsimx8mn

    - Add building of install.scr in Yocto

    - Add adp-mipi2lvds for fsimx8mn

    - Add fs-startscript for core-image-minimal


    yocto-3.0-fsimx8mn-Y2021.09 (24.09.2021 based on Yocto 3.0 Zeus - not released)

    ------------------------------------------------------------------

    Supported architectures: fsimx8mn


    - Remove archiving of sysimg

    - Remove unused config fsimx8mx-nano.conf

    - Adjust device tree names in fsimx8mm and fsimx8mn

    - Enable different UBoot offsets in user area of eMMC

    - Enable initramfs for imx-kobs

    - Add touch calibrator for Weston

    - Update .gitignore




    atf-5.4.70-fsimx8mn-Y2021.09 (02.09.2021)

    -----------------------------------------

    Supported boards: PicoCoreMX8MN


    - Add imx-atf rel_imx_5.4.70_2.3.2

    - Add domain permission for UART2 on M4

    - Add DEBUG_CONSOLE for imx8mn




    firmware-imx-8.10.1 ddr synopsys (02.09.2021)

    -------------------------------------------




    Examples

    --------


    (no changes)



    Documentation

    -------------


    - Update to version 1.0 of FSiMX8MN_FirstSteps_eng.pdf

    - Update to version 0.11 of LinuxOnFSBoards_eng.pdf


    Please download the hardware documentation directly from our website.

    Then you always have the newest version.


    Your F&S Support Team

  • Add error handling for the install script with eMMC


    Currently the UBoot update process does not react to errors in UBoot commands issued in the install and update scripts. So whenever the load command fails, the RAM area will get written to the destination as it is. For boards with a NAND flash this is not as problematic, because the UBoot will not be affected by the update. For eMMC however the UBoot is included in the sysimg file. An error in the load command results in a corrupt UBoot and the board will not be bootable without external flashing software.


    The updated install script checks for errors that might occur in the load command and aborts the update process before actually writing the corrupt data. Also the chunksize for the eMMC update process is reduced to support more USB sticks.


    The attached zip file contains the install script as a text file and precompiled binaries. The folder structure is exactly as in the release directory with binaries/, sdcard/ and sources/, so it is enough to unpack the zip file inside the release directory fsimx8mn-Y2021.10/.


    If the changes should also be comitted to the Yocto source code, download the attached patch, go to the source directory yocto-3.0-fus/, move the patch file there and apply it with the command patch -p1 < 0001-Add-error-handling-for-the-install-script-with-eMMC.patch.



    Your F&S Support Team

  • Fix yocto-download script not able to download meta-mono


    Currently, the yocto-download script, used to download the sources for the yocto build, is not working anymore.


    This is due to a change of the source URL of the meta-mono layer.


    To fix this please either change the line in the yocto-download script

    DOWNLOAD_URL=http://git.yoctoproject.org/cgit/cgit.cgi/meta-mono

    to

    DOWNLOAD_URL=https://git.yoctoproject.org/meta-mono


    or place the attached patch to your yocto build directory yocto-3.0-fus and run

    patch -p1 < 0001-Fix-meta-mono-URL-zeus.patch



    Your F&S Support Team

  • Patch for Yocto package sources

    The git repository host Codeaurora has been shut down, so some NXP packages cannot be downloaded anymore.

    This patch fixes the sources of these packages, so they can be downloaded from their new location at github.


    Copy this patch to the Yocto directory yocto-3.0-fus and apply it with:


    Quote

    patch -p1 < 0001-Fix-fsimx8mn-Y2021.10-package-sources.patch


    Your F&S Support Team