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
-
make fsimx6sx_defconfig
simply call
Code
-
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