Posts by fs-support_PJ

    F&S Secure Boot Release 2019.02

    we have uploaded a new F&S Secure Boot version for all supported boards with an i.MX6 CPU to our server, i.e. i.MX6S/DL/D/Q, i.MX6SX, i.MX6UL/ULL.

    This is a major release. The release consists of one file:


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

    This tar archiv is compressed with bzip2. So to see the files, you first have to unpack the archives

    1. tar xvf fs-secure-boot.2019.02.tar.bz2

    This will create a directory fs-secure-boot.2019.02 that contains all the files of the release.

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

    The release consists of the following files and directories:

    • Readme.txt (Release notes)
    • (Script to unpack fs-secure-boot release)
    • binaries/ (Precompiled secure images)
    • doc/ (software manual)
    • sources/ (source code packages)

    Release Notes for F&S Secure Boot 2019.02

    Here are some highlights of this release.

    1. Support new CPU i.MX6ULL

    This is the first regular release that supports i.MX6ULL CPUs.

    2. Support new CPU revisions

    Through a security vulnerability in the NXP i.MX6 they have changed something in the ROM code. Thereby we can´t use the old User Tool and NBoot for the new revisions so we have to change something in the code to support the new revisions.

    3. Improve encryption

    For the encryption it was necessary that you have to download nboot_for_key.bin on the board to create keys. This is fixed in the new CST >= 2.3.2. So we have removed this and now it is easier to create encrypted keys. We also have removed the encryption with ZMK. We are now only support OTPMK encryption till we have implemented a secure way to use ZMK.

    Your F&S Support Team


    You are only able to purchase our F&S Secure Boot release, if you have ordered it. For further information, see

    Dear Ahmed,

    in U-Boot the normal sized SD-Card is mmc dev 0. The µSD-Card is mmc dev 1.

    To read the SD-Card in U-Boot you can use the following commands:

    normal sized SD-Card:

    • put in SD-Card
    • command: mmc rescan
    • command: mmc dev 0
    • command: ls mmc 0


    • put in µSD-Card
    • command: mmc rescan
    • command: mmc dev 1
    • command: ls mmc 1

    If you want to boot the rootfs from SD-Card then you have to modify the device-tree. By default the WLAN and EMMC is enabled so no SD-Card Slots are available in Linux. V1 of efusA7UL don´t have WLAN and EMMC.

    1. Navigate to your linux kernel folder
    2. Open file arch/arm/boot/dts/efusa7ul.dts
    3. Comment out the line "#define CONFIG_EFUSA7UL_EMMC" and "#define CONFIG_EFUSA7UL_WLAN" now it should be look like this "//#define CONFIG_EFUSA7UL_EMMC" and "//#define CONFIG_EFUSA7UL_WLAN"
    4. Recompile the device-tree and install it on your board
    5. After that save the rootfs on your SD-Card
    6. Then put in the SD-Card and go to U-Boot
    7. Now you can call "run .rootfs_mmc", mmcblk0 => µSD-Card and mmcblk1 => SD-Card. Maybe you have to modify the variable rootfs for the correct mmcblk device
    8. Boot the system

    Your F&S Support Team


    i have a small c programm which access via ioctl the uart interface and send a string. In the attachment you find the c file and a precompiled test program. Does this program solve your problem?

    Your F&S Support Team



      (5.07 kB, downloaded 95 times, last: )


    well in our Linux first steps document you will find how you compile a device tree. You can you a look at chapter 9.1.5/6.
    If you want to change the device tree at runtime you have to enable 2 packets in Buildroot, recompile it and install it. These packets are called BR2_PACKAGE_DTC and BR2_PACKAGE_DTC_PROGRAMS. They are located in "target packages->Libraries->Hardware handling"

    But we recommend you to do changes in the device tree directly in the source code instead of modfiying the binary file. It is more common to do the changes directly in the source file and makes from our point of view more sense.

    Your F&S Support Team


    yes that is correct you see the stats of the emmc. You can´t
    see the partition table because there is no partition table installed
    yet. Normally you can boot linux and call the tool fdisk:
    fdisk /dev/mmcblkX

    • o -> create empty DOS partition table
    • n -> add new partition
    • w -> write table to disk and exit

    After that you can create a filesystem on you partition
    mke2fs –t ext4 /dev/mmcblkXpY

    Now the partition table and the filesystem is available und you can access emmc from UBoot.

    Why you don´t see the emmc in the /dev directory is another question. Do you have enabled the define
    in the device tree?

    Your F&S Support Team


    GPIO2_IO11(gpio43) is pin 26 of J1 connector in the gpio reference card. So the main problem is that the default mux option for this pin is set to SPI. That´s the reason why you can´t recognize a state change of this pin. If you want to use this pin as GPIO, then you have to disable the SPI interface in device tree. You can do this by changing the following line:
    Then you have to recompile the device tree and install it on your board. After that you should be able to toggle the GPIO.

    Your F&S Support Team

    Dear Ahmed,

    the LCD display and the touch controller should be independent. That should not be the problem.

    Do you have a second 3.5" display to test. Maybe there is something broken with the touch controller.

    For the touch controller there are three parameters which you can setup. The touchrate, powdly, filt, setdly.
    touchrate = Defines the touch coordinates acquisition rate. Values between 0 - 15 are allowed. Hint: The touchrate bits are 7:4 so if you want to write a 0x3 then value must be 0x30 for bit 7:4.
    powdly = Defines the bias settling time for each channel’s first conversion. Values between 0 - 15 are allowed.
    filt = Defines the channel filtering algorithm Values between 0 - 3 are allowed.
    setdly = Defines the bias settling time for each channel’s subsequent conversion (i.e. when filtering is enabled). Values between 0 - 15 are allowed.

    You can change these parameters within the device tree.
    touchrate = <0x30>;
    powdly = <0x06>;
    filt = <0x02>;
    setdly = <0x08>;

    For more informations please have a look to the sx8675 datasheet. You can try to change this parameters maybe this will effect the touch behavior.

    Your F&S Support Team

    We decided to create a guide, which explains how to create an QT5-Application and debug it with QT-Creator. QT-Creator is running on your host system and the application will be cross compiled for arm architecture. Afterwards it will be downloaded automatically (via ssh) to your F&S module. Now you can remote debug it from your host system.

    This guide is available on our homepage. Just select your module and choose “Documents”. Then it´s located in the category “module-name” – Linux. The Document called Application Development with QT5.

    Your F&S Support Team


    after examine the situation I can see there is a bug between the naming of the device tree and the GPIO reference card of the armStoneA9R2. So the correct naming is written in the GPIO reference card. We will fix the device-tree naming in the next release. In the meantime you can change your device tree to correspond to the GPIO reference card. That means:

    Reference Card device tree

    So you can change the different uart defines to the correct uart node.

    current DT:

    2. &uart2 {
    3. ...

    new DT:

    2. &uart2 {
    3. ...

    Your F&S Support Team


    • If i2cdetect is not working then there is something wrong with the HW connection, because i2cdetect works independent from device tree entrys and drivers. So you don´t have to enable a driver and/or do a device tree entry to get the i2cdetect to work.
    • If you are enable the define CONFIG_ARMSTONEA9_CAPTOUCH_FT5x06 it doesn´t belong to the file edt-ft5x06.c. It belongs to the file ft5x06_ts.c. So if you are doing changes in the file edt-ft5x06.c it will not have an effect because this file will not be used. I also guess that the driver edt-ft5x06.c is not active in our default configuration.

    So first of all check your HW connections and try the i2cdetect command till it works.
    Hint: if you call

    1. i2cdetect 0

    it means i2c1.

    1. i2cdetect 1

    means i2c2.
    Then enable the edt-ft5x06.c driver in menuconfig and do the correct device tree entry for the edt-ft5x06 driver. After that you can test it if it works.
    In the edt-ft5x06 driver there is no support for M12 type. Only support for M06 and M09 (as you have already said). If you can´t apply the patch you can do it manually. At the moment I don´t think that we have a driver which is supporting M12 type.

    Your F&S Support Team


    you have commented out UART_D and this is the debug interface, so that´s the reason why you don´t see anything at the debug port.

    Pins 4, 6, 8, 10 SPI_B
    Pins 18, 20 UART_B
    Pin 19 UART_A_RTSCTS

    To get these pins as GPIO you have to comment out the following defines:

    Your F&S Support Team

    To modify the UBoot environment from the userspace you need the tools fw_printenv and fw_setenv. You can bring these programs in 2 different ways to the remote target system. Either by Buildroot or by UBoot.

    Steps for Buildroot:

    • You have to activate the package u-boot tools, rebuild your rootfs and install it on your system. The package is located in Target packages/Hardware handling
    • After you have started your remote target system, the tools fw_printenv and fw_setenv are located in /usr/slib. You also have a file called fw_env.config which you have to modify.
    • Comment out all lines in the file fw_env.config. Then add the following line:
      1. /dev/mtd4 0x0000 0x4000 0x20000 0x2

    Steps for UBoot:

    • The tools fw_printenv is integrated in UBoot. To build these tool in UBoot you have to setup the following command:
      1. make env

    • After that the compiled files are located in tools/env.
    • There you find the file fw_printenv. To create fw_setenv you can copy the file fw_printenv to fw_setenv. Both are available in one executable. You also can create a link to fw_printenv.
    • Afterwards you have to modify the file fw_env.config which is also located in tools/env. Comment out all lines in this file. Then add the following line:
      1. /dev/mtd4 0x0000 0x4000 0x20000 0x2

    • For further information have a look at the topic fw_printenv and fw_setenv from Userspace
    • Now you can transfer these 3 files to your remote target system. You must copy fw_env.config to /etc.

    Now you are able to read the UBoot environment from userspace. Execute the fw_printenv tool to display the UBoot environment.

    If you want to modify these variables you have to remount the UBootEnv partition (default: mtd4). By default the UBootEnv partition is read-only mounted. To remount this partition you have 2 possibilites:

    • The easiest way is to modify the variable mtdparts in UBoot. There you have to change the string ...(UBootEnv)ro,... to ...(UBootEnv),... Just remove the ro so the partition will be mounted read/writeable. For further information have a look at the topic What needs to be contained in UBOOT to start/access nand0 (SOM Flash) After that you can start your system and the partition is read/writeable mounted.
    • If you want to do this without a reboot you can create a kernel module which is mounting this partition as read/writeable. There is an existing GitHub project which do this. The project called mtdRW. You have to modify the source file because all mtd partition will be mounted as read/writeable, but we only need UBootEnv as read/writeable. You also have to modify the Makefile, there is a string called KERNEL_DIR which must point to your linux kernel directory. After that you can compile the module with the command make. Now you can transfer the kernel object mtdRW.ko to your remote target system. To load this module you can use the command insmod mtdRW.ko

    Now you can use the fw_setenv command to modify some UBoot environment variables. Example:

    1. fw_printenv serverip
    3. fw_setenv serverip
    4. fw_printenv serverip

    Your F&S Support Team

    We decided to create a guide, which explains how to create an application and debug it with eclipse. Eclipse is running on your host system and the application will be cross compiled for arm architecture. Afterwards it will be downloaded automatically (via ssh) to your F&S module. Now you can remote debug it from your host system.

    This guide is available on our homepage. Just select your module and choose “Documents”. Then it´s located in the category “module-name” – Linux. The Document called Application Development with Eclipse

    Your F&S Support Team

    Dear Panaia-Costa,

    yes the hardware implementation must be specified in the device tree. And yes there are no board config files anymore. The board config files were replaced by the device trees since Linux Kernel ~3.10. So if your kernel driver only support platform_data you have to improve the driver that it supports device tree too.

    Your F&S Support Team

    Dear Mr. Schubert,

    it is not possible to have the RTS/CTS pins of UART_B on connector pins 19/21. No one of the UART_B RTS/CTS pins goes to connector. And yes only UART_A is the only full connected UART on armstoneA9.

    Your F&S Support Team

    Dear Mr. Frommberger,

    normally this configuration should work. I tried it and i see in the /dev directory i2c-6. This i2c-6 is the new Bitbanging I2C (i2c_gpio). Do you get any error messages?

    Your F&S Support Team