技術コラム Vol.17

i.MX 8MとYocto ProjectでLinux開発!

公開日:2024/01/18

近年、エッジコンピューティングの需要が高まる中で、組込み系CPUは、高い処理性能が求められる一方で、電力効率も非常に重要になっています。

今回紹介するNXP Semiconductors社の「i.MX 8M Mini」は、高性能なアプリケーション処理が行えるCortex-A53とリアルタイム処理が行えるCortex-M4で構成され、高速化と優れた電力効率を実現したプロセッサです。

本コラムでは、i.MX 8M MiniのCortex®-A53についてフォーカスし、LinuxをビルドするためのフレームワークであるYocto Project(以降ではYocto)の概略について簡単にご紹介します。

  1. i.MX 8M Mini概要
  2. Yocto概要
  3. システム構成例
  4. Yocto開発の実際
  5. まとめ

1. i.MX 8M Mini概要

i.MX 8M Miniは、高性能なプロセッシング能力、多彩なインタフェース、セキュリティ機能を提供しており、幅広い産業、自動車、消費者エレクトロニクス、医療機器、通信機器などの アプリケーションで使用されています。

i.MX 8M Miniは、以下のような特徴が有ります。

  • 低消費電力で高性能
  • 高いマルチメディア性能
  • ヘテロジニアス・マルチコア・プロセッシングによるタスクのオフロード、電力の最適化、セキュリティの強化

また、i.MX 8M Miniは、多彩なインタフェース機能を内蔵しており、外部コントローラなしで、さまざまなアプリケーションに対応できます。i.MX 8M Miniの主なハードウェア仕様を以下に表にします。

カテゴリ 機能
External Memory DDR4
DDR3-L
LP-DDR4
Connectivity USB
PCI Express
Gigabit Ethernet
Mass Storage FlexSPI
SDHC
Multimedia MIPI CSI
MIPI DSI
Audio
Graphics Processing Unit 2D
3D
Low Speed Communication UART
I2C

2. Yocto概要

Yoctoは、Ubuntuのような、いわゆるLinuxディストリビューションでなく、ユーザーの使用目的に合わせてカスタマイズしたLinuxディストリビューションをビルドするためのフレームワークです。

以下の図が、Yoctoで開発する時のワークフローの図になります。

内部処理を除くと左上の黒から始まり青(緑)を通って赤が出力される流れとなります。

Yoctoでは、パッケージ個々のビルド方法がrecipeに記載されています。

汎用的に使われるパッケージについては、すでにrecipeが用意されていますので、ビルド方法について煩わされることはありません。ユーザーはその個々のパッケージのrecipeを取捨選択することで、必要なパッケージを追加/削除して開発を行います。各パッケージのカスタマイズする仕組みもあり、その場合には、各パッケージに対してpatchファイルを適応することでカスタマイズを行います。

一般的に、ベースとなるrecipe情報は、各ボードメーカーよりBSPの一部として、導入用が提供されております。そのため、最初はデフォルトのまますぐに開発を進めることが可能です。

また、実際にImageデータを作成する時のYoctoの特徴の1つにBitBakeによる開発があります。BitBakeは、各パッケージのrecipeの解析からソースコードのダウンロード、ビルドを一括で行ってくれます。そのため、開発ユーザーは、recipe等の準備が完了した後は、BitBakeコマンドのみの実行となります。

それにより生成されるImageデータの代表的なものを以下に表にします。

項目
内容
各種ローダ
主にU-Bootの起動までの処理をします(BL2,BL31など)
U-Boot
Linuxを起動するための環境を設定しカーネルとデバイスツリーをロードしLinuxを起動します
Linuxカーネル
Linuxのカーネルで使用デバイス等によりカスタマイズします
Linuxルートファイルシステム
MMC/eMMCに書き込むLinuxファイルシステムです
SDK
アプリケーションをクロス開発するためのツールキット、ルートファイルシステムイメージなど
dnf等のパッケージリポジトリ
デバッグ、検査用ツールなど製品に含めたくないパッケージをdnfでインストール管理するためのリポジトリです

Yoctoの詳細については、以下のページよりマニュアル等含めた情報が確認できます。

https://www.yoctoproject.org/

3. システム構成例

システム構成例として、当社製品の「αSMARC-IMX8MM」をご紹介します。

αSMARC-IMX8MMは、i.MX 8M Miniを搭載した、SMARC 2.1規格準拠のSoM(System on Module)です。

以下が、SMARCキャリアボードの「αSMARC-EVB1」と組み合わせた時の構成です。
i.MX 8M Miniのマルチメディア機能を生かしたGUI端末やHMI機器などに最適です。

Fig.1 i.MX 8M Mini システム構成例

4. Yocto開発の実際

Linuxの組込みソフトウェア開発に関しては、大きく2つに分かれます。

1つ目は、Linuxカーネル等含めたルートファイルシステムの開発。2つ目は、Linuxで動作するユーザーアプリケーション開発です。

ここでは、Yoctoでのそれぞれの開発方法を説明します。(以下の説明で使用するコマンドは、i.MX 8M Mini用となりますが、それ以外でも開発は同様です。)

4.1 ルートファイルシステム開発

Linuxカーネル、U-Bootなどを含めたLinuxルートファイルシステムをビルドするには単に以下のBitBakeコマンドを実行します。

$ bitbake imx-image-full

なお、正しくルートファイルシステムをビルドするためには、PCの環境を整える必要があります。比較的高い性能が要求されますが、不十分な場合、予期せぬエラーが発生する場合がありますので、注意してください。

ルートファイルシステムのビルドにおける留意点

ディスク使用容量
LinuxPCのディスク容量として数十GByte~数百GByteの空き容量(ビルドするパッケージ群により使用量は大幅に異なります)
使用メモリサイズ
32GByte以上を推奨(最低16GByte)
ビルド時間
数時間〜十数時間かかります(割り当てるCPUコア数、メモリサイズ等により異なります)

4.2 アプリケーション開発

(1)SDKのビルド

アプリケーション開発に必要となるSDKをビルドするには、以下のBitBakeコマンドを実行します。
これにより、SDKのインストーラーが作成されます。

$ bitbake imx-image-full –c populate-sdk

(2)SDKのインストール

作成されたSDKのインストーラーをアプリケーション開発をするLinuxPCに、インストールします。

$ ~/fsl-imx-wayland-glibc-x86_64-imx-image-full-cortexa53-crypto-i.MX 8Mmevk-toolchain-5.10-hardknott.sh

(3)ユーザーアプリケーションの開発

SDKがインストールされた環境を利用して、後は、自由にユーザーアプリケーションを開発します。

5. まとめ

今回は、i.MX 8M MiniとYoctoについての概要を簡単にご紹介しました。

i.MX 8M Miniは、高性能なプロセッシング能力で、マルチメディア分野を中心に幅広い分野で適用できます。
また、Yoctoを使用することにより、アプリケーションに最適なLinuxファイルシステムの構築が容易で、多くの分野においてオープンソースシステムを利用したシステム開発の生産性の向上が期待できます。

当社ではi.MX8ファミリを活用した設計ソリューションを提供しております。

今回ご紹介したi.MX 8M Mini搭載の「αSMARC-IMX8MM」のほか、i.MX 8M Nano搭載の「αSMARC-IMX8MN」も提供しています。また、導入用として開発環境がすべて揃ったLinux開発キットをそれぞれ用意しておりますので、i.MX8ファミリの採用を検討されている方は、ぜひお試しください。

製品のご案内

本コラム以外にも開発にお役立ていただける技術情報をアプリケーションノートとして公開しております。
ご興味のある方は、ぜひ製品をご利用ください。

  • ※ArmおよびCortexは、米国および/またはその他の地域におけるArm Limited(またはその子会社)の登録商標です。
  • ※記載されている会社名、製品名は、各社の登録商標または商標です。
  • ※記載の内容は改良のため、予告なく変更する場合がございます。