Overview
BSP Version Information
BSP Version Matrix
| BSP revision | 0100 | 0101 | 0104 | 0105 | 0109 |
|---|---|---|---|---|---|
| PTXdist | 2013.03 | 2013.12 | 2013.12 | 2014.11 | 2015.05 |
| OSELAS Toolchain | 2012.12.1 | 2013.12.1 | 2013.12.2 | 2013.12.2 | 2013.12.2 |
| Platform | MBa6x | MBa6x | MBa6x | MBa6x | MBa6x |
| U-Boot | 2013.04 | 2013.04 | 2013.04 | 2013.04 | 2015.04 |
| Linux Kernel | 3.10 | 3.13 | 3.16-rc5 | 3.16.7 | 4.1 |
| Qt Version | 4.8.4 | 4.8.5 | 4.8.6 | 5.3.2 | 5.3.2 |
Flat Devicetree
With BSP Revision 0109 the Linux kernel version changed from 3.16.7 to 4.1 The devicetree source & blob files for kernel 3.16.7 are not compatible to kernel 4.1 and vice versa.
Bootloader
Supported features
| Feature | BSP Revision | Remarks | ||||||
|---|---|---|---|---|---|---|---|---|
| TQ Product | Chip | Interface | Function | 0105 | 0109 | |||
| TQMa6x | i.MX6 | Ethernet | RGMII (10/100/1000 Mbit/s) | ✔ | ✔ | |||
| TQMa6x | i.MX6 | uSDHC | eMMC / SD-Card | ✔ | ✔ | SD card / eMMC | ||
| TQMa6x | i.MX6 | UART2 | RS232 | ✔ | ✔ | default console | ||
| TQMa6x | i.MX6 | USB | Host | ✔ | ||||
| TQMa6x | i.MX6 | I²C | EEPROM, Temperature Sensors | ✔ | ✔ | |||
| TQMa6x | i.MX6 | GPIO | custom config on request | |||||
| TQMa6x | i.MX6 | SPI | SPI NOR Flash | ✔ | ✔ | |||
| TQMa6x | i.MX6 | IIM / Fuse | on request | |||||
| TQMa6x | i.MX6 | Devicetree FIT image | ✔ | see How To | ||||
Supported boot devices
| Boot device | supported |
|---|---|
| eMMC / SD boot | ✔ |
| TFTP boot | ✔ |
| SPI NOR boot | ✔ |
Operating System
Supported Features
| Feature | BSP Revision | Remarks | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| TQ Product | Chip | Interface | Function | Pre-Release | 0100 | 0101 | 0104 | 0105 | 0109 | |
| TQMa6x | i.MX6 | AUD3 | TLV320AIC3204 | ✔ | ✔ | ✔ | ✔ | AudioCodec | ||
| i.MX6 | EIM | Bus access | ✔ | ✔ | driver support / no device on MBa6x | |||||
| i.MX6 | ENET | RGMII (10/100/1000 Mbit/s) | ✔ | ✔ | ✔ | ✔ | ✔ | MBa6x Rev. ≥ 0102 required | ||
| i.MX6 | FLEXCAN1 | CAN 2.0B | ✔ | ✔ | ✔ | ✔ | ✔ | BSP Rev. ≤ 0100: bitrate is not set as correctly |
||
| i.MX6 | FLEXCAN2 | CAN 2.0B | ✔ | ✔ | ✔ | ✔ | ✔ | |||
| i.MX6 | GPIO | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | BSP Rev. ≥ 0104: available via sysfs | ||
| i.MX6 | GPIO1_IO21 | Buzzer | ✔ | ✔ | ✔ | ✔ | ✔ | BSP Rev. ≤ 0101 BSP Rev. ≥ 0104 |
||
| i.MX6 | GPU2D | Hardware Acceleration | ○ | ✔ | ✔ | BSP Rev. ≥ 0105 or kernel 3.10.17-fsl required tested resolution 1366×768 For using GPU see How To |
||||
| i.MX6 | GPU3D | Hardware Acceleration | ○ | ✔ | ✔ | BSP Rev. ≥ 0105 or kernel 3.10.17-fsl required tested resolution 1366×768 For using GPU see How To |
||||
| i.MX6 | HDMI | HDMI | ✔ | ✔ | ✔ | ✔ | known limitations For Freescale kernel see How To |
|||
| i.MX6 | I2C1 | I2C devices | ✔ | ✔ | ✔ | ✔ | see supported onboard I2C devices | |||
| i.MX6 | I2C3 | I2C devices | ✔ | ✔ | ✔ | ✔ | see supported onboard I2C devices | |||
| i.MX6 | IPU1 | Parallel LCD | ✔ | ✔ | ✔ | displays supported | ||||
| i.MX6 | JTAG | |||||||||
| i.MX6 | LDB | LVDS | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | displays supported | |
| i.MX6 | PCIe | Device Discovery | ✔ | ✔ | ✔ | BSP Rev. 0104 TQMa6D/Q support | ||||
| i.MX6 | PWM1 | Backlight Dimming | ✔ | ✔ | ✔ | MBa6x Rev. ≥ 0200 required | ||||
| i.MX6 | SATA | Serial ATA 3.0 | ✔ | ✔ | ✔ | ✔ | ✔ | TQMa6Q and TQMa6D only | ||
| i.MX6 | SPDIF | Digtal Audio | ✔ | ✔ | availabe at X30.10/12 on MBa6x | |||||
| i.MX6 | SPI1 | Bus access | ✔ | ✔ | ✔ | ✔ | ✔ | BSP Rev. ≥ 0104: SS2 configured for spidev, SS3 prepared for usage (pin-multiplexing) |
||
| i.MX6 | SPI1 | NOR flash | ✔ | ✔ | ✔ | ✔ | ✔ | /dev/mtd0 | ||
| i.MX6 | SPI5 | Bus access | ✔ | ✔ | ✔ | TQMa6Q only BSP Rev. ≥ 0104: SS1 configured for spidev |
||||
| i.MX6 | TEMPMON | ✔ | ✔ | ✔ | ✔ | |||||
| i.MX6 | UART1 | not available on MBa6x | ||||||||
| i.MX6 | UART2 | RS232 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | default console | |
| i.MX6 | UART3 | TTL | ✔ | ✔ | ✔ | ✔ | ✔ | |||
| i.MX6 | UART4 | RS485 | ✔ | ✔ | ✔ | ✔ | ✔ | |||
| i.MX6 | UART5 | TTL | ✔ | ✔ | ✔ | ✔ | ✔ | |||
| i.MX6 | USB_OTG | Host | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
| i.MX6 | USB_OTG | OTG | ✔ | ✔ | ✔ | ✔ | ||||
| i.MX6 | USB_UH1 | USB2517 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
| i.MX6 | USB_UH2 | not available on MBa6x | ||||||||
| i.MX6 | USB_UH3 | not available on MBa6x | ||||||||
| i.MX6 | uSDHC | SD(HC)-Card sd2 SD card sd3 eMMC | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | see issues for known limitations | |
| i.MX6 | VPU | Hardware Acceleration | ✔ | For using VPU see How To | ||||||
| MBa6x | TLV320AIC3204 | Audio Codec | Headphone Out / Line Out | ✔ | ✔ | ✔ | ✔ | selectable using solder straps on MBa6x | ||
| Line In | ✔ | ✔ | ✔ | ✔ | ||||||
| Microphone In | ||||||||||
| LAN9500 | ENET | 10/100 Mbit/s | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | BSP Rev. ≤ 0101 BSP Rev. ≥ 0104 |
|
| GPIO | GPIO Key | ✔ | ✔ | ✔ | ✔ | ✔ | as input device | |||
| LED | LED | LED | ✔ | ✔ | ✔ | MBa6x Rev. ≥ 0200 required | ||||
| USB2517 | USB1 | LAN9500 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | MBa6x Rev. ≥ 0102 required | |
| USB2517 | USB2 | Host | ✔ | ✔ | ✔ | ✔ | ✔ | |||
| USB2517 | USB3 | Host | ✔ | ✔ | ✔ | ✔ | ✔ | |||
| USB2517 | USB4 | Host | ✔ | ✔ | ✔ | ✔ | ✔ | |||
| USB2517 | USB5 | Host | ||||||||
| USB2517 | USB6 | Host | ✔ | ✔ | ✔ | ✔ | ✔ | |||
| USB2517 | USB7 | |||||||||
Onboard I2C devices
TQMa6x Rev.01xx / TQMa6x Rev.02xx Variant B
| I2C bus | TQMa6x | MBa6x | ||||
|---|---|---|---|---|---|---|
| I2C1 | 0x18 Audiocodec |
|||||
| I2C3 | 0x08 PMIC | 0x48 LM75 | 0x50 EEPROM | 0x49 LM75 | 0x57 EEPROM | 0x68 RTC |
TQMa6x Rev.02xx Variant A & C
| I2C bus | TQMa6x | MBa6x | |||||
|---|---|---|---|---|---|---|---|
| I2C1 | 0x08 PMIC | 0x48 LM75 | 0x50 EEPROM | 0x18 Audiocodec | 0x49 LM75 | 0x57 EEPROM | 0x68 RTC |
| I2C3 | not available due to ethernet patch | ||||||
| i.MX6 | AUD3 | I2S | t.b.d | |||
| i.MX6 | I2S | AudioCodec | t.b.d |
Adapting BSP
Partition scheme
Changing the partition scheme may affect the boot loader update capability and / or the kernel command line parameters!
SD / eMMC images
- sector size 512 Byte
- unpartitioned area: 4MiB (0x2000 sectors)
| Sector | Size | Usage |
|---|---|---|
| 0x0000 … 0x0000 | 0x0001 sector / 512 Byte | MBR / Partition Table |
| 0x0001 … 0x0001 | 0x0001 sector / 512 Byte | reserved for ROM loader 1) |
| 0x0002 … 0x07ff | 0x07fe sectors / 1023 KiB | u-boot |
| 0x0800 … 0x0fff | 0x0800 sectors / 1MiB | environment 2) |
| 0x1000 … 0x17ff | 0x0800 sectors / 1MiB | device tree blob |
1) See CPU reference Manual. This sector can be used for Redundant Boot Support 2) Environment organisation:
- configured environment size: 8kiB (16 Sectors)
- environment type: redundand
- primary environment (sectors): 0x0800 … 0x080f (0x100000 … 0x101fff)
- redundand environment (sectors): 0x0810 … 0x081f (0x102000 … 0x103fff)
- partitioned area:
| Partition | Size | Usage |
|---|---|---|
| 1 | 4 MiB | Kernel image |
| 2 | 256 MiB | root FS |
| 3 | 256 MiB | Spare, not formatted |
| 4 | —- | —- |
The partition scheme is defined using the config file <BSP_ROOT>config/platform-tq-mba6x/config/images/uboot-hd.config. The creation of the image is controlled using the PTXdist packages image-uboot-tqma6<q|s>-hd.make, these packages are located at <BSP_ROOT>/configs/platform-tq-mba6x/rules/.
To create the image the genimage host tool is used. This tool is automatically selected and built. You can find the build directory under <BSP_ROOT>/platform-MBa6x/build-host/genimage. There is also a README file documenting how to use this tool.
SPI NOR
- sector size 64 KiB
| Sector | Size | Usage |
|---|---|---|
| 0x0000 … 0x0007 | 0x0008 sectors / 512 KiB | U-Boot *) |
| 0x0008 … 0x0008 | 0x0001 sector / 64 KiB | environment0 |
| 0x0009 … 0x0009 | 0x0001 sector / 64 KiB | environment1 |
| 0x000a … 0x000a | 0x0001 sector / 64 KiB | environment1 |
| 0x000b … 0x000f | 0x0005 sectors / 320 KiB | devicetree |
| 0x0010 … 0x0070 | 0x0060 sectors / 6 MiB | Kernel |
Deployment
PTXdist images
Complete system images:
- uboot_tqma6s_hd.img : bootable image for TQMa6S on MBa6x (usage on SD Card and eMMC)
- uboot_tqma6dl_hd.img : bootable image for TQMa6U on MBa6x (usage on SD Card and eMMC)
- uboot_tqma6q_hd.img : bootable image for TQMa6Q and TQMa6D on MBa6x (usage on SD Card and eMMC)
The complete system images are intended for:
- development system initialisation
- deployment
Bootloader images:
Not to be confused with the u-boot*.bin images, these are just intermediate images and will not be booted by the i.MX6.
- u-boot-TQMa6S_MBa6x.imx : u-boot bootloader for TQMa6S on MBa6x (usage on SD Card and eMMC)
- u-boot-TQMa6S_MBa6x_SPI.imx : u-boot bootloader for TQMa6S on MBa6x (usage on SPI NOR Flash)
- u-boot-TQMa6DL_MBa6x.imx : u-boot bootloader for TQMa6U on MBa6x (usage on SD Card and eMMC)
- u-boot-TQMa6DL_MBa6x_SPI.imx : u-boot bootloader for TQMa6U on MBa6x (usage on SPI NOR Flash)
- u-boot-TQMa6Q_MBa6x.imx : u-boot bootloader for TQMa6Q and TQMa6D on MBa6x (usage on SD Card and eMMC)
- u-boot-TQMa6Q_MBa6x_SPI.imx : u-boot bootloader for TQMa6Q and TQMa6D on MBa6x (usage on SPI NOR Flash)
Linux images:
- linuximage : Kernel (zImage)
- imx6dl-mba6x.dtb : device tree blob for TQMa6S and TQMa6U on MBa6x
- imx6q-mba6x.dtb : device tree blob for TQMa6Q and TQMa6D on MBa6x
Rootfs images:
- root.tgz : Root file system archive (for NFS etc.)
- root.ext2 : Root file system partition image (for system update)
device assignment
Device assignment:
mmcdev 0 = eMMC
mmcdev 1 = SD Card
update commands uboot
- U-Boot update: ⇒ run update_uboot
- Device Tree update: ⇒ run update_fdt
- Kernel update: ⇒ run update_kernel
serial downloader
The Starterkit has to be set 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:
- Copy the content of folder …/TQMa6x-BSP-REV.0109/platform-MBa6x/packages/host-imx_usb_loader-master/usr/etc/ to /etc
- Copy the content of folder …/TQMa6x-BSP-REV.0109/platform-MBa6x/packages/host-imx_usb_loader-master/usr/bin/ to /bin
Usage of serial downloader tool
- Set Starterkit to boot-mode “serial downloader”, please see MBa6x DIP switch settings
- Connect Starterkit connector X8 (Micro USB cable provided with the Starterkit) to your host
- Connect Starterkit connector X15 (RS232) to your host
- Power up Starterkit
- 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
- Open a serial terminal on your host e.g. TeraTerm
- Open a Linux terminal and naviagate to folder “images” in the BSP dirctory
e.g. /home/embedded/TQMa6x-BSP-REV.0109/platform-MBa6x/images
- 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
- Now you can see the U-Boot messages in the serial terminal programm
Next steps are:
- write U-Boot using tftp to eMMC, see Updating existing firmware over ethernet
- write kernel image using tftp to eMMC, see Updating existing firmware over ethernet