2018 年 03 月 16 日 Linux 技術ネタ
組込み Linux 向けのビルドシステムには様々なものが世の中にありますが、最近では主な SoC ベンダが Yocto を採用していることから、開発者としては Yocto に触れる機会が多くなってきていると思います。
ここでは、ビルドシステムの一つの PTXdist についてご紹介したいと思います。PTXdist は、Pengutronix 社が 2001 年から開発しているもので、Yocto project よりも歴史が長く、また今なおメンテナンスが続いており月一程のペースでリリースされています。ただ、あくまでもビルドシステムとなり、それに付随する BSP が追従していない場合は古い PTXdist の選択を余儀なくされるケースもあります。PTXdistは、Buildroot に類似していて Makefile ベースとなり、bitbake にて処理が進む Yocto project とは少し赴きが異なります。また、コマンドラインベースで設定を行う Yocto に対して、GUI にて様々な設定が可能となっています。
今回丸文株式会社様のご厚意で、TQ 社の i.MX 6X の Starter Kit をお借りすることができました。この TQ 社の Starter kit はコンパクトであるものの USBH や、物理インターフェースとして 2ch のEther(i.MX 6X は 1ch のみ)に加えて、産業機器で利用シーンが多い RS485 や 2ch の CAN などのインターフェースも有しています。
お客様は、この Starter Kit にてあらかじめ評価を行った後に、TQMa6x の CPU モジュールのみを購入し外付けの I/O ボードのみ開発を行うことで初期費用を抑えることができます。
この Starter Kit は、Linux 環境の BSP が TQ 社から提供されており、PTXdist にて構築することができます。まずは、以下のサイトにて提供されている BSP の概要を確認いたします。
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となっております。実際に構築するにあたり、以下のモジュールを個別にダウンロードする必要があります。
また、同サイトによると推奨ホスト環境は、Ubuntu14.04 となっており様々な問題を避けるためにも推奨環境を利用します。それぞれのモジュールをホストにダウンロードして設定を行ってきます。当方、(3) の Toolchain をダウンロード後、構築を行う必要があるとのことで、構築の手順などこのファイルこのファイル に記載がありましたが、うまく構築することができず、今回はややむなくプレビルドのバイナリパッケージを用いて検証を行いました。
Toolchain のバイナリパッケージは、Pengutronix 社の以下のサイトから入手することができます。
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-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、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 では既にコマンドラインでネットワークからの起動がサポートされていますので、そちらを利用します。
2024 年 09 月 02 日 Vigiles サポート
2024 年 03 月 01 日 Vigiles サポート
2023 年 08 月 28 日 Vigiles サポート
2024 年 03 月 26 日 Yocto Project よもやま話
2023 年 07 月 25 日 Yocto Project よもやま話
2023 年 06 月 20 日 Yocto Project よもやま話
2024 年 01 月 10 日 Linux 技術ネタ
2023 年 12 月 12 日 Linux 技術ネタ
2023 年 03 月 31 日 Linux 技術ネタ
2024 年 07 月 26 日 イベントレポート
2024 年 07 月 09 日 イベントレポート
2024 年 06 月 03 日 イベントレポート
2023 年 05 月 30 日 リクルート
2022 年 12 月 27 日 リクルート
2022 年 09 月 27 日 リクルート
2024 年 09 月 25 日 信州リネオ便り
2024 年 08 月 20 日 信州リネオ便り
2024 年 08 月 07 日 信州リネオ便り
2019 年 12 月 10 日 ソリューション統括部
2019 年 12 月 10 日 ソリューション統括部
2019 年 12 月 10 日 ソリューション統括部
2019 年 12 月 13 日 マーケティング統括部
2019 年 04 月 25 日 マーケティング統括部
2018 年 12 月 18 日 マーケティング統括部