Projectへの取り組みを始めました。Projectが組込み分野において将来性の高いテーマであることが判ってきたことも大きな理由です。Trail-Iを搭載した製品はまだ数が少ないようです。海外ではすでに多くの種類の製品が登場しています。ARMも本来は省電力性能に優れたコアですが、SoCやSoM上に高性能なGPUを一緒に搭載するケースが増えるに伴い、ここ数年で消費電力が一気に高くなってきました。モバイル機器の場合搭載できるバッテリーの容量に限界があるため、プロセッサの省電力性能は製品設計上の大きな要件となります。Tralシリーズを搭載した製品が増えている理由は、これらのプロセッサの処理能力対省電力の性能バランスが非常に優れているからです。Trailは64ビット・コアです。Trailを搭載した製品がさらに増えていくでしょうし、タブレットなどのコンシューマ製品だけでなく組込み機器でも採用例が急増していくでしょう。x86アーキテクチャはARMより歴史が長いため、Linuxを代表とするオープンソース・ソフトウェア資産の量と質でも優位性があります。Trailとその動向を追いかけていくことは大きな可能性があると思っています。E38xxシリーズ製品のトップページと同プロセッサのデータシートのリンクを下に掲載しておきます。x86ターゲット用にビルドして動作確認を行うまでの手順について解説しました。QEMUは実機ターゲット無しで始められるので手っ取り早くて良いのですが、やはり実機ターゲットを使わないと組込み開発の醍醐味は味わえない気がします。Linuxを動かすことに挑戦します。Trailプロセッサを搭載したボードはまだ手に入れていないので、取りあえず、本記事にはBSPのビルド手順についてのみ記載します。Centerから入手できます(同サイトの一部のドキュメントやソフトウェアは、ユーザー登録をしないと入手できせん)。それらのリンクを掲載しておきます。Guide以降の作業は、上記のドキュメントを参照しながら進めていきました。BSPをビルドする過程で一つの問題に遭遇したので、それを解決した際のTips情報も記します。E38xxのBSPパッケージをダウンロードしました。1.6.1リリースのパッケージファイルyocto-1.6.1/poky-daisy-11.0.1.tar.bz2を展開すると、作成されるディレクトリ)の中へ展開しました。poky-daisy-11.0.1このパッケージを展開すると、ディレクトリpoky-daisy-11.0.1の中にmeta-intelというディレクトリが作成されます。Linuxでは、BSPもレシピの集合体です)。Kit」という旧称だったらしいです。Controllerなどの外付けデバイスを除いて、市販のE38xx搭載ボードはIntel製ボードと同じ回路構成になっているものが多いようです。そのため、このBSPから生成したイメージは大抵のE38xxターゲットでそのまま動作します。Linuxのビルドを進めていくので、その作業ディレクトリを作成しました。valleyislandスクリプトoe-init-build-envを実行すると、パラメータで指定したディレクトリが作成され、自動的にそのディレクトリへ移動します。同ディレクトリの中に以下の3つのファイルが作成されます。conf/bblayers.confconf/local.confconf/templateconf.cfg参照ドキュメントBに記載されている手順に従って、ここで、conf/bblayers.confに以下のような変更を加えました。\このbblayers.confというファイルには、レシピが格納されてる最上位ディレクトリ(これを「Layer(レイヤ)と呼びます」)の一覧が定義されています。bitbakeコマンドの実行時に、これらのディレクトリがレシピ検索の対象となります。上では、既存のレイヤにmeta-intelディレクトリに格納されている3つのレイヤを追加しています。BSPを構成する全レシピがbitbakeコマンドから参照できるようになります。conf/local.confにも以下の変更を加えました。"valleyisland-64"」という設定項目がビルド対象ターゲットの定義です(local.confが作成された段階では、本項目は常に「qemux86」に設定されています)。LinuxのBSPには必ずターゲット定義ファイルというものが格納されています。BSPのターゲット定義ファイルは以下の2つです。meta-intel/meta-isg/meta-valleyisland/conf/machine/valleyisland-32.confmeta-intel/meta-isg/meta-valleyisland/conf/machine/valleyisland-64.confファイル名から判るように、上記はそれぞれ32ビットと64ビット版Linuxのシステム構成です。これらのファイルの中から選択して、そのファイル名(「.conf」を除いた)を「MACHINE」に設定すると、bitbakeコマンドはターゲットを確定できるようになります。PARALLEL_MAKEの値をいずれも「8」に変更していますが、その理由は、開発ホストのUbunutを動かしているVMware仮想マシンのプロセッサコア数を4に変更したからです。BSPのビルド環境が整ったので、ビルド対象イメージとしてcore-image-satoを指定して、その全ソースをダウンロードしました。core-image-satoしかし、下のようなエラーメッセージが出力されて、この処理は途中で停止してしまいました(エラー停止したのは、10分以上処理が進んだ後でした)。code.上のエラーメッセージの一部の文字列を指定してgrep検索すると、meta-intel/meta-isg/meta-valleyisland/recipes-kernel/linux/linux-yocto_3.10.bbappendというファイルがヒットしました。そこで、このファイルの内容を眺めていると、その中に以下のような記述の誤りが存在することに気づきました。"i2c-dev"SRCREV_meta_valleyisland-64とSRC_URI_valleyisland-64はGit経由で取得するソースのリビジョンとURIの定義のようですが、オリジナルのlinux-yocto_3.10.bbappendでは、これらの値が前方に存在するSRCREV_meta_valleyisland-32とSRC_URI_valleyisland-32と異なっています。32ビットと64ビット版BSPのソースは一括してGitリポジトリ上で管理されているはずなので、これらは同じ値でなければならないはずです。修正前のSRC_URI_valleyisland-64の設定値は、ローカルなディレクトリからソースを取得するための定義のように見えます(本BSPのメンテナーが開発中の暫定的な記述を残したまま、このファイルをGitリポジトリへCommitしてしまったのでしょう)。BSPの64ビット版ソースの一部を取得する処理で停止してしまったようです。core-image-sato」コマンドを実行すると、ソースのダウンロード処理は最後まで通って正常に終了しました(全ソースをダウンロードするのに、エラー前後の時間を合計して25分かかりました)。ソースのダウンロードが完了したので、core-image-satoイメージのビルドを実行しました。shown.real199m7.092suser556m26.375ssys121m47.961sいくつかの警告メッセージが出力されましたが、ビルド処理は正常に終了しているようです(ビルドにかかった時間は3時間19分でした)。下のとおり、ブートやrootfsのイメージはちゃんと生成されているようでした。Linuxのビルド作業は一旦終了です。近いうちにターゲットを入手する予定なので、実機環境が整ったら、今回の作業で生成したイメージを使ってターゲットによる動作確認をやるつもりです。[必須入力]※画像の中の文字を半角で入力してください。