リソースに制約のあるシステムにおけるLinux開発の課題を克服する方法

著者 Brandon Lewis

DigiKeyの北米担当編集者の提供

オープンソーステクノロジーは、プロプライエタリな障害を取り除き、コラボレーションを促進することで、電子システム開発者に対し、コスト削減、市場投入までの時間短縮、製品ライフサイクルの延長への道筋を提供します。今日、オープンソースの活用機会は、オペレーティングシステムからシングルボードコンピュータ(SBC)ハードウェア、半導体IPに至るまで、システムスタック全体に及んでいます。

しかし、産業用IoT(IIoT)やロボットシステムなど、リソースに制約のあるデバイス上でLinuxを実行するには、高い計算要件、セキュリティリスク、決定論的レイテンシという課題が依然として残っています。

本記事では、リソースに制約のあるシステムにLinuxを導入する際に設計者が直面する課題について簡単に説明します。続いて、BeagleBoard.orgBeagleV-Fire SBCとLinuxの組み合わせを紹介し、将来の設計の柔軟性を最大限に高める方法について解説します。また、Microchip Technologyのオープンソースボードサポートパッケージ(BSP)を使用して、初期のLinux設定を構成する方法のデモも含まれています。

組み込みシステムにおけるオープンソース開発の課題

組み込み開発におけるオープンソース技術の採用は、すでに定着しています。メーカーや個人技術者の幅広いエコシステムによって生み出された、すぐに使える資産により、ハードウェア設計とソフトウェア統合の両方が加速されています。特に、Linuxの柔軟性により、ネットワーク機能、高レベルなアプリケーションフレームワーク、および人工知能(AI)の統合を必要とするシステムにおいて、主要なソフトウェアソリューションとしての地位を確立しました。

しかし、リソースがより制約されたデバイスにLinuxを導入する際には、以下の点に留意する必要があります。

  • 計算負荷:従来のマイクロコントローラユニット(MCU)では、最小限のLinuxディストリビューションであっても、そのメモリやストレージの要件を満たすのに苦労します。開発者がアプリケーション、サブシステム、ユーザー空間フレームワーク(USF)をサポートするためにバックグラウンドサービスを追加すると、これらのサブシステムはより多くのリソースを消費するため、膨大なソフトウェアスタックは非現実的となります。
  • レイテンシ:ロボティクスや産業用オートメーションなどの高精度アプリケーションでは、システムの連携と動作の安全性のために、予測可能なタイミングが求められます。LinuxカーネルのPREEMPT_RT機能によって決定性は向上しますが、リソースに制約のあるハードウェアでは、専用のリアルタイムオペレーティングシステム(RTOS)の方が、より低いレイテンシとオーバーヘッドを実現します。
  • セキュリティ:公共の環境に導入される組み込みシステムは、不正アクセスを受けるリスクがあるため、セキュアブート、改ざん防止、ハードウェアのルートオブトラスト(RoT)などの標準的なセキュリティ対策が不可欠となります。加えて、EUのサイバーレジリエンス法(CRA)などの規制では、デジタル要素を含む製品に対して設計による安全確保(セキュアバイデザイン)を義務付けています。
  • 電源:エッジデバイスは、多くの場合、電源リソースが限られたリモート環境で動作します。エネルギー効率を高めることで、バッテリ寿命を延ばしたり、周囲のエネルギー源を利用した動作を可能にしたりすることができます。同様に、電力効率を高めることで、熱管理を簡素化し、ワットあたりの性能を向上させ、高度なエッジ処理をサポートできます。
  • ライフサイクル管理:CRAでは、デジタルデバイスのサポート期間を少なくとも5年間と定めていますが、多くの産業用途では、10年~15年間の製品利用可能期間が求められます。したがって、Linuxカーネルのサポートを継続的に保証するためには、開発者はアップグレード性とハードウェアの入手可能性について計画を立てる必要があります。

これらの課題を克服するために、開発者はオープンソースおよび組み込みLinuxエコシステムからの追加リソースを活用し、急速に進化するエッジアプリケーション向けに、Linuxの合理化されたハードウェアとソフトウェアの組み合わせを活用することができます。

オープンSBCおよびRISC-Vを使用したLinuxの実装

汎用のLinuxディストリビューションは、アプリケーションに対応するために迅速な手段を提供しますが、多くの場合、手元のプロジェクトには不要なパッケージやサービスが含まれています。これに対して、OpenEmbeddedを基盤とするYocto Projectを利用すれば、開発者は特定のユースケースに合わせたカスタマイズされたLinuxイメージをビルドすることができます。これにより、不要な機能が排除され、リソースに制約のあるハードウェア上でも軽量なディストリビューションを実行できると同時に、標準的なツールによるAI駆動のコンピュータビジョンや予知保全といった高度な機能を維持することが可能になります。

さらに、Yocto Projectは開発者に以下の機能を提供します。

  • 長期メンテナンスのための再現可能な構築
  • パフォーマンス、セキュリティ、応答性を向上させるカスタムカーネル設定
  • ハードウェアとソフトウェアの互換性を確保し、開発時間を短縮するためのボード固有のレイヤ統合

また、SWUpdate、RAUC、MenderなどのOTA(Over-the-Air)アップデートメカニズムとのシンプルな統合により、開発者は長い製品ライフサイクルを通じて、デバイスのパフォーマンスとセキュリティを定期的に向上させることができます。その結果、Yoctoプロジェクトは現在、組み込みLinuxシステムの標準となっています。

同様に、オープンソースのSBCは、Linuxアプリケーションの開発を加速するために長い間採用されており、処理能力、メモリ、ストレージ、およびI/Oリソースを一体型のフォームファクタに統合した、すぐに使えるリファレンスプラットフォームを提供しています。オープンSBCを使用することで、開発者はシステムの試作を迅速に作成し、ソフトウェアスタックを検証した後、最小限の手直しでカスタムハードウェアに移行することができます。

RISC-Vというオープンスタンダードの命令セットアーキテクチャ(ISA)は、システム設計者が高額なライセンス料を支払うことなく、カスタマイズされた処理プラットフォームを作成できるようにすることで、これをさらに一歩前進させています。RISC-Vを利用すれば、設計者は命令セットのどの部分を採用するかを選択でき、さらには特定のユースケースに合わせて拡張することも可能です。オリジナルの設計はBerkeley Software Distribution(BSD)ライセンスで作成されているため、派生作品はオープンかつフリーなものにも、非公開かつプロプライエタリなものにもすることができます。

開発者やアーキテクトにとって、Yoctoプロジェクト、オープンSBC、RISC-Vは、単一ベンダーのロードマップへの依存を減らし、長期的な設計の柔軟性を高めます。さらに、LinuxにおけるRISC-Vへのアップストリームサポートの拡大や、Yocto ProjectにおけるRISC-Vのプラチナメンバーシップは、組み込みLinuxコミュニティの関心を裏付けています。

コンパクトなLinux統合を実現する高性能RISC-V SBC

BeagleBoard.orgのオープンソースSBC、BeagleV-Fire (図1)は、これらの課題に対処するための小型で豊富なI/Oを備えたプラットフォームを提供します。マイクロチップのPolarFire FPGAシステムオンチップ(SoC)を搭載し、低消費電力動作、ハードウェアセキュリティ機能、そしてリアルタイムワークロードを実行するLinuxアプリケーションをサポートする一貫性のあるRISC-V CPUクラスタを実現しています。開発者はこのSBCを使って、組み込みLinuxをベースとしたロボットコントローラ、産業用ゲートウェイ、エッジAIアクセラレータ、カスタムI/Oプラットフォームなどを試作することができます。

BeagleBoard.orgのBeagleV-Fireの画像図1:BeagleBoard.orgのBeagleV-Fireは、オープンソース技術を組み込みデバイスに統合するための小型のSBCプラットフォームを提供します。(画像提供:BeagleBoard.org)

小型のプラットフォームのサイズは86.38mm × 54.61mm × 18.8mmで、省電力のMPFS025T-FCVG484E PolarFire SoCを中核に構成されています。Linuxを実行するための4つのRV64GCアプリケーションコアと、低レベルの機能を管理するRV64IMACモニタコアを備えた、コヒーレントなマルチコアアーキテクチャを特長としています。

パフォーマンスを最大化し、コア間のデータ精度を確保するため、PolarFire SoCは、共有L2キャッシュ、コヒーレントメモリサブシステム、および2ギガバイト(GB)のオンボードLPDDR4メモリをサポートする統合DDRメモリコントローラを提供します。さらに、BeagleV-Fireの16ギガバイト(GB)eMMCストレージと128メガビット(Mbit)SPIフラッシュにより、複雑なアプリケーションもさらにサポートされます。

RISC-Vプロセッササブシステムに加え、PolarFire SoCはFPGAファブリック(図2)が統合されており、開発者は低レイテンシのリアルタイムアプリケーション向けの決定論的な処理パスを作成したり、AI推論パイプライン向けのカスタムハードウェアアクセラレーションを実装したりすることができます。システム全体の一部として、このファブリックは23,000のロジックエレメントと独自の補助リソースを備えており、メインの処理コアから独立して動作することが可能です。

MicrochipのPolarFire SoCファミリの図(クリックして拡大)図2:Microchip PolarFire SoCファミリは、複数のRISC-Vプロセッシングコアと決定論的ワークロード向けの汎用FPGAファブリックを組み合わせています。(画像提供:Microchip Technology)

複数のセキュアブートオプションを備えたPolarFire SoCの統合ハードウェアセキュリティ機能により、開発者は多層的なセキュリティモデルを実装することができ、最新のサイバーセキュリティ要件に対応するための有用なプラットフォームとなっています。これらの機能には以下が含まれます。

  • 物理複製困難関数(PUF)による不変のハードウェアルートオブトラスト
  • ワンタイムプログラマブル(OTP)、またはデバイス固有の秘密情報(UDS)およびハードウェアによる強制キーアクセス制御を用いたセキュアな不揮発性ストレージによる安全なキーストレージ
  • 改ざん防止モジュール

さらに、BeagleV-Fireは、カスタムLinuxディストリビューションの検証やテストが可能な、アプリケーション対応システムを構築するための複数の統合物理ポートを備えています(図3)。これらには、RJ45ギガビットEthernetポート、電源および接続用のUSB Type-Cポート、M.2 Key Eソケット、エコシステムのさらなる拡張を可能にするの2つの46ピンBeagleBone互換Capeヘッダ、および直接統合のためのカメラシリアルインターフェース(CSI)が含まれます。デバッグ用にJTAG TAG-CONNECTフットプリントが用意されており、BeagleV-FireはFPGA向け周辺機器のためのSYZYGY互換の拡張もサポートしています。

ポートのラベルが表示されたBeagleBoard.orgのBeagleV-Fireの画像図3:小型サイズでありながら、BeagleBoard.orgのBeagleV-Fireは、アプリケーションとの即時接続を可能にする複数の物理ポートを備えています。(画像提供:BeagleBoard.org)

BeagleV-Fire SBC上でLinuxの初期設定を構成する方法

BeagleV-Fire向けの軽量Linuxディストリビューションを構築する際、開発者はまず適切なYocto Project BSPレイヤを入手する必要があります。これにより、U-Bootの設定、デフォルトのLinuxカーネル設定、ボードをサポートするデバイスツリー、周辺機器サポート定義が提供されます。GitHubリポジトリでは、BeagleV-Fireを含むすべてのPolarFire SoC評価キットBSPをサポートしています。

必要なYocto Projectの依存関係をすべてインストールした後、以下のレイヤが構成の基盤となるため、複製する必要があります。

  • bitbake(ビットベイク)
  • meta-openembedded-core(Openembedded基本レイヤ)
  • meta-yocto(Poky参照ディストリビューション用)
  • meta-mchp-common
  • meta-mchp-polarfire-soc/meta-mchp-polarfire-soc-bsp
  • meta-mchp-polarfire-soc/meta-mchp-polarfire-soc-community
  • プロジェクトで必要とされる追加のレイヤ

これが完了すると、MACHINE =「beaglev-fire」 のターゲットとし、kas設定ファイルを使用して最小限のイメージをビルドできます。リスト1に設定例を示します。

コピー
 header:
 version: 19
 
 repos:
 openembedded-core:
 url: git://git.openembedded.org/openembedded-core.git
 # yocto-5.0.15
 commit:6988157ad983978ffd6b12bcefedd4deaffdbbd1
 layers:
 meta:
 
 bitbake:
 url: git://git.openembedded.org/bitbake.git
 # yocto-5.0.15
 commit:8dcf084522b9c66a6639b5f117f554fde9b6b45a
 layers:
 bitbake: disabled
 
 meta-yocto:
 url: git://git.yoctoproject.org/git/meta-yocto.git
 # yocto-5.0.15
 commit:9bb6e6e8b016a0c9dfe290369a6ed91ef4020535
 layers:
 meta-poky:
 meta-yocto-bsp:
 
 meta-mchp:
 url: https://github.com/linux4microchip/meta-mchp.git
 branch: scarthgap
 path: layers/third-party/meta-mchp
 layers:
 meta-mchp-common:
 meta-mchp-polarfire-soc/meta-mchp-polarfire-soc-bsp:
 meta-mchp-polarfire-soc/meta-mchp-polarfire-soc-community:
 
 machine: beaglev-fire
 
 
 local_conf_header:
 Users: |
 EXTRA_IMAGE_FEATURES ="allow-empty-password empty-root-password \
allow-root-login"

リスト1: BeagleV-Fireを起動し、シンプルなシェル環境に入るために必要なすべてのビルド成果物を作成する設定ファイルの例です。(リスト提供:Microchip Technology)

「kas build core-image-minimal」を実行すると、BeagleV-Fireをシンプルなシェルで起動するために要なすべてのビルド成果物が生成されます。これには、U-Bootバイナリ、Linuxカーネルとモジュール、デバイスツリー、およびルートファイルシステムを含むFITイメージなどが含まれます。

Yocto Projectを使用してBeagleV-Fire用の最小限のLinuxイメージをビルドした後は、標準的な手順に従ってカスタマイズしたイメージを作成し、プロジェクトの正確な要件に合わせてビルドを調整することができます。たとえば、ロボティクスや産業用システムでは、時間的制約のある動作と高度な処理を両立させるために、FreeRTOSやZephyrなどの従来のRTOSと並行してLinuxが使用されることがよくあります。この機能はBeagleV-FireのPolarFire SoCで十分にサポートされており、複数のオペレーティングシステムやベアメタルアプリケーションを同時に実行するように構成することが可能です。

多くの組み込みデバイスには10年以上の稼働寿命が求められることを踏まえると、オープンなRISC-V ISA、Linux、およびYoctoベースの再現性の組み合わせることで、PolarFire SoCベースのプラットフォームは、定期的なローカルまたはOTAアップデートを通じて、新たなセキュリティ脅威や新しいアプリケーション要件に適応することが可能になります。このように、BeagleV-Fire SBCは、オープンソースを採用するための優れた出発点となり、インテリジェントエッジシステムの柔軟性と長寿命化を促進させます。

まとめ

リソースに制約のある組込みシステムでLinuxを実行する場合、計算能力の限界、決定論的なレイテンシ要件、セキュリティ上のリスク、および長いライフサイクルの要求が、正当な課題となり得ます。BeagleBoard.orgのBeagleV-Fire SBCは、RISC-V Linux機能とFPGAベースの決定論的ロジックおよびハードウェアセキュリティ機能を組み合わせたハイブリッドアーキテクチャを提供し、これらの課題を克服します。Yocto ProjectおよびMicrochipのオープンソースBSPレイヤと組み合わせることで、開発者はこのプラットフォームを利用して、長寿命のロボティクス、IIoT、およびエッジコンピューティングアプリケーション向けに最適化された、カスタマイズ可能でトレーサビリティのあるLinuxディストリビューションを構築できます。

DigiKey logo

免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、DigiKeyの意見、信念および視点またはDigiKeyの公式な方針を必ずしも反映するものではありません。

著者について

Image of Brandon Lewis

Brandon Lewis

Brandon Lewis has been a technical writer and editor for over 15 years, serving as editor-in-chief at various electronics engineering trade publications. Brandon’s areas of focus include microcontrollers, multicore embedded processors, embedded Linux and real-time operating systems, industrial communications protocols, single-board computers and computer on modules, and other aspects of real-time computing. He is an accomplished podcaster, YouTuber, event moderator, conference chair, and product reviewer.

出版者について

DigiKeyの北米担当編集者