fsimx6sx-V1.0 released

      fsimx6sx-V1.0 released

      i.MX6-SoloX Linux Release V1.0

      We have uploaded a new Linux version for all boards and modules based on the i.MX6-SoloX CPU to our server, i.e. the fsimx6sx architecture, which is currently only the efusA9X and a customer specific board called BemA9X. This release is running on all platforms of this architecture at the same time. So you can download the same binaries for NBoot, U-Boot, Linux kernel and Buildroot root filesystem to any of the i.MX6-SoloX boards and it will run.

      The release consists of two files:

      fsimx6sx-V1.0.tar.bz2
      This is the main release itself containing all sources, the binary images, the documentation and the toolchain.

      sdcard-fsimx6sx-V1.0.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

      Source Code

      1. tar xvf fsimx6sx-V1.0.tar.bz2

      This will create a directory fsimx6sx-V1.0 that contains all the files of the release.

      Please read the file doc/FSiMX6SX_FirstSteps_eng.pdf. It lists the meaning of all files and shows how to install and use everything.

      Release Notes for fsimx6sx-V1.0

      This is the first major release for fsimx6sx. Despite the fact that the i.MX6SX CPU is in the i.MX6 series, it is slightly different to all the other CPUs there. It has a Cortex-A9 core and an additional Cortex-M4 core. It therefore resembles in some aspects the Vybrid CPU. Linux will only use the Cortex-A9 core, the Cortex-M4 core can be used for real-time purposes or other microcontroller tasks. The display capablities of the i.MX6SX are also considerably reduced and there is also no hardware accelerated multimedia available like video/audio decoding or encoding. But on the other hand the i.MX6SX has better networking capabilities. It supports two GBit ethernet ports where each one has a better throughput than the GBit ethernet port of the regular i.MX6 CPUs.


      1. U-Boot 2014.07

      U-Boot has received quite a lot of changes that increase stability and functionality. For example when downloading a file with tftp or nfs, the size of the already downloaded part is now output at the end of each row of progress hash marks. If a cable is unplugged, the board switches faster to the other ethernet port, but at the same time slow connections are not timed out too quickly. This was a problem from time to time in previous versions.


      2. Kernel 3.14.52 with Device Trees

      This release is based on the latest kernel that is supported by Freescale/NXP. This new kernel version now uses device trees. A device tree describes the hardware of the platform where the kernel is actually running on. It is a separate file and is handled separately from the kernel image.

      The kernel image is still compiled as uImage. But now it is necessary to provide a load address for the U-Boot image. So instead of just typing

      Source Code

      1. make uImage


      as in earlier versions, you now have to type something like:

      Source Code

      1. make LOADADDR=0x80800000 uImage


      If you set this variable in the shell environment with

      Source Code

      1. export LOADADDR=0x80800000


      then you can use the old make uImage command again.

      Apart from that, the kernel image is handled in the same way as before, which means it is usually stored in the "Kernel" partition in U-Boot.

      Each platform now has its own device tree file. These device tree files are defined as text files with a special syntax in directory arch/arm/boot/dts. They all have the filename extension .dts (device tree source). The syntax is used to define nodes and properties. Each node represents a device of the platform, for example a CPU core, a memory, a peripheral device or even an external chip. The properties of a node tell how this device behaves in detail. For example if the device is an A/D Converter, then one property might be the conversion speed, i.e. how many values are sampled per second.

      Of course for a specific board, you only need the one device tree file that describes the hardware of exactly this board. This text file is converted by the device tree compiler dtc to a binary "blob" with filename extension .dtb (device tree blob). The dtc program is also part of the kernel build infrastructure, therefore compilation is simply done with a make command. For example the device tree for the efusA9X board is called fsimx6sx-efusa7x.dts and you can compile it by calling

      Source Code

      1. make fsimx6sx-efusa9x.dtb


      The resulting image (blob) can also be found in arch/arm/boot/dts. It can either be appended to the kernel image file, or it can be handled separately. We at F&S have decided to handle it separately, because then you can use one and the same kernel image in combination with many different device tree binaries and vice versa. In our opinion attaching the device tree to the kernel image somehow contradicts the idea of strict separation of kernel image and platform data and reduces again the flexibility of combinations.

      However handling it separately means that you have to download the device tree blob as a second step when installing the kernel. A kernel without a device tree will not work. Because U-Boot uses the term "Flat Device Tree" for these files, we have called the MTD partition "FDT". The following sequence will download the device tree file for efusA9X via tftp to the board and stores it in partition "FDT":

      Source Code

      1. tftp fsimx6sx-efusa9x.dtb
      2. nand erase.part FDT
      3. nand write $loadaddr FDT $filesize


      There is also a command "fdt" in U-Boot to inspect, list and even modify a device tree. For a description of this command call:

      Source Code

      1. help fdt


      We also have added several variables to set the boot strategy for the device tree. These variables all begin with ".fdt_". For example to automatically download the device tree via tftp when booting, call

      Source Code

      1. run .fdt_tftp


      To load the device tree from NAND, use

      Source Code

      1. run .fdt_nand


      This automatically uses the correct version of the bootm command. bootm now expects three arguments

      1. Kernel image address
      2. initrd address; use '-' (a dash) if no initrd is required
      3. Device tree address


      So for example to start our kernel from the "Kernel" partion with the device tree from the "FDT" partition, use the following command sequence:

      Source Code

      1. nand read 80800000 Kernel
      2. nand read 81000000 FDT
      3. bootm 80800000 - 81000000


      When the kernel starts, only those devices are actually activated, where there is a matching pair of platform device and device driver. This means the platform device must be listed in the device tree AND the device driver must be present in the kernel image. All other devices, where either there is only the platform device and no driver or a driver and no platform device, remain inactive.

      The advantage of device trees is that you can have a rather generic kernel with many device drivers included. But what devices will actually be activated and which parameters they will use is fully controlled by the device tree. Any change just involves a quick recompilation and download of the small device tree file, which is a matter of seconds. The bigger kernel image can always remain untouched. In previous versions without device trees, this almost always required a complete rebuild of the whole kernel image, even if only such a small setting like the default conversion speed for an A/D Converter should be modified.

      By providing modified device trees, the whole system behavior can be changed. For example you can create your own device tree for your specific application, where new devices for your additional hardware are added and unneeded devices are removed. Or when we at F&S add a new board to our board family in the future, then we also only need to add an appropriate new device tree file and we are done.

      At the moment, our kernel still only works for one CPU type, for example the fsimx6sx architecure. Of course it does work with several different platforms within this architecture family, but not with platforms based on another architecture. But we are already working on kernels that are yet more universal. We have the vision that we can build a kernel image in the future that will work on all i.MX6 platforms, and probably even on Vybrid and other CPUs, too. All our different boards and modules will then only be represented by a comprehensive set of device trees.


      3. New Buildroot 2015.11.1

      Also Buildroot is updated to the newest release with many updated packages. We have added configurations fsimx6sx_min_defconfig and fsimx6sx_std_defconfig to support the F&S boards with i.MX6-SoloX CPU. Touch support was converted from tslib to evdev, but tslib remains as an option that can easily be re-activated if required. The final script system used on F&S boards is also completely reworked.

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

      The following list shows the most noticable changes in this release in more detail. They are noted relative to the last regular i.MX6 release fsimx6-V2.0 which was current when work on i.MX6SX started. We are also working on getting all our i.MX6 releases in one multi-platform release in the future. This is why you will also find references to other CPU types and F&S boards here in the changelog.

      nbootimx6sx_27.bin (VN27)
      Supported Boards: efusA9X, BemA9X
      • Add support for i.MX6-SoloX
      • Add support for i.MX6-UltraLite
      • Add support for efusA9X
      • Add support for efusA7UL
      • Add support for BemA9X


      u-boot-2014.07-fsimx6sx-V1.0 (19.02.2016)
      Supported boards: efusA7UL, efusA9, efusA9X, armStoneA9, PicoMODA9, QBlissA9, armStoneA5, NetDCUA5, PicoCOMA5, CUBEA5, AGATEWAY, HGATEWAY, BemA9X
      Not tested: armStoneA8, PicoMOD7A, NetDCU14
      • Add AUTO_COMPLETE for fsvybrid, fsam335x and fss5pv210
      • Use new volume name format for ubifsmount
      • Add rootwait for asynchronuous root devices like SD Card
      • Add support for LEDs on HGATEWAY
      • Improve fsvybrid NAND driver, e.g. optimize count_zeroes() function
      • Rebase to u-boot-2014.04
      • Join Vybrid asm-offsets.c with arch/arm/lib/asm-offsets.c
      • Use objcopy to create uboot.nb0 in Makefile
      • Add fat_exists() function in F&S FAT implementation
      • Fix SD/MMC buswidth config on fsimx6 and fsvybrid
      • Activate workarounds for ARM errata 794072+761320 on fsimx6
      • Rebase to u-boot-2014.07
      • Use F&S variants for command interpreters
      • Make U-Boot binary layout work with F&S NBoot again
      • Use IOMUX_PADS() and SETUP_IOMUX_PADS() for fsimx6
      • Remove ARM erratum 742230 from fsimx6
      • Clean up code for update/install/recover infrastructure
      • Add support for i.MX6 Solo-X CPU
      • Add IOMUX_PADS() and SETUP_IOMUX_PADS() for i.MX6 Solo-X
      • Fix irqstaten value in fsl_esdhc driver
      • Add board_usb_phy_mode() to i.MX6 USB driver ehci-mx6.c
      • Add board support for fsimx6sx (efusA9X)
      • Disable warning message for not using generic board
      • Add support for Device Trees (FDT) for fsimx6sx
      • Add FDT partition and Android boot.img support
      • Trigger RESETOUTn at start on fsimx6sx
      • Add basic support for i.MX6UL (taken from rel_imx_3.14.38_6ul_ga)
      • Update necessary ARM errata workarounds for i.MX6
      • Add support for KSZ8081 ethernet PHY
      • Add support for fsimx6ul (efusA7UL)
      • Improve ethernet configuration, add second ETH on fsimx6sx
      • Use SION flag for I2C pads on i.MX6SX
      • Add Micrel KSZ8021/KSZ8031 to drivers/net/phy/micrel.c
      • Fix incorrect PHY name for DP83848
      • Remove unneeded 125MHz reference clock for ethernet on efusA9X
      • Switch LAN on fsvybrid to fec_mxc driver and use PHYLIB
      • During TFTP/NFS, show size and improve timeout handling
      • Improve LAN timeout timing on all F&S boards and modules
      • Backport cache_v7.c from u-boot-2015.07
      • Use CONFIG_SYS_ARM_CACHE_WRITETHROUGH on F&S boards and modules
      • Allow '.' for $loadaddr in mmc read and mmc write
      • Add support for config jumpers on fsimx6ul (needs NBoot VN27 or newer)
      • In fsl_esdhc.c, invalidate dcache twice to be sure
      • Fix bitflip handling in NAND driver
      • On fsvybrid, in case of uncorrectable NAND errors, return raw data now
      • On fsvybrid, NAND driver also works on flashes with more than 64 bytes OOB
      • Reduce progress line length in tftp/nfs to avoid wrap-around on 80 chars terminals
      • Fix exception vector allocation and relocation
      • On fsimx6sx and fsimx6ul, add possibility to load FDT from UBI/UBIFS
      • Add nand convert command (used on fsvybrid)
      • Fix ethernet on NetDCUA5 Board Rev 1.21
      • Add device tree support for fsimx6
      • Add support for BemA9X
      • Add missing .fdt_usb in fsimx6sx and fsimx6ul
      • Show more board infos on fsimx6sx and fsimx6ul
      • Do not power cycle USB hub ports, add usb_pgood_delay variable
      • On F&S boards set bootfdt variable to $arch-$platform.dtb


      linux-3.14.52-fsimx6sx-V1.0 (19.02.2016)
      Supported Boards: efusA9X, BemA9X
      Not tested: efusA7UL, efusA9
      • Use kernel 3.14.28, Freescale version rel_imx_3.14.28_1.0.0_ga
      • Improve behavior of cpu_is_imx6* macros
      • Add basic device tree imx6sx-efusa9x.dts and fsimx6sx_defconfig (efusA9X)
      • Fix mxsfb driver to work with LVDS (LDB) on i.MX6S
      • Add audio support (SGTL5000) for efusA9X
      • Add support for SPI (spidev) on efusA9X
      • Add support for external RTC PCF8665 via I2C on efusA9X
      • Use Atmel driver for MXT touch, add support for Atmel MXT touch for efusA9X
      • Add support for Marvell SD8787 WLAN/Bluetooth for efusA9X
      • Add CAN support (flexcan) for efusA9X
      • Activate PXP v4l2 device on efusA9X (for video overlays)
      • Activate Vivante GPU for fsimx6sx
      • Add F&S extended MXS APBH DMA driver (needed for NAND driver)
      • Improve generic NAND driver (bitflips reporting, skip region for NBoot, etc.)
      • Add F&S version of GPMI NAND driver
      • Use F&S GPMI NAND driver on efusA9X
      • Add and use F&S Linux logo with Tux holding NetDCU tile
      • Add support for ADC on efusA9X
      • Add imx_v7_android_defconfig and fsimx6sx_android_defconfig (for Android)
      • Add basic support for Android on efusA9X
      • Rebase to linux-3.14.38, Freescale version rel_imx_3.14.38_6ul_ga
      • Add support for parallel RGB interface
      • Clean up fsimx6sx device tree and defconfig
      • Add support for Focaltech FT5x06 touch (ft5x06_ts_v2.c), backport driver edt_ft5x06.c from kernel 3.17
      • Improve pca963x driver (Totem pole levels, DefaultOn & ActiveHigh configs)
      • Backport Semtech SX8654/SX8655/SX8656 touch driver from Kernel 4.2, improve to allow setting parameters in device tree and via sysfs
      • Add device tree property "pattern" for mxsfb to set order of RGB bits
      • Add clko1 and clko2 infrastructure to i.MX6UL (needed for audio)
      • Fix "DMA chain execution failed" error in F&S GPMI NAND driver
      • On i.MX6UL, add clock for PWM4 and tune CPU operating points
      • Add device tree and defconfig for efusA7UL (fsimx6ul):
        • LCD with 800x480 resolution (WVGA)
        • pxp_v4l2 support for video overlays
        • PWM backlight on PWM1 for backlight connector
        • Backlight via PCA9632 for RGB adapter
        • Audio with SGTL5000 on SAI2, register access with bitbanging I2C
        • Ethernet: 100MBit/s via RMII on ENET1
        • Serial ports on UART1, UART2, UART5 and UART6
        • Flexcan1 and Flexcan2
        • USB Device on USBOTG1, USB Host on USBOTG2
        • USDHC1 for WLAN/Bluetooth (Marvell SD8787), prepared for SD card
        • USDHC2 for eMMC, prepared for SD card
        • I2C1 with PCA9632 (LED driver), Semtech SX8655 (4/5 wire touch), Atmel MXT224 (pcap touch) and Focaltech FT5x06 (pcap touch)
        • I2C2 with MXT224 (pcap touch)
        • I2C5 (bitbanging) with SGTL5000 and RTC PCA8565
        • ECSPI1 and ECSPI2 for user defined SPI (spidev)
        • User PWM on PWM4
        • GPMI for NAND flash with F&S NAND driver and F&S APBH DMA driver

      • Improve pca963x LED driver, support configuration of outputs as PWM and GPIO
      • Improve touch configuration, only one touch at a time on efusA9X and efusA7UL
      • Activate all possible touch drivers in fsimx6sx_defconfig/fsimx6ul_defconfig
      • Add support for bdinfo device and use it on fsimx6sx and fsimx6ul
      • Handle bitflip count of last read page in NAND flash correctly
      • Rebase to kernel 3.14.52, Freescale version rel_imx_3.14.52_1.1.0_ga
      • Add support and device tree for BemA9X
      • Add device tree for efusA9
      • Add basic support for OV9665 camera
      • Further improve pca963x LED driver, fix polarity issue
      • Add fb-names in PWM backlight driver to refer to the framebuffer device
      • Support ENET clock output on i.MX6-SoloX and i.MX6UL (fsl,ref-clock-out)
      • Remove CMA size to 128MB on fsimx6sx, required for BemA9X
      • Improve device tree for efusA9X and efusA7UL

      buildroot-2015.11.1-fsimx6sx-V1.0 (19.02.2016)
      Supported Boards: efusA9X, BemA9X, efusA7UL

      • Fix download site for xdriver_xf86-input-tslib
      • Fix tslib crash on xserver 1.12 or newer with unknown xf86XInputSetScreen
      • Fix libtool .la file modification style
      • Rebase to buildroot-2014.05
      • Rebase to buildroot-2014.08
      • Fix rename mismatch for package procps
      • Rebase to buildroot-2015.02
      • Backport alsa-utils from buildroot-2015.05
      • Fix *OPT to *OPTS renaming issues in xdriver and pkg-autotools
      • Rebase to buildroot-2015.05
      • Rebase to buildroot-2015.08.1
      • Fix xkeyboardconfig and gcc versions in F&S defconfigs
      • Remove freescale-imx/xserver-xorg-video-imx-viv package, use regular version from x11r7/xdriver_xf86-video-imx*
      • Remove now unused package multimedia (gst-fsl-plugins are now in gstreamer)
      • Replace i.MX6 graphic stuff for 3.10.53 with newest version for 3.14.38: firmware-imx, imx-gpu-viv, imx-kobs, imx-lib, imx-vpu, gst-fsl-plugins, libfslcodec, libfslparser, libfslvpuwrap, xdriver_xf86-video-imx-viv
      • Fix issues that prevent compiling (cairo, imx-lib, etc.)
      • Fix version conflict for gettext in package xkeyboard-config
      • Check if /etc is writable before computing openssh keys
      • Improve login_tty settings in S01fssetup for F&S boards
      • Fix defconfig problems when building Linux kernel
      • Update F&S defconfig for busybox to 1.23.x
      • Fix ARM NEON handling in libpng
      • Add fsimx6ul_min_defconfig and fsimx6ul_std_defconfig (for efusA7UL)
      • Switch touch support from tslib to evdev, tslib remains as option
      • Fix freetype changes of include paths for older packages
      • Fix qt5base compilation
      • Rebase to buildroot-2015.11.1
      • On F&S boards, final_script_min must create /etc/profile.d
      • Reorganize final script system for F&S boards
      • Update GPU packages to be used with i.MX6-SoloX
        • Update package imx-gpu-viv from 5.0.11.p4.5 to 5.0.11.p7.1
        • Update package xdriver_xf86-video-imx-viv from 5.0.11.p4.5 to 5.0.11.p7.1
        • Update package imx-lib from 3.14.28-1.0.0 to 5.1
        • Update package firmware-imx from 3.14.28-1.0.0 to 5.2

      • Create separate support for fsimx6sx (fsimx6sx_min/std_defconfig)


      Toolchain
      • No change, still fs-toolchain-4.7.2-cortexa5-neonvfpv4


      Documentation
      • Supply documentation for efusA9X and the efus SKIT
      • FSiMX6SX_FirstSteps_eng.pdf

      Your F&S Support Team[/quote]
      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.

      Post was edited 1 time, last by “fs-support_HK” ().