Posts by fs-support_HK

    Yes, the PicoMODA9 should be capable to do this. We have customers who use DotNet Core on our boards based on i.MX6 and the software is the same for all i.MX6 boards. We also did not need to do anything, our customers said it was rather straightforward. to install and use DotNet Core.


    Your F&S Support Team

    You can try to find a regular (non-high-speed, non high-capacity) SD card, i.e. with 2GB or less, this should work.


    But as DotNet Core is rather new, I suppose it also requires a rather new environment, i.e. drivers, applications and libraries referenced directly or indirectly. If this is running on the PicoMOD7A with the old 3.3 Linux kernel and a software stack from 2012, I would really be surprised.


    Your F&S Support Team

    Try to store the data on a USB stick. This should work. Maybe the SD card has some problems because it is too fast or too large. The Linux on PicoMOD7A is rather old and may not support HighSpeed or HighCapacity (> 2GB) cards.


    PicoMOD7A is not recommended for new developments. Please use PicoMODA9 or some other board based on NXP IMX CPUs if you want to start a new project with Linux.


    Your F&S Support Team

    Firmware files are usually not embedded in the Linux kernel, they are part of the root filesystem. On the other hand if you compile your driver as part of the kernel, then it wants to load the firmware immediately when it starts. Which fails because at that time the root filesystem is not yet mounted.


    From our point of view it is only possible to have WLAN drivers (that require a firmware) to be built as kernel modules. Then they are loaded from the root filesystem, too, and then the firmware is always available to be loaded when they start.


    There may be an option to embed the firmware in the kernel, but in reality this is often a no-go as the license of the firmware often collides with the GPLv2 of the kernel and must not be embedded with the kernel code.


    Your F&S Support Team

    Actually there are more options:


    1. Use Midori Browser in Buildroot. Unfortunatley we haven't tested this for quite a while, so we have no idea how well this will compile in current Buildroot versions.
    2. Use Qt5 and Webengine. Webengine is more or less a Chromium browser provided as classes to be used from Qt


    Your F&S Support Team

    We have uploaded a pre-release (fsimx6-B2019.03-pre) to our server last Friday. You can try this out if you like. However please do not plan any own final software with this pre-release, this is not fully tested and not officially supported. Please switch to the official release when it is available, which we expect in the second half of April. Then we will also remove the pre-release again.


    The features of this release:


    U-Boot 2018.03

    Linux 4.9.88

    Buildroot 2019.02

    Toolchain based on GCC 7.4


    Please see the README-buildroot-f+s.txt and FirstSteps docu in the release for further information.


    Your F&S Support Team

    F&S i.MX6SX Buildroot Release for PicoCoreMX6SX (22.03.2019)

    Please see the file


    doc/FSiMX6SX_FirstSteps_eng.pdf


    for a description of how everything is installed and used.



    This is a major release for fsimx6sx. 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, 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.


    Please note that this release is mainly targeted to the new System-on-Module PicoCoreMX6SX. Other boards of the fsimx6sx family may generally work with this release, but are not fully supported. For example boards with WLAN will not work because the WLAN driver is not ported to the new kernel yet. There will be a separate release later that will have support for all fsimx6sx boards again.


    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. 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.03" of this release indicates a Buildroot based release from March 2019.



    2. Support for new board PicoCoreMX6SX


    This is the first regular release that supports PicoCoreMX6SX. The PicoCore is only 40mm x 35mm but is a very powerful System-on-Module with many I/Os.



    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 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 ongoing 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 2018.11


    Buildroot 2018.11 has many many updated packages, for example Qt-5.11, busybox-1.29.3, xserver-1.20.3 and gstreamer-1.14.4.



    6. New toolchain fs-toolchain-7.4-armv7ahf


    Our new toolchain is now based on gcc-7.4 that fully supports C++14 and has basic support for C++17.


    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 an older toolchain. So please use this new toolchain together with the code of this release.



    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. We have added chapter 1.3 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 following list shows the most noticable changes in this release in more detail since our last regular i.MX6SX 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.



    nbootimx6sx_37.bin (VN37) (31.01.2019)

    Supported Boards: efusA9X, PicoCOMA9X, PicoCoreMX6SX, CONT1


    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.


    [VN36]

    • 0003367: efus VLCD_ON and VCFL_ON could be high after power on
    • 0003369: On i.MX6UL/ULL, add support for speed limitation to 528 MHz
    • 0003370: On i.MX6UL/ULL, DVS is on NAND_DQS which is configured as output high by Boot ROM
    • 0003376: Mask HAB HDR to support different ROM code versions
    • 0003377: Use different DDR settings for new efusA7UL board rev. and UL/ULL
    • 0003380: Correct speed table for ULL
    • 0003381: Add processor specific fuse settings for HAB
    • 0003384: Use different IOMUX for ULL tamper pins
    • 0003385: Version should be VSxx for secure loader
    • 0003333: Wrong pins for config jumpers used


    [VN37]

    • 0003549: Secure Boot support new CPU revisions
    • 0003807: Add new boards
    • 0003808: add customer specific variant
    • 0003809: add bootoption for SD card for armStoneA9
    • 0003810: add WLAN2 option in boardfeatures
    • 0003811: skip M4 when using serial download
    • 0003812: fix clock settings in Init_Clocks
    • 0003813: add missings init code for PicoCOMA7
    • 0003814: debug uart does not work for Solo/DualLight CPU on QBlissA9r2
    • 0003815: USB connection makes nboot unresponsive
    • 0003398: efusA7UL: board revision > 1.20 outputs string ">=1.20 detected"



    u-boot-2018.03-picocoremx6sx-B2019.03 (16.03.2019)

    Supported boards: PicoCoreMX6SX, PicoCoreMX6UL

    Not tested: armStoneA9, armStoneA9r2, efusA9, PicoMODA9, NetDCUA9, QBlissA9, QBlissA9r2, efusA7UL, CubeA7UL, Cube2.0, PicoCOM1.2, GAR1, efusA9X, PicoCOMA9X, CONT1, armStoneA5, NetDCUA5, PicoCOMA5, CUBEA5, AGATEWAY, HGATEWAY


    • Improve auxiliary core support
    • Add option to switch off EEE (Energy Efficient Ethernet) for Atheros PHY
    • Backport i.MX6ULL support from u-boot-2016.03 rel_imx_4.1.15_2.0.0_ga
    • Add support for efusa7UL board rev. 1.22 with i.MX6ULL
    • Add CONFIG_IMX_THERMAL to fsimx6/ul/sx to show speed grading and temp range
    • Fix i.MX6ULL pad settings that differ from i.MX6UL
    • Enhance speed grade detection and temperature output on i.MX6UL/ULL
    • Combine mx6ul_pins.h and mx6ull_pins.h to mx6ulull_pins.h
    • On fsimx6ul, add platform names for variants with i.MX6ULL, e.g. efusa7ull
    • Deactivate VLCD_ON and VCFL_ON in U-Boot on fsimx6/sx/ul
    • Initialize DVS signal on fsimx6ul
    • Revert change to IC_INTERFACES_BASE_ADDR in imx-regs.h
    • On fsimx6ul, add option to limit the CPU to 528 MHz
    • Fix problem with slow USB sticks
    • Toggle WLAN_EN and BT_EN on efusA9X
    • Add support for I2C GPIO expander, toggle WLAN_EN/BT_EN on efusA7UL
    • Improve PLL decoding and clocks command output on i.MX6
    • Add BGR666 pixel format to ipu_disp.c, required for display on efusA9
    • Add IPU clocks for i.MX6
    • Enhance IPU graphics support for i.MX6
    • Fix video and nulldev stdio devices
    • Add I2C_PADS and I2C_PADS_INFO to mxc_i2c.h
    • Add F&S company boot logo
    • Add LCD and LVDS display support for fsimx6
    • Use THUMB code on fsimx6/sx/ul
    • In ipuv3_fb_shutdown, check if at least one display was active
    • Add support for PicoCOMA7
    • Remove unnecessary debug message in fsimx6.c
    • Add I2C_PADS and I2C_PADS_INFO also for other i.MX6 variants
    • Add support for i.MX6UL and i.MX6SX to mxsfb display driver
    • Add display support to fsimx6sx/ul
    • Add PicoCoreMX6UL
    • Add PicoCoreMX6SX
    • Add SD card support to PicoCOREMX6UL
    • Replace GPL comments in F&S files with SPDX-License-Identifier
    • Fix TAGS file creation
    • Add missing checks for MXC_CPU_MX6SOLO in clock.c
    • Switch off backlight and display voltages when booting Linux
    • Add fix for eMMC with activated Enhanced Mode
    • Drop support for fss5pv210 (armStoneA8, NetDCU14, PicoMOD7A)
    • Drop support for fsam335x (never released)
    • Reduce differences to mainline U-Boot
    • F&S boards: Update loadaddr, add fdtaddr, use zImage by default
    • Switch F&S boards to CONFIG_SYS_GENERIC_BOARD
    • Add get_reset_cause() for Vybrid
    • Move F&S specific FDT code to board/F+S/common/fs_fdt_common.[ch]
    • Move F&S common board code to board/F+S/common/fs_board_common.[ch]
    • Move NBoot args from bootm to F&S specific code
    • Move F&S specific mmc code to board/F+S/common/fs_mmc_common.[ch]
    • Move F&S specific ETH code to board/F+S/common/fs_eth_common.[ch]
    • Show new device if usb dev <n> switches storage devices
    • Update F&S specific USB code and move to board/F+S/common/
    • Remove earlyusbinit feature
    • Improve F&S display code and move to board/F+S/common/fs_disp_common
    • Combine and improve display clock code for i.MX6QDL/SX/UL/ULL
    • Move display specific i.MX6 clock code to clock-ipuv3.c/clock-mxsfb.c
    • Rebase to u-boot-2014.10
    • Add defconfigs for fsimx6/sx/ul/fsvybrid
    • Rebase to u-boot-2015.01
    • Change fat.c and wildcard.c to reflect interface changes
    • Allow swapping color channels on mxsfb
    • Rebase to u-boot-2015.04
    • Rebase to u-boot-2015.07
    • On F&S boards, move some command definitions from .h to defconfig
    • Change meaning of loadaddr, always set fileaddr
    • Change RPMsg ring buffer initialization on fsimx6sx
    • Rebase to u-boot-2015.10
    • Move F&S boards from arch/arm/Kconfig to arch/arm/cpu/armv7/mx6/Kconfig
    • Rebase to u-boot-2016.01
    • Fix reset issues for ETH PHYs on F&S boards
    • Rebase to u-boot-2016.03
    • Rebase to u-boot-2016.05
    • On F&S boards, move more CMD settings from .h to defconfig
    • Move set_working_fdt_addr() from cmd/fdt.c to common/image-fdt.c
    • USB hub handling needs some delay before resetting ports
    • Fix fsl_esdhc_cfg handling when using GPIOs for Card Detect (CD)
    • Rebase to u-boot-2016.07
    • Have option to keep CONFIG_BOOTDELAY unset
    • Change nand chip allocation in fsl_nfc_fus.c and mxs_nand_fus.c
    • Rebase to u-boot-2016.09
    • Remove unnecessary flush_cache() from cmd/net.c
    • Move CONFIG_USB_STORAGE from .h to defconfig on F&S boards
    • Remove ram_base from global data
    • Enable mtest command (CONFIG_CMD_MEMTEST) on F&S boards
    • Rebase to u-boot-2016.11
    • Remove patch_sercon() from boot code
    • Move console, UBI and NAND settings from .h to defconfig on F&S boards
    • Handle non-standard CONFIG settings on F&S boards
    • Rebase to u-boot-2017.01
    • Remove CONFIG_USE_ARCH_MEM* from fsvybrid/fsimx6/sx/ul.h
    • Add F&S specific versions of memmove() and memset32() to Kconfig
    • Rebase to u-boot-2017.03
    • Fix status LED infrastructure
    • On F&S boards, move LED, BOARD and some CMD settings to defconfig
    • Rebase to u-boot-2017.05
    • Bring back rudimentary IRQ support for F&S boards
    • Rebase to u-boot-2017.07
    • Reduce diff to mainline u-boot-2017.07
    • Fix const const problems revealed by gcc-7
    • Rebase to u-boot-2017.09
    • Move more F&S configs from *.h to *_defconfig (environment, cmds)
    • Move loadaddr stuff from cmd/nvedit.c to common/image.c
    • Add F&S specific configs to Kconfig
    • Rebase to u-boot-2017.11
    • Add F&S FAT driver again, available as option
    • memcpy.S for ARM must not modify r9
    • Rebase to u-boot-2018.01
    • Rebase to u-boot-2018.03
    • Enable commands env callbacks and env flags on F&S boards
    • Add F&S NAND refresh feature to drivers/mtd/nand/Kconfig
    • Add a missing conversion from r9 to r10 in memcpy()
    • Clean up error message if env can not be loaded
    • Skip extra check for ethaddr if set with setenv



    linux-4.9.88-picocoremx6sx-B2019.03 (16.03.2019)

    Supported Boards: PicoCoreMX6SX, PicoCoreMX6UL

    Not tested: armStoneA9, armStoneA9r2, efusA9, PicoMODA9, NetDCUA9, QBlissA9, QBlissA9r2, efusA7UL, CubeA7UL, Cube2.0, PicoCOM1.2, GAR1, efusA9X, PicoCOMA9X, CONT1, PicoCoreMX7ULP, armStoneA5, NetDCUA5, PicoCOMA5, CUBEA5, AGATEWAY, HGATEWAY


    • Add checks to efusa9x.dts to avoid errors when not using audio
    • Add LED trigger to show link up/down status for ethernet PHY
    • Update to rel_imx_4.1.15_1.2.0_ga (Add support for i.MX7D)
    • Update to rel_imx_4.1.15_2.0.0_ga (Initial support for i.MX6ULL)
    • Update to rel_imx_4.1.15_2.0.1_patch
    • Update to rel_imx_4.1.15_2.0.2_patch (Support for i.MX6ULL 800 MHz)
    • Update to rel_imx_4.1.15_2.0.3_patch (Support for i.MX6ULL 900 MHz)
    • Revert bad display settings on efusA7UL
    • Backport differing pad settings for i.MX6ULL from rel_imx_4.9.x_1.0.0_ga
    • Improve i.MX6ULL settings
    • Add efusa7ull.dts and support for efusA7UL board rev 1.22
    • Re-enable operating points for 792 and 900 MHz on i.MX6ULL
    • Add i.MX6ULL to fsimx6ul_defconfig
    • Add property fsl,rx_fifo_trig to i.MX6 UART driver
    • On i.MX6, add support for BT656 and BT1120 output on IPU
    • Add support for ADV7391 video encoder
    • Add analog video output to fsimx6, using BT656+ADV7391
    • Improve adv739x driver to allow setting chip type
    • On i.MX6, add support for 4-channel camera input ISL79985/79987
    • Add support for ISL7998X 4x camera MIPI decoder on fsimx6
    • Add PAL/NTSC support for isl7998x_mipi.c, improve driver
    • Add more network features to fsimx6/ul/sx defconfigs
    • Add bluetooth support to fsimx6sx/ul
    • Update to rel_imx_4.9.11_1.0.0_ga
    • Improve semtech sx8654 driver support reverse coordinates
    • Fix compiler errors after merge of several files
    • Add Support for PicoCOMA7
    • Use new F&S Tux logo when booting
    • Use spinlock in isl7998x_mipi driver
    • Update to rel_imx_4.9.88_2.0.0_ga
    • Add picocoremx6ull.dts
    • Improve armstonea5 device tree
    • PicoCOMA9X: correct reference to EMMC card detect
    • Improve CPU specific function calls in busfreq-imx.c
    • Add support for PicoCoreMX7ULP
    • Fix auxiliary_core driver memory leak
    • Add DMA mode to IMX6SX_CLK_ECSPI5
    • imx6sx: deactivate usbphy_nop1 per default
    • Add device tree: picocorea9x
    • Improve picocoremx6ull.dts - audio and UL/ULL variant
    • Fix nand flash error - enable edo mode
    • Correct distinction between UL and ULL
    • Adapt fs_rpmsg example to new rpmsg API
    • Fix efusa9x/picocoma9x rpmsg-vring entries
    • Improve RTC support on qblissa9r2
    • Renamed picocorea9x.dts to picocoremx6sx.dts
    • Add picocoremx6sx M4-support
    • Fix two bugs in M4 support regarding the kernel update to 4.9.88
    • Add support for Toshiba TC358762 DSI to RGB converter
    • Improve mxsfb driver support i.MX6 & i.MX7
    • Support new F&S Tux logo on fsimx7ulp_defconfig
    • Improve mipi_dsi_northwest driver - get DT disp params
    • Improve TC358762 driver - support reset gpio pin
    • Support LCD display on picocoremx7ulp
    • Improve fsimx7ulp_defconfig
    • Improve picocoremx7ulp.dts
    • Add Power_Reset to fsimx7ulp_defconfig
    • Improve fsimx7ulp_defconfig WLAN module
    • Support for USB-Device in PicoCoreMX7ULP
    • Improve picocoremx7ulp
    • Add support for RTC PCF85063 to fsimx6ul_defconfig
    • Improve PicoCoreMX7ULP device tree
    • Add SD1_VSEL to picocoremx6ull.dts to support UHS SD cards
    • Improve picocoremx6sx device-tree - rework
    • Improve picocoremx6ul device-tree usb otg1 support



    buildroot-2018.11-picocoremx6sx-B2019.03 (16.03.2019)

    Supported Boards: PicoCoreMX6SX, PicoCoreMX6UL

    Not tested: armStoneA9, armStoneA9r2, efusA9, PicoMODA9, NetDCUA9, QBlissA9, QBlissA9r2, efusA7UL, CubeA7UL, Cube2.0, PicoCOM1.2, GAR1, efusA9X, PicoCOMA9X, CONT1, armStoneA5, NetDCUA5, PicoCOMA5, CUBEA5, AGATEWAY, HGATEWAY


    • Add Wayland/Weston support to cairo and imx-gpu-viv
    • Add efusa7ull device tree to all fsimx6ul defconfigs
    • Rebase to buildroot-2016.08.1
    • Rebase to buildroot-2016.11.3
    • Rebase to buildroot-2017.02.5
    • Rebase to buildroot-2017.05.2
    • Remove unnecessary InputSetScreen.patch from xserver
    • Set rootfs.ext2 size manually to every config
    • Rebase to buildroot-2017.08
    • Remove recursive dependency at imx-gst1-plugin
    • Remove legacy packages in fsimx6_qt5_defconfig
    • Add linux-custom strategy to fsimx6_qt5_defconfig
    • Activate freescale and EGL packages in qt5_defconfig
    • Add patches for Silex QCA9377 to bluez5_utils
    • Use bluez5_utils instead of bluez4_utils on F&S boards
    • Update silex-wlan-fs package to v4.1_01272017-1
    • Use bluez5_utils v5.39
    • Add missing dependency in xdriver_xf86-video-imx-viv
    • Remove legacy configuration in defconfigs
    • Switch to new local_kernel_custom strategy
    • Rebase to buildroot-2017.11.2
    • Remove qt5 patch 0010-EGL-fb-lib-inclusion.patch
    • Rebase to buildroot-2018.02.2
    • Remove bluez5_utils patch 0002
    • Update imx-gpu-viv to 6.2.2.p0-aarch32
    • Fix qt5base build issue without x11/xcb
    • Rebase to buildroot-2018.05
    • imx-gpu-viv: fix install step and be compatible
    • Rebase to buildroot-2018.08-rc2
    • Remove legacy options
    • Increase size for ext2 and ubifs filesystem
    • Update defconfigs to use linux 4.9.11
    • Add imx firmware to fsimx6_std_defconfig
    • Rebase to buildroot-2018.08
    • Correct version of imx packages (firmware, g2d, gpu)
    • Add XDRIVER_XF86_VIDEO_IMX_VIV to fsimx6_std_defconfig
    • Shrink qt5 rootfs to a usable size (soloX)
    • fsimx6ul: Remove xf86-input-tslib, set xserver to 1.17.4
    • Remove tslib from all imx6, imx6sx, imx6ul defconfigs
    • Update version of imx packages for kernel 4.9.88
    • Add package sterling-wlan-fs for F&S boards
    • Add fsimx7ulp_std_defconfig
    • Fix xserver startup issue in /etc/init.d/
    • Set kernel version to 4.9.88 in fsimx6* defconfigs
    • Build device tree: added picocorea9x
    • Add erpc python package for AMP-example
    • fsimx6ul_std_defconfig: correct imx-platform
    • Rebase to buildroot-2018.11
    • fsimx6ul_qt5_defconfig: set linuxfb as default platform
    • fsimx6ul_qt5_defconfig: correct imx-platform
    • Add fsimx7ulp_qt5_defconfig
    • Rename device tree from picocorea9x to picocoremx6sx
    • Change kernel load address for i.MX6 CPUs
    • Fix python-erpc package
    • Update silex-wlan-fs package to v4.1_01272017-2
    • fsimx7ulp: Remove xf86-input-tslib, set xserver to 1.17.4
    • Add fsimx7ulp_min_defconfig
    • Fix invalid pointer in passwd
    • Drop support for PicoCOM4
    • Drop support for fss5pv210 (armStoneA8, NetDCU14, PicoMOD7A)
    • Switch to fs-toolchain-7.4-armv7ahf for F&S boards
    • Switch F&S boards to zImage
    • Update xdriver_xf86-video-fbdev to version 0.5.0



    Examples


    (no changes)



    Toolchain


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


    • Based on gcc-7.4
    • Support for C and C++
    • Includes glibc-2.28 (compiled for ARM code)
    • With binutils-2.31.1
    • Hardware floating point
    • Native Posix Thread Library (NPTL)
    • Full support for C++14 and OpenMP 4.5
    • Basic support for C++17



    Documentation

    • Update to version 1.4 of FSiMX6SX_FirstSteps_eng.pdf


    Please download the hardware documentation directly from our website.

    Then you always have the newest version.



    Your F&S Support Team

    F&S i.MX6UL Buildroot Release for PicoCoreMX6UL (15.03.2019)

    Please see the file


    doc/FSiMX6UL_FirstSteps_eng.pdf


    for a description of how everything is installed and used.



    This is a major release for fsimx6ul. fsimx6ul is the software for all boards from F&S that are based on the i.MX6-UltraLite and i.MX6ULL CPUs from NXP (or i.MX6UL and i.MX6ULL for short). Currently these are the modules efusA7UL, PicoCOM1.2 and PicoCoreMX6UL. 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.


    Please note that this release is mainly targeted to the new System-on-Module PicoCoreMX6UL. Other boards of the fsimx6ul family may generally work with this release, but are not fully supported. For example boards with WLAN will not work because the WLAN driver is not ported to the new kernel yet. There will be a separate release later that will have support for all fsimx6ul boards again.


    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. 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.03" of this release indicates a Buildroot based release from March 2019.



    2. Support for new board PicoCoreMX6UL


    This is the first regular release that supports PicoCoreMX6UL. The PicoCore is only 40mm x 35mm but is a very powerful System-on-Module with many I/Os.



    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. However on fsimx6ul, this will not work with our RGB display adapters yet, because these adapters require additional I2C access that is still missing.


    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 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 fsimx6ul_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 ongoing 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 2018.11


    Buildroot 2018.11 has many many updated packages, for example Qt-5.11, busybox-1.29.3, xserver-1.20.3 and gstreamer-1.14.4.



    6. New toolchain fs-toolchain-7.4-armv7ahf


    Our new toolchain is now based on gcc-7.4 that fully supports C++14 and has basic support for C++17.


    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.MX6.


    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 an older toolchain. So please use this new toolchain together with the code of this release.



    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. We have added chapter 1.3 to FSiMX6UL_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 following list shows the most noticable changes in this release in more detail since our last regular i.MX6UL 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.



    nbootimx6ul_37.bin (VN37) (31.01.2019)

    Supported Boards: efusA9UL, PicoCOM1.2, PicoCoreMX6UL, CubeA7UL, Cube2.0, GAR1


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


    [VN36]

    • 0003367: efus VLCD_ON and VCFL_ON could be high after power on
    • 0003369: On i.MX6UL/ULL, add support for speed limitation to 528 MHz
    • 0003370: On i.MX6UL/ULL, DVS is on NAND_DQS which is configured as output high by Boot ROM
    • 0003376: Mask HAB HDR to support different ROM code versions
    • 0003377: Use different DDR settings for new efusA7UL board rev. and UL/ULL
    • 0003380: Correct speed table for ULL
    • 0003381: Add processor specific fuse settings for HAB
    • 0003384: Use different IOMUX for ULL tamper pins
    • 0003385: Version should be VSxx for secure loader
    • 0003333: Wrong pins for config jumpers used


    [VN37]

    • 0003549: Secure Boot support new CPU revisions
    • 0003807: Add new boards
    • 0003808: add customer specific variant
    • 0003809: add bootoption for SD card for armStoneA9
    • 0003810: add WLAN2 option in boardfeatures
    • 0003811: skip M4 when using serial download
    • 0003812: fix clock settings in Init_Clocks
    • 0003813: add missings init code for PicoCOMA7
    • 0003814: debug uart does not work for Solo/DualLight CPU on QBlissA9r2
    • 0003815: USB connection makes nboot unresponsive
    • 0003398: efusA7UL: board revision > 1.20 outputs string ">=1.20 detected"



    u-boot-2018.03-picocoremx6ul-B2019.03 (13.03.2019)

    Supported boards: PicoCoreMX6UL

    Not tested: armStoneA9, armStoneA9r2, efusA9, PicoMODA9, NetDCUA9, QBlissA9, QBlissA9r2, efusA7UL, CubeA7UL, Cube2.0, PicoCOM1.2, GAR1, efusA9X, PicoCOMA9X, PicoCoreMX6SX, CONT1, armStoneA5, NetDCUA5, PicoCOMA5, CUBEA5, AGATEWAY, HGATEWAY


    • Improve PLL decoding and clocks command output on i.MX6
    • Add BGR666 pixel format to ipu_disp.c, required for display on efusA9
    • Add IPU clocks for i.MX6
    • Enhance IPU graphics support for i.MX6
    • Fix video and nulldev stdio devices
    • Add I2C_PADS and I2C_PADS_INFO to mxc_i2c.h
    • Add F&S company boot logo
    • Add LCD and LVDS display support for fsimx6
    • Use THUMB code on fsimx6/sx/ul
    • In ipuv3_fb_shutdown, check if at least one display was active
    • Add support for PicoCOMA7
    • Remove unnecessary debug message in fsimx6.c
    • Add I2C_PADS and I2C_PADS_INFO also for other i.MX6 variants
    • Add support for i.MX6UL and i.MX6SX to mxsfb display driver
    • Add display support to fsimx6sx/ul
    • Add PicoCoreMX6UL
    • Add PicoCoreMX6SX
    • Add SD card support to PicoCOREMX6UL
    • Replace GPL comments in F&S files with SPDX-License-Identifier
    • Fix TAGS file creation
    • Add missing checks for MXC_CPU_MX6SOLO in clock.c
    • Switch off backlight and display voltages when booting Linux
    • Add fix for eMMC with activated Enhanced Mode
    • Drop support for fss5pv210 (armStoneA8, NetDCU14, PicoMOD7A)
    • Drop support for fsam335x (never released)
    • Reduce differences to mainline U-Boot
    • F&S boards: Update loadaddr, add fdtaddr, use zImage by default
    • Switch F&S boards to CONFIG_SYS_GENERIC_BOARD
    • Add get_reset_cause() for Vybrid
    • Move F&S specific FDT code to board/F+S/common/fs_fdt_common.[ch]
    • Move F&S common board code to board/F+S/common/fs_board_common.[ch]
    • Move NBoot args from bootm to F&S specific code
    • Move F&S specific mmc code to board/F+S/common/fs_mmc_common.[ch]
    • Move F&S specific ETH code to board/F+S/common/fs_eth_common.[ch]
    • Show new device if usb dev <n> switches storage devices
    • Update F&S specific USB code and move to board/F+S/common/
    • Remove earlyusbinit feature
    • Improve F&S display code and move to board/F+S/common/fs_disp_common
    • Combine and improve display clock code for i.MX6QDL/SX/UL/ULL
    • Move display specific i.MX6 clock code to clock-ipuv3.c/clock-mxsfb.c
    • Rebase to u-boot-2014.10
    • Add defconfigs for fsimx6/sx/ul/fsvybrid
    • Rebase to u-boot-2015.01
    • Change fat.c and wildcard.c to reflect interface changes
    • Allow swapping color channels on mxsfb
    • Rebase to u-boot-2015.04
    • Rebase to u-boot-2015.07
    • On F&S boards, move some command definitions from .h to defconfig
    • Change meaning of loadaddr, always set fileaddr
    • Change RPMsg ring buffer initialization on fsimx6sx
    • Rebase to u-boot-2015.10
    • Move F&S boards from arch/arm/Kconfig to arch/arm/cpu/armv7/mx6/Kconfig
    • Rebase to u-boot-2016.01
    • Fix reset issues for ETH PHYs on F&S boards
    • Rebase to u-boot-2016.03
    • Rebase to u-boot-2016.05
    • On F&S boards, move more CMD settings from .h to defconfig
    • Move set_working_fdt_addr() from cmd/fdt.c to common/image-fdt.c
    • USB hub handling needs some delay before resetting ports
    • Fix fsl_esdhc_cfg handling when using GPIOs for Card Detect (CD)
    • Rebase to u-boot-2016.07
    • Have option to keep CONFIG_BOOTDELAY unset
    • Change nand chip allocation in fsl_nfc_fus.c and mxs_nand_fus.c
    • Rebase to u-boot-2016.09
    • Remove unnecessary flush_cache() from cmd/net.c
    • Move CONFIG_USB_STORAGE from .h to defconfig on F&S boards
    • Remove ram_base from global data
    • Enable mtest command (CONFIG_CMD_MEMTEST) on F&S boards
    • Rebase to u-boot-2016.11
    • Remove patch_sercon() from boot code
    • Move console, UBI and NAND settings from .h to defconfig on F&S boards
    • Handle non-standard CONFIG settings on F&S boards
    • Rebase to u-boot-2017.01
    • Remove CONFIG_USE_ARCH_MEM* from fsvybrid/fsimx6/sx/ul.h
    • Add F&S specific versions of memmove() and memset32() to Kconfig
    • Rebase to u-boot-2017.03
    • Fix status LED infrastructure
    • On F&S boards, move LED, BOARD and some CMD settings to defconfig
    • Rebase to u-boot-2017.05
    • Bring back rudimentary IRQ support for F&S boards
    • Rebase to u-boot-2017.07
    • Reduce diff to mainline u-boot-2017.07
    • Fix const const problems revealed by gcc-7
    • Rebase to u-boot-2017.09
    • Move more F&S configs from *.h to *_defconfig (environment, cmds)
    • Move loadaddr stuff from cmd/nvedit.c to common/image.c
    • Add F&S specific configs to Kconfig
    • Rebase to u-boot-2017.11
    • Add F&S FAT driver again, available as option
    • memcpy.S for ARM must not modify r9
    • Rebase to u-boot-2018.01
    • Rebase to u-boot-2018.03
    • Enable commands env callbacks and env flags on F&S boards
    • Add F&S NAND refresh feature to drivers/mtd/nand/Kconfig
    • Add a missing conversion from r9 to r10 in memcpy()
    • Clean up error message if env can not be loaded
    • Skip extra check for ethaddr if set with setenv



    linux-4.9.88-picocoremx6ul-B2019.03 (13.03.2019)

    Supported Boards: PicoCoreMX6UL

    Not tested: armStoneA9, armStoneA9r2, efusA9, PicoMODA9, NetDCUA9, QBlissA9, QBlissA9r2, efusA7UL, CubeA7UL, Cube2.0, PicoCOM1.2, GAR1, efusA9X, PicoCOMA9X, PicoCoreMX6SX, CONT1, PicoCoreMX7ULP, armStoneA5, NetDCUA5, PicoCOMA5, CUBEA5, AGATEWAY, HGATEWAY


    • Add property fsl,rx_fifo_trig to i.MX6 UART driver
    • On i.MX6, add support for BT656 and BT1120 output on IPU
    • Add support for ADV7391 video encoder
    • Add analog video output to fsimx6, using BT656+ADV7391
    • Improve adv739x driver to allow setting chip type
    • On i.MX6, add support for 4-channel camera input ISL79985/79987
    • Add support for ISL7998X 4x camera MIPI decoder on fsimx6
    • Add PAL/NTSC support for isl7998x_mipi.c, improve driver
    • Add more network features to fsimx6/ul/sx defconfigs
    • Add bluetooth support to fsimx6sx/ul
    • Update to rel_imx_4.9.11_1.0.0_ga
    • Improve semtech sx8654 driver support reverse coordinates
    • Fix compiler errors after merge of several files
    • Add Support for PicoCOMA7
    • Use new F&S Tux logo when booting
    • Use spinlock in isl7998x_mipi driver
    • Update to rel_imx_4.9.88_2.0.0_ga
    • Add picocoremx6ull.dts
    • Improve armstonea5 device tree
    • PicoCOMA9X: correct reference to EMMC card detect
    • Improve CPU specific function calls in busfreq-imx.c
    • Add support for PicoCoreMX7ULP
    • Fix auxiliary_core driver memory leak
    • Add DMA mode to IMX6SX_CLK_ECSPI5
    • imx6sx: deactivate usbphy_nop1 per default
    • Add device tree: picocorea9x
    • Improve picocoremx6ull.dts - audio and UL/ULL variant
    • Fix nand flash error - enable edo mode
    • Correct distinction between UL and ULL
    • Adapt fs_rpmsg example to new rpmsg API
    • Fix efusa9x/picocoma9x rpmsg-vring entries
    • Improve RTC support on qblissa9r2
    • Renamed picocorea9x.dts to picocoremx6sx.dts
    • Add picocoremx6sx M4-support
    • Fix two bugs in M4 support regarding the kernel update to 4.9.88
    • Add support for Toshiba TC358762 DSI to RGB converter
    • Improve mxsfb driver support i.MX6 & i.MX7
    • Support new F&S Tux logo on fsimx7ulp_defconfig
    • Improve mipi_dsi_northwest driver - get DT disp params
    • Improve TC358762 driver - support reset gpio pin
    • Support LCD display on picocoremx7ulp
    • Improve fsimx7ulp_defconfig
    • Improve picocoremx7ulp.dts
    • Add Power_Reset to fsimx7ulp_defconfig
    • Improve fsimx7ulp_defconfig WLAN module
    • Support for USB-Device in PicoCoreMX7ULP
    • Improve picocoremx7ulp
    • Add support for RTC PCF85063 to fsimx6ul_defconfig
    • Improve PicoCoreMX7ULP device tree
    • Add SD1_VSEL to picocoremx6ull.dts to support UHS SD cards



    buildroot-2018.11-picocoremx6ul-B2019.03 (13.03.2019)

    Supported Boards: PicoCoreMX6UL

    Not tested: armStoneA9, armStoneA9r2, efusA9, PicoMODA9, NetDCUA9, QBlissA9, QBlissA9r2, efusA7UL, CubeA7UL, Cube2.0, PicoCOM1.2, GAR1, efusA9X, PicoCOMA9X, PicoCoreMX6SX, CONT1, armStoneA5, NetDCUA5, PicoCOMA5, CUBEA5, AGATEWAY, HGATEWAY


    • Rebase to buildroot-2016.08.1
    • Rebase to buildroot-2016.11.3
    • Rebase to buildroot-2017.02.5
    • Rebase to buildroot-2017.05.2
    • Remove unnecessary InputSetScreen.patch from xserver
    • Set rootfs.ext2 size manually to every config
    • Rebase to buildroot-2017.08
    • Remove recursive dependency at imx-gst1-plugin
    • Remove legacy packages in fsimx6_qt5_defconfig
    • Add linux-custom strategy to fsimx6_qt5_defconfig
    • Activate freescale and EGL packages in qt5_defconfig
    • Add patches for Silex QCA9377 to bluez5_utils
    • Use bluez5_utils instead of bluez4_utils on F&S boards
    • Update silex-wlan-fs package to v4.1_01272017-1
    • Use bluez5_utils v5.39
    • Add missing dependency in xdriver_xf86-video-imx-viv
    • Remove legacy configuration in defconfigs
    • Switch to new local_kernel_custom strategy
    • Rebase to buildroot-2017.11.2
    • Remove qt5 patch 0010-EGL-fb-lib-inclusion.patch
    • Rebase to buildroot-2018.02.2
    • Remove bluez5_utils patch 0002
    • Update imx-gpu-viv to 6.2.2.p0-aarch32
    • Fix qt5base build issue without x11/xcb
    • Rebase to buildroot-2018.05
    • imx-gpu-viv: fix install step and be compatible
    • Rebase to buildroot-2018.08-rc2
    • Remove legacy options
    • Increase size for ext2 and ubifs filesystem
    • Update defconfigs to use linux 4.9.11
    • Add imx firmware to fsimx6_std_defconfig
    • Rebase to buildroot-2018.08
    • Correct version of imx packages (firmware, g2d, gpu)
    • Add XDRIVER_XF86_VIDEO_IMX_VIV to fsimx6_std_defconfig
    • Shrink qt5 rootfs to a usable size (soloX)
    • fsimx6ul: Remove xf86-input-tslib, set xserver to 1.17.4
    • Remove tslib from all imx6, imx6sx, imx6ul defconfigs
    • Update version of imx packages for kernel 4.9.88
    • Add package sterling-wlan-fs for F&S boards
    • Add fsimx7ulp_std_defconfig
    • Fix xserver startup issue in /etc/init.d/
    • Set kernel version to 4.9.88 in fsimx6* defconfigs
    • Build device tree: added picocorea9x
    • Add erpc python package for AMP-example
    • fsimx6ul_std_defconfig: correct imx-platform
    • Rebase to buildroot-2018.11
    • fsimx6ul_qt5_defconfig: set linuxfb as default platform
    • fsimx6ul_qt5_defconfig: correct imx-platform
    • Add fsimx7ulp_qt5_defconfig
    • Rename device tree from picocorea9x to picocoremx6sx
    • Change kernel load address for i.MX6 CPUs
    • Fix python-erpc package
    • Update silex-wlan-fs package to v4.1_01272017-2
    • fsimx7ulp: Remove xf86-input-tslib, set xserver to 1.17.4
    • Add fsimx7ulp_min_defconfig
    • Fix invalid pointer in passwd
    • Drop support for PicoCOM4
    • Drop support for fss5pv210 (armStoneA8, NetDCU14, PicoMOD7A)
    • Switch to fs-toolchain-7.4-armv7ahf for F&S boards
    • Switch F&S boards to zImage
    • Update xdriver_xf86-video-fbdev to version 0.5.0



    Examples


    (no changes)



    Toolchain


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


    • Based on gcc-7.4
    • Support for C and C++
    • Includes glibc-2.28 (compiled for ARM code)
    • With binutils-2.31.1
    • Hardware floating point
    • Native Posix Thread Library (NPTL)
    • Full support for C++14 and OpenMP 4.5
    • Basic support for C++17



    Documentation


    • Update to version 1.5 of FSiMX6UL_FirstSteps_eng.pdf


    Please download the hardware documentation directly from our website.

    Then you always have the newest version.



    Your F&S Support Team

    Ah OK, now I understand.


    Yes, the LCD controllers are different on efusA9 (i.MX6DL/Q) and efusA7UL (i.MX6UL/ULL). So unfortunately the settings must also be done differently. The efusA7UL can have all parameters in the device tree. The efusA9 needs a setting in mxc_lcdif.c and just references it with the modestr entry, which is given with the CONFIG_EFUSA9_LCD_MODE_STR macro. So from a first view everything seems correct.


    But I'm not fully sure if the timings are really identical. Because in your data sheet, the back porch part always includes the sync time itself. But in our timings thy sync times are additional values. (The 20 and 10 at the end of the first parameter line in the array entry). In your case, the sync times actually do not matter, so using the default 20 for HSYNC and 10 for VSYNC should be OK. But then I think you need to subtract them from the back porch values, so you only have to set 68 - 20 = 48 for the Horizontal Back Porch and 18 - 10 = 8 as Vertical Back Porch.


    The SYNC polarities should be OK. If nothing is given in the value after the timings (line 4 above), then HSYNC and VSYNC are active low. Also the data is latched on the rising edge of the pixel clock, which is also the default case. So this matches your data sheet. DE is not used at all, so its polarity does not matter.


    Your F&S Support Team


    PS: Sorry for the late answer, but we were all on Embedded World 2019 in Nürnberg last week.

    Wir unterstützen leider von Haus aus keine Version, wo Linux echtzeitfähig wird. Nur Echtzeit auf dem Cortex-M4.


    Sinngemäß gilt für den Preempt-RT-Patch ähnliches wie für Xenomai. Man muss einen Patch finden, der möglichst nah an unserer Kernel-Version ist und dann schauen, wie er sich dann konkret mit unseren Kernel-Sources verhält. Dabei wird es sicher wieder zu Konflikten kommen, die man dann einzeln auflösen muss. Mit jeder neuen Kernel-Version geht das Spiel dann von Neuem los.


    Ihr F&S Support-Team

    Ich denke Sie unterschätzen den Aufwand gehörig.


    Der erste Schritt ist das Suchen eines möglichst ähnlichen Patches. Vielleicht gibt es einen Patch von NXP, der auf den NXP-Kernel 4.1.15 passt. Das wäre schon mal gut, dann haben wir vergleichsweise wenige Stellen, wo der Patch fehlschlägt. Wenn es nur einen Patch für den Mainline-Kernel gibt, sind es sicher deutlich mehr Stellen. Das können hunderte Stellen sein.


    Dann muss man den Patch in Buildroot eintragen und zu Compilieren versuchen. Für jede Stelle, wo der Patch fehlschlägt, muss man nun im Detail schauen, warum. Wenn der Code im Kernel anders aussieht, muss man nachvollziehen, was dort anders abläuft und sich dann überlegen, wie das nun mit der Xenomai-Anpassung aussehen muss. Je nach Anzahl der Fehlschläge, kann das Tage oder gar Wochen dauern.


    Am Ende hat man dann einen abgewandelten Patch, der von Buildroot fehlerfrei auf unseren Kernel angewendet werden kann und sauber compiliert. Dann muss man aber noch viele Tests machen, ob Xenomai nun auch noch fehlerfrei arbeitet, sprich ob Ihre Änderungen keine Fehler erzeugt haben. Eventuell gibt es von Xenomai ein Test-Kit, mit dem man alle relevanten Tests durchführen kann. Falls nun funktionale Fehler auftreten, muss man diese z.B. durch Debuggen lokalisieren (was bei Echtzeit nicht einfach ist) und korrigieren, sprich den Patch nachbessern.


    Erst wenn das alles läuft, hat man ein funktionierendes Xenomai. Für genau diesen Kernel. Wir werden aber demnächst auf Kernel 4.9 hochgehen und danach vermutlich auf Kernel 4.14, da beginnt das ganze Spiel dann wieder von neuem.


    Was ich nicht verstehe, Sie benutzen schon eine efusA9X, da ist der Cortex-M4 doch schon mit drin. Warum nutzen Sie nicht einfach FreeRTOS dort auf dem M4? Das haben wir am Laufen, da können wir helfen, das funktioniert.


    In Zukunft wird das immer mehr so laufen. Fast jeder i.MX7 und jeder i.MX8 hat (mindestens) einen Cortex-M für Real-Time mit eingebaut. Sprich die anderen Real-Time-Lösungen werden auf NXP-Prozessoren zunehmend uninteressant werden und weniger unterstützt werden. Auch andere SoC-Hersteller machen das künftig so, z.B. gerade heute gelesen bringt nun auch STM eine CPU mit 2x Cortex-A7 für Linux und zusätzlichem Cortex-M4 als RT-Kern raus. Das ist also keine Insellösung von NXP mehr, wie man vor vier Jahren vielleicht noch hätte vermuten konnte, als es nur den NXP/Freescale Vybrid mit dieser Architektur gab, nein, das wird künftig immer mehr so aussehen. Man hat gemerkt, dass die ganzen anderen Lösungen nicht sauber funktionieren, z.B. weil keine saubere Daten- und Hardwaretrennung zwischen Linux und dem RT-OS möglich ist. Durch den eigenen Kern und entsprechende Hardware (Resource Domain Controller) kann dies aber in den NXP-Prozessoren garantiert werden.


    Ihr F&S Support Team

    Yes. It is rather simple to disable RTS/CTS. This port is UART_B in our device tree, which in turn is the CPU UART port 1. So in armstonea9r2dl.dts (or armstonea9r2q.dts, depending on your CPU type), in section UART, comment the line


    Code
    1. #define CONFIG_ARMSTONEA9R2_UART_B_RTSCTS


    by inserting two slashes // at the beginning. That's all. Now recompile the device tree and download it to the board.


    If there are problems accessing the pins as GPIO, it might need an additional step. Most pads are automatically configured as GPIO if not configured as something else, but unfortunately not all pins. So in rare cases it might be necessary to specify the pad setting explicitly as GPIO. From the common part of the device tree, armstonea9qdl.dtsi, you can see in the IOMUXC section, that UART_B (UART1) uses pads EIM_D19 and EIM_D20 for RTS and CTS (and yes, in this sequence, despite the names that NXP has totally mixed up and where RTS is CTS and vice versa). Now we need similar lines in the node hoggrp-1 a little further above that configure these pads as GPIO:


    Code
    1. MX6QDL_PAD_EIM_D19__GPIO3_IO19 0x4001b0a8
    2. MX6QDL_PAD_EIM_D20__GPIO3_IO20 0x4001b0a8

    Your F&S Support Team

    Fast alle Real-Time-Lösungen zu Linux sind Add-Ons, wo man den Teil, der für Real-Time gedacht ist, in einer eigenen Real-Time-Sprache schreiben muss. Man kann also nicht einfach nur ein Linux-Programm verwenden und dann hoffen, dass es künftig in Echtzeit abläuft. Sondern man muss wirklich auf deutlich andere Art und Weise den Echtzeitteil implemenieren. Unter Xenomai und RT-Linux heißt der Netzwerkteil dann z.B. RTnet. Insofern ist der Unterschied im Vergleich zu einer Nutzung von FreeRTOS für den Netzwerkteil auch nicht sonderlich groß.


    Die einzige Lösung, die wirklich Linux zu einem Echtzeit-OS macht, ist der Preempt-RT-Patch. Aber die damit erzielbaren Antwortzeiten liegen um Größenordnungen höher als bei den "echten" RT-Betriebssystemen.


    Wir selbst unterstützen nur die Variante mit FreeRTOS auf dem Cortex-M-Core einiger unserer Boards (efusA9X, PicoCOMA9X, PicoCoreM6SX, PicoCoreMX7ULP, künftige i.MX8-Boards).


    Ihr F&S Support Team

    Do you use the provided Null Modem cable or do you have your own solution? Do you have a second efusA9 board to do some comparison tests? Have you tried Putty or TeraTerm as alternative to DCUTerm? Do these terminal programs show correct data? Or can you try a different PC? You do not need Linux or the development software on this PC, just a terminal program.


    If nothing helps and the error persists on this efusA9 board, then you have to send it as RMA to F&S and we will check what is wrong.


    Your F&S Support Team

    A common way to implement this is to set a value to the edge file in the gpio entry in sysfs and then using select() or poll() to react on the signal change. I have attached a generic example with functions to configure a gpio and do the poll.


    Your F&S Support Team


    gpio-poll.c.txt

    In the default configuration, these images are written to regular MTD partitions, which means they are available as regular MTD devices in Linux. You can list all MTD devides with

    Code
    1. cat /proc/mtd


    A typical output would be:

    Code
    1. dev: size erasesize name
    2. mtd0: 00040000 00020000 "NBoot"
    3. mtd1: 000c0000 00020000 "UserDef"
    4. mtd2: 00040000 00020000 "Refresh"
    5. mtd3: 000c0000 00020000 "UBoot"
    6. mtd4: 00040000 00020000 "UBootEnv"
    7. mtd5: 00800000 00020000 "Kernel"
    8. mtd6: 001c0000 00020000 "FDT"
    9. mtd7: 0f400000 00020000 "TargetFS"


    There you'll see that the kernel is on mtd5 and the device tree on mtd6. More detailled information about these devices can be found in /sys/class/mtd/mtd<n> where <n> is 5 or 6 in this case. And you can read and write data via /dev/mtd<n>.


    Remark:

    The Kernel and FDT partitions are marked as read-only in U-Boot so that they are not overwritten unintentionally. So if you want to write data to them in Linux, you have to remove the read-only flag in U-Boot first.


    Your F&S Support Team

    Xenomai haben wir nie ausprobiert. Wir können also nicht sagen, ob es funktioniert. Da bei Xenomai ein Patch in den Kernel eingebaut werden muss, ist es sogar sehr wahrscheinlich, dass es manuelle Änderungen am Kernel oder dem Patch erfordert, weil er sonst vermutlich nicht sauber auf unsere modifizierten Kernel-Sources anzuwenden geht. Die Konfiguration hierzu passiert in Buildroot unter "Kernel" -> "Linux Kernel Extensions" -> "Adeos/Xenomai Real-time patch". Zudem wird es dann vermutlich eine angepasste Kernel-Konfiguration brauchen, bei der das entsprechende Kernel-Modul aktiviert wird.


    Das alles wird nicht so ganz einfach sein...


    Was wollen Sie denn in Echtzeit erreichen? Normalerweise empfehlen wir unseren Kunden bei Echtzeit-Bedarf die Boards mit asymmetrischem Multiprocessing, wo dann ein Cortex-M4 unter FreeRTOS die Echtzeit-Aufgaben übernimmt, so dass man am Linux gar nichts ändern muss. Zum Beispiel unsere efusA9X.


    Ihr F&S Support Team

    In most cases, the USB to Serial converter is bad. These devices tend to be slightly off the baud rate and then the connection does not work. We have measured this many times, the baud rate of the board itself is exactly on spot.


    So try another USB to serial converter or use a PCI card with "real" serial ports.


    Your F&S Support Team