Embedded module TQMa6x - PTXdist Linux BSP documentation
Preface
This page refers to the BSP and ancillary tools listed in the following table:
BSP Revision | 0120 |
---|---|
PTXdist | 2020.01.0 |
OSELAS Toolchain | 2019.09.1 |
Platform | mba6x |
U-Boot | 2017.11 |
Linux Kernel | 5.15.27 |
BSP Version Matrix
BSP Revision | PTXdist | OSELAS Toolchain | Platform | U-Boot | Linux Kernel | Qt Version |
---|---|---|---|---|---|---|
0100 | 2013.03 | 2012.12.1 | MBa6x | 2013.04 | 3.10 | 4.8.4 |
0101 | 2013.12 | 2013.12.1 | MBa6x | 2013.04 | 3.13 | 4.8.5 |
0104 | 2013.12 | 2013.12.2 | MBa6x | 2013.04 | 3.16-rc5 | 4.8.6 |
0105 | 2014.11 | 2013.12.2 | MBa6x | 2013.04 | 3.16.7 | 5.3.2 |
0109 | 2015.05 | 2013.12.2 | MBa6x | 2015.04 | 4.1 | 5.3.2 |
0110 | 2016.04 | 2014.12.2 | TQMa6x TQMa6x-FSL | 2015.04 NXP rel_imx_4.1.15_2.0.0_ga | 4.1 NXP rel_imx_4.1.15_2.0.0_ga | 5.6.2 |
0113 | 2018.05 | 2018.02.0 | TQMa6x | 2017.11 | 4.14.69 | 5.6.3 |
0114 | 2019.01 | 2018.02.0 | TQMa6x | 2017.11 | 4.14.78 | 5.6.3 |
0119 | 2020.01 | 2019.09.1 | TQMa6x | 2017.11 | 5.4.39 5.4.39-rt23 | 5.12.6 |
0120 | 2020.01 | 2019.09.1 | TQMa6x | 2017.11 | 5.15.27 5.15.27-rt35 | 5.12.6 |
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.
BSP Rev. ≤ 0105
Naming convention
Device Tree Blobs
Several device tree blobs (.dtb files) are built by default, the resulting files are named as follows:
imx6<q|dl>-mba6x-<hdmi|lvds|multi|pd>.dtb
When building an sd card image, the HDMI enabled device tree blob is used by default.
Module (CPU) type | |
---|---|
imx6q | TQMa6Q | TQMa6D |
imx6dl | TQMa6DL | TQMa6S |
Module revision | |
mba6x | TQMa6x Rev.02xx Variant B | TQMa6x Rev.01xx |
Display interface | |
hdmi | HDMI only |
lvds | LVDS only |
pd | parallel display only |
multi | HDMI + LVDS + parallel display |
Dependency matrix
File | Module | Starterkit Mainboard | i.MX6Q | i.MX6D | i.MX6DL | i.MX6S | Revision 010x | Revision 020x | Ethernet Patch |
---|---|---|---|---|---|---|---|---|---|
imx6qdl-tqma6x.dtsi | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |||
imx6q-tqma6x.dtsi | ✔ | ✔ | ✔ | ✔ | |||||
imx6dl-tqma6x.dtsi | ✔ | ✔ | ✔ | ✔ | |||||
imx6qdl-mba6x.dtsi | included | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
imx6q-mba6x.dts | included | ✔ | ✔ | ✔ | ✔ | ||||
imx6dl-mba6x.dts | included | ✔ | ✔ | ✔ | ✔ |
Dependency graph
<graphviz dot> digraph “FDT_dependencies” {
rankdir=BT node [shape=box style=filled]
{ /* level graph */ node[shape=none, width=0, height=0, label=“” style=invis]; edge[dir=none style=invis]; 1 → 2 → 3 → 4 → 5 → 6; }
subgraph FSL { node [fillcolor="#E66A08" fontcolor="#FFFFFF"] "imx6q.dtsi"; "imx6dl.dtsi"; "imx6qdl.dtsi"; }
subgraph TQM { node [fillcolor="#1D8EC6" fontcolor="#FFFFFF"] "imx6qdl-tqma6x.dtsi"; "imx6q-tqma6q.dtsi"; "imx6dl-tqma6s.dtsi"; }
subgraph MB { node [fillcolor="#8F8F8F" fontcolor="#FFFFFF"] "imx6qdl-mba6x.dtsi"; "imx6q-mba6x.dts" [shape=oval color="#FF0000"]; "imx6dl-mba6x.dts" [shape=oval color="#FF0000"]; }
{rank=same; 6; "imx6q.dtsi"; "imx6dl.dtsi"} {rank=same; 5; "imx6qdl-tqma6x.dtsi"} {rank=same; 4; "imx6q-tqma6q.dtsi"; "imx6dl-tqma6s.dtsi"} {rank=same; 3; "imx6qdl-mba6x.dtsi"} {rank=same; 2; "imx6q-mba6x.dts"; "imx6dl-mba6x.dts"} {rank=same; 1; "imx6q-mba6x-hdmi.dts"; "imx6dl-mba6x-hdmi.dts" } {"imx6q.dtsi" "imx6dl.dtsi"} -> "imx6qdl.dtsi";
"imx6q-tqma6q.dtsi" -> {"imx6qdl-tqma6x.dtsi" "imx6q.dtsi"}; "imx6dl-tqma6s.dtsi" -> {"imx6qdl-tqma6x.dtsi" "imx6dl.dtsi"};
"imx6q-mba6x.dts" -> {"imx6qdl-mba6x.dtsi" "imx6q-tqma6q.dtsi"}; "imx6dl-mba6x.dts" -> {"imx6qdl-mba6x.dtsi" "imx6dl-tqma6s.dtsi"}; "imx6q-mba6x-hdmi.dts" -> "imx6q-mba6x.dts"; "imx6dl-mba6x-hdmi.dts" -> "imx6dl-mba6x.dts";
}
</graphviz> <HTML>
CPU specific files
Module specific files
Baseboard specific files
</HTML>
BSP Rev. ≥ 0109
Naming convention
Device Tree Blobs
Several device tree blobs (.dtb files) are built by default, the resulting files are named as follows:
imx6<q|dl>-mba6<a|b>-<hdmi|lvds|multi|pd>.dtb
When building an sd card image, the HDMI enabled device tree blob is used by default.
Flat Image Tree (FIT)
Additionaly a FIT image (*.itb) is generated, which contains all device trees in a single file.
To select an individual DTB from this FIT you have to set the U-Boot variables fdt_type
and fitfdt_part
accordingly.
Module (CPU) type | |
---|---|
imx6q | TQMa6Q | TQMa6D |
imx6dl | TQMa6DL | TQMa6S |
Module revision & variant | |
mba6a | TQMa6x Rev.02xx Variant A & C |
mba6b | TQMa6x Rev.02xx Variant B | TQMa6x Rev.01xx |
Display interface | |
hdmi | HDMI only |
lvds | LVDS only |
pd | parallel display only |
multi | HDMI + LVDS + parallel display |
Dependency matrix
File | Module | Starterkit Mainboard | i.MX6Q | i.MX6D | i.MX6DL | i.MX6S | Revision 010x | Revision 020x | Ethernet Patch |
---|---|---|---|---|---|---|---|---|---|
imx6qdl-tqma6.dtsi | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
imx6qdl-tqma6a.dtsi | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
imx6qdl-tqma6b.dtsi | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
imx6q-tqma6.dtsi | ✔ | ✔ | ✔ | ✔ | ✔ | ||||
imx6q-tqma6a.dtsi | ✔ | ✔ | ✔ | ✔ | ✔ | ||||
imx6q-tqma6b.dtsi | ✔ | ✔ | ✔ | ✔ | ✔ | ||||
imx6dl-tqma6.dtsi | ✔ | ✔ | ✔ | ✔ | ✔ | ||||
imx6dl-tqma6a.dtsi | ✔ | ✔ | ✔ | ✔ | ✔ | ||||
imx6dl-tqma6b.dtsi | ✔ | ✔ | ✔ | ✔ | ✔ | ||||
imx6qdl-mba6.dtsi | included | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
imx6qdl-mba6a.dtsi | included | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
imx6qdl-mba6b.dtsi | included | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
imx6q-mba6.dtsi | included | ✔ | ✔ | ✔ | ✔ | ✔ | |||
imx6q-mba6a.dts | included | ✔ | ✔ | ✔ | ✔ | ✔ | |||
imx6q-mba6b.dts | included | ✔ | ✔ | ✔ | ✔ | ✔ | |||
imx6dl-mba6.dtsi | included | ✔ | ✔ | ✔ | ✔ | ✔ | |||
imx6dl-mba6a.dts | included | ✔ | ✔ | ✔ | ✔ | ✔ | |||
imx6dl-mba6b.dts | included | ✔ | ✔ | ✔ | ✔ | ✔ |
Dependency graph
<graphviz dot> digraph “FDT_dependencies” {
rankdir=BT node [shape=box style=filled]
{ /* level graph */ node[shape=none, width=0, height=0, label=“” style=invis]; edge[dir=none style=invis]; 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → 9; }
subgraph FSL { node [fillcolor="#E66A08" fontcolor="#FFFFFF"] "imx6q.dtsi"; "imx6dl.dtsi"; "imx6qdl.dtsi"; }
subgraph TQM { node [fillcolor="#1D8EC6" fontcolor="#FFFFFF"] "imx6qdl-tqma6.dtsi"; "imx6q-tqma6<a|b>.dtsi"; "imx6dl-tqma6<a|b>.dtsi"; "imx6qdl-tqma6<a|b>.dtsi"; }
subgraph MB { node [fillcolor="#8F8F8F" fontcolor="#FFFFFF"] ordering=out; "imx6qdl-mba6.dtsi"; subgraph MBq { rankdir=LR; "imx6q-mba6.dtsi"; "imx6q-mba6<a|b>.dts" [shape=oval color="#FF0000"]; } "imx6qdl-mba6<a|b>.dtsi"; subgraph MBdl { "imx6dl-mba6<a|b>.dts" [shape=oval color="#FF0000"]; "imx6dl-mba6.dtsi"; } }
{rank=same; 8; "imx6q.dtsi"; "imx6dl.dtsi"} {rank=same; 7; "imx6qdl-tqma6.dtsi"} {rank=same; 6; "imx6q-tqma6<a|b>.dtsi"; "imx6dl-tqma6<a|b>.dtsi"} {rank=same; 5; "imx6qdl-tqma6<a|b>.dtsi"} {rank=same; 4; "imx6qdl-mba6.dtsi"} {rank=same; 3; "imx6q-mba6.dtsi"; "imx6q-mba6<a|b>.dts"; "imx6dl-mba6<a|b>.dts"; "imx6dl-mba6.dtsi"} {rank=same; 2; "imx6qdl-mba6<a|b>.dtsi" } {"imx6q.dtsi" "imx6dl.dtsi"} -> "imx6qdl.dtsi";
"imx6q-tqma6<a|b>.dtsi" -> {"imx6qdl-tqma6.dtsi" "imx6qdl-tqma6<a|b>.dtsi" "imx6q.dtsi"}; "imx6dl-tqma6<a|b>.dtsi" -> {"imx6qdl-tqma6.dtsi" "imx6qdl-tqma6<a|b>.dtsi" "imx6dl.dtsi"};
"imx6q-mba6<a|b>.dts" -> {"imx6q-tqma6<a|b>.dtsi" "imx6qdl-mba6<a|b>.dtsi" "imx6qdl-mba6.dtsi" "imx6q-mba6.dtsi"}; "imx6dl-mba6<a|b>.dts" -> {"imx6dl-tqma6<a|b>.dtsi" "imx6qdl-mba6<a|b>.dtsi" "imx6qdl-mba6.dtsi" "imx6dl-mba6.dtsi"};
}
</graphviz>
<HTML>
CPU specific files
Module specific files
Baseboard specific files
</HTML>
Prerequisites
The BSP is available as a project ready to use with the PTXdist1) build system. As PTXdist runs on linux, first of all you need a development workstation (or a virtual machine) with a (preferably) recent Linux distribution installed. The distribution of your choice, however, may not have installed all required packages by default. Commonly missing packages (package names taken from Debian based systems) include:
- autoconf
- bc
- bison
- build-essential
- dialog
- flex
- g++
- gawk
- gettext
- git
- libncurses5-dev
- libxml-parser-perl
- python-dev
- quilt
- texinfo
- zip
- socat
- pkg-config
Although not required by PTXdist, we also recommend to configure and run a tftp server (for image download / update) and an nfs server (for network mounted rootfs) on your development host.
PTXdist set-up
Once the toolchain is compiled, install PTXdist 2020.01.0 is required to build the BSP.
You can always use a specific version of PTXdist by explicitly calling ptxdist-<version>.
Example:
$ ptxdist-2020.01.0
Please note:
The link /usr/local/bin/ptxdist always calls the PTXdists version installed most recently.
Starting with PTXdist 2014.07, ptxdist calls a script which tries to automatically determine and call
the required version by parsing the config files in the project directory.
Make sure the development host meets the prerequisites and download the required PTXdist tarball(s) (see Downloads page for URLs).
Install PTXdist version for building the Toolchain
Extract the tarball ptxdist-2019.09.1.tar.bz2 and install as follows:
$ tar xvf ptxdist-2019.09.1.tar.bz2 $ cd ptxdist-2019.09.1 $ ./configure $ make $ sudo make install
This will install PTXdist to /usr/local/lib by default.
PTXdist configuration
After installing PTXdist it can be configured by:
$ ptxdist setup
.config - PTXdist 2020.01.0 ────────────────────────────────────────────────────────────────────────────── ┌─────────────────────────── PTXdist 2020.01.0 ───────────────────────────┐ │ Arrow keys navigate the menu. <Enter> selects submenus --->. │ │ Highlighted letters are hotkeys. Pressing <Y> includes, <N> excludes, │ │ <M> modularizes features. Press <Esc><Esc> to exit, <?> for Help, </> │ │ for Search. Legend: [*] built-in [ ] excluded <M> module < > │ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ --- PTXDIST Setup Menu │ │ │ │ User ---> │ │ │ │ Proxies ---> │ │ │ │ Project Searchpath ---> │ │ │ │ Source Directories ---> │ │ │ │ Source Download ---> │ │ │ │ IPKG Repository ---> │ │ │ │ Java SDK ---> │ │ │ │ Developer Options ---> │ │ │ │ │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────────────────────┤ │ <Select> < Exit > < Help > < Save > < Load > │ └─────────────────────────────────────────────────────────────────────────┘
To personalise your PTXdist installation, please fill out:
- User (username and mail address)
Depending on your environment, the most important settings are:
- Proxies (ftp / http / hhtps proxies)
- Source Directories (path for archive of downloaded source packages (aka local package pool))
For further details on setup options, please see the PTXdist manual.
Building the toolchain
See download page for links to toolchain download. If using precompiled toolchain install to /opt. Otherwise carefully follow the documentation for building toolchains found here or in the download section.
By default the toolchain will get installed to /opt/OSELAS.Toolchain-<version>.
Follow chapter “Building a toolchain” in the PTXdist manual and keep in mind:
- When you are asked to run the command
$ ptxdist select ptxconfigs/...
select this ptxconfig: ptxconfigs/arm-v7a-linux-gnueabihf_gcc-<version>_glibc-<version>_binutils-<version>_kernel-<version>-sanitized.ptxconfig (for TQMa6x)
- To build the toolchain project you should install the corresponding PTXdist version for the Toolchain (as told in the documentation).
Install PTXdist version for building the BSP
Extract the tarball ptxdist-2020.01.0.tar.bz2 and install as follows:
$ tar xvf ptxdist-2020.01.0.tar.bz2 $ cd ptxdist-2020.01.0 $ ./configure $ make $ sudo make install
Afterwards you can configure PTXdist
Extract the BSP sources
Extract the package TQ-TQMa6x-BSP.REV0120.zip to any directory (e.g. /opt or /home):
$ cd ~/home/workspace $ tar -xvf TQMa6x.BSP.SW.SRC.0120.tar.gz $ cd TQMa6x.BSP.SW.SRC.0120