Getting Started with i.MX 6 SoloX SABRE

Last Modified: Supports i.MX 6SX SABRE Board

Contents of this document

  • 1

    Out of the Box
  • 2

    Linux/Android
  • 3

    FreeRTOS
  • 4

    Exploration

1. Out of the Box

This page will help guide you through learning about the NXP Linux® OS BSP and SABRE development tool for i.MX 6SoloX.

Development Kit Contains:

  • i.MX 6SoloX SABRE board for smart devices
  • USB cable (micro-B to standard-A)
  • 5 V/5 A universal power supply
  • Quick Start Guide
  • 8 GB SD Card with bootable operating system demonstration image

1.1 Get Familiar with the Board

GS-RD-IMX6SX-SABRE-IMX1 GS-RD-IMX6SX-SABRE-IMX2

1.2 Insert the SD Card (SD4)

The kit comes with an SD card with a prebuilt NXP Linux® BSP image. Without modifying the system, booting from the image will provide a default system with certain features for building other applications on top of Linux®.

To understand more about NXP Linux®/Android/FreeRTOS BSP image, please continue reading next sections.

1.3 Connect USB Debug Cable

Connect the micro-B end of the supplied USB cable into Debug UART port J16. Connect the other end of the cable to a host computer.

Terminal window configuration: 115200 baud, 8 data bits, 1 stop bit, no parity

On Linux® host machine, run the following command to determine the port number:

$ ls /dev/ttyUSB*

Use the following command to install serial communication program (minicom as an example):

$ sudo apt-get install minicom

On Windows to determine the port number of the i.MX board virtual COM port, open the device manager and look under the "Ports" group.

Two UART connections will appear on the PC for debugging Cortex-A9 and Cortex-M4.

If needed, the serial-to-USB drivers can be found at FTDrivers.htm .

Not sure how to use a terminal application? Try one of these tutorials: Tera Term Terminal, PuTTY Terminal.

1.4 Connect LVDS Panel

Connect the LVDS panel with capacitive touch (MCIMX-LVDS1) to the LVDS connector J12.

1.5 Connect Ethernet Cable (Optional)

Connect an Ethernet cable to the lower port of the Ethernet jack P3.

1.6 Connect Power Supply

Connect the 5 V power supply cable to the 5 V DC power jack J1.

When powered on by flipping SW1 Power switch to ON, the processor starts executing code from on-chip ROM. With default Boot Switch setup, this code reads the fuses to find out which media to search for a bootable image. Then it will find the SD card and begin U-Boot execution automatically.

Information will be printed in the serial console. If you don’t stop the U-Boot process, it will boot the Linux® kernel.

The Linux® penguin images will initially appear in the upper left corner of the display. When the boot process is complete, the Yocto Project® operating system will be displayed on the LVDS panel.

1.7 Congratulations Your Linux® is booted

Once Linux® is booted, you can log in with user name root and no password.

To jump in U-Boot, press any key before the value of the U-Boot environment variable, "bootdelay", decreases and before it times out (default 3 seconds). If you stop the U-Boot process, you can run the following command to boot Linux® again:

U-Boot >boot

2. Linux/Android

Choose a Development Path:

2.1 i.MX Linux® Board Support Package

GS-RDIMX6SABREBRD-IMG4

i.MX Linux® Board Support Package

  • Long-Term Support Kernel Release
  • U-Boot
  • Yocto Build Tools

The i.MX Linux® Board Support Package (BSP) is a collection of binary files, source code, and support files that can be used to create a U-Boot boot loader, a Linux® kernel image, and a root file system for i.MX development systems. Current releases of BSP and source code can be found on imx6tools.

Overview

Before the Linux® OS kernel can boot on an i.MX board, the Linux® image needs to be copied to a boot device and the boot switches need to be set to boot that device.

To bring up the board and run Linux®, four elements are needed:

  • Boot loader (U-Boot)
  • Linux® kernel image (zImage)
  • A device tree file (.dtb) for the board being used
  • A root file system (rootfs) for the particular Linux® image

Prepare a Linux® BSP Image

Prebuilt Image

The release contains a prebuilt SD card image that is built specifically for the i.MX 6Quad Sabre-SD board. The SD card image is a file that is typically named and is a specially constructed disk image including partitions and all necessary files to boot the board, including all four components mentioned above.

The prebuilt NXP Linux® Binary Demo Image provides a typical system and basic set of features for using and evaluating the processor. Without modifying the system, the users can evaluate hardware interfaces, test SoC features, and run user space applications.

Self-built Image

With the source code and documentation, the users also can customize the Linux® image built for your own device, i.e. add or remove system components.

The Yocto Project is the framework of choice with NXP professional support to build the images that are used for booting a Linux® kernel, although other methods can be used.

For more details, see NXP Yocto Project User’s Guide.

Download Linux® BSP Image

There are various ways to download the Linux® BSP image for different boards, boot devices, and results desired.

For Getting-Started, we only list the few methods to transfer the BSP image to SD card. Experienced Linux® developer can explore other options.

The.Sdcard image (either from a prebuilt or self-built BSP image) is an SD card image that can be flashed directly. This is the simplest way to load everything needed onto the card with one command.

When more flexibility is desired, an SD card can be loaded with the individual components (boot loader, kernel, dtb file, and rootfs file) one-by-one or the.Sdcard image can be loaded and the individual parts can be overwritten with the specific components.

Copying the full SD card image

An SD/MMC card reader is required to transfer the boot loader and kernel images to initialize the partition table and copy the root file system.

Linux® host:

The Linux® kernel running on the Linux® host assigns a device node to the SD/MMC card reader.

To identify the device node assigned to the SD/MMC card, carry out the following command in the host computer:

WARNING: The instructions below will permanently delete existing content on the SD card and are dangerous to your PC if run incorrectly. If you have question or would like further details, please consult the i.MX Linux® User's Guide.

$ cat /proc/partitions

Carry out the following command to copy the SD card image to the SD/MMC card. Change sdx below to match the one used by the SD card.

$ sudo dd if= of=/dev/sd bs=1M && sync

Where is the correct board-specific SD card image

To set up the partition manually, please read 4.3.3 in i.MX Linux® User's Guide.

To load individual component separately when the full SD card image is not used, please read 4.3.4-3.4.6 in i.MX Linux® User's Guide

Using U-Boot

The U-Boot boot loader is able to download images over Ethernet to RAM and then writes to an SD card. For this operation. Network communications need to be configured.

For instructions about how to download U-Boot to an MMC/SD card that is not the one used to boot from, please refer to section 4.4.1

Images can be downloaded to other boot media (memory storage device) using U-Boot. To use other memory device, please refer to sections under 4.4.1

Using Manufacturing Tool

The Manufacturing Tool, named MfgTool, is a tool that runs on a Windows OS host and is used to download images to different devices on an i.MX board. The tar.gz file can be found with the prebuilt Linux® BSP image.

Use Manufacturing Tool

2.4 Boot Switch Setup

The boot modes of the i.MX boards are controlled by the boot configuration DIP switches on the board.

The following table shows the DIP switch settings for booting from the SD card slot labeled SD2 and J500 on the i.MX 6 SABRE-SD boards. The SD2 card slot is located beside the LVDS1 connection on the back of the board.

Booting from SD2 (J500) on i.MX 6 SABRE-SD

Switch D1 D2 D3 D4 D5 D6 D7 D8
SW6 On OFF OFF OFF OFF OFF ON OFF

For boot switch setup to boot from other device (SD3 and SATA), please refer to 4.5 in i.MX Linux® User Guide.

2.2 i.MX Android Board Support Package

GS-RDIMX6SABREBRD-IMG3

  • Android Compatibility Test Suite (CTS) compatible Release
  • Extended Multimedia Features

This section walks through the booting process of the i.MX 6QuadPlus SABRE board with the Android system image and briefly introduce how to build the software components that create your own system image. For more information about building the Android platform, see Android .

Current releases of Demo Images and source code can be found on imx6tools .

Overview

The storage devices on the development system (MMC/SD or NAND) must be programmed with the U-Boot boot loader. The i.MX 6 series boot process determines what storage device to access based on the switch settings. When the boot loader is loaded and begins execution, the U-Boot environment space is then read to determine how to proceed with the boot process.

The images from the prebuilt release package or created from source code contain:

  • U-Boot image: u-boot.imx
  • boot image: boot.img
  • Android system root image: system.img
  • Recovery root image: recovery.img

Prepare an Android BSP Image

The images needed to create an Android system can either be obtained from the release package or be built from source.

Prebuilt Image

The prebuilt NXP Android demo image will provide a default system with certain features for purpose of evaluation. Without modifying the system, the users can perform some basic operations, and interact wit the system to test hardware interfaces and develop software application in the user space.

The latest prebuilt demo files can be found in Android section at imx6tools .

Self-built Image

Preparation

To build the Android source files, use a computer running Linux® OS. Ubuntu 14.04 (64-bit) versions are the ones we have tested the most for Android Marshmallow 6.0 build.

After installing the computer running Linux® OS, check whether you have all the necessary packages installed for an Android build. See "Setting up your machine" on the Android website .

In addition to the packages requested on the Android website, please refer to Android User Guide to install the additional packages.

Get the source code

Get the Android source code from Google repo.

Get the kernel source code and U-Boot from Freescale open source Git.

Patch

Apply all the i.MX Android patches. For details, please refer to Android User Guide.

Build

The build configuration command lunch can be issued with an argument - strings.

Here is an example to build the Android image with user type for the i.MX 6Quadplus SABRE Board:

$ cd ~/myandroid

$ source build/envsetup.sh

$ lunch sabresd_6dq-user

$ make 2>&1 | tee build-log.txt

When the make command is complete, the build-log.txt file contains the execution output. Check for any errors.

To create Android platform over-the-air, OTA, and package, the following make target is specified:

$ make otapackage

Download Android BSP Image

Download Image using Linux® Utility

The Linux® utility "dd" on the computer running Linux® OS can be used to download the images into the SD card.

Before downloading, ensure that your partitions are created as described in Storage partitions.

Download Image using Manufacturing Tool

The Manufacturing Tool, named MfgTool, is a tool that runs on a Windows OS host and is used to download images to target devices on an i.MX board. The tar.gz file can be downloaded in Manufacturing Tools section at imx6tools .

Use Manufacturing Tool

Boot Switch Setupe

The boot modes of the i.MX boards are controlled by the boot configuration switches on the board.

The following table lists the boot switch settings for different boot methods:

eMMC 4-bit (MMC2) boot (SW6) 11100110 (from 1-8 bit)
eMMC 8-bit (MMC2) boot (SW6) 11010110 (from 1-8 bit)
SD boot (SW6) 01000010 (from 1-8 bit)

For boot switch setup to boot from NAND/TFTP/NFS, please refer to 6.2-6.3 in i.MX Android User's Guide.

To boot with HDMI displays, please refer to section 3.4 for more instructions.

3. FreeRTOS

The FreeRTOS BSP for i.MX 6SoloX is a suite of robust peripheral drivers, FreeRTOS support, and multicore communication mechanism designed to simplify and accelerate application development on i.MX 6SoloX Processor.

Current releases of BSP and source code can be found under FreeRTOS section on imx6tools.

3.1 Overview

The FreeRTOS BSP for i.MX 6SoloX consists of the following runtime software components written in C:

  • Arm® Cortex Microcontroller Software Interface Standard (CMSIS) Core, DSP libraries, and CMSIS-compliant device header files
  • Peripheral drivers
  • Multicore communication mechanism - RPMsg
  • An event triggered preemptive scheduling Real-time Operating System - FreeRTOS OS

The demos/examples in FreeRTOS BSP are built for on-chip Tightly Coupled Memory (TCM) in the Arm Cortex-M4 core.

The FreeRTOS BSP release provides two packages: The .exe package is a self-extract I nstaller that can be used on Windows OS, and the tarball is for installation on Linux® OS.

3.2 Root folder structure of FreeRTOS BSP for i.MX 6SoloX

There are four main areas under install directory of the FreeRTOS BSP tree used to provide the full source code for each demo application:

GS-RDIMX7DSABREBRD-IMG3

3.3 Building a Demo

The FreeRTOS BSP comes with rich demo applications and driver examples. To see what's available, browse to the BSP 'examples' folder and select your board, the i.MX 6SoloX SABRE board (/examples/imx6sx_sdb_m4/demo_apps/hello_world/).

To learn more about demo applications or driver examples, open the FreeRTOS i.MX 6SoloX Demo Application User's Guide, located in /doc.

If one or more of the demo applications or driver examples sounds interesting, you're probably wanting to know how you can build and debug yourself. The Getting Started Guide with FreeRTOS BSP provides easy, step-by-step instructions on how to configure, build, and debug demos for all toolchains supported by the BSP.

All examples are provided with projects for the following toolchains:

  • IAR Embedded Workbench
  • DS-5
  • GNU toolchain for Arm® Cortex®-M with CMAKE builds system

3.4 Run application using U-Boot

This section describes the steps to run application using an SD card with prebuilt U-Boot image for i.MX processor. For more information about how to write the U-Boot image to SD card and create FAT file system partition, refer to Linux BSP package.

Using U-Boot

3.5 Example Demo

Demo and example applications are provided to demonstrate peripheral drivers, FreeRTOS kernel, RPMsg usage and to highlight the main features of the i.MX 6SoloX processor.

The FreeRTOS BSP provides two types of software applications:

  • Demos: Applications intended to highlight key functions of the Arm® Cortex®-M4 Core in i.MX 6SoloX SoC, focusing on a particular use case on FreeRTOS OS
  • Examples: Simple applications intended to concisely illustrate how to use the peripheral drivers of the FreeRTOS BSP in the bare metal environment

The Sensor Demo i.MX 6SoloX is a simple demonstration program that uses the FreeRTOS and a set of drivers provided by NXP. It can get the current gravitational acceleration and magnetic field strength of the board. The purpose of this demo is to show how to use the I²C driver as a Controller to communication with other I²C Targets.

In the second terminal emulator for M4 core, you should see text indicating the sensor example is running (e.g., below). Choose one of the sensor demos and affect the given sensor by moving the board or moving something magnetic near it.

-------------- i.MX 6SoloX SABRE on board sensor example--------------

Select the sensor demo you want to run:

The user is prompted to enter which sensor they want to communicate with:

[1].MMA8451Q 3-Axis Digital Accelerometer Polling Demo

[2].MMA8451Q 3-Axis Digital Accelerometer Interrupt Demo

[3].MAG3110 3-Axis Digital Magnetometer Polling Demo

[4].MAG3110 3-Axis Digital Magnetometer Interrupt Demo

As is shown on the log, the RPMsg Controller (Cortex-A9 Linux OS) and Remote (Cortex-M4 FreeRTOS OS) perform a name service handshake to create the communication channel. The M4 channel address is 1, and the A9 channel address is 1024. A9 begins to send the first data to M4. After receiving the data, M4 adds 1 to it and sends it back to A9. A9 responds with the same behavior. The loop continues to demonstrate the stability of RPMsg communication.

After the boot process succeeds, the Arm Cortex-M4 terminal displays the following information:

RPMSG PingPong FreeRTOS RTOS API Demo...

RPMSG Init as Remote

After the Linux pingpong controller side module is installed, the Arm Cortex-M4 terminal displays the following information:

Name service handshake is done, M4 has setup a rpmsg channel [1---> 1024]

Get Data From Controller Side : 0

Get Data From Controller Side : 2

Get Data From Controller Side : 4

Get Data From Controller Side : 6

Get Data From Controller Side : 8

......

As is shown on the log, the pingpong demo runs in an infinite loop. Reboot the board to stop it.

4. Exploration

4.1 Key Features Demo in Linux

With Linux® running on the i.MX platform, you can evaluate special features that i.MX SoCs provide:

There are three main power management techniques on i.MX boards:

  • Suspend and resume commands
  • CPU frequency scaling
  • Bus frequency scaling

After Linux® setup, for more details about developing applications in user space. Please see i.MX6 Linux® Reference Manual.

4.2 Application development

After Linux® setup, for more details about developing applications in user space. Please see i.MX6 Linux® Reference Manual.

There are a lot of program environment.

4.3 Yocto Project

NXP Yocto Project User's Guide covers how to set up the Linux® host machine, how to run and configure a Yocto Project, generate an image, and generate a rootfs.

For more details, see NXP Yocto Project User’s Guide.

Tera Term Terminal

Tera Term Terminal

Tera Term is a very popular open source terminal emulation application. This program can be used to display information sent from your NXP development platform's virtual serial port.

  1. Download Tera Term from SourceForge. After the download, run the installer and then return to this webpage to continue
  2. Download

  3. Launch Tera Term. The first time it launches, it will show you the following dialog. Select the serial option. Assuming your board is plugged in, there should be a COM port automatically populated in the list
  4. Tera-Term-Connection
  5. Configure the serial port settings (using the COM port number identified earlier) to 115200 baud rate, 8 data bits, no parity and 1 stop bit. To do this, go to Setup → Serial Port and change the settings
  6. Verify that the connection is open. If connected, Tera Term will show something like below in it's title bar
  7. Tera-Term-Console
  8. You're ready to go

PuTTY Terminal

PuTTY Terminal

PuTTY is a popular terminal emulation application. This program can be used to display information sent from your NXP development platform's virtual serial port.

  1. Download PuTTY using the button below. After the download, run the installer and then return to this webpage to continue
  2. Download

  3. Launch PuTTY by either double clicking on the *.exe file you downloaded or from the Start menu, depending on the type of download you selected
  4. Configure In the window that launches, select the Serial radio button and enter the COM port number that you determined earlier. Also enter the baud rate, in this case 115200
  5. PUTTY-Configuration
  6. Click Open to open the serial connection. Assuming the board is connected and you entered the correct COM port, the terminal window will open. If the configuration is not correct, PuTTY will alert you
  7. You're ready to go

Use Manufacturing Tool

Use Manufacturing Tool

Manufacturing Tool Tutorial - Android

  1. Connect a USB cable from a computer running Windows OS to the USB OTG port on the board.
  2. Unzip the mfgtools.tar.gz file to a selected loation. The directory is named MFGTool-Dir in this example.
  3. Copy the BSP image to to the path: MFGTool-Dir/Profiles/Linux/OS Firmware/files/android/sabresd
  4. No dedicated boot DIP switches are reserved for serial download mode on i.MX 6 Quad/QuadPlus SABRE-SD board.One way is to change the SABRE-SD SW6 (boot) to 00001100 (from 1-8 bit) to enter download mode.
  5. Power on the board.
  6. Double-click the file *.vbs according to the target device.
  7. Click "Start" to start downloading. the status bar shows the download status. The download may take one to two minutes depending on the host machine.
  8. After the image downloading is done, set the boot switch to boot up the board according to the table in the next step.

For details, please refer to "3.3 Downloading Board Images" in i.MX Android Quick Start Guide

You can connect a USB cable from the debug UART port to the computer and open a serial communication program for for console output.

GS-RDIMX7DSABREBRD-IMG20

Using U-Boot

Using U-Boot

  1. Preparing an SD card with prebuilt U-Boot image from Linux BSP packet for i.MX 6SoloX processor

  2. Insert the SD card to the PC, and copy the application image (for example hello_world.bin) you want run to the FAT partition of the SD card

  3. Safely remove the SD card from the PC

  4. Insert the SD card to the target board. Make sure to use the default boot SD slot and double check the dip switch configuration. The default configuration of the validation board boots from SD1, and on SABRE board there is only one SD slot, which is used for boot

  5. Connect the “DEBUG UART” slot on the board with your PC through the USB cable. The Windows OS installs the USB driver automatically, and the Ubuntu OS will find the serial devices as well

    See Step 3 in Out of the Box for more instructions for serial communication application

  6. Open a second terminal emulator on the i.MX 6SoloX Sabre board's second counted serial port. This is the Cortex-M4's serial console. Setting the speed to 115200 bit/s, data bits 8, no parity, and power on the board

    1. Load the application image from the SD card to DDR RAM:

      fatload mmc 2:1 0x7F8000 .bin

    2. Flush cached content to DDR RAM:

      dcache flush

    3. Copy Cortex-M4 image from DDR RAM to TCM:

      cp.b 0x80000000 0x7F8000 0x8000

    4. Flush cached content to TCM:

      dcache flush

    5. Start the Cortex-M4 core from the TCM:

      bootaux 0x7F8000

At the U-Boot prompt on the first terminal emulator, type the following commands to U-Boot. This copies the FreeRTOS memory image file from the first partition of the SD card into the Cortex-M4's tightly coupled memory (TCM) and releases the M4 from reset.

Some applications with the names ended by “DDR” or "ocram" in FreeRTOS BSP should be run in DDR or OCRAM. Those ended by "qspi" should boot from external QSPI flash.

For more instructions on how to boot from other storage, please read section 6.2 and 6.3 in Getting Started with FreeRTOS BSP for i.MX 6SoloX.

Support

Forums

Connect with other engineers and get expert advice on designing with the RD-IMX6SX-SABRE Evaluation Board on one of our community sites.