Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The Flash-N-Go infrastructure (or FnG infrastructure) is a software product for NXP i.MX Edge devices created by SECO Nothern Europe. It has been used for SAN* devices like, Santoka, Santino, Santaro,…Consisting of three parts, Flash-N-Go Boot, Flash-N-Go System and Flash-N-Go Update it provides a convenient way of booting, flashing, testing and updating edge devices.

Where is …

What is …

What is Flash-N-Go System?

Flash-N-Go System is a volatile versatile Linux distribution to aid with the initial installation, production test and upgrade tasks but is limited to a small set of features. It is sometimes coined a management or recovery system. Flash-N-Go System is the backbone of the Flash-N-Go infrastructure.

...

In production, Flash-N-Go System is used to conduct the production test. This de-couples the testing process from the target-end system and makes it possible to test devices with customer-specific OS configurations, with limited testing capabilities.

What is Flash-N-Go Boot?

Flash-N-Go Boot is a simple, non-interactive and open-source bootloader for i.MX6 and i.MX6ULL devices. With its condensed functionalities, it is capable of initializing the RAM dynamically and booting Linux, Android, and Windows CE.

...

By using Flash-N-Go Boot it is possible to use different DDR-memory hardware without adapting the bootloader to the specific RAM configuration, and this makes the SD-RAM equipment of embedded board very flexible. Pre-initialization and matching of the bootloader to board or RAM isn’t necessary.

What is Flash-N-Go Update?

The Flash-N-Go Update software tool provides an update solution for Flash-N-Go System based i.MX6 devices.

Normally coming as a USB flash drive, it uses an auto-start feature of the device to bring up the graphical update process. The available operating systems can be directly downloaded if the device is setup up with internet access and by this provides a way to implement an OTA update behaviour.

Basic Flash-N-Go Architecture

The following figure shows the basic boot-up and file system structure of a Flash-N-Go Boot based system.

...

The shared device-specific data is currently well-supported on iMX6 and iMX6ULL devices. However, i.MX8 devices may use this scheme in the future as well.

Partition layout

The current backing-storage type of Flash-N-Go is eMMC (using the Linux naming mmcblk0). In addition to the partitions for the basic Flash-N-Go components, there may be some more partitions depending on the system configuration.

iMX6 Partition layout

The default partition layout for the Flash-N-Go on the iMX6 platform is:

Partition

File System

Contents

mmcblk0boot0

none

Flash-N-Go Boot

mmcblk0boot1

FAT32

XML based device configuration and touchscreen settings

mmcblk0p1

FAT32

Flash-N-Go System including

  • Linux Kernel

  • Ramdisk-file-system

  • boot-alt.cfg file

The target operating system kernel is usually installed in mmcblk0p2 FAT32 partition and uses a third partition mmcblk0p3 as a non-volatile rootfs partition. However other partition layouts are possible for the target OS like customer-specific partition layouts or Android-based multi-partition layouts.

iMX8 Partition layout

On the imx8 based systems the default partition layout also contains the partitions for the target OS.

The following table contains all possible partitions. Depending on the selected setup it is possible that that the LINUXB, ROOTFSB and user partition are missing.

Partition

File System

Contents

mmcblk0p1

none

Bootloader   

U-Boot placeholder to make the bootloader placement visible

mmcblk0p2

none

Bootloader   

Uboot environment placeholder to make the usage visible

mmcblk0p3

VFAT

Config       

SECO specific config partition, contain xml and other persistent device data

mmcblk0p4

none

Extended Partition

mmcblk0p5

VFAT, 128M

FLASH-N-GO   

Flash-N-Go System Kernel and RAM FS

mmcblk0p6

VFAT, 128M

LINUX       

Kernel, devicetrees and boot.cfg for installation A

mmcblk0p7

VFAT, 128M

LINUXB       

Kernel, devicetrees and boot.cfg for installation B

mmcblk0p8

EXT4, ~1.2GB

ROOTFS 

Root Files System for installation A

mmcblk0p9

EXT4, ~1.2GB

ROOTFSB

Root filessystem for installation B

mmcblk0p10

not in use by default, ~1GB

User partition

Booting Flash-N-Go System
Anchor
Booting-Flash-N-Go-System
Booting-Flash-N-Go-System

There are two options for booting the device into Flash-N-Go System instead of booting the target OS. The first one is pressing down and holding the bootmode switch while the power supply is switched on. The location of the bootmode switch is shown in the following figure

...

Info

The boomode switch needs to be pressed on each boot process. The selection made with bootselect is persistent.

Configuration tools

Several tools on the Flash-N-Go System solution are provided for configuring, testing and flashing the devices.

bootselect
Anchor
bootselect
bootselect

This tool offers the possibility to switch the boot target between the flashed operation system (e.g. Linux, Windows Embedded) on the device and Flash-N-Go System itself. The following code block shows a list of all possible parameters:

...

Info

The bootselect tool is also part of SECO Nothern Europe formerly Garz & Fricke operating systems which use Flash-N-Go Boot as bootloader. Thus the selection may be done at OS runtime too.

Anchor
sconfig
sconfig
sconfig

sconfig is a small command-line tool that offers functionalities for device configurations like network settings, screen rotation etc. The following code block shows a list of all possible parameters.

Code Block
FLASH-N-GO:/ sconfig -h
Usage: /usr/bin/sconfig {start | list | init | <setting> [value]}
  Call without [value] to read a setting, call with [value] to write it.
Available settings:
  serialdiag switch serial debug console on or off
  dhcp switch DHCP on or off
  ip set IP address
  mask set subnet mask
  gateway set standard network gateway
  mac set MAC address
  name set device name
  serial set serial number (affects MAC address and device name)
  rotation set display rotation
If a 2.Ethernet is present, it may be configured via serial2, mac2, etc.

xconfig

xconfig is a command-line tool to manipulate the XML-configuration data directly. Care should be taken when using these commands as miss-configured or corrupted XML- configuration data might render a system unusable. The following code block shows a list of all possible parameters.

Code Block
FLASH-N-GO:/# xconfig
Usage: $0 [command] [options]

Script to manipulate the XML-configuration data of GuF i.MX Boards
inside the NAND Flash.

xconfig expect one of the following commands to define its behavior:
  list           show the current contents of the XML-configuration as
                 obtained from NAND
  import         import an external XML-configuration file into the NAND
                 Flash
  addnode        add a new (empty) XML node
  delnode        delete XML node(s) and its/their children
  addattribute   add a new or change an existing attribute
  delattribute   delete an existing attribute
If no command and option given xconfig will display its version and exit.

Syntax:
  xconfig list [-v] [-p <path>]
        -v           show whole (sub)tree instead of summary, the format is
                     suitable to be used as input to "xconfig import"
        -s                       search for a specific pattern
        -l                       show long path syntax instead of xml
        --node       filter result by node name, basic wildcards are allowed
        --attribute  filter result by attribute name, basic wildcards are allowed
                     format is either 
                          --attribute linux* matches all nodes that have
                            an attribute starting with linux or
                          --attribute key="value" matching nodes that 
                            have an attribute 'key' with the value 'value'
        -p <path>    path to subtree, e.g.:
                     -p /configurationFile/variables/setting[@key='enable_serialdiag]
                     if omitted, the whole tree is shown
  xconfig import [-v] [-y] [-b] <file>
        -v           be verbose
        -y           assume yes - apply changes without user interaction
        <file>       path to file to import
        -b           deprecated - do not use
  xconfig addnode [-y] -p <path> -n <name>
        -y           same as above
        -p <path>    path to parent node
        -n <name>    name of new node
  xconfig delnode [-y] -p <path>
        -y           same as above
        -p <path>    path to node
  xconfig addattribute [-y] -p <path> -n <attr-name> -v <value>
        -y           same as above
        -p <path>    path to parent node
        -n <attr-name>   name of the attribute
        -v <value>   new value of attribute
  xconfig delattribute [-y] -p <path> -n <attr-name>
        -y           same as above
        -p <path>    path to parent node
        -n <attr-name>   name of the attribute
  xconfig listattributes -p <path>
        -p <path>    path to node
  xconfig getattribute -p <path> -n <attr-name>
        -p <path>    path to parent node
        -n <attr-name>   name of the attribute

Manual System Update

The manual system update considers a manual operating system (OS) installation via a console. The progress can be done locally using mass storage devices or using a network connection. The update process described here requires an Ethernet connection of the device to a development PC, either directly or via intranet. Also, a TFTP-Server or HTTP-Server is required on the development PC. There are several, also free, TFTP-Servers and HTTP-Servers online available. Please make sure that the timeout settings of the TFTP-Server are set to 60 seconds at a minimum. The installation of target OSes, and Flash-N-Go System and Flash-N-Go Boot should work via console one- or two-liners. All device partitioning, deployment actions should be done by shell scripts executed by the simple command. See Booting Flash-N-Go System for instructions on how to boot into the management system.

Accessing the target system via serial console

Before updating the target operating system we first need access to the device. The easiest way to access the target is via the serial console. Simply connect the first RS-232 port of your target system with a COM port of your PC or a USB-to-RS-232 converter using a null-modem cable. With the serial connection set up start your favourite terminal program (e.g. minicom or tera term) with the following settings:

...

From the very first moment when the target is powered, you should see debug messages in the terminal if the standard configuration is set.

Establish a network connection

The Ethernet can be set up with the sconfig command-line tool, see also sconfig.

...

Note

It is also necessary to install a TFTP-server or HTTP-server on a host PC.

Installation via network

The common concept of the installation is always similar.

...

These concatenating these steps the installation can be done in one-liner commands.

Example 1: Install Yocto Daisy 15.0

Download all files within the Linux-Yocto/Releases/Yocto-15.0-r4523-9/prebuilt_images folder of the SECO Nothern Europe support server (formerly known as Garz & Fricke FTP server).

...

Info

Replace <TFTP-Server IP> with the IP address of your TFTP-server

Example 2: Upgrade to Flash-N-Go System 8.0

Download the Flash-N-Go System files listed below from the Flash-N-Go/FNGSystem/FNGSystem8.0 folder of the support server.

...

Info

Replace <TFTP-Server IP> with the IP address of your TFTP-server

Example 3: Upgrade Flash-N-Go Boot to version 13.0

Download the Flash-N-Go Boot files listed below from the Flash-N-Go/FNGBoot/FNGBoot-v13.0r3476/ directory of the support server.

...

Info

Replace <TFTP-Server IP> with the IP address of your TFTP-server

Security Considerations

The Flash-N-Go System is designed as a management system to install and update target operating systems and change the device configurations. Thus it runs with root privileges. This may be a concern for some scenarios. Therefore some security considerations are necessary.

...