リネオブログ

PTXdist

2018 年 03 月 16 日   Linux 技術ネタ

1. 概要

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

ここでは、ビルドシステムの一つの PTXdist についてご紹介したいと思います。PTXdist は、Pengutronix 社が 2001 年から開発しているもので、Yocto project よりも歴史が長く、また今なおメンテナンスが続いており月一程のペースでリリースされています。ただ、あくまでもビルドシステムとなり、それに付随する BSP が追従していない場合は古い PTXdist の選択を余儀なくされるケースもあります。PTXdistは、Buildroot に類似していて Makefile ベースとなり、bitbake にて処理が進む Yocto project とは少し赴きが異なります。また、コマンドラインベースで設定を行う Yocto に対して、GUI にて様々な設定が可能となっています。

2. TQ 社 MBa6Q Starter Kit

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

TQ-group.com

i.MX 6X のStarter Kit

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

3. MBa6Q Starter Kit でのLinux 環境

この Starter Kit は、Linux 環境の BSP が TQ 社から提供されており、PTXdist にて構築することができます。まずは、以下のサイトにて提供されている BSP の概要を確認いたします。

TQ Support Wiki

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

BSP Version

※ 同サイトから抜粋

また、提供されているコンポーネントのそれぞれのバージョンは、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 をダウンロード後、構築を行う必要があるとのことで、構築の手順などこのファイルこのファイル に記載がありましたが、うまく構築することができず、今回はややむなくプレビルドのバイナリパッケージを用いて検証を行いました。

Toolchain のバイナリパッケージは、Pengutronix 社の以下のサイトから入手することができます。

public.pengutronix.de

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 以下に必要なファイルがインストールされます。

 /usr/local/bin

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

ダウンロードした 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 ディレクトリ以下にインストールされます。

/opt

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

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

tools/config.sh --config ptxconfig.qt5 --platform 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 でダウンロードすることします。

いずれかのデバイスから u-boot を立ち上げ

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

TQ の u-boot

Yocto Project 公式実践講座 5 月 ~ 7 月 開催分 受講お申込み受付中!
Yocto Project よもやま話
新企画「Yocto Project よもやま話」の連載を始めます
新企画「Yocto Project よもやま話」の連載を始めます

2022 年 04 月 28 日 Yocto Project よもやま話

Linux 技術ネタ
イベントレポート
ET & IoT 2021 レポート
ET & IoT 2021 レポート

2021 年 12 月 01 日 イベントレポート

組込み総合技術展 Embedded Technology 2019 レポート
組込み総合技術展 Embedded Technology 2019 レポート

2019 年 12 月 13 日 イベントレポート

組込み総合技術展 関西 ETWest2019 レポート
組込み総合技術展 関西 ETWest2019 レポート

2019 年 06 月 20 日 イベントレポート

リクルート
違うズラ
違うズラ

2018 年 10 月 26 日 リクルート

信州で人生がかわる
信州で人生がかわる

2018 年 07 月 24 日 リクルート

新入社員インタビュー
新入社員インタビュー

2017 年 02 月 28 日 リクルート

北小野通信
入笠山ハイキング その 2
入笠山ハイキング その 2

2019 年 10 月 09 日 北小野通信

入笠山ハイキング その 1
入笠山ハイキング その 1

2019 年 10 月 09 日 北小野通信

氷の世界
氷の世界

2019 年 01 月 22 日 北小野通信

ソリューション統括部
シリコンバレー探検記 2019 ~番外編~
シリコンバレー探検記 2019 ~番外編~

2019 年 12 月 10 日 ソリューション統括部

シリコンバレー探検記 2019 ~後編~
シリコンバレー探検記 2019 ~後編~

2019 年 12 月 10 日 ソリューション統括部

シリコンバレー探検記 2019 ~前編~
シリコンバレー探検記 2019 ~前編~

2019 年 12 月 10 日 ソリューション統括部

マーケティング統括部
大成功決起大会!!(ET2019)
大成功決起大会!!(ET2019)

2019 年 12 月 13 日 マーケティング統括部

ESEC 2019 決起大会
ESEC 2019 決起大会

2019 年 04 月 25 日 マーケティング統括部

シリコンバレー探検記 その 2
シリコンバレー探検記 その 2

2018 年 12 月 18 日 マーケティング統括部