Posts by fs-support_KM

    Hello,


    a software reset will cause the CPU to pull the WDOG_B of the external PMIC. The PMIC will then pull the POR for the CPU, so the reset cause in perspective of the CPU will always be POR.

    A way to distinguish a "real" POR from a SW-Reset would be to access the RESETSRC (0x29) register of the PMIC. You can look up the register in the datasheet for the BD71847 under chapter "3.3.10 Reset Source Indicators". If you need that value in the RootFS, you could read that register in UBoot and set the reset_cause for bdinfo to that value under board/F+S/common/fs_fdt_common.c.


    After Power-On:

    Code
    1. PicoCoreMX8MM-LPDDR4 # i2c dev 3
    2. Setting bus to 3
    3. PicoCoreMX8MM-LPDDR4 # i2c md 0x4b 0x29 1
    4. 0029: 80

    After SW-Reset (UBoot or Linux):

    Code
    1. PicoCoreMX8MM-LPDDR4 # i2c dev 3
    2. Setting bus to 3
    3. PicoCoreMX8MM-LPDDR4 # i2c md 0x4b 0x29 1
    4. 0029: 40


    A HW-Reset can't be distinguished from a Power-On though. I hope the information helps.



    Your F&S Support Team

    Hello,


    the second case [2] with the reboot at shutdown / poweroff is related to the post. Thank you for referencing it.

    The commit for the ATF is pushed on our Github and will be in the upcoming release: Fix poweroff command and ON/OFF button in imx_system_off() · FSEmbedded/atf-fus@2465c76 · GitHub


    The first case [1] is currently unknown and I can't reproduce it. I am trying it with the release fsimx8mp-2023.09. Do you use a baseboard of your own or are you using a starterkit of ours? If you are using a starterkit the revision of it would be good to know too.



    Your F&S Support Team

    Hello,


    can you check whether the crc32 binary is present? You can do this with the command "which crc32".

    We had a release version, where we included a crc-check in our bootloader-images, but didn't throw an error if the crc32 binary was not present.


    This might be the issue in your Ubuntu host machine. The crc32 command should be in the "libarchive-zip-perl" package under Ubuntu.



    Your F&S Support Team

    Hello,


    please communicate in English for this Forum, as others might need a solution for the same issue.


    Translated question:

    Quote

    I would like to boot my Yocto image from SD-Card.

    There is no bootloader image in the SD-Card. Do I need a U-Boot specific to the board and should the U-Boot image be in a partition of the SD-Card?


    Our boards usually boot from the onboard eMMC, so the U-Boot image for the early startup is in the Bootpartition from the eMMC.


    If you want to boot your Yocto root filesystem and/or the Linux kernel with Device-Tree from the SD-Card, you can do so by entering some commands in U-Boot:

    Code
    1. setenv mmcdev 2 // Sets the current mmc device for the following commands to SD-Card
    2. run .kernel_mmc // In boot process the kernel will be loaded from current mmc device (SD-Card now)
    3. run .fdt_mmc // Same for Device-Tree
    4. run .rootfs_mmc // Same for RootFS
    5. saveenv // Write the new environments into the eMMC, so they remain after a powercycle


    If you just want to boot your Yocto rootFS, you can leave out the commands run .kernel_mmc and run .fdt_mmc.

    If you want to set the boot medium to the eMMC again, you can do this with the same commands, just with setenv mmcdev 0.


    The U-Boot expects on the boot medium a FAT partition, which includes Device-Trees and the kernel image, and an ext4 partition, which contains the root filesystem. It may be that you need to edit the environments in the U-Boot, if your SD-Card has another partiton layout.


    I hope I could clarify the boot process for you.



    Your F&S Support Team

    Hello,


    to investigate why the touchscreen is not responding, we will need some additional information:

    • Boardvariant (V3I / V4)
    • The release you are currently using (e.g. fsimx6ul-B2022.04)
    • Type of the display (RGB / LVDS)


    Your F&S Support Team

    Hello,


    the i.MX 93 does not support hardware acceleration for OpenGL. The Pixel Pipeline (PXP) only provides hardware acceleration for basic 2D conversion, e.g. scaling, color space conversion, rotation and composite alpha blending and color key.


    These functions are provided for the G2D driver and will be called for the usage of Wayland/Weston.



    Your F&S Support Team

    Hello,


    it seems you did receive special NBoot+UBoot for a DRAM with 4GB. In our official release these changes are not present yet as they complicate the standard memory layout significantly. This is also the cause why the UBoot currently sees 0 Bytes for the DRAM.


    Please contact us for this case directly through our support E-Mail address.



    Your F&S Support Team

    Error Report

    Our yocto-download script uses the repo tool to get all the yocto-layers and sources necessary for a successful build.

    The repo tool recently changed, so that our yocto-download script breaks on older Fedora Machines with the following error:


    Code
    1. $ ./yocto-download
    2. Getting download information (repo init)
    3. File "./repo", line 51
    4. def print(self, *args, **kwargs):
    5. ^
    6. SyntaxError: invalid syntax


    Solution

    The fix for this issue is fairly simple. The default python version must be set to python3. This can be done with the following command:


    Code
    1. sudo ln -sf /usr/bin/python3 /usr/bin/python


    python3 should already be present, but you can check this with ll /usr/bin/python*. In case it is not present, it can be installed with the package manager via sudo dnf install python3.



    Your F&S Support Team

    Hello,


    could you try to use the version 7 of VirtualBox? In our "ReadMe.txt" for the virtual machine with Fedora, there is a note that there are problems with audio on version 6. The error message also refers to an audio entry, so the upgrade to version 7 might already fix it.



    Your F&S Support Team

    Recovery Tool for i.MX8 series (v1.1.6)

    Description:


    The Recovery Tool for the i.MX8 series provides a simple way to restore the firmware on the board up to a working U-Boot. The tool and a description, how to use it, can be accessed in the download section in "My F&S" under "BOARD_NAME/Linux/Recovery Tool/". The tool comes packed with the current latest NBoot and U-Boot from the release of the architechture. Firmware from another release can be applied by removing the NBoot and U-Boot from the folder and exchanging them with the ones from the target release.


    ATTENTION: You should never have multiple NBoot and U-Boot files in the folder of the Recovery Tool!


    Changes since v1.1.5;

    • Fix parsing of new NBoot
    • Add form and handling for boardrevision
    • Add checkbox to keep CMD for UUU open
    • Add simple and expert mode


    Supported boards:

    • armStoneMX8MP, efusMX8MP, PicoCoreMX8MP, PicoCoreMX8MPr2
    • PicoCoreMX8MM-DDR3L, PicoCoreMX8MM-LPDDR4, PicoCoreMX8MMr2-LPDDR4


    Releases for included firmware binaries:

    • fsimx8mm-Y2023.10
    • fsimx8mp-Y2023.09



    Your F&S Support Team

    Hello,


    Currently the tool is only available for Windows. We have a Linux port planned, but it will take some time until a prototype is ready for usage.

    If Windows is completely out of question and you need a solution now, you can send an E-Mail with the required release and the serial number of your board to our support address. The context, that a recovery tool is needed, should be also clear in the mail.



    Your F&S Support Team

    It is possible to shut down the ethernet link with "ifconfig eth0 down". That way, the PHY should power down and disable further communication.

    You might want to disable the automatic link up + dhcp for wired connections, as Yocto adds that policy under /lib/systemd/network/80-wired.network. If you do this, you will need to run the commands "ifconfig eth0 up" and "udhcpc -i eth0" manually.


    I just tested that the genphy_suspend function from the ethernet PHY driver in the kernel gets called, when "ifconfig eth0 down" is issued. This way the generic power down over the mdio communication can be done.



    Your F&S Support Team

    Hello,


    please see i.MX8M-Plus Recovery Tool.

    We are now providing a recovery tool for the fsimx8mp releases. The binaries in the tool are from release fsimx8mp-Y2023.03, but as long as the NBoot and UBoot fit together, you can exchange the UBoot binary to the release you want to recover to.


    The recovery tool is using the UUU tool, so if you know what you do, you can also edit the write-emmc-uboot.auto to write every image. The standard auto script flashes everything up to the UBoot, so the Linux kernel, Device-Tree and RootFS are still missing. But in UBoot, you should better use the install.scr/update.scr script with an USB-Stick.



    Your F&S Support Team

    For the fsimx8mp releases the new NBoot currently does not support a user interface to recover from a deleted or corrupted UBoot.

    For that, we now provide a recovery tool to reflash the NBoot as well as the UBoot. The tool is ready to download as a zip archive on "My F&S" under

    <Your-Board-Name> -> Linux -> Recovery Tool

    In the same directory there exists a PDF document, which explains the steps necessary to recover the UBoot.



    Your F&S Support Team

    For our current releases fsimx8mm-B2021.06.1 and fsimx8mm-Y2021.04.2, the USB-C OTG device is not able to detect an USB host device.


    This patch enables the detection for revisions of the PCoreBBDSI equal or greater than 1.30. The check for an USB host device is handled in revision 1.30 through polling and in revision 1.40 through an available interrupt.

    To apply the patch navigate in the terminal to the Linux source code and issue the following command:

    patch -p1 < PATH/TO/PATCH/0001-Enable-USBC-OTG-function-for-fsimx8mm.patch


    To avoid wrong behaviour for the USB-C OTG device please ensure that the define CONFIG_PICOCOREBBDSI_BOARD_REVISION in your device-tree contains the correct value for your PCoreBBDSI:

    #define CONFIG_PICOCOREBBDSI_BOARD_REVISION 140 // Example for PCoreBBDSI revision 1.40


    Your F&S Support Team

    Hello,


    for a PicoCoreMX8MM, I could boot from the sdcard by setting the following environments:

    Code
    1. setenv mmcdev 0
    2. setenv usdhcdev 0
    3. run .kernel_mmc
    4. run .fdt_mmc
    5. run .rootfs_mmc
    6. saveenv
    7. boot


    The order of the mmc and usdhc device might change between releases and boards.



    Your F&S Support Team

    F&S i.MX6SX Linux Release B2019.11.1 (03.11.2022)

    Please see the file


    doc/FSiMX6SX_FirstSteps_eng.pdf


    for a description of how everything is installed and used.



    This is a minor release for fsimx6sx which adds functionality for the Realtek Ethernet Phy RTL8211FD and the Touch Controller TSC2004. fsimx6sx is the software for all boards from F&S that are based on the i.MX6-SoloX CPU from NXP (or i.MX6SX for short). Currently these are the modules efusA9X, efusA9Xr2, PicoCOMA9X and PicoCoreMX6SX. Further boards may be added to this family in the future. All these boards can work with software that is created from this release package.


    This release brings new versions to all parts of the software stack. Here are some highlights of this release.



    1. New version numbering


    We have changed the way how we name versions. In the past we had a version number made up of a major part m and a minor part n. Then we used Vm.n for Buildroot releases and Ym.n for Yocto releases. Release versions were counted individually for each CPU architecture. But then a "new" CPU type unfortunately had a smaller version number than an "old" CPU, even if the code was coming from the same sources or was even newer. This caused some irritations and misunderstandings of what release is actually the newest.


    So from now on we will use the year and month of the release instead, preceeded by a 'B' for Buildroot releases and a 'Y' for Yocto releases. For example the "B2019.11" of this release indicates a Buildroot based release from November 2019.



    2. Support for new board efusA9Xr2


    This is the first regular release that supports efusA9Xr2, which may use the Realtek Ethernet Phy.



    3. New U-Boot 2018.03


    We have a considerably newer U-Boot now. One of the main new features is display support, so basically U-Boot can now be used to show a splash screen.


    U-Boot will also show more information about the CPU type now, for example temperature range, possible speed, etc. The command "clocks" will show much more information about internal clock rates. And USB storage devices are detected faster and more reliably than before.


    U-Boot has experienced quite a lot of internal restructuring. For example it now also supports configuration via a Kconfig menu, similar to Linux kernel and Buildroot. After configuration with



    Code

    1. make fsimx6sx_defconfig


    simply call



    Code

    1. make menuconfig


    to show the menu. There you can select and de-select entries or move to sub-menus.


    Moving all configuration options from the previous header file to this menu is a long-term and still on-going process. So not all features are available in the menu, yet.


    U-Boot is now compiled and running in THUMB mode. This saves space that is needed for all the display code.



    4. New Linux kernel 4.9.88


    The Linux kernel is now based on 4.9.88. By default, we are using the zImage format of the kernel now, not the uImage format as before. Here are some of the new features since the previous kernel 4.1.15.


    • Improvements and optimizations in memory management, for example better heap and page management (tmpfs, shmem), better protection against attacks by implementing stack, heap and memory randomization.
    • Performance optimizations for the network stack, like faster TCP connections, quick killing of hanging network links, more features for the packet filter (firewall), smaller latencies on WLAN.
    • Optimizations in block layer, for example better Device Mapper for LVM, improved parallel access to directories, more efficient access to SSDs, parallel access for NFS, kernel support for file copy, server-side copy for CIFS, NFS, XFS, support for hard discs with host-managed SMR (Shingled Magnetic Recording).
    • Optimizations on file systems (NTRFS, EXT4, F2FS, NFS, XFS, Overlayfs, Ceph), new cluster filesystem Orangefs
    • Many improvements in graphics stack, like DRM (Direct Rendering Manager), new open source graphics driver etnaviv for Vivante graphics on i.MX CPUs (etnaviv = vivante backwards)
    • Better load balancing of processes to CPU cores, new cgroups v2, improved power and frequency handling, new cpufreq governor schedutil.
    • New GPIO infrastructure not using sysfs, supposed to be faster.
    • Support for USB SuperSpeedPlus (USB 3.1).
    • Many many new and improved drivers for WLAN chips, touch controllers, audio codecs, cameras, MMC/SD cards, etc.


    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.



    5. Buildroot 2019.05.3


    Buildroot 2019.05 has many many updated packages, for example Qt-5.12, busybox-1.30.1, xserver-1.20.5 and gstreamer-1.16.0. We actually use buildroot-2019.05.3, which is a newer version that already has some more fixes.


    6. New toolchain fs-toolchain-8.3-armv7ahf


    Our new toolchain is now based on gcc-8.3 that fully supports C++14 and has basic support for C++17 and even some experimental support for C++2a.


    This toolchain is now a 64-bit toolchain, i.e. it will not run on PCs (or VMs) with a 32-bit Linux anymore. The default output of the toolchain is of course still ARMv7 code for 32 bit ARM CPUs like Cortex-A7 or Cortex-A9, as in i.MX6UL or i.MX6SX.


    This toolchain also fixes a bug in the calling convention for ARM CPUs that was introduced in gcc-5.x and prevented some code optimizations. Many software packages now depend on a compiler that has this bug fixed. For example our new u-boot-2018.03 will produce bad code if compiled with a toolchain before gcc-6.0. Qt5-webengine will not compile with a toolchain before gcc-8.0. So please use this new toolchain together with the code of this release.



    7. Default LVDS display replaced


    The ChiMei LVDS display that F&S used to ship with some Starter Kits is not available anymore. We will ship a different display from now on. Therefore we also changed the default settings for LVDS in the Linux device trees so that upcoming customers will have a working display.


    If you still need the previous settings, simply remove the two comment slashes at the beginning of the following line in the device tree and re-build the device tree. Then the old settings will be active again.


    //#define DISPLAY_LVDS_CHIMEI



    8. New driver for Silex WLAN


    In the past, the Silex WLAN driver was only available as a binary package. Now, for Linux 4.9.88, the driver is an open-source version that is built as part of Buildroot. This means you are more flexible with changes of the networking stack or specific configurations of the driver. A second package provides the firmware files. Please use exactly these, they contain modifications that are specifically adapted to our boards.


    Unfortunately we did not get patches for a newer bluez version in time. So Bluetooth is still based on bluez-5.39. Maybe we can improve this with a patch later.



    9. 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 FSiMX6SX_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 FSiMX6SX_FirstSteps_eng.pdf document now really only shows a basic introduction to the work with boards of the fsimx6sx 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 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 regular i.MX6SX release (not counting the intermedieate release for PicoCoreMX6SX). 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.



    nbootimx6sx_50.bin (VN50) (16.09.2022)

    Supported Boards: efusA9X, efusA9Xr2, PicoCOMA9X, PicoCoreMX6SX, PicoCoreMX6SXr2


    NBoot for i.MX6SX shares the source code with other i.MX6 CPU variants like i.MX6UL and the regular i.MX6, therefore versions are counted consecutively.


    [VN44]

    • 0004625: Add support for new board GAR3

    [VN45]

    • 0004735: change version naming for super secure variant
    • 0004734: use built-in randomizer
    • 0004732: correct DDR3 detection routine

    [VN46]

    • 0004803: Improve eMMC boot support
    • 0004802: Add support for new board UL100

    [VN47]

    • 0005164: Add support for new board efusA9r2

    [VN48]

    • 0005263: nboot for eMMC does not start on PicoCoreMX6UL when fuses not set and SD card is inserted

    [VN49]

    • 0005378: Add support for new boards efusA9Xr2, armStoneA9R3, armStoneA9r4, PicoCoreMX6SXr2

    [VN50]

    • 0005541: NAND dump does not work
    • 0005540: Memory errors on armStoneA9
    • 0005542: Board revision is wrong on armStoneA9



    u-boot-2018.03-fsimx6sx-B2019.11.1 (07.10.2022)

    Supported boards: efusA9X, efusA9Xr2, PicoCOMA9X, PicoCoreMX6SX


    • Merge tag 'fsimx6-B2020.04.2' into fus-2018.03
    • Merge remote-tracking branch 'remotes/origin/fus-2018.03'
    • Merge tag 'fsimx8mm-B2021.06.1'
    • Remove XTAL-OFF setting for ALDPS in realtek driver
    • Remove obsolete mmc defconfigs
    • Set Board offset directly in fs_board_get_type
    • Add support for efusA9Xr2 and PicoCoreMX6SXr2



    linux-4.9.88-fsimx6sx-B2019.11.1 (07.10.2022)

    Supported boards: efusA9X, efusA9Xr2, PicoCOMA9X, PicoCoreMX6SX


    • Add support for efusA9Xr2 and PicoCoreMX6SXr2
    • Add TSC2004 support for fsimx6sx
    • Fix GPU and eMMC/NAND entries for newer UBoot in picocoremx6sx



    buildroot-2019.05.3-fsimx6sx-B2019.11.1 (07.10.2022)

    Supported boards: efusA9X, efusA9Xr2, PicoCOMA9X, PicoCoreMX6SX


    • Merge tag 'fsimx6-B2020.04.2' into fus-4.9.x
    • Add support for efusA9Xr2 and PicoCoreMX6SXr2
    • Fix ext4 size for fsimx6sx_qt5_defconfig



    Examples


    (no changes)



    Toolchain


    fs-toolchain-8.3-armv7ahf.tar.bz2 for Linux

    • Based on gcc-8.3
    • Support for C and C++
    • Includes glibc-2.29 (compiled for ARM code)
    • With binutils-2.32
    • Hardware floating point
    • Native Posix Thread Library (NPTL)
    • Full support for C++14 and OpenMP 4.5
    • Basic support for C++17
    • Experimental support for C++2a


    Documentation

    • Update to version 2.2 of FSiMX6SX_FirstSteps_eng.pdf
    • Add new version 0.16 of LinuxOnFSBoards_eng.pdf

    Please download the hardware documentation and GPIO Reference Cards directly from our website. Then you always have the newest version.


    Your F&S Support Team