組み込みLinuxを生き残る方法–パート1組み込みLinux開発プロセス
組み込みLinux開発プロセス
Linuxカーネルは、多くの異なるコンピュータアーキテクチャで実行でき、そのほとんどは組み込みの世界では非常に人気があります。 OSが基本的なタスクを実行できるようにするすべてのベースパッケージは、クロスコンパイルに適しているため、Linuxはマイクロコントローラやシステムオンチップ(Soc)と同じくらい普及している可能性があります。
Linuxディストリビューションは、Linuxカーネルと–多くの場合–パッケージ管理システムに基づいているソフトウェアコレクションから作られたオペレーテ このディストリビューションは、事前にコンパイルされたバイナリとパッケージとして、ディストリビューションのメンテナによって
をまとめたものか、そ
組み込みドメインでは、ハードウェアプラットフォームは通常オーダーメイドであるため、OS設計者は一般的にソースから始めて、最初からディストリビューションを生成することを好む。 これにより、設計者は
製品で何が終わるかを絶対的に制御できます。 さらに、Board Support Package(BSP)エンジニアは、OSのコア機能を特定のハードウェア製品で動作させるために、低レベルコードを変更します。
特定の組み込み製品用のLinuxディストリビューションを生成するために必要なすべてのソフトウェアコンポーネントを一緒に取得することは悪夢
多くの人が、インターネットからすべてのソフトウェアコンポーネントを取り出し、コンパイルしてリンクすることができるビルドシステムのソース いくつかの企業は、独自のビルドシステムを開発し、維持している、他の人は、コアコンポーネントのわずか数をコンパイルし、OSを完成させるために事前
2010年、Linux Foundationのワークグループが、組み込みソフトウェア用のLinuxディストリビューション(別名Embedded Linux)の作成を可能にするツールとプロセスに取り組み始めました。 このようなワークグループは、Yoctoプロジェクトとして知られており、同様の目標を持つフレームワークであるOpen Embeddedと連携していました。
Yoctoプロジェクトは、組み込みLinuxディストリビューションのソフトウェア開発プロセスの改善に焦点を当てたオープンソースプロジェク Yoctoプロジェクトは、
Linuxベースの組み込みシステムの迅速で反復可能な開発を可能にする相互運用可能なツール、メタデータ、およびプロセスを提供します。
Yoctoプロジェクトは現在、組み込みシステム用の最も人気のあるLinuxディストリビューションに電力を供給しており、時には”Embedded Linux”と”Yocto Project”という用語が同義語と容易に混同されることがある。 Yoctoそれは組み込みのLinuxディストリビューションではありません、それはあなたのためのカスタムのものを作成します。
Yoctoのメタレイヤレイアウト
yoctoのアーキテクチャの現代版は、設定ファイルと組み込みシステム用のLinuxディストリビューションのコンパイルとアセンブル方法に関するルールを含むディレクトリであるメタレイヤに基づいています。
通常、必ずしもそうではありませんが、メタレイヤーは独自のgitリポジトリに存在し、次のものを提供します:
- 独自のパッケージ(レシピ、.bbファイルで定義)、
- 他のメタレイヤーによって提供されるパッケージへの変更(.bbappendファイル)、
- マシン(.confファイル)、
- 設定ファイル(.confファイル)、
- 共通コード(.bbclassファイル)、
- ライセンス、
- およびその他のマイナーなビットとピース。
単一のメタ層は、通常、特定の目的に対処します。 したがって、完全に動作するシステムを実現するためには、より多くのメタ層を一緒に組み合わせる必要があります。
バージョンの選択と一致
異なるソフトウェアコンポーネントを一緒に置くときは、間違ったバージョンが他のコンポーネントとうまく機能しないか、システ
Yoctoプロジェクトは、一緒にうまく動作することが知られているコンポーネントのリリースを提供しますが、それはあなたの製品の出発点にすぎません。
Linuxカーネルは、システムが正常に動作するためには、適切なインターフェイスをユーザー空間に公開する必要があるコードの大きな塊であり、適切なドライバ したがって、シリコンベンダーの役割は、通常、Linuxカーネルとブートローダのための独自の開発リポジトリを持っているので、これらの日、ますます重要になって
Googleのrepo
もともとAndroidプロジェクトの多数のGitリポジトリに対処するために開発されましたが、repoはYocto開発者の間でも非常に人気があります。
RepoはGitの上に構築されたツールです; これは、”マニフェストファイル”を使用して、Gitリポジトリのセットを同時に複製してプルします。
レポマニフェストはanです。gitリポジトリへの参照を含むxmlドキュメント(およびそのバージョン)、repoはマニフェストを使用して、プロジェクトのビルドに必要ないくつかのGitリ
また、同じマニフェストをrepoで使用して、上流で変更を加えたときにプロジェクトソースをチェック(同期)することができます。
最近では、いくつかのシリコンベンダーが開発ブランチとリリースブランチのマニフェストを提供しているため、設計者は自分の製品の出発点を簡単にチェックできるようになっている。
Yoctoベースの製品開発
BSPエンジニアは、通常、silicon vendor repoマニフェストから開始して、リファレンスデザイン(silicon vendor自体またはそのパートナーのいずれかによって提供され、新製品のベースとなるSoCと同じまたは類似のSoCを含む設計)用のソフトウェアのバージョンをチェックアウトします。 エンジニアは、ブートローダーとLinuxカーネルを変更して、エレクトロニクスエンジニアが選択したハードウェアが適切な低レベルのソフトウェアサポート(デバイ).
製品の目的は、1つ以上のアプリケーションを実行することであるため、BSP/OSエンジニアは、アプリケーションのすべての依存関係がシステム用に構築されていることを確認します。 アプリケーションを開発するエンジニアは、アプリケーションをクロスコンパイルしてリンクするためにソフトウェア開発キット(SDK)が必要であるため、BSP/OSエンジニア
がそのようなキットを提供することになり、Yoctoのおかげでこれは非常に簡単になった。
Embedded Linux good practice
開発に使用されるレポマニフェストには、通常、開発ブランチへの参照が含まれています。
同じマニフェストを使用して後でプロジェクトをフェッチする場合は、別のバージョンのコードをフェッチすることができます! これは、プロジェクトの最新バージョンに固執したいので、開発には完全に問題ありませんが、開発バージョンのいずれかが最終的にリリースになるため、プロ そうしないと、ソースから同じビルドを再生成することができないため、特定のリリースの上に変更を加えることができず、バグを修正したり、最新バージョンのソフ
また、これらのスナップショットを取らないと、プロジェクトソースで二等分を実行して、どのコミットが必死に必要な機能を壊しているかを見つ 開発プロセスを設計するときは、正確なコミットを含むレポマニフェストを自動的に生成する方法を見つけて、リリースと一緒に保存して、後で同じソー
Copy sources in house
製品内にあるソースの99.9%はオープンソースコミュニティからのものであることにも留意してください。 デザイナーとしては、上流で行われた変更や間違いから身を守る必要があります。 関連するすべてのソースのコピーを社内に保管し、それらをビルドシステムに戻す方法を見つけます。 また、上流のgitサーバーが突然利用できなくなることがあるため、最も使用しているリポジトリの一部をミラーリングすることもできます。 内部コピーを持っていない場合は、サーバーがオンラインに戻るまで立ち往生します。
ByteSnapでは、Yoctoベースのプロジェクトをリリースする完全に自動化された方法を持っています。 私たちは、世界中の障害のあるサーバーによって引き起こされるダウンタイムを経験しないように、自動方法でオープンソースのパッケージのコピーを保 さらに、現場で災害が発生しても作業が失われないことを保証できるように、毎日すべてをバックアップしています。
Fabrizio Castro
Fabはシニアソフトウェアエンジニアです。 イタリアのミラノのポリテクニコ-ディ-ミラノで学士号と修士号を取得した。 サービス、データベース、アプリケーション、科学ソフトウェア、ファームウェア、RTOS、デバイスドライバ、Linuxカーネルなどのオールラウンドなソフトウェア開発の20年の経験を持っています。)、学界や産業界で働いて過ごした。 Fabは、科学論文や書籍を共著し、特許に取り組んできました。 研究開発だけでなく、彼は組み込みLinux開発を専門としており、最先端のデザインを提供し、科学、産業、商業、軍事製品を成功させています。 Fabはまた、講師となっており、ヨーロッパで最も権威のある大学のいくつかで学部生を教えてきました。 ByteSnapデザインの詳細については、http://www.bytesnap.co.ukを参照してください。