*

PTXdist

   

  1. 概要

組み込みLinux向けのビルドシステムには様々なものが世の中にありますが、最近では主な SoC ベンダが Yocto を採用していることから、開発者としては Yocto に触れる機会が多くなってきていると思います。

ここでは、ビルドシステムの一つのPTXdistについてご紹介したいと思います。PTXdist は、Pengutronix 社が2001年から開発しているもので、Yocto project よりも歴史が長く、また今なおメンテナンスが続いており月一程のペースでリリースされています。ただ、あくまでもビルドシステムとなり、それに付随する BSP が追従していない場合は古い PTXdist の選択を余儀なくされるケースもあります。

PTXdistは、Buildroot に類似していて Makefile ベースとなり、bitbake にて処理が進む Yocto project とは少し赴きが異なります。また、コマンドラインベースで設定を行う Yocto に対して、GUI にて様々な設定が可能となっています。

  1. TQ 社MBa6Q Starter Kit

今回丸文株式会社様のご厚意で、TQ 社のi.MX 6X のStarter Kitをお借りすることができました。この TQ 社のStarter kit はコンパクトであるもののUSBHや、物理インターフェースとして2ch のEther(i.MX 6Xは 1ch のみ)に加えて、産業機器で利用シーンが多いRS485や2chのCANなどのインターフェースも有しています。

<https://www.tq-group.com/en/products/product-details/prod/starterkit-stka6x/extb/Main/productdetail/>

お客様は、このStarter Kit にてあらかじめ評価を行った後に、TQMa6xのCPUモジュールのみを購入し外付けのI/Oボードのみ開発を行うことで初期費用を抑えることができます。

  1. MBa6Q Starter KitでのLinux環境

このStarter Kit は、Linux環境のBSPがTQ社から提供されており、PTXdist にて構築することができます。

まずは、以下のサイトにて提供されているBSPの概要を確認いたします。

http://support.tq-group.com/doku.php?id=en:arm:tqma6x:linux

2018/2/28日現在の最新のBSPは、revision 0109 となります。このBSPに対応しているPTXdist は、2015.05 となり、またOSELAS Toolchain は2013.12.2 となっております。

*)同サイトから抜粋

また、提供されているコンポーネントのそれぞれのバージョンは、u-boot が2015.04、Linux kernel が 4.1 そして、QT は5.3.2となっております。実際に構築するにあたり、以下のモジュールを個別にダウンロードする必要があります。

  • TQ ボード向けBSP(TQ-TQMa6x-BSP.REV0109_01.zip)
  • PTXdist(ptxdist-2015.05.0.tar.bz2)
  • Toolchain(OSELAS.Toolchain-2013.12.2.tar.bz2)

また、同サイトによると推奨ホスト環境は、Ubuntu14.04となっており様々な問題を避けるためにも推奨環境を利用します。

それぞれのモジュールをホストにダウンロードして設定を行ってきます。当方、(3)のToolchainをダウンロード後、構築を行う必要があるとのことで、構築の手順などこのファイル<http://www.pengutronix.de/software/ptxdist/appnotes/AppNote_BuildingToolchain.pdf>に記載がありましたが、うまく構築することができず、今回はややむなくプレビルドのバイナリパッケージを用いて検証を行いました。Toolchainのバイナリパッケージは、Pengutronix 社の以下のサイトから入手することができます。

https://public.pengutronix.de/oselas/toolchain/

TQMa6x向けのツールチェーンは、Debian のサイトからダウンロードでき、oselas.toolchain-2013.12.2-arm-v7a-linux-gnueabihf-gcc-4.8.3-glibc-2.18-binutils-2.24-kernel-3.12-sanitized_2013.12.2_amd64.debとなります。

まずは、PTXdist をインストールします。

任意ディレクトリにてptxdist-2015.05.0.tar.bz2を展開し、ptxdist-2015.05.0ディレクトリにて、configure を実行します。当方の環境では configure 実行にあたり、libncurses-dev、awk、flex、yacc/bison、texinfoなどのパッケージ不足のエラーとなり、都度必要なパッケージをインストールします。

詳細は、TQ社のLinux BSP documentationのDevelopment Environmentにホストに必要となるパッケージの記載があります。

http://support.tq-group.com/doku.php?id=en:arm:tqma6x:linux:prepare

その後、make install を実行すると、デフォルトの /usr/local 以下に必要なファイルがインストールされます。

次にツールチェーンをインストールします。

ダウンロードしたoselas.toolchain-2013.12.2-arm-v7a-linux-gnueabihf-gcc-4.8.3-glibc-2.18-binutils-2.24-kernel-3.12-sanitized_2013.12.2_amd64.debファイルをdpkg コマンドを用いてインストールします。OSELAS のツールチェーンは、/opt ディレクトリ以下にインストールされます。

最後に BSP をインストールします。

任意ディレクトリにて、ダウンロード済みのBSP、TQ-TQMa6x-BSP.REV0109_01.zipファイルを展開します。中にはビルド済みのバイナリと、BSPそのものの二つのファイルがあります。今回は、ソースコードからスクラッチで構築したいと思いますので、TQMa6x-BSP-REV.0109-bsp.tar.gzファイルをさらに展開します。その後、展開済みのディレクトリにて、MBa6x 向けのコンフィグレーションを実行します。

*) i.MX 6Q の場合においても、platform の指定は mba6x となりますのでご注意ください。

このコンフィグレーションを実行すると、先ほどのtoolchainが正しくインストールされていない場合は、エラーとなります。

後は、エラーを回避しながらひたすらビルドを実行します。上記のコンフィグレーションを実行することで、BSPのプロジェクトディレクトリに ptxdist のリンクが張られますので、./p コマンドにて実行可能です。ビルドには、./p go を実行します。当方の環境では、fuse-2.9.3、flex-2.5.35.tar.bz2、netperf-2.6.0.tar.bz2、xxd-1.10.tar.gz、picocom-1.7.tar.gz、i2c-tools-3.1.0.tar.bz2のパッケージのダウンロードができず、エラーとなりましたので、それぞれネットからダウンロードして、src ディレクトリ以下にコピーすることでビルドは次のステップに進みます。途中二回ほど EULA に同意を促されます。NXP のものと SUNDISK のもの、内容を確認の上問題がなければ y とします。

今回構築にあたって関連ファイルは、platform-MBa6xディレクトリ以下に配備されます。これら構築済みのイメージを用いて実際に MBa6x ボード上でLinuxを起動してみます。実際に必要となるu-boot、kernel やrootfsなどのバイナリは、同ディレクトリ以下の images に生成されます。

MBa6x UM 0200 のユーザマニュアルの Table 88 に bootmode の設定のための Dip Switch に関する情報があります。このStarter kit では、boot デバイスとして、eMMC、Serial ROM、SD Card およびSATA の指定が可能です。

まずは、いずれかのデバイスからu-boot を立ち上げ、Linux kernel イメージなどは tftp でダウンロードすることします。

TQ の u-boot では既にコマンドラインでネットワークからの起動がサポートされていますので、そちらを利用します。

 

 - 未分類