Embedded module TQMa6x - PTXdist Linux BSP documentation



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.

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

Updating existing firmware over ethernet

In order to update existing firmware please have a look at our deployment section.

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 default 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
  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

For using the fit image you simply need to modify the u-boot environment variable fitfdt_part.



Preface




Please see our tutorial section how to use the interfaces provided on the Starterkit .



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



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



The following applies to BSP Rev. ≥ 0105

During kernel boot the GPU requests 128 MiB of linear address space, which is why the CMA pool has to be increased for proper GPU support.

Simply set the cma_size U-Boot variable as follows:

setenv cma_size 160M
saveenv
root@MBa6x:cd /path/to /your/bsproot/\\
root@MBa6x:/path/to/your/bsproot ptxdist platformconfig\\

Enter architecture and select install gpu examples and demos. The demos will be installed under /opt/viv_samples

Running Vivante GPU examples

root@MBa6x:cd opt/viv_samples 
root@MBa6x:/opt/viv_samples ./es20/vv_launcher/vv_launcher 
root@MBa6x:cd /path/to /your/bsproot/
root@MBa6x:/path/to/your/bsproot ptxdist platformconfig

Enter architecture and select install gpu SDK examples. The examples will be installed under /opt/gpu_sdk_v1.00

please keep in mind to increase the cma_size to use the Qt demos

root@MBa6x:cd /path/to /your/bsproot/
root@MBa6x:/path/to/your/bsproot ptxdist menuconfig

Enter Graphics and Multimedia in the following menu enter qt, select install Qt5 examples. The examples will be installed under /usr/bin/qt5-examples

Running Qt5 examples

root@Mba6x:mount -o remount,rw /
root@MBa6x:cd /usr/bin/qt5-examples/quick/demos/clocks
root@MBa6x:/usr/bin/qt5-examples/quick/demos/clocks/chmod a+x clocks
root@MBa6x:/usr/bin/qt5-examples/quick/demos/clocks/./clocks 

Please note that depending on configuration installing all options can exceed the configured size of the root file system.
Some GPU demos are not working with HDMI and FullHD

To do basic tests for Multitouch functionality please use commandline applications evtest or mtdev-test



Since BSP Revision 0109 the VPU of i.MX6 is supported.
For testing the VPU we have included a small sample video file in the BSP rootfilesystem:
/usr/share/media/video/TQ-in-20-Sekunden-720P_Rev002.mp4

To avoid allocation errors please increase the value of the variable cma_size in u-boot to 256M.

To play the videofile on the starterkit with gstreamer you need to set up a gstreamer pipeline. For example:

root@MBa6x:~ gst-launch-1.0 filesrc location=/usr/share/media/video/TQ-in-20-Sekunden-720P_Rev002.mp4 ! qtdemux ! h264parse ! v4l2video1dec ! v4l2video2convert ! fbdevsink

The gstreamer components may differ from those shown in this example, to get a list of the available gstreamer components please run gst-inspect-1.0.



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.

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

  • imx6dl-mba6x-hdmi.dtb : devicetree with HDMI settings for TQMa6S and TQMa6L
  • imx6q-mba6x-hdmi.dtb : devicetree with HDMI settings for TQMa6D and TQMa6Q

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

U-Boot envenvironment must be reconfigured to enable HDMI on Freescale kernel

setenv addfb 'setenv bootargs ${bootargs} consoleblank=0 video=mxcfb0:dev=hdmi,1280x720M@60,if=RGB24 fbmem=32M'

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.

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

  • enable the LDB and the LBD port(s) in arch/arm/boot/dts/imx6qdl-mba6x.dtsi
  • configure video timing for your display

Timing examples:

Sharp lq085y3lg13

AUO auo-g156-xw01

CHIMEI g104-x1

CHIMEI g070y2-l01

With BSP REV.0110 the kmsfb wrapper was introduced for the compability between linux mainline kernel and the Vivante GPU driver. The kmsfb wrapper emulates a framebuffer device from the kernel mode settings and requires a proper configuration file /etc/kmsfb-manage.conf.

To show the current drm information please execute kmsfb-manage -s in the linux shell. Please see the example output below after executing kmsfb-manage -s on a Starterkit with HDMI display connected:

root@MBa6x:/usr/lib/qt5/examples/webview/minibrowser kmsfb-manage -s
------------------------ Current Layout ------------------------
CRTCs:
        id: 18
                fb id: 0
                x: 0
                y: 0
        id: 22
                fb id: 0
                x: 0
                y: 0
Connectors:
        id 25
                current encoder: 24
                type: HDMI-A
                        mode0: 1680x1050@60
                        mode1: 1280x1024@75
                        mode2: 1280x1024@60
                        mode3: 1152x864@75
                        mode4: 1024x768@75
                        mode5: 1024x768@60
                        mode6: 800x600@75
                        mode7: 800x600@60
                        mode8: 800x600@56
                        mode9: 848x480@60
                        mode10: 640x480@75
                        mode11: 640x480@60
                        mode12: 640x480@60
                        mode13: 720x400@70
                Property: EDID
                        id           : 1
                        flags        : 20
                        count_values : 0
                        count_enums  : 0
blob is 128 length, FFFFFF00
                Property: DPMS
                        id           : 2
                        flags        : 8
                        count_values : 4
                        values       : 0 1 2 3
                        count_enums  : 4
                                0 = On
                                1 = Standby
                                2 = Suspend
                                3 = Off
                        con_value    : On
Encoders: 1
        id: 24
                crtc id: 0
                possible crtcs: 0x00000003
                possible clones: 0x00000000
Framebuffers: 0
Planes: 1
        id: 20

The following values are required to create the kmsfb configuration file:

  • mode0: 1680x1050@60
  • Connectors: id 25
  • current encoder: 24
  • crtc id: 0

After determining the appropriate values the file /etc/kmsfb-manage.conf can be edited. Please see the example configuration for a HDMI display below:

-f bpp=32,xres=1680,yres=1050,fill=1,3d=1,vsync=0 -w fbid=0,connector=25,encoder=24,crtc=0

After editing the kmsfb-manage.conf file please reboot the Starterkit to activate the display configuration.



To compile the kernel/bootloader outside of the BSP, please have a look at the corresponding tutorial.


1) Set environment variable usbethaddr No longer necessary for BSP Rev. ≥0109

 setenv usbethaddr <MAC address> 

2) Start to detect USB device

 usb start 

3) To use Ethernet device “sms0” 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



The following documents are required to fully comprehend the following contents:

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.

Required properties

Optional properties

  • Example code for Linux 3.14
  • Customized pinmuxing
  • Customized timing
  • For Linux 3.16 fsl,weim-cs-gpr = <&gpr>; must be added
  • Line 15 <mainboard-name> must be customized
  • Line 18 Mainboard xyz must be customized
  • Line 19 mainboard must be costumized

Device tree example

Example Code for TQMa6S

To supply the TQMa6x RTC from CR2032 on MBa6x, please set a jumper bridge between X31_3 and X31_2.


In order to use serial downloader please have a look at our deployment section.

  • Currently (Oct. 2015) the latest i.MX6 silicon revision is 1.3. Why do both U-Boot and Linux kernel report silicon revision 1.5?|

    The value reported by U-Boot and the Linux kernel is actually the ROM revision. According to the Freescale document EB803 (table 1) the ROM revision may not match the silicon revision.




  • ts_calibrate shows the following error “tslib: Selected device is not a touchscreen (must support ABS and KEY event types)“ with parallel Display ETM0700G0DH6.

    To fix this yo have to export the TSLIB_TSDEVICE:
    export TSLIB_TSDEVICE=/dev/input/event2
  • Last modified: 2022/08/04 15:02