Skip to end of metadata
Go to start of metadata

Introduction

The Embedded TransferJet CNL can be deployed on the IMX6 ICO-TTJ-500 platform.  This guide explains how to build and run the Embedded TransferJet CNL Sample Application on the IMX6 ICO-TTJ-500 hardware.

Pre-requisites

Hardware

  1. IMX6 ICO-TTJ-500 board with integrated TransferJet SDIO device + TransferJet coupler + USB cable (A to B)
  2. 1 x USB to serial cable with suitable 3-way connector compatible with the J15 UART connector on the ICO-TTJ-500 board.
  3. Windows PC + TransferJet USB dongle

Windows software

Refer to TransferJet Windows CNL Test Tool for more information on installing the Windows CNL test application software.

Development tools

The development environment requires an Ubuntu 13.10 (or later) Linux PC.

GNU cross tools

The GNU cross tools are required to build the bare metal BSP for IMX6 and the test application.  Carry out the following steps to install these tools:

  1. Download v4.9.3 of the arm-none-eabi pre-built GNU cross tools binaries from https://launchpad.net/gcc-arm-embedded.
  2. Extract the binary archive to a suitable installation directory and ensure that the bin directory is added to your PATH.
  3. Check your installation is working by typing arm-none-eabi-gcc -v at the command line.

USB OTG serial loader utility

We recommend using the Boundary Devices open source USB OTG serial loader utility in order to launch applications built under the BSP.  This must be extracted from GitHub and compiled for your machine as follows:

  1. Download and extract libusbx-1.0.18 from http://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-1.0.18/libusb-1.0.18.tar.bz2/download
  2. Run ./configure and then make in order to build the libusbx-1.0.18 developer library.  Then run sudo make install to install the library on your machine.
  3. Download and build imx_usb_loader from https://github.com/boundarydevices/imx_usb_loader
  4. Add the imx_usb_loader directory to your PATH and ensure you can run the application imx_usb from the command line.

Linux terminal application

We recommend using minicom as a terminal application for interacting with the test application running on the IMX6 processor.  This can typically be launched, for example, by entering the command sudo minicom -D /dev/ttyUSB0 assuming you have a USB-to-serial cable inserted into your PC.

See Setting up a USB tty serial connection to the HDP-TTJ-500 for more information.

TransferJet software pack

The TransferJet software pack is available as three separate packages under Icoteq's GIT server.  These are:

 

Software license notice

Icon

To download the cnl-application and platform solution, you must first purchase a software license from Icoteq which will grant permissions to the required repositories.  Click on the  button to download each repository as a zip archive.

All packages should be extracted into the same base working directory and remove the ".git" extension from each folder name by renaming each folder.  This is important because the platform-ico-ttj-500 package uses relative symbolic links to both cnl-application and cnl-embedded in order to build their source code modules.

Structure of platform-ico-ttj-500 package

The platform-ico-ttj-500 package is a complete software pack containing all the necessary source code for the IMX6 processor, ICO-TTJ-500 evaluation board and also additional source code libraries for using TransferJet.  The software pack is derived from the v1.1.0 Freescale IMX6 SDK software pack and adheres to the same structure and build conventions as the baseline Freescale SDK.

Modifications have been made by Icoteq to the baseline SDK in the following areas:

  • Added platform board configuration files under board/mx6dq/ico-ttj-500 for ICO-TTJ-500 board
  • Modified mk files to support builds for ico-ttj-500 board
  • Modified sdk/drivers/usdhc driver source code to support I/O card commands, clock configuration for UHS-I mode and card IRQ

Extensions to the baseline SDK are made in the following places:

  • Added symbolic links for TransferJet under tjet/cnl-application and tjet/cnl-embedded
  • Expanded the obds (on-board diagnostic suite) test application to support TransferJet test cases for ICO-TTJ-500 under apps/obds
  • Adapted the obds (on-board diagnostic suite) test application to use 996 MHz CPU clock speed (default is 792 MHz)
  • Added a new custom SDIO driver under sdk/drivers/sdio for bespoke TransferJet functionality as required by cnl-embedded

Building the application

Follow these steps the build the application:

  1. Navigate to the directory tools and run the command ./build_sdk -b ico-ttj-500 -v b
  2. Check to ensure the binary file output/mx6dq/obds/ico-ttj-500-rev-b/obds.bin has been created

Launching the application

  1. Start a minicom session with the communications parameters 115200-8-1-N-N.
  2. Ensure a USB cable is connected between the Linux PC and the ICO-TTJ-500 USB OTG port (J9) and the D11 LED lights up when this is done.  Ensure that no SD card media is inserted into the MMC card slot to prevent the board from booting from MMC.  Note also that the ICO-TTJ-500 board must be powered separately using a 5V/4A rated power supply via J11.
  3. Run the command imx_usb output/mx6dq/obds/ico-ttj-500-rev-b/obds.bin to launch the obds application and check the UART console displays a menu (see example console output below).
  4. Type the test case number to launch via the UART console (see supported test cases below)

You should see the following output displayed to the UART console upon launching obds:

 

Console output
**************************************************************************
    Platform SDK (1.1) for MX6DQ TO1.2 ICO-TTJ-500 rev. B
    Build: Nov  4 2015, 11:43:06
    Copyright (c) 2012-2013 Freescale Semiconductor, Inc. All rights reserved.
**************************************************************************

========== Clock frequencies ===========
CPU: 996000 kHz
DDR: 528000 kHz
IPG: 66000 kHz
Debug UART: 80000000 Hz
========================================

========== BOOT configuration 
Security config: Open -allows any code to be flashed & executed (even without valid signature)
Boot From: SD/eSD/SDXC: fast boot: speed SDR12: bus width 4-bit on USDHC1
==================================


  This is an interactive test menu for MX6DQ TO1.2 ICO-TTJ-500 rev. B.

  00 - RUN ALL TESTS

  CPU Board Tests:
  13 - GPIO LED Test

  Main Board Tests:
  32 - TJET/SD Test Initiator
  33 - TJET/SD Test Responder
  34 - TJET/SD Test Initiator/Ping-Pong
  35 - TJET/SD Test Responder/Ping-Pong

  Menu functions:
  m - Display menu.
  q - Exit menu.

  Enter test number followed by the enter key, 'm' for menu, or 'q' to exit.

 

Supported test cases

 

Test IDHeadlineDescription
13GPIO LED TestFlashes LED D7 until user presses "y" key.
32TJET/SD Test Initiator

Runs TJET sample application in single duplex mode as initiator/transmitter.

Compatible with Windows PC software + USB dongle.

Compatible with another ICO-TTJ-500 running test case 33.

33TJET/SD Test Responder

Runs TJET sample application in single duplex mode as initiator/receiver.

Compatible with Windows PC software + USB dongle.

Compatible with another ICO-TTJ-500 running test case 32.

34TJET/SD Test Initiator/Ping-Pong

Runs TJET sample application in full duplex mode as initiator

Compatible with another ICO-TTJ-500 running test case 35 only.

35TJET/SD Test Responder/Ping-Pong

Runs TJET sample application in full duplex mode as responder.

Compatible with another ICO-TTJ-500 running test case 34 only.

 

 

Demo Application

Icon

A more detailed description of the application can be found at Embedded CNL Software Architecture

 

Application device footprint

TBD.

 

Application build settings

DefinitionValueComments
POLL_SDIO_IRQNot DefinedSDIO_D1 is used for IRQs.
USE_LE_CPUDefinedARM Cortex A9 is little endian.
DEBUG_LVLDBG_OFFNo trace.
TJET_IRQ_WAITNULLUse this to define an IRQ wait or timeout function.
APP_GPIO_TIMINGNot definedUse this to enable GPIO pin triggers of various TransferJet application timing events.
SDIO_GPIO_TIMINGNot definedUse this to enable GPIO pin triggers of various TransferJet SDIO timing events.