Third-Party Add-Ons

TQMa335x / MBa335x

I2C bus TQMa335x
I2C0 0x12
RTC (optional DS1339)
I2C bus MBa335x
I2C0 0x18
Audio Codec


Supported Features
Component Status Remarks
CPU + Cortex®-A8
Ethernet + 1 x CPSW (100 MBit working, GiGE with hardware modification
(fixed with MBa335x Rev. ≥103))
eSDHC + eMMC / SD Card
eMMC / SD boot +
TFTP boot +
SPI NOR boot -
USB Host + tested with USB Mass Storage Device (USB-Stick)
Key: + tested | - untested | ? open


Supported Features
Component Device Interface Function Pre-release Rev 0100 Rev 0101 Rev 0102 REV 0115 REV 0117 REV 0119 Remarks
TQMa335x AM335x UART0 RS485
AM335x UART1 Multiplexed
AM335x UART2 Multiplexed
AM335x UART3 TTL Not enabled by default
AM335x UART4 RS232
AM335x UART5 Multiplexed
AM335x USB0 USB HOST USB2517 Switch on mba335x
AM335x USB1 USB OTG USB Device
AM335x DCAN0 CAN 2.0B
AM335x DCAN1 CAN 2.0B
AM335x SGX PowerVR Graphics Framebuffer driver
No hardware acceleration
Temp. Sensor
AM335x I2C1 Bus Access
AM335x I2C2 Multiplexed
AM335x MCASP Audio line-out tested
line-in working with BSP ≥ Rev.0115
AM335x SPI0 SPI NOR Flash
AM335x SPI1
AM335x SPI2 Multiplexed
AM335x SPI3 Multiplexed
AM335x CPSW_3G RGMII FEC 1 Only 100Base-T works,
1000Base-T with hardware modification
(fixed with MBa335x ≥ Rev.103)
AM335x CPSW_3G RGMII FEC 2 Only 100Base-T works,
1000Base-T with hardware modification
(fixed with MBa335x ≥ Rev.103)
AM335x PRU-ICSS on request on request on request on request on request on request on request Muxed with LCD
On Request
AM335x TSC_ADC Touch BSP REV.0119
AM335x LCD Timing for ET0700G0DH8
AM335x MMC0 SD card interface Writing on SD-Card only with hardware modification
(fixed with MBa335x Rev. =103)
AM335x MMC1 EMMC TQMa335x Rev. =0203 have eMMC 5.0 devices assembled which are supported with BSP ≥ Rev.0115
A patch Linux BSP TQMa335x Rev.0102 - Fix eMMC 5.0 detection is available for BSP REV.0102
mba335x USB2517 USB1 USB 2.0
USB2517 USB2 USB 2.0
USB2517 USB3 USB 2.0
USB2517 USB4 USB 2.0 Not tested
USB2517 USB5 LVDS-CMD Not tested
USB2517 USB6 USB 2.0 Not tested
USB2517 USB7 Mini PCIe Not tested

BSP Version Matrix

BSP revision 0100 0101 0102 0115 0117 0119
PTXdist 2012.07 2013.12 2013.12 2013.12 2016.04 2016.04
OSELAS Toolchain 2011.11.0 2013.12.0 2013.12.1 2014.12.2 2014.12.2 2014.12.2
Platform mba335x mba335x mba335x mba335x mba335x mba335x
U-Boot 2013.07 2013.07 2013.07 2013.07 2013.07 2013.07
Linux Kernel 3.2 3.12.10 3.12.10 3.14.19 4.4.39 4.4.39
Qt Version 4.8.2 4.8.5 4.8.5 4.8.5 4.8.7 4.8.7

BSP Version History

2018/12/12 -REV 0119


  • rootfs as ext4
  • Support for TQMa335x variant AB

U-Boot v2013.07 - TQMa335x/L

  • Support for TQMa335x variant AB

Linux v3.14.19 - TQMa335x/L

  • Optimized kernel config
  • enabled DRM and CPU_IDLE

Linux v3.14.19 (ti2014.10) - TQMa335x:

  • Optimized kernel config
  • enabled DRM and CPU_IDLE

Linux v3.14.19-rt16 - TQMa335x

  • Optimized kernel config
  • enabled DRM and CPU_IDLE

Linux v4.4.39 - TQMa335x:

  • Optimized kernel config
  • enabled DRM and CPU_IDLE

2017/07/07 -REV 0117

U-Boot v2013.07 - TQMa335x/L

  • tqma335x: add module identification eeprom support
  • ksz9031: center flp timing
  • am33xx: Always inhibit init/refresh during DDR phy init
  • am33xx,ddr3: fix ddr3 sdram configuration
  • ARM: am437x: Enable hardware leveling for EMIF
  • ARM: AM43xx: EPOS_EVM: Add support for LPDDR2
  • ARM: AM33xx+: Update ioregs to pass different values
  • am33xx: Stop modifying certain EMIF4D registers
  • tqma335x: adapt loadaddr and fdtaddr locations
  • tqma335x: new DDR3 timing, CLKINVERT=1
  • MMC: add MMC_VERSION_5_0

Linux v3.14.19 - TQMa335x/L

  • mba335x: dt: adapt to etm0700g0bdh6 timing

Linux v3.14.19 (ti2014.10) - TQMa335x:

  • <none>

Linux v3.14.19-rt16 - TQMa335x

  • <new>

Linux v4.4.39 - TQMa335x:

  • <new>

2016/04/18 - REV 0115

  • Integration to ARM BSP (see also TQMa28 BSP changes)
  • Add support TQMa335xL (same as TQMa335x, except RAM timing)
  • TQMa335xL: no U-Boot build for SPI (no flash present)
  • Kernel Update 3.14.19 and ti2014.10.00

Build tools

  • OSELAS.Toolchain-2014.12.2


  • MMC dsr support
  • Support for multiple Ethernet PHYs
  • Fixed reset freeze
  • Show kernellog on tty0
  • Show correct capacity for e-MMC SLC mode
  • Add MAC address for second Ethernet interface

Linux kernel

  • Support for MBa335x interfaces
  • Median filter for analog touch coordinates
  • Add sound support
  • Fix RTC support in PMIC
  • Fixed parallel display on mainline kernel
  • Support new standard display revision
  • Support new touch version on display kit (still buggy)

2014/09/22 - REV 0102


  • upgrade gdb version to 7.7.1

Linux 3.12.10

  • MMC: add support for SET_DSR command
  • MMC: mmc-esdhci-imx: add DSR device tree support
  • drivers: net: phy: micrel: errata for KSZ9031
  • tqma335x: dt: usb1 as peripheral
  • am33xx: trigger cold reset to fix samsung ddr3 freeze

U-boot 2013.07

  • mmc: add setdsr suppport
  • tqma335x: set dsr setting and populate to dt
  • tqma335x: register both phys
  • tqma335x: trigger cold reset to fix samsung ddr3 freeze

we suggest to read the following pages before you proceed with this page

The BSP was developed for the starterkit . To use it in a product with special needs or a different basebord we suggest to define an own platform. To start with it make a copy of the platform definition and select the new platform definition

$ cd <BSPROOT>
$ cp -r <BSPROOT>/configs/platform-tq-<label mb_name_code>MB_NAME_CODE</label> to <BSPROOT>/configs/<your-cool-platform>
$ ptxdist platform <BSPROOT>/configs/<your-cool-platform>/platformconfig

To start configuring your new platform type

$ ptxdist platformconfig

The first thing to change should be the platform name. Adapt things like kernel configuration, image creation etc. to your needs.

The new system will be built under <BSPROOT>/platform-<platformname_from_platformconfig>

Please read the build system documentation howto go further. Keep in mind that custom mainboards may need changes in bootloader and device tree. Give the new bootloader config and device tree a new name to cleanly distinguish them from the starterkit mainboard configuration.

If creating BSP for a new motherboard, make sure to create new configurations for bootloaders and device tree.

Changing packages

PTXdist uses release tar balls for software it loads from the net. You have to work with patches, if you need to make changes to the source code. Follow the instructions of the developers section in the PTXdist manual.

Changes that are made in the build directories will be deleted, when PTXdist needs to redo a buildstep.

Adding own packages

PTXdist needs a package for every bit you need in your root FS to guarantee reproducible builds. To add your software, files etc. you have to provide local packages. Follow the instructions of the developers section in the PTXdist manual. PTXdist provides templates as starting point for own packages. Type

$ ptxdist newpackage

to see what package templates exist.

Updating the firmware

In this context, firmware refers to a complete system image (see above), including U-Boot, Linux Kernel and Root Filesystem.

For convenience, the default U-Boot environment provides several variables, which can be used to transfer (parts of) the firmware between different storage locations (e.g. SD card, eMMC, NFS, …). The names of these variables adhere to the syntax


with the following options

<PART>   = firmware | uboot | kernel | rootfs
<TARGET> = emmc | sd | spi
<SOURCE> = emmc | sd | net

The size of the firmware is stored in mmcfirmwareblksize, please set accordingly if your firmware exceeds the default size of 0x32000.
Formula to calulate the mmcfirmwareblksize
Size of sd.hdimg in bytes / 512 = convert the result into a hex value

For example, to copy the whole firmware from SD card to eMMC execute

U-Boot# run upd_firmware_emmc_sd

For further details, please have a look at the contents of the respective environment variable, e.g.

U-Boot# printenv upd_firmware_emmc_sd

upd_firmware_emmc_sd=mmc dev ${sddev} && mmc rescan && mmc read ${loadaddr} 0 ${mmcfirmwareblksize} && mmc dev ${emmcdev} && mmc rescan && mmc write ${loadaddr} 0 ${mmcfirmwareblksize}

Select one of the supported hardware platforms, select a software configuration and start building the image.

The available hardware platforms for TQMa335x are:

  • configs/platforms/tqma335x/mba335x/platformconfig

Currently the following software configurations are available:

  • /configs/systems/qt
  • /configs/systems/minimal

Building the BSP:

BSP Rev.0115 (and earlier)

$ ptxdist platform configs/platforms/tqma335x/mba335x/platformconfig 
$ ptxdist select configs/systems/minimal/ptxconfig
# we have to use git for the patching because of a binary-patch
$ ptxdist go --git
$ ptxdist images

BSP Rev.0117

$ tools/config-tqma335x.qt4 

this will effectivly:

  • check for configured ptxdist version
  • create symlink to configured ptxdist version (./p/usr/local/bin/ptxdist-<version>)
  • call ./p platform configs/platforms/tqma335x/mba335x/platformconfig
  • call ./p select configs/systems/qt/ptxconfig
  • call ./p select configs/platforms/tqma335x/ptxcollection.tqma335x

Finally you can build the BSP by executing

$ ./p images --git

Finally, you will find the built images in platform-MBa335x/images.

Complete system images:

  • sd.hdimg : is a bootable image primarily for SD Card, but works for eMMC, too.
  • boot-mlo.vfat : fat filesystem with MLO, u-boot and linux-kernel
  • root.ext2 : ext2 rootfs

Bootloader images:

  • u-boot.bin
  • u-boot.img : u-boot image for SD Card/eMMC
  • u-boot_spi.bin
  • u-boot_spi.img : u-boot image for SPI NOR Flash
  • MLO : (second program loader SPL) for SD Card/eMMC
  • MLO_spi.byteswap

Linux images:

  • linuximage : Kernel (uImage)
  • am335x-mba335x.dtb : device tree blob for TQMa335x on MBa335x

Rootfs images:

  • root.ext2
  • root.tgz
  • root.jffs2

TQ Board Support Packages

The Board Support Packages (BSPs) usually provide source code as well as precompiled images for one or more platforms. Please see the version matrix for details on each revision of the BSP.

Linux BSP Rev.0119 for TQMaXX☚ current revision
MD5SUM: B26ACB00737A50D8E4222826E409AD4D

Linux BSP Rev.0117 for TQMaXX
MD5SUM: B26ACB00737A50D8E4222826E409AD4D

Linux BSP Rev.0115 for TQMaXX

Linux BSP REV.0102 for TQMa335x
MD5SUM: 583083338CCA0EBA2589CDAB89C80FB0

Linux BSP REV.0101 for TQMa335x
MD5SUM: EF3272FC79D14739F2765CCC7A7D9551

Linux BSP Rev.0100 for TQMa335x
MD5SUM: 2DD44DA435F21577EDCC231BC5812533

Linux Source BSP for TQMa335x Pre-release
MD5SUM: 1FD569CB04D55A95C56BDFB4A3AE579A

Binary Linux Images for TQMa335x Pre-release
MD5SUM: 8B272FF68240CA9317F251C0AE7B051C

Build System / Toolchains


Writing on SD Card
Affects writing on SD Card doesn't work for now
Solution / Workaround Fixed with MBa335x Rev. ≥103


Ethernet Speeds
Affects Only 100Base-T works
Solution / Workaround Fixed with MBa335x Rev. ≥103


Build BSP

Adapt BSP

Partition scheme
SD / eMMC images