Table of Contents

How-to

Boot loader

Barebox

The TQMa6x modules are mainlined in barebox featuring device tree and SPL support.

Please note that TQ systems uses U-Boot for testing and verification. In case of differences in pin and clock configuration etc. please contact our technical support.

U-Boot

For details on using U-Boot see U-Boot Command Line Interface

Booting

The default environment is configured to try booting from SD / eMMC card and fall back to booting from net. You can set the environment variable bootcmd, to force either booting from net or from eMMC / SD card:

TQMa6Q[MBa6x] U-Boot > setenv bootcmd run netboot
TQMa6Q[MBa6x] U-Boot > setenv bootcmd run mmcboot

Update

The TQMa6 U-Boot boot loader support update of

You can use the update scripts from the U-Boot environment for update:

Devicetree fit image BSP Rev.0109

update to fit image

With BSP Rev.0109 fdt fit image was introduced, this image contains all devicetree blob files in one file.To select a specific configuration environment variable fitfdt_part By defailt U-Boot is configured for single devicetree. When fdt fit image should be used then U-Boot must be configured and updated as follows:

  1. set environment variable fdt_type from single to fit
    setenv fdt_type fit
  2. set environment variable fitfdt_file from imx6q-mba6x.dtb to mba6-image-dtb.itb
    setenv fdt_file mba6-image-dtb.itb
  3. save environment settings
    saveenv
  4. set environment variable autoload to no
    setenv autoload no

    setenv

  5. set ip address manually or get the network configuration via dhcp
  6. set environment variable serverip to the ip address where your TFTP server is running
    setenv serverip xxx.xxx.xxx.xxx
  7. run fdt update
    run update_fdt
using fit image

These scripts load the files from the configured tftp server. You need a working network connection.

To update parts of the U-Boot environment or the Device Tree during development you can use also the U-Boot tftp command.

Using different boot media

Preface

Switching boot sources is only possible if the BOOT_MODE fuses are not programmed. If configured for “Boot from eFuses” but fuses are not programmed, the boot loader will not be able to determine the boot source.

To enable boot device selection BOOT_MODE has to be set to “Internal Boot”. This can be done using DIP switch S5 on MBa6x:

BOOT_MODE S5-1 S5-2
Boot from eFuses 0 0
Serial Downloader 0 1
Internal Boot 1 0

NFS

To boot the MBa6x from network you need a working boot loader in SD card or eMMC which is able to get the kernel image over tftp and to provide the kernel with commandline settings for NFS. Depending on the boot loader location the board has to be configured to load the boot loader. See SD card and eMMC. You have to provide the images via tftp and nfs and to configure the boot loader to work with your tftp-server and your nfs-server

U-Boot

To enable NFS Boot you have to set the following environment variables (static IP):

To boot type the following command:

TQMa6Q[MBa6x] U-Boot > run netboot

eMMC

To initialize the eMMC with an newly created image follow the instructions below:

root@tqm:~ mount /dev/mmcblk0p4 /mnt
root@tqm:~ cd /mnt
root@tqm:/mnt dd if=uboot_tqma6<q|s>_hd.img of=/dev/mmcblk1 bs=1M conv=fsync
root@tqm:/mnt poweroff

You can also establish an workflow using the Freescale Manufacturing tool.

To boot the MBa6x from an initialized eMMC you have to set DIP switches:

DIP S1 S2 S4
1 0 0 x
2 1 1 x
3 1 0 x
4 0 1 x
5 0 0 x
6 x 0 x
7 x 0 x
8 x 0 x

Power up the MBa6x.

To boot from eMMC type the following command:

TQMa6Q[MBa6x] U-Boot > run mmcboot

To update U-Boot on eMMC you can use workflow:

TQMa6Q[MBa6x] U-Boot > run update_uboot

You need to use the imx-image not the plain binary image of U-Boot. Image must be written to Sector 2 (1024 Bytes offset) of the eMMC.

SD Card

Copy the complete system image to an SD card to boot the module via SD card.

$ dd if=platform-MBa6x/images/uboot_tqma6<q|s>_hd.img of=/dev/sd<n> bs=4M conv=fsync

You have to use the raw device of the SD card not a partition!

To boot the MBa6x from a previously generated SD Card you have to set DIP switches:

DIP S1 S2 S4
1 0 0 x
2 1 0 x
3 0 1 x
4 1 0 x
5 0 1 x
6 0 x x
7 0 0 x
8 0 0 x

Insert the SD card in X9 of MBa6x and power up the MBa6x.

To boot from eMMC type the following command:

TQMa6Q[MBa6x] U-Boot > run mmcboot

You need to use the imx-image not the plain binary image of U-Boot. Image must be written to Sector 2 (1024 Bytes offset) of the SD-card.

SPI-NOR

Starting with BSP REV.0104 the U-Boot for SPI is built within the BSP. The following configuration is needed to build U-Boot images which stores the environment in SPI-NOR:

To boot the MBa6x from SPI NOR on TQMa6x configure DIP switches as followed:

DIP S1 S2 S4
1 0 x x
2 0 x 0
3 1 x 0
4 1 x 1
5 x x 1
6 x x 0
7 x x 0
8 x x 0

You need to use the imx-image, not the plain binary image of U-Boot. Image must be written to 1024 bytes offset from start of flash.

SATA

under construction

Change Device Tree

The hardware is configured using Device Tree. The Device Tree files for TQMa6x / MBa6x are located in platform-MBa6x/build-target/linux-<version>/arch/arm/boot/dts/imx6….dts<i> after the prepare step of the kernel package.

Documentation of Device Tree for your kernel version can be found in the kernel tree under Documentation/devicetree

Attention: Changes in the build directory are not saved. You need to create a patch to make the changes permanent.

Attention: Changes of the Device Tree must be compiled. To do this enter the following commands:

$ ptxdist drop dtc extract
$ ptxdist go
$ ptxdist images

If you only want to update the kernel image you also need to transfer the resulting Device Tree blob to your device. It has to be copied to your tftp directory:

$ cp platform-MBa6x/images/imx6<variant>-mba6x.dtb <your tftp dir>

And can then be loaded to the device. After saving and resetting the new Device Tree will be used.

U-Boot

TQMa6S[MBa6x] > printenv fdt_file

Check name if settings and file name are correct

TQMa6S[MBa6x] > run update_fdt

Load / Change / Save the Device Tree under U-Boot

With “fdt” command under U-Boot we can edit the Devicetree

1) Load the fdt from mmc in to RAM

 mmc dev ${mmcdev}; mmc read ${fdt_addr} ${fdt_start} ${fdt_size}; 

2) Set your $fdt_addr as fdt address for the fdt command

 fdt addr ${fdt_addr}

3) Resize the fdt to “+4k”

 fdt resize 

4) Identify your tree in the Device Tree

 fdt print - recursive print of your path (e.g / -> Prints the whole Devicetree. /soc -> everything under "/soc")
 fdt list - Prints only the Top level of path (e.g / -> Lists only the "First" Level. /soc -> Prints the First level of all devices under "/soc"  

5) Change values of properties

 fdt set "your path" "your property" "your value" e.g:
fdt set /display@0 status okay 

6) Write the changed Device Tree from RAM to mmc

 'mmc dev ${mmcdev}; mmc write ${fdt_addr} ${fdt_start} ${fdt_size};' 

For testing purpose only. For bigger changes, please compile the Devicetree

Change / adapt display type

Configuration of display type and display support depends on the kernel version used since the drivers are at least partly in staging.

When displays or display settings are altered the device tree has to be modified. See here how to change device tree.

Configure HDMI

Beginning with Linux 3.16-rc5 (BSP REV.0104) a devicetree with special settings for HDMI is compiled.

Correct working of the HDMI driver depends on the function of the HPD signal of the Monitor.

Configure parallel display

under construction

Beginning with Linux 3.16-rc5 (BSP REV.0104) a devicetree with special settings for parallel display is compiled. To change the display type, you need to change the default timing and - in case timing is not supplied yet - the correct display timing has to be entered in device tree.

Configure LVDS

To use LVDS display with frame buffer support, make sure to disable other displays in the device tree (set the status property of the node to “disabled”).

To enable the LVDS output you have to

Timing examples:

Sharp lq085y3lg13

                       lq085y3lg13 { /* needs fsl,data-width = <18> */
                                 clock-frequency = <26200000 26600000 27000000>;
                                 hactive = <800>;
                                 vactive = <480>;
                                 hfront-porch = <10>;
                                 hback-porch = <0>;
                                 hsync-len = <255>; /* FIXME: typ < 256!!*/
                                 vback-porch = <0>;
                                 vfront-porch = <2>; /* move 2 lines up */
                                 vsync-len = <40 45 50>;
                                 de-active = <1>;
                                 hsync-active = <0>;
                                 vsync-active = <0>;
                         };

AUO auo-g156-xw01

                         auo-g156-xw01 {
                                 clock-frequency = <60000000 76000000 90000000>;
                                 hactive = <1366>;
                                 vactive = <768>;
                                 hfront-porch = <10>;
                                 hback-porch = <10>;
                                 hsync-len = <80 200 570>;
                                 vback-porch = <100>;
                                 vfront-porch = <10>;
                                 vsync-len = <10 38 120>;
                                 de-active = <1>;
                                 hsync-active = <0>;
                                 vsync-active = <0>;
                         };

CHIMEI g104-x1

                        chimei-g104-x1 {
                                 clock-frequency = <55000000 65000000 75000000>;
                                 hactive = <1024>;
                                 vactive = <768>;
                                 hfront-porch = <75>;
                                 hback-porch = <10>;
                                 hsync-len = <76 255 776>; /* FIXME: typ < 256!*/
                                 vback-porch = <100>;
                                 vfront-porch = <10>;
                                 vsync-len = <2 38 182>;
                                 de-active = <1>;
                                 hsync-active = <0>;
                                 vsync-active = <0>;
                         };

CHIMEI g070y2-l01

                         chimei-g070y2-l01 {
                                 clock-frequency = <27000000 29500000 33000000>;
                                 hactive = <800>;
                                 vactive = <480>;
                                 hfront-porch = <0>;
                                 hback-porch = <0>;
                                 hsync-len = <130 192 290>;
                                 vback-porch = <0>;
                                 vfront-porch = <2>;
                                 vsync-len = <10 20 70>;
                                 de-active = <1>;
                                 hsync-active = <0>;
                                 vsync-active = <0>;
                         };

Compile kernel / boot loader outside of the BSP

  • TQ System GmbH development and testing is done under the documented environment. Please consider to use the same environment for testing if you think there are issues.
  • BSP consists of boot loader, kernel, root FS and plumbing for patching, configuration and building images.

The big picture

Changes to mainline sources of Linux kernel and boot loader are provided in the form of patch series. These series are located inside patches directory of the BSP. These directories are either directly under the BSP root or at the same location as the platformconfig file for your hardware platform.

The series file describes the order how patches have to be applied. Please note that the patch series are against the documented versions of the boot loader or kernel.

If the first patch in the series is a tar.bz2 blob that means this will be a patch that raises the patchlevel from the base version to the bugfix version (for instance from Linux 3.2 mainline to Linux 3.2.20 stable)

Configuration

Configuration info is located at the following places:

Tools

The following list is a selection of tools that are able to work with patch series:

Read manual pages how to use the tools.

Steps

Setup the Ethernet devices under U-Boot

USB-ETH

1) Start to detect USB device

 usb start 

2) To use it under U-Boot you have to change the active Ethernet device

 setenv ethact sms0 

Available Ethernet devices are “sms0”(X12) and “FEC”(X11)

if no link activity shown in U-Boot see Known Issues

Using the CAN Interface

Configuration of canX on MBa6x (BSP Rev.0100)

To configure the CAN interface use the canconfig command.

SYNTAX:

root@MBa6x:/dev canconfig
usage:
        canconfig <dev> bitrate { BR } [sample-point { SP }]
                BR := <bitrate in Hz>
                SP := <sample-point {0...0.999}> (optional)
        canconfig <dev> bittiming [ VALs ]
                VALs := <tq | prop-seg | phase-seg1 | phase-seg2 | sjw>
                tq <time quantum in ns>
                prop-seg <no. in tq>
                phase-seg1 <no. in tq>
                phase-seg2 <no. in tq
                sjw <no. in tq> (optional)
        canconfig <dev> restart-ms { RESTART-MS }
                RESTART-MS := <autorestart interval in ms>
        canconfig <dev> ctrlmode { CTRLMODE }
                CTRLMODE := <[loopback | listen-only | triple-sampling | berr-reporting] [on|off]>
        canconfig <dev> {ACTION}
                ACTION := <[start|stop|restart]>
        canconfig <dev> clockfreq
        canconfig <dev> bittiming-constants
        canconfig <dev> berr-counter

To configure the CAN0 interface with a bitrate of 125000

root@MBa6x: canconfig can0 bitrate 125000
root@MBa6x:/ ifconfig can0 up
root@MBa6x:/ ifconfig can0
t@MBa6x:/ ifconfig can0
can0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          UP RUNNING NOARP  MTU:16  Metric:1
          RX packets:11 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:10
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:142

WEIM bus

The term “wireless” does not imply that the WEIM is literally an interface without wires. It simply means that this module was originally designed for wireless and mobile applications that use low-power technology.

The actual devices are instantiated from the child nodes of a WEIM node.

Device tree documentation

Required properties:

- compatible:
Should contain one of the following:
“fsl,imx1-weim”
“fsl,imx27-weim”
“fsl,imx51-weim”
“fsl,imx50-weim”
“fsl,imx6q-weim”
- reg:
A resource specifier for the register space
(see the example below)
- clocks:
the clock, see the example below.
- #address-cells:
Must be set to 2 to allow memory address translation
- #size-cells:
Must be set to 1 to allow CS address passing
- ranges:
Must be set up to reflect the memory layout with fourinteger values for each chip-select line in use:
<cs-number> 0 <physical address of mapping> <size>

Optional properties:

- fsl,weim-cs-gpr:
For “fsl,imx50-weim” and “fsl,imx6q-weim” type of devices, it should be the phandle to the system General Purpose Register controller that contains WEIM CS GPR register, e.g. IOMUXC_GPR1 on i.MX6Q. IOMUXC_GPR1[11:0] should be set up as one of the following 4 possible values depending on the CS space configuration.

IOMUXC_GPR1 [11:0]] CS0 CS1 CS2 CS3
05 128M 0M 0M 0M
033 64M 64M 0M 0M
0113 64M 32M 32M 0M
01111 32M 32M 32M 32M

In case that the property is absent, the reset value or what bootloader sets up in IOMUXC_GPR1[11:0] will be used.

Timing property for child nodes. It is mandatory, not optional.

- fsl,weim-cs-timing:
The timing array, contains timing values for the child node. We can get the CS index from the child node's “reg” property. The number of registers depends on the selected chip.

For i.MX35 (“fsl,imx27-weim”) there are three registers: CSCRxU, CSCRxL, CSCRxA.
For i.MX53 (“fsl,imx50-weim”) and i.MX6Q(“fsl,imx6q-weim”)and i.MX6DL(“fsl,imx6q-weim”) and there are six registers: CSxGCR1, CSxGCR2, CSxRCR1, CSxRCR2, CSxWCR1, CSxWCR2.

Example for WEIM Bus

Device tree example

12 /dts-v1/;
13
14 #include "imx6dl-tqma6s.dtsi"
15 #include "imx6qdl-<mainboard-name>.dtsi"
16
17 / {
18         model = "TQ TQMa6S on Mainnboard xyz";
19         compatible = "tq,mainboard", "tq,tqma6s", "fsl,imx6dl";
20
…
215 &iomuxc {
…
454         weim {
455                 pinctrl_weim_1: weim-grp1 {
456                         fsl,pins = <
457 /* (PAD_CTL_DSE_80ohm | PAD_CTL_HYS | PAD_CTL_SPEED_MED) */
458 #define PAD_CTL_EIM_ADDR 0x00010098
459 /* (PAD_CTL_DSE_80ohm | PAD_CTL_HYS | PAD_CTL_SPEED_MED | PAD_CTL_PKE) */
460 #define PAD_CTL_EIM_DATA 0x00011098
461 /* (PAD_CTL_DSE_80ohm | PAD_CTL_HYS | PAD_CTL_SPEED_MED | PAD_CTL_PUS_100K_UP) */
462 #define PAD_CTL_EIM_CTRL 0x0001b098
463 /* (PAD_CTL_DSE_80ohm | PAD_CTL_HYS | PAD_CTL_SPEED_MED) */
464 #define PAD_CTL_EIM_RW  0x00010098
465                                 MX6QDL_PAD_EIM_DA0__EIM_AD00 PAD_CTL_EIM_ADDR
466                                 MX6QDL_PAD_EIM_DA1__EIM_AD01 PAD_CTL_EIM_ADDR
467                                 MX6QDL_PAD_EIM_DA2__EIM_AD02 PAD_CTL_EIM_ADDR
468                                 MX6QDL_PAD_EIM_DA3__EIM_AD03 PAD_CTL_EIM_ADDR
469                                 MX6QDL_PAD_EIM_DA4__EIM_AD04 PAD_CTL_EIM_ADDR
470                                 MX6QDL_PAD_EIM_DA5__EIM_AD05 PAD_CTL_EIM_ADDR
471                                 MX6QDL_PAD_EIM_DA6__EIM_AD06 PAD_CTL_EIM_ADDR
472                                 MX6QDL_PAD_EIM_DA7__EIM_AD07 PAD_CTL_EIM_ADDR
473                                 MX6QDL_PAD_EIM_DA8__EIM_AD08 PAD_CTL_EIM_ADDR
474                                 MX6QDL_PAD_EIM_DA9__EIM_AD09 PAD_CTL_EIM_ADDR
475                                 MX6QDL_PAD_EIM_DA10__EIM_AD10 PAD_CTL_EIM_ADDR
476                                 MX6QDL_PAD_EIM_DA11__EIM_AD11 PAD_CTL_EIM_ADDR
477                                 MX6QDL_PAD_EIM_DA12__EIM_AD12 PAD_CTL_EIM_ADDR
478                                 MX6QDL_PAD_EIM_DA13__EIM_AD13 PAD_CTL_EIM_ADDR
479                                 MX6QDL_PAD_EIM_DA14__EIM_AD14 PAD_CTL_EIM_ADDR
480                                 MX6QDL_PAD_EIM_DA15__EIM_AD15 PAD_CTL_EIM_ADDR
481                                 MX6QDL_PAD_EIM_A16__EIM_ADDR16 PAD_CTL_EIM_ADDR
482                                 MX6QDL_PAD_EIM_A17__EIM_ADDR17 PAD_CTL_EIM_ADDR
483                                 MX6QDL_PAD_EIM_A18__EIM_ADDR18 PAD_CTL_EIM_ADDR
484                                 MX6QDL_PAD_EIM_CS0__EIM_CS0_B PAD_CTL_EIM_CTRL
485                                 MX6QDL_PAD_EIM_OE__EIM_OE_B PAD_CTL_EIM_CTRL
486                                 MX6QDL_PAD_EIM_RW__EIM_RW PAD_CTL_EIM_RW
487                                 MX6QDL_PAD_CSI0_DATA_EN__EIM_DATA00 PAD_CTL_EIM_DATA
488                                 MX6QDL_PAD_CSI0_VSYNC__EIM_DATA01 PAD_CTL_EIM_DATA
489                                 MX6QDL_PAD_CSI0_DAT4__EIM_DATA02 PAD_CTL_EIM_DATA
490                                 MX6QDL_PAD_CSI0_DAT5__EIM_DATA03 PAD_CTL_EIM_DATA
491                                 MX6QDL_PAD_CSI0_DAT6__EIM_DATA04 PAD_CTL_EIM_DATA
492                                 MX6QDL_PAD_CSI0_DAT7__EIM_DATA05 PAD_CTL_EIM_DATA
493                                 MX6QDL_PAD_CSI0_DAT8__EIM_DATA06 PAD_CTL_EIM_DATA
494                                 MX6QDL_PAD_CSI0_DAT9__EIM_DATA07 PAD_CTL_EIM_DATA
495                         >;
496                 };
497         };
498 };
…
&weim {

Example Code for TQMa6S

597         pinctrl-names = "default";
598         pinctrl-0 = <&pinctrl_weim_1>;
599         /* <cs-number> 0 <physical address of mapping> <size> */
600         ranges = <0 0 0x08000000 0x08000000>;
601         #address-cells = <2>;
602         #size-cells = <1>;
603         status = "okay";
604
605         sram@0,0 {
606                 compatible = "tq,sram";
607                 #address-cells = <1>;
608                 #size-cells = <1>;
609                 reg = <0 0 0x0080000>;
610                 bank-width = <1>;
611                 /* optimized settings for device at CS0 */
612                 /* CSxGCR1, CSxGCR2, CSxRCR1, CSxRCR2, CSxWCR1, CSxWCR2 */
613                 /*
614                  * timing for SRAM: we have 8 Bit data and 19 Bit
615                  * address
616                  */
617                 fsl,weim-cs-timing = <
618                         0x60240001 0x00001000 0x07f11101
619                         0x00000000 0x0f249241 0x00000000
620                 >;
621         };
622 };

Configure and use PWM Backlight

the following information is based on Linux kernel 3.16

Device tree documentation

Required properties:

- compatible:“pwm-backlight”
- pwms: OF device-tree PWM specification (see PWM binding[0])

- brightness-levels: Array of distinct brightness levels. Typically these are in the range from 0 to 255, but any range starting at 0 will do. The actual brightness level (PWM duty cycle) will be interpolated from these values. 0 means a 0% duty cycle (darkest/off), while the last value in the array represents a 100% duty cycle (brightest).

- default-brightness-level: the default brightness level (index into the array defined by the “brightness-levels” property)

- power-supply: regulator for supply voltage

Optional properties:

- pwm-names: a list of names for the PWM devices specified in the
“pwms” property (see PWM binding[0])

- enable-gpios: contains a single GPIO specifier for the GPIO which enables
and disables the backlight (see GPIO binding[1])

[0]: Documentation/devicetree/bindings/pwm/pwm.txt
[1]: Documentation/devicetree/bindings/gpio/gpio.txt

Device tree example TQMa6x / MBa6x (BSP0104/Linux kernel 3.16)

51         backlight_ldb: backlight@0 {
52                 compatible = "pwm-backlight";
53                 pwms = <&pwm1 0 62500>;
54
55                 brightness-levels = <0 96 128 160 192 224 255>;
56                 default-brightness-level = <5>;
57
58                 power-supply = <&vcc3v3>;
59                 enable-gpios = <&gpio4 5 GPIO_ACTIVE_HIGH>;
60
61         };
…
152         regulators {
153                 compatible = "simple-bus";
154                 #address-cells = <1>;
155                 #size-cells = <0>;
…
175                 vcc3v3: regulator@2 {
176                         compatible = "regulator-fixed";
177                         reg = <2>;
178                         regulator-name = "vcc3v3";
179                         regulator-min-microvolt = <3300000>;
180                         regulator-max-microvolt = <3300000>;
181                 };
…
336 &iomuxc {
337         pinctrl-names = "default";
338         pinctrl-0 = <&pinctrl_hog>;
…
445         hog {
446                 pinctrl_hog: hoggrp-1 {
447                         fsl,pins = <
…
451                                 MX6QDL_PAD_GPIO_19__GPIO4_IO05 0x80000000 /* LCD.BLT_EN */
…
486                         >;
487                 };
488         };
…
637 };

530         pwm1 {
531                 pinctrl_pwm1_mba6x: pwm1grp-mba6x-1 {
532                         fsl,pins = <
533                                 /* 100 k PD, DSE 120 OHM, SPPEED LO */
534                                 MX6QDL_PAD_GPIO_9__PWM1_OUT 0x00003050
535                         >;
536                 };
537         };
…
732 &pwm1 {
733         status = "okay";
734         pinctrl-names = "default";
735         pinctrl-0 = <&pinctrl_pwm1_mba6x>;
736 };
…

TQMa6x serial downloader

You have to set the Starterkit to boot-mode “serial downloader”, please see MBa6x DIP switch settings

We recommend to use Ubuntu 14.04 64bit for the imx-usb tool

Starting with TQMa6x-BSP-REV.0109 we deliver a Linux tool to upload U-Boot into the TQMa6X RAM from your development host and start it. After building the BSP the tool is located under
…/TQMa6x-BSP-REV.0109/platform-MBa6x/packages/h-imx_usb_loader-master

You have to apply the following steps before you can start to work with the tool:

Usage of serial downloader tool

  1. Set Starterkit to boot-mode “serial downloader”, please see MBa6x DIP switch settings
  2. Connect Starterkit connector X8 (Micro USB cable provided with the Starterkit) to your host
  3. Connect Starterkit connector X15 (RS232) to your host
  4. Power up Starterkit
  5. Please check that Linux recognized a new USB device, see output of command dmesg | grep -i usb. You should see something like the following :
    usb 1-1: Manufacturer: Freescale SemiConductor Inc 
    hid-generic 0003:15A2:0054.0002: hiddev0,hidraw1: USB HID v1.10 Device [Freescale SemiConductor Inc  SE Blank ARIK] on usb-0000:02:03.0-1/input0
  6. Open a serial terminal on your host e.g. TeraTerm
  7. Open a Linux terminal and naviagate to folder “images” in the BSP dirctory
    e.g. /home/embedded/TQMa6x-BSP-REV.0109/platform-MBa6x/images
  8. Start the serial downloader imx_usb as super user with the desired U-Boot as parameter

    Keep in mind to select a U-Boot that is corresponding to your module, please see deployment

    e.g.

    embedded@ubuntu:~/workspace/TQMa6x-BSP-REV.0109/platform-MBa6x/images$ sudo imx_usb u-boot-TQMa6Q_MBa6x.imx

    host console output after starting the serial downloader

    config file </etc/imx-loader.d/imx_usb.conf>
    vid=0x066f pid=0x3780 file_name=mx23_usb_work.conf
    vid=0x15a2 pid=0x004f file_name=mx28_usb_work.conf
    vid=0x15a2 pid=0x0052 file_name=mx50_usb_work.conf
    vid=0x15a2 pid=0x0054 file_name=mx6_usb_work.conf
    vid=0x15a2 pid=0x0061 file_name=mx6_usb_work.conf
    vid=0x15a2 pid=0x0063 file_name=mx6_usb_work.conf
    vid=0x15a2 pid=0x0041 file_name=mx51_usb_work.conf
    vid=0x15a2 pid=0x004e file_name=mx53_usb_work.conf
    vid=0x15a2 pid=0x006a file_name=vybrid_usb_work.conf
    vid=0x066f pid=0x37ff file_name=linux_gadget.conf
    config file </etc/imx-loader.d/mx6_usb_work.conf>
    parse /etc/imx-loader.d/mx6_usb_work.conf
    15a2:0054(mx6_qsb) bConfigurationValue =1
    Interface 0 claimed
    HAB security state: development mode (0x56787856)
    == work item
    filename u-boot-TQMa6Q_MBa6x.imx
    load_size 0 bytes
    load_addr 0x00000000
    dcd 1
    clear_dcd 0
    plug 1
    jump_mode 2
    jump_addr 0x00000000
    == end work item
    main dcd length 308
    sub dcd length 304
    
    loading binary file(u-boot-TQMa6Q_MBa6x.imx) to 4fbff400, skip=0, fsize=5cc00 type=aa
    
    <<<379904, 379904 bytes>>>
    succeeded (status 0x88888888)
    jumping to 0x4fbff400
  9. Now you can see the U-Boot messages in the serial terminal programm

Next steps are: