Intel Quark SoC X1000 BSP Release 0.9.0のビルド・ガイド

2014年3月20日追記

新しいリリースである1.0.0に対応したものを“Intel Quark SoC X1000 BSP Rel 1.0.0 ビルド&ソフトウェア ユーザーガイド”に公開しました。0.9.0である必要があるなど、特に理由があるのでなければ新しい方をご参照ください。

はじめに

今年に入って、IntelがIntel Quark SoC X1000用のBoard Support Packageを更新し、Release 0.9.0をリリースしました。この新しい0.9.0に対応したビルド・ガイド(Intel® Quark SoC X1000 Board Support Package (BSP) Build Guide)も同時にリリースされましたので、前回に続いて紹介したいと思います(前回と今回では内容がかなり異なっていますので、前回のリリースのビルド・ガイドを読んだ方も再度全体を通して読んでみることをお勧めします)。

このビルド・ガイドは、Intel Quark SoC X1000を搭載したリファレンスボードに対応するLinuxカーネルとルート・ファイル・システムのビルド方法や、ボード上のSPI Flashへの書き込み方法、microSDメモリーカードやUSBメモリーに書き込んだLinuxカーネルとルート・ファイル・システムからの起動方法などを説明する資料です。

この資料は英語のものなのですが、これを日本語にしたものを自分用に作成しました。完全に逐次訳をしたわけではないので、元の資料の置き換え用にはなりませんが、ダウンロード時に表示されるライセンスと該当資料の文末にある宣言文を読む限り、Intelのライセンス上も問題がなさそうだと思われる(転載と翻訳を禁止するとの明示文がない)ため、参考にはなるかと思い公開してみます。

もしもIntelの関係者で、私がこの日本語資料を公開することが何らかのライセンスや法的問題があるとお考えであるならば、メールにてご連絡をいただければと思います。その際は、私がメールの送付主がIntel関係者であることを認識できるようにIntel社内からメールを送信し、所属・肩書き等を添えてください。

著作権等

英語版の資料をベースにしているこの日本語資料はIntelの著作権が及ぶ範囲内にあります。その上で、この日本語資料には“さかきけい”の著作権が発生しています。“さかきけい”はすべての著作権法上の権利を留保します(詳しくは「ご利用上の注意とお願い」を参照ください)。

免責の表明

この日本語資料はIntelが公開している「Intel® Quark SoC X1000 Board Support Package (BSP) Build Guide / Release: 0.9.0 / 20 January 2014 / Order Number: 329687-004US」に記載されている情報を元に、“さかきけい”が作成したものです。このためIntelには何らこの日本語資料に対する責任はありませんので、この日本語資料に関連する問い合わせをIntelに対して行うことを禁止します。

また、この日本語資料を作成した“さかきけい”も何ら責任を負いません。この日本語資料の内容は、利用者自身の責任においてのみ使用することができます。

使用上の注意

  • Intelによる法的な意味合いを持つと考えられる記述は英文のままとしています。これは、日本語にすることで意味合いが変化することを防ぐ目的のものです。しかし、その部分は英語原文に付属する部分であることを前提としなければなりません。したがって、本日本語資料ではなく、文脈としては原書に付属することになります。本日本語資料においては、Intelが免責を宣言する部分はその通りですが、何らかの権利や許可を与える部分についてはすべて無効であるとご理解ください。※1
  • USB key、USB stickなどの表現揺れはすべて「USBメモリー」に統一して日本語資料化しています。※2
  • SD card、microSDなどの表現揺れはすべて「microSDメモリーカード」に統一して日本語資料化しています(SDアソシエーションのページ内表記に合わせています)。※3
  • 複数の英単語によって構成される語は、単語間に「・」を入れて表現しています。例:ルート・ファイル・システム※4
  • 日本語での記述におかしいと思われる個所がある場合には原書をあたってください。
  • 技術的などの理由で記載内容にわからない事項がある場合には別途調べてください(“さかきけい”に質問のメールを送るのはご遠慮ください※5)。
  • 明らかな誤訳がある場合には具体的なご指摘をメールでお知らせいただけると助かります。
  • 記述内容に誤りがある場合にもお知らせいただけると嬉しく思います。ただし、原書も間違っている場合には特に日本語資料を修正することはせずに、訳注を追加するだけとするかもしれません。
  • 前述の内容と被りますが、“さかきけい”は何ら責任や義務を負うものではありません。

Intel® Quark SoC X1000 Board Support Package (BSP) Build Guide

Release: 0.9.0
20 January 2014

コンテンツ

1. はじめる前に

このガイドは、Intel Quark SoC X1000 Board Support Package Sourcesによる、インストールと構成を行う方法を説明するものです。

このソフトウェア・リリースがサポートするのは以下のソフトウェアとハードウェアです:

  • Board Support Package for Intel Quark SoC X1000 v0.9.0
  • Intel Galileo Customer Reference Board(CRB)(Fab D / ブルーのプリント基板)
  • Kips Bay Customer Reference Board(CRB)(Fab C / グリーンのプリント基板)
  • Intel Quark SoC X1000 工業/エネルギー向けリファレンス・デザイン(Cross Hill)
  • Intel Quark SoC X1000 輸送向けリファレンス・デザイン(Clanton Hill)

はじめる前に:

  • Linux*が動作するホストPCが必要です。Intelは64-bit Linux Systemを推奨します。
  • サード・パーティ・ソースをダウンロードするためのインターネット接続が必要です。
  • 30GBのディスク空き容量がビルド処理のために必要です。
  • ボードでプログラムを使用するために:
    • シリアル・インターフェースを使用するCapsuleApp.efiセクション9を参照)
    • DediProg SF100 SPI Flash Programmer(または同等品)とフラッシュ書き込みと連携するソフトウェア(セクション10を参照)
    • Intel Galileo IDE(Galileoボードのみ; 詳しくはIntel Galileo Board Getting Started Guide for Detailsを参照)

注記:カレント・バージョンをインストールする前にすべての以前のバージョンのソフトウェアを削除してください。

それぞれのコンポーネントは非常に異なる環境(コンパイラー・オプションやその他)を必要とします。「クロス汚染※6」を防ぐために、毎回新しいターミナル・セッションを開始し、この先のセクションに含まれるコマンドを実行しなければなりません。

注記:これらのコマンドが失敗する場合、それはプロキシーの設定によるものである可能性があります。必要な答えはここで見つかるでしょう:https://wiki.yoctoproject.org/wiki/Working_Behind_a_Network_Proxy

このリリースはDebian* Linux* 7.0(Wheezy)でテストを行いましたが、他のLinuxディストリビューションでも動作するはずです。

このリリースは64-bit Linux* Systemで検証されており、32-bit Systemでは追加の作業が必要となることがあります。

2. ソフトウェアのダウンロード

BSPソースのZIPファイルはここからダウンロードできます:
https://downloadcenter.intel.com/Detail_Desc.aspx?DwnldID=23197

注記:もしもIntel Quark Reference Design Boardを使用するなら、適切なソフトウェア・ダウンロードURLについては、Intelが提示するものを参照してください。

このリリースは以下のファイルで構成されます:

  • Board Support Package(BSP) ソース:
    • Board_Support_Package_Sources_for_Intel_Quark_v0.9.0.7z (2.5MB)

注記:カプセル更新ユーティリティCapsuleApp.efiは、現在のリリースではセクション3で解説するようにソースからEDKIIビルドの一部として生成します。

Debianは、いくつかのコンパイラー・ツールとライブラリーをインストールする、Build-essentialと呼ばれるmetaパッケージを提供します。次に進む前に、以下のコマンドを実行してmetaパッケージおよび他のパッケージをインストールしてください:

# sudo apt-get install build-essential gcc-multilib vim-common

3. EDKIIファームウェアのビルド

Quarkのためにオープン・ソースEDKIIファームウェアをビルドする必要があります。追加の情報はこちらから得られるでしょう:

依存関係:

  • Python 2.x
  • GCC and G++ (GCC 4.3とGCC 4.6でテスト済み)
  • subversionクライアント
  • uuid-dev
  • iasl

Clanton EDKII BSPはquark_EDKII_<version>.tar.gzというファイル名です。これを展開してから、svn_setup.pyスクリプトを実行します。スクリプトは、ファームウェア・モジュールをビルドするために必要なアップストリームのコードを取得します。

新しいターミナル・セッションを開いて以下のコマンドを実行します:

tar -xvf quark_EDKII_*.tar.gz
cd quark_EDKII*
./svn_setup.py
svn update

注記svn updateコマンドを完了するまでに必要とする時間は、インターネット接続速度とマシンの仕様に依存します。

注記:これらのコマンドが失敗する場合、それはプロキシーの設定によるものである可能性があります。必要な答えはここで見つかるでしょう:https://wiki.yoctoproject.org/wiki/Working_Behind_a_Network_Proxy

svn updateが完了したら、モジュールをビルドするためにbuildallconfigs.shスクリプトを実行します。
スクリプトには以下のオプションを指定します:

buildallconfigs.sh [GCC43 | GCC44 | GCC45 | GCC46 | GCC47] [PlatformName]
GCC4x
このビルドで使用するGCCフラグのために使用します。GCCのバージョンに応じて指定します。
注記:検証はGCC43、テストはGCC46で行いました。
[PlatformName]
ビルドする対象のプラットフォーム・パッケージの名前を指定します。

使用例:

./buildallconfigs.sh GCC46 QuarkPlatform # GCC version 4.6を使用してQuarkプラットフォーム用にビルドを実行

注記:選択したGCCのバージョンがgcc --versionコマンドを実行してシステムにインストールされたものと一致するかどうか確認することができます。

以下のディレクトリーにビルドの出力が存在します:

  • Build/QuarkPlatform/<Config>/<Target>_<Tools>/FV/FlashModules/
    EDKIIバイナリー・モジュールが出力されます。
  • Build/QuarkPlatform/<Config>/<Target>_<Tools>/FV/Applications/
    CapsuleApp.efiを含む、UEFIシェル・アプリケーションが出力されます。

凡例:

<Config> = PLAIN | Secure
<Target> = DEBUG | RELEASE
<Tools> = GCC43 | GCC44 | GCC45 | GCC46 | GCC47

セクション7では、EDKバイナリーを置くディレクトリーへのシンボリック・リンクを作成するスクリプトを実行します。

これを実施する対象者のために:

quarkbuild.sh [-r32 | -d32 | -clean] [GCC43 | GCC44 | GCC45 | GCC46 | GCC47] [PlatformName] [-DSECURE_LD (オプション)]
-clean
ビルドしたファイルとフォルダーの削除します。
-d32
DEBUGビルドの作成します。
-r32
RELEASEビルドの作成します。
GCC4x
このビルドで使用するGCCフラグのために使用します。GCCのバージョンに応じて指定します。
注記:検証はGCC43、テストはGCC46で行いました。
[PlatformName]
ビルドする対象のプラットフォーム・パッケージの名前を指定します。
[-DSECURE_LD]
セキュア・ロックダウン・ビルドを作成します。 (オプション)

使用例:

./quarkbuild.sh -r32 GCC43 QuarkPlatform –DSECURE_LD # GCC version 4.3を使用してQuarkプラットフォーム用にセキュア・ロックダウンのリリース・ビルドを作成します。

4. GRUB OSローダーのビルド

注記:GRUBは2つの方法で提供されます:meta-clanton Yocto BSPに含まれるもの、または独立して提供されるもの。

もしもYoctoを実行するなら、このセクションを飛ばしてYoctoが以下のディレクトリーに出力するファイルを使用してください:yocto_build/tmp/deploy/images/grub.efi

依存関係:

  • GCC (テスト済みのバージョンは4.3.4と4.6.3とlibc6-dev-i386)
  • gnu-efiライブラリー (テスト済みのバージョン >= 3.0)
  • GNU Make
  • Autotools (autoconfとlibtool)
  • Python >= 2.6
  • git

このGRUBビルドは多くのLinuxディストリビューションに含まれている32ビットのgnu-efiライブラリーを必要とします。あるいは次のURLから最新版をダウンロードすることができます:http://sourceforge.net/projects/gnu-efi/files

gnu-efiライブラリーの展開とコンパイルは以下のコマンドを使用します:

# tar -xvf gnu-efi*
# cd gnu-efi*/gnuefi
# make ARCH="ia32"
# cd -

GRUBをビルドするために、最初に新しいターミナル・セッションを開きます。grubパッケージを展開して、それからgitsetup.pyスクリプトを実行します。このスクリプトはgrubが必要とするアップストリームのコードをすべてダウンロードし、パッチを適用します。

注記:Debianを使用しておらず、手動でGNU-EFIをシステム外の位置にインストールしたのであれば、GNU-EFIをコンパイルあるいはインストールした位置をGNUEFI_LIBDIRに設定しなければなりません。

以下のコマンドを実行します:

# tar -xvf grub-legacy_*.tar.gz
# cd grub-legacy_*
# ./gitsetup.py
# cd work
# autoreconf --install
# export CC4GRUB='gcc -m32 -march=i586 -fno-stack-protector'
# export GNUEFI_LIBDIR=/full/path/to/gnu-efi-3.0/gnuefi/
# CC="${CC4GRUB}" ./configure-clanton.sh
# make
# cd -

注記:これらのコマンドが失敗する場合、それはプロキシーの設定によるものである可能性があります。必要な答えはここで見つかるでしょう:https://wiki.yoctoproject.org/wiki/Working_Behind_a_Network_Proxy

このビルド処理によって出力される、必要なファイルはefi/grub.efiです。

5. ファイル・システムの作成およびYoctoで使用するカーネルのビルド

依存関係:

  • git
  • diffstat
  • texinfo
  • gawk
  • chrpath
  • file

注記:gitはプロキシーの設定を必要とします。これらのコマンドが失敗する場合、それはプロキシーの設定によるものである可能性があります。必要な答えはここで見つかるでしょう:https://wiki.yoctoproject.org/wiki/Working_Behind_a_Network_Proxy

Yoctoを使用するために、ルート・ファイル・システムとmicroSDメモリーカードまたはUSBメモリーからシステムをブートするためのカーネルを作成します。rootとして、このセクションのどのコマンドも実行しないでください。

注記:異なるホスト・オペレーティング・システムのためのgccなどのビルド開発ツールを構築するための方法はセクション6を参照してください。

はじめに新しいターミナル・セッションを開きます。Yoctoレイヤーを展開し、Yoctoのビルドに必要な外部ソースをダウンロードするためにsetup.shを実行します:

# tar -xvf meta-clanton*.tar.gz
# cd meta-clanton*
# ./setup.sh

注記setup.shスクリプトは変更されており、(以前のリリースとは異なり)パラメーターを取りません。Intel Galileo Boardのためにルート・ファイル・システムおよびカーネルをビルドするための方法については、後述のコマンドを参照してください。

続いて、Yoctoのビルド環境を初期化するためにsourceoe-init-build-envコマンドを実行し、そして、ルート・ファイル・システムとカーネルをビルドするためにbitbake <target>を実行します。後述するSoCに固有の<target>コマンドを指定します。

2つのビルド方法をサポートしています; その出力は、それぞれ少し異なります。Intel Galileo Boardのためのコマンドは他のボードと異なります。

注記:次のビルド方法を連続して行うことはできません。これらは相互に排他的です。両方のビルドを実施するのであれば、2つの完全に分離された異なるディレクトリー上でそれぞれの作業を行わなければなりません。

SPI Flash用の小さなLinuxをビルドする

Intel Galileo Boardのためのコマンドは以下のとおりです:

# source poky/oe-init-build-env yocto_build
# bitbake image-spi-galileo

Intel Galileo Boardのための出力ファイルは./tmp/deploy/images/ディレクトリーに存在し、以下のファイルを含みます:

  • image-spi-galileo-clanton.cpio.gz
  • image-spi-galileo-clanton.cpio.lzma
  • bzImage
  • grub.efi

他のサポートするボード(Intel Galileo Boardを除く)のためのコマンドは以下のとおりです:

# source poky/oe-init-build-env yocto_build
# bitbake image-spi

このビルド処理による出力は、./tmp/deploy/images/に存在し、以下のファイルを含みます:

  • image-spi-clanton.cpio.gz
  • image-spi-clanton.cpio.lzma
  • bzImage
  • grub.efi

microSDメモリーカードまたはUSBメモリーのためのフル機能のLinuxをビルドする

注記:Yoctoのビルドを完了するまでに必要とする時間は、インターネット接続速度とマシンの仕様に依存します。

Intel Galileo Boardのためのコマンドは以下のとおりです:

# source poky/oe-init-build-env yocto_build
# bitbake image-full-galileo

Intel Galileo Boardのための出力ファイルは./tmp/deploy/images/ディレクトリーに存在し、以下のファイルを含みます:

  • image-full-galileo-clanton.ext3
  • core-image-minimal-initramfs-clanton.cpio.gz
  • bzImage
  • grub.efi
  • boot (ディレクトリー)

他のサポートするボード用(Intel Galileo Boardを除く)には、以下のようにbitrake image-fullを実行します:

# source poky/oe-init-build-env yocto_build
# bitbake image-full

このビルド処理による出力は、./tmp/deploy/images/に存在し、以下のファイルを含みます:

  • image-full-clanton.ext3
  • core-image-minimal-initramfs-clanton.cpio.gz
  • bzImage
  • grub.efi
  • boot (ディレクトリー)

カーネルとルート・ファイル・システム(それぞれ、bzImageimage-nnnn.gz)をUSBメモリーまたはmicroSDメモリーカードにコピーし、GRUBからブートすることができます。

6. クロス・コンパイラー・ツール・チェーンの構築

このセクションでは以下のオペレーティング・システムにおいて、開発ツールとイメージをビルドする方法を説明します:

  • Linux* クロス・コンパイラー
  • Windows* クロス・コンパイラー
  • MAC OS* クロス・コンパイラー

6.1 Linux* クロス・コンパイラー

クロス・コンパイラー・ツール・チェーンを作るための手順はYoctoルート・ファイル・システムとカーネルのための手順を説明したセクション5と、bitrakeコマンドを除いて同じです。

ツール・チェーンの構築を行うために、新しいターミナル・セッションを開き、以下のbitrageを除いてセクション5の手順に従います:

# bitbake image-full -c populate_sdk

両方のビルドに同じファイルを使用することができますが、新しいターミナルでpoky oe-init-build-env yocto_buildを毎回実行しなければなりません

ビルド処理の出力は、別のシステムのためツール・チェーンをインストールするスクリプトです:
clanton-tiny-uclibc-x86_64-i586-toolchain-1.4.2.sh

スクリプトは./tmp/deploy/sdkにあります。

注記:スクリプトはあなたの環境を大きく変更することがあり、これによってあなたが使用している可能性のある非Yoctoツール(Pythonを使用するために含まれるすべて)を破壊することがあります。Yocto環境のsourceを行い、makeを実行するためには新しいターミナル・セッションを開かなくてはなりません。そして、その他のすべてのコマンドは他のターミナル・セッションで実行します。※7

あなたがあなたのアプリケーションをコンパイルする準備ができているならば、最初にsourceコマンドを実行してCCCONFIGURE_FLAGSおよびその他の環境変数のためのデフォルト値を定義します。これによりあなたはコンパイルが行えます:

# source /opt/poky/1.4.2/environment-setup-x86_32-poky-linux
# ${CC} myfile.c -o myfile

または

# source /opt/poky/1.4.2/environment-setup-x86_64-poky-linux
# ${CC} myfile.c -o myfile

一般的な詳細については、Yocto Application Development Toolkit (ADT)の情報を参照してください:
https://www.yoctoproject.org/tools-resources/projects/application-developmenttoolkit-adt

パッケージをLinuxビルドに追加する方法についてはこのURLで見つかるでしょう:
http://www.yoctoproject.org/docs/current/dev-manual/dev-manual.html#usingpokyextend-customimage-localconf

Quark Linuxは組み込みシステムのために最適化されたCライブラリーであるuclibcを使用します。これは、SPI Flashに入れることができる、UEFIブート・ローダーとGRUB OSローダーを含む非常に小さなLinuxを生成可能にします。

サイズに制約がないのであれば、Cライブラリーをより完全な機能を持ったCライブラリーに変更することができます。詳しい手順はこちらを参考にしてください:
http://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html
特に使用するCライブラリーを選択するTCLIBC変数を変更する方法。

6.2 Windows* クロス・コンパイラー

  1. セクション5のすべての手順を実行します。
  2. 以下のコマンドを実行します:
    cd ..
    git clone git://git.yoctoproject.org/meta-mingw
    cd yocto_build
  3. conf/bblayers.confを編集して、クローンを作成したフル・パスをmeta-mingwレイヤーに加えます。
  4. conf/local.confファイルに以下の内容が含まれることを確認します:SDKMACHINE = "i686-mingw32"
  5. 以下のコマンドを実行します:bitbake meta-toolchain
  6. ツール・チェーンがtmp/deploy/sdkの中に作成されています。

6.3 MAC OS* クロス・コンパイラー

  1. セクション5のすべての手順を実行します。
  2. 以下のコマンドを実行します:
    cd ..
    git clone git://git.yoctoproject.org/meta-darwin
    cd yocto_build
  3. conf/bblayers.confを編集して、クローンを作成したフル・パスをmeta-darwinレイヤーに加えます。
  4. conf/local.confファイルに以下の内容が含まれることを確認します:SDKMACHINE = "i386-darwin"
  5. 以下のコマンドを実行します:bitbake meta-toolchain
  6. ツール・チェーンがtmp/deploy/sdkの中に作成されています。

7. ボード用のFlashイメージの作成

依存関係:

  • GCC
  • GNU Make
  • EDKII Firmware Volume Tools (base tools)
  • OpenSSL 0.9.81以降
  • libssl-dev

7.1. SPI Flashツールを使用する

SPI Flashツールは、sysimageアーカイブ内のメタデータとともに、ボードにインストールおよび起動することが可能なFlash.binファイルを作成するために使用します。

新しいターミナル・セッションを開始し、sysimageアーカイブの内容を展開します:

# tar -xvf sysimage_*.tar.gz

SPI Flashツールを展開およびインストールします:

# tar -xvf spi-flash-tools*.tar.gz

注記:オリジナルのtarファイルを含まないディレクトリーへすべてのファイルを展開します。

sysimage*ディレクトリーにはあらかじめ構成された2つのlayout.confファイルが含まれます:1つはリリース・ビルド向け、もう1つはデバッグ・ビルド向けです。どちらの種類をビルドするかに依存して、sysimage.CP-8M-debugあるいはsysimage.CP-8M-releaseディレクトリーのいずれかにイメージを作成します。

layout.confファイルはボード上に書き込む、最終的なFlash.binファイルに、様々なコンポーネントをどのように含むのかを定義します。layout.confは、関連するアドレス・オフセット、ファイル名、およびパラメーターを含む、いくつかの[sections]で構成されています。それぞれのセクションは有効なファイルを参照します。したがって、パスを更新するか、有効なファイルへのシンボリック・リンクを作成することが必要です。

シンボリック・リンクを作成するスクリプトが供給されています。以下のようにスクリプトを実行します:

# ./sysimage*/create-symlinks.sh

ホワイトスペースがlayout.confファイルに定義された値の周りに存在しないことを確認してください。

注記:Intel Galileo Boardを使用しているのであれば、.capファイルを正しく生成するためにlayout.confファイル内の"[Ramdisk]"セクションのimage-spi-clanton.cpio.lzmaimage-spi-galileo-clanton.cpio.lzmaへと変更する必要があるでしょう。

適切なlayout.confを作成してから、SPI FlashツールのMakefileを実行します:

# ../../spi-flash-tools*/Makefile

このビルドの出力はカプセル・ファイル(*.cap)と他の必要なファイルで、(ビルドした対象のイメージに依存して)sysimage.CP-8M-debugまたはsysimage.CP-8M-releaseディレクトリーのいずれかに置かれます。カプセル・ファイルはQuarkベースのボードがブートするために必要な、BIOS※8、ブートローダー、そして圧縮済みのLinuxランタイム・システムを含んでいます。ボード上のSPI Flashへ書き込むために、このドキュメントで後述するカプセル更新メカニズムを使用します。ビルド・プロセスでは、さらにボード固有のリカバリー・カプセルを作成します。リカバリー・カプセルについての詳細は、Intelの担当者にお尋ねください。

注記:同じビルド・プロセスで同じイメージ・ファイルをセキュアおよび非セキュアのボードSKUの両方で用いますが、しかし、セキュアSKUではいつカプセルで更新を行うことができるかということに対する、ある制限があります。セキュアSKUのボード(工業/エネルギーおよび輸送向けのリファレンス・デザイン)に適用するのであれば、Linux*ランタイム・システムを使用してボードの更新を行う必要がありますセクション 9.2)。

シリアル・インターフェースを使用してボードに書き込む方法については、セクション9あるいはセクション10のいずれかのFlashへの書き込み方法を参照してください。

このビルドの出力はFlash.binファイルです。続いてセクション8、その後セクション10を実行します。

8. プラットフォーム・データ・ファイルの定義

注記:前のセクションで*.capファイルを作成した場合は、プラットフォーム・データ・ファイルは必要ではありません。また、このセクションを飛ばすことができます。

プラットフォーム・データは、SPI Flashに置かれるパーツ固有のユニークなデータです。プラットフォーム・データは、ボードに書き込まれるすべてのFlash.binイメージに対して、個々のパッチを充てるために使用します。データ・パッチ・スクリプトは、このリリースが提供します。

プラットフォーム・データ・パッチ・スクリプトはSPI Flashツールのアーカイブに含まれています。スクリプトを実行する前に、新しいターミナル・セッションを開始し、MACアドレス、プラットフォーム・タイプおよびMRCパラメーターのようなプラットフォーム固有なデータを含めるためにplatform-data/platform-data.iniを編集します。

リファレンス・プラットフォームにおいては、プログラムされたMACアドレスが製品ラベル上に印刷されています。

注記:Intel Quark SoC X1000は2つのMACを含んでおり、(Galileoのような)1つのEthernetポートのみが存在するボードであっても、platform.iniファイルの中でそれぞれ1つのアドレスを構成済みです。Galileoにおいては、MAC 0が外に接続された唯一のMACですが、しかし、さらにplatform.iniファイル中にはダミーの有効なUNICAST MACアドレスを備えたMAC 1を構成しなければなりません。ファイル中のデフォルトMACアドレスの値は無効です。あなたが有効なMACアドレスを設定しなければ、次のエラー・メッセージを返します:

HALT: Multicast Mac Address configured for Ioh MAC

Galileo / Kips Bay Fab Dにおける例を以下に示します(推奨する値はボールドテキストで示します):

[Platform Type]
id=1
desc=PlatformID
data.type=hex.uint16
# ClantonPeak 2, KipsBay 3, CrossHill 4, ClantonHill 5, KipsBay-fabD 6
data.value=6
# WARNING: the MRC parameters MUST match the platformID used above
[Mrc Params]
id=6
ver=1
desc=MrcParams
data.type=file
#data.value=MRC/clantonpeak.v1.bin
#data.value=MRC/kipsbay.v1.bin
#data.value=MRC/crosshill.v1.bin
#data.value=MRC/clantonhill.v1.bin
data.value=MRC/kipsbay-fabD.v1.bin
[MAC address 0]
id=3
desc=1st MAC
data.type=hex.string
data.value=001320FDF4F2 #該当デバイス用のユニークなMACアドレスに置き換える
[MAC address 1]
id=4
desc=2nd MAC
data.type=hex.string
data.value=02FFFFFFFF01

続いて、次に示すスクリプトを実行します:

# cd spi-flash-tools/platform-data/
# platform-data-patch.py -p sample-platform-data.ini \
-i ../../sysimage_*/sysimage.CP-8M-release/Flash-missingPDAT.bin
# cd -

これによって、ボード上に書き込むFlash+PlatformData.binファイルが作成されます。

DediProgを使用してボードに書き込むのであれば、セクション10まで飛ばしてください。

9. シリアル・インターフェースを使用したボード上のFlashへの書き込み方法

依存関係: CapsuleApp.efiセクション3でビルド済み、場所はBuild/QuarkPlatform/<Config>/<Target>_<Tools>/FV/Applications/

BSPはEDKIIカプセルに基づくSPI Flashの内容を更新するためのメカニズムを提供します。カプセルはQuarkベースのボード(例えばIntel Galileo Board)を起動させるために必要なBIOS※9、ブートローダーおよび圧縮されたLinuxランタイム・システムを含んでいます。

カプセルによる更新メカニズムは、EDKIIシェル(セクション9.1)あるいはLinux*ランタイム・システム(セクション9.2)から起動することができます。両方のケースとも、システム上のroot権限が必要です。

セキュアSKUのボード(工業/エネルギーおよび輸送向けのリファレンス・デザイン)の場合には、Linux*ランタイム・システム(セクション9.2)を使用してボードの更新を行わなければなりません

9.1 UEFIシェルを使用したフラッシュの書き込み方法

UEFIシェルがセキュアSKUのボードでは使用できないため、この手順はセキュアSKUのボード(工業/エネルギーおよび輸送向けのリファレンス・デザイン)では実施することができません。代わりにセクション9.2による手順を参照してください。

以下の手順を実行します:

  1. セクション7で作成したファイルを使用します。
  2. microSDメモリーカード(またはUSBメモリー)にCapsuleApp.efiおよびFlash-missingPDAT.capをコピーして、それをボード上のスロットに挿入します。
  3. コンピューターとボードの間をシリアル・ケーブルで接続します。シリアル・コンソール・セッション(例えばPuTTY)をセットアップして、115200bpsでボードのCOMポートに接続します。
  4. 特殊文字を認識するためにシリアル・コンソール・セッションを構成します。例えば、PuTTYを使用している場合には、明示的に特殊文字を有効にしなければなりません。PuTTYのConfigurationオプションで、Terminal > Keyboardカテゴリーへ行き、Function keys and KeypadオプションにSCOを設定します。
  5. ボードの電源を入れます。F7を押してGRUBが開始される前にEFIシェルに入ります。
  6. シリアル・コンソールにブート・デバイスを選択するためのボックスが表示されます(以下のように)。UEFI Internal Shellを選択します。

    UEFI Select Box

    これに似た表示になります:

    UEFI Internal Shell

  7. 見た目がこれに似た見出しが出力されるのが確認できるでしょう:
    fs0 :HardDisk - Alias hd7b blk0

    これがあなたのmicroSDメモリーカードです。マウントのために以下のようにタイプします: fs0:

  8. 正しいバージョンのCapsuleApp.efiを使用していることを確認するために-vオプションを使用します。バージョン1.01またはそれ以降を使用しなければなりません。
  9. 以下のコマンドを実行します:
    CapsuleApp.efi Flash-missingPDAT.cap

    注記Flash-missingPDAT.capファイルのフル・ファイル名を入力しなければなりません。

    これに似た表示を確認することができます:

    SPI Flash Update

    CapsuleAppがあなたのSPI Flashイメージを更新します。この処理には約5分かかります。

    警告:電源を切ったり、あるいはこのプロセスを終了しようとしないでください!! プロンプトに戻るのを待ってください。そうしなければ、あなたのボードは機能しなくなるでしょう。

  10. アップデートが完了すると、ボードは自動的にリブートします。これに似た表示を確認することができます:

    Board Rebooted

9.2 Linux*ランタイム・システムを使用したフラッシュ書き込み方法

初期リリースのBSPソフトウェア(0.7.5および0.8.0)から更新するのであれば、リリースに特有のカーネル・モジュールを必要とします。0.7.5カーネル・モジュールを0.8.0 BSPにロードさせることはできないことに注意が必要です。また、同様に逆もできません。

  • セクション7で作成したファイルを使用します。
  • Flash-missingPDAT.capファイルをsysimageディレクトリーからmicroSDメモリーカード(またUSBメモリー)にコピーし、ボードに差し込みます。
  • リリース 0.7.5およびリリース 0.8.0の場合のみ:
    以下のコマンドを実行します:

    # insmod /tmp/<release>/efi_capsule_update.ko

    凡例:<release> = 0.7.5または0.8.0

  • リリース 0.9.0のみ:
    以下のコマンドを実行します:

    # modprobe efi_capsule_update
  • すべてのリリース
    以下のコマンドを実行します:

    # modprobe sdhci-pci
    # modprobe mmc-block
    # mkdir /lib/firmware
    # cd /media/mmcblk0p1/
    # cp Flash-missingPDAT.cap /lib/firmware/Flash-missingPDAT.cap
    # echo -n Flash-missingPDAT.cap > /sys/firmware/efi_capsule/capsule_path
    # echo 1 > /sys/firmware/efi_capsule/capsule_update
    # reboot

注記rebootコマンドを使用する必要があります; 電源ケーブルの挿抜では動作しません!※10

警告:既知の問題のため、古いsysfsエントリーを使用するのはリリース 0.7.5とリリース 0.8.0に限定されることを保証することが重要です:

/sys/firmware/efi/capsule_update
/sys/firmware/efi/capsule_path

リリース 0.9.0のためのカプセルによる更新方法では次の修正されたエントリーを使用します:

/sys/firmware/efi_capsule/capsule_update
/sys/firmware/efi_capsule/capsule_path

10. DediProgを使用したボード上のFlashへの書き込み方法

ボードに書き込むためには、DediProg SF100 SPI Flash Programmer(以下、SF100)と、これをサポートする書き込み用ソフトウェアを使用することができます。

注記:これらの手順では、セクション8で作成したFlash+PlatformData.binファイルを必要とします。

すでにソフトウェアがインストールされており、SF100がボードに接続されているなら新しいターミナル・セッションを開き、DediProgエンジニアリング・アプリケーションを起動します。※11

ボードへ書き込む手順は以下の通りです:

  1. もしもアプリケーションが起動するときにプロンプトが表示されるなら、メモリ・タイプを選択します。
  2. ファイル・アイコンを選択し、書き込みたい*.binファイルを選びます。
  3. 必要に応じてSPI Flashの内容を消すためにEraseボタンを選択します。
  4. ファイル・フォーマットはrawを選択します。
  5. Progアイコンを選択し、イメージをボードに書き込みます。
  6. 必要に応じて、イメージが正しく書き込まれたことを確認するためにVerifyアイコンを選択します。

注記:Intelはシステムをブートさせる前にSF100を取り外すことを推奨します。

11. microSDメモリーカードからボードを起動させる

microSDメモリーカードからボードを起動し、また継続してrootfsを有効にするためには、以下の手順に従ってください。また、USBメモリーからボードを起動するために、この手順を使用することもできます。

Galileoボードを使用しているなら、このセットアップによってボードへスケッチを保存することができるようになります。これにより、ボードの電源をオフにした後でも、繰り返してスケッチを実行できるようにできます。これは、さらに/sketchフォルダーとrootfsの持続性を有効にします。※12

依存関係:

  • セクション5におけるbitbake image-fullコマンドの実行(または、Intel Galileo Boardを使用する場合には、bitbake image-full-galileo
  • 使用するmicroSDメモリーカードは以下の条件を満たさなければなりません:
    • microSDメモリーカードはFATあるいはFAT32でフォーマットされていなければなりません。
    • microSDメモリーカードの容量は32GBあるいはこれよりも少なくなければなりません。
  1. セクション5のビルド処理が出力する./tmp/deploy/images/の中に存在する以下のカーネルおよびルート・ファイル・システムのファイルをmicroSDメモリーカードへコピーします:
    • boot (ディレクトリー)
    • bzImage
    • core-image-minimal-initramfs-clanton.cpio.gz
    • image-full-clanton.ext3 またはIntel Galileo Boardの場合は、
      image-full-galileo-clanton.ext3

    必ず以下に示したファイルおよび構造を備えたmicroSDメモリーカードをセットアップしてください:

    microSD Example

  2. microSDメモリーカードを挿入し、ボードの電源を入れます。

    注記:初回にボードを起動する際には数分かかることがあります。これは、初回起動時に暗号化キーを作成するSSHコンポーネントによる予期された挙動です。

トラブルシューティングのための助言:

microSDメモリーカード/USBメモリーからブートするために、SPI Flashに組み込まれているgrubインスタンスはmicroSDメモリーカード/USBメモリーの中のパーティション1からboot/grub/grub.confファイルを検索するようにハードコードされています。これは大部分のmicroSDメモリーカード/USBメモリーの出荷時フォーマットと互換性があります。デフォルトでは、UEFIファームウェアはmicroSDメモリーカード/USBメモリーからブートをしようとはしません。これはgrubによって扱われます。

使用するmicroSDメモリーカード/USBメモリーが製造された後に再度フォーマットされている場合には、そのデバイスからブートする際に問題が発生することがあります。最初に異なるメモリー・デバイスを使用してブートを行い、その問題が発生するかどうかを確かめてください。特定のmicroSDメモリーカードの問題であると判明したのであれば、SD Associationが公開しているツールを使用することで、出荷時のフォーマットに戻すことができます:
https://www.sdcard.org/downloads/formatter_4/
フラッシュ・メモリー・デバイスをフォーマットするために、通常のオペレーティング・システムのツールを使用することは推奨されていません。

12. 署名ファイル(オプション)

この手順はほとんどのユーザーにとってオプションです;これはSecure Bootにのみ必要とされます。そうでなければ、この手順を飛ばすことができます。

依存関係:libssl-dev

すべての配置されたファイルは、grubによって検証のための署名ファイルが要求されます。これにはカーネル、grub.confbzImageおよびcore-image-minimal-initramfs-clanton.cpio.gzが含まれます。

SPI Flashツールのパッケージには、セキュア・ブートのための署名を行うためのアセット署名ツールセットが含まれています。以下に示す手順で署名ツールのコンパイルを行い、続いて対象に署名をします。すべてのコマンド・ライン・オプションを含む、アセット署名ツールについての完全な詳細については「Intel® Quark SoC X1000 Secure Boot Programmer’s Reference Manual」を参照してください(附則A)。

新しいターミナルセッションを開いてから、以下のコマンドを実行します:

# cd spi-flash-tools
# make asset-signing-tool/sign

署名のためのツールをコンパイルすると、次の例で示すようにアセットに署名をすることができます:

# path/to/spi-flash-tools/asset-signing-tool/sign –i <input file> -s <svn> -x <svn index> -k <key file>

この例による出力は、<input file>と同じディレクトリーの中に署名バイナリーと呼ばれるファイルが<input file>.signedというファイル名で生成されます。

個別の署名ファイルを作成するために、-cをコマンド・ライン・オプションに渡すと<input file>.csbh<input file>と同じディレクトリーの中に出力されます。

コマンド・ライン・オプションの完全なリストを得るためには、オプションなしで署名ツールを実行してください。

署名ファイルはUSBメモリーあるいはmicroSDメモリーカードにコピーすることができ、以下の条件を満たす必要があります:

  • それぞれの.csbhは、署名されていないファイルと同じディレクトリーになければなりません。
  • grub.confファイルは/boot/grub/ディレクトリーに位置していなければなりません。
  • その他のファイルは、grub.confファイルに記述されるパスに置かれる限り、どのようなパスにでも置くことができます。

以下のスクリーンショットは、署名ファイルをの入ったmicroSDメモリーカードを示します:

  • 署名ファイルcore-image-minimal-initramfs-clanton.cpio.gz.csbhおよびbzImage.csbhをルート・ディレクトリーにコピーします。
  • grub.cbsh/boot/grub/ディレクトリーにコピーします。

Signing File Example-1

Signing File Example-2

13. Open OCD debuggerの有効化

OpenOCDデバッガーを使用する、完全な使用方法は「Source Level Debug using OpenOCD/GDB/Eclipse on Intel Quark SoC X1000 Application Note」に記載があります。附則Aを参照ください。

附則A. 関連ドキュメント

以下のドキュメントは、このリリースにおけるソフトウェアに関して、より多くの情報を提供します。

ドキュメント名 番号
Intel® Quark SoC X1000 Board Support Package (BSP) Build Guide
(このドキュメント)
329687
Intel® Quark SoC X1000 Software Release Notes 521235
Intel® Quark SoC X1000 BSP Programmer’s Reference Manual 521233
Intel® Quark SoC X1000 Secure Boot Programmer’s Reference Manual 521232
Clanton SoC UEFI Firmware Writer’s Guide 517434
Clanton SoC UEFI Firmware Specification Update 539371
Source Level Debug using OpenOCD/GDB/Eclipse on Intel® Quark SoC X1000
Application Note
https://communities.intel.com/docs/DOC-22203
330015
Intel® Quark SoC X1000 Datasheet
https://communities.intel.com/docs/DOC-21828
329676
Intel® Quark SoC X1000 Core Developer’s Manual
https://communities.intel.com/docs/DOC-21826
329679
Intel® Quark SoC X1000 Core Hardware Reference Manual
https://communities.intel.com/docs/DOC-21825
329678

改定履歴※13

日付 詳細
2014年1月20日 004 以下のものを含む、ソフトウェア・リリース 0.9.0用の全般的な更新:
3. EDKIIファームウェアのビルド」の追加。
9.2 Linux*ランタイム・システムを使用した書き込み方法」の追加。
12. 署名ファイル(オプション)」の更新。
「Open OCD debuggerの有効化」の削除。
付則A. 関連ドキュメント」の追加。
2013年11月15日 003 セクション2. ソフトウェアのダウンロード」にCapsuleApp.efiを追加。
2013年11月07日 002 以下のものを含む、ソフトウェア・リリース 0.8.0用の一般的な更新:
サポートしているボードをハードウェアのリストに追加。
セクション6:SPI Flashツールのパスをclanton_peak_EDK2からQuark_EDKIIへ変更。
「署名ファイル(オプション)」セクションをドキュメントの後方へ移動。
2013年10月15日 001 ソフトウェア・バージョン 0.7.5用の初版

訳注:以下、Intelによる法的文書のため原書のままとします※14

INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR
INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT.
A "Mission Critical Application" is any application in which failure of the Intel Product could result, directly or indirectly, in personal injury or death. SHOULD YOU PURCHASE OR USE INTEL'S PRODUCTS FOR ANY SUCH MISSION CRITICAL APPLICATION, YOU SHALL INDEMNIFY AND HOLD INTEL AND ITS SUBSIDIARIES, SUBCONTRACTORS AND AFFILIATES, AND THE DIRECTORS, OFFICERS, AND EMPLOYEES OF EACH, HARMLESS AGAINST ALL CLAIMS COSTS, DAMAGES, AND EXPENSES AND REASONABLE ATTORNEYS' FEES ARISING OUT OF, DIRECTLY OR INDIRECTLY, ANY CLAIM OF PRODUCT LIABILITY, PERSONAL INJURY, OR DEATH ARISING IN ANY WAY OUT OF SUCH MISSION CRITICAL APPLICATION, WHETHER OR NOT INTEL OR ITS SUBCONTRACTOR WAS NEGLIGENT IN THE DESIGN, MANUFACTURE, OR WARNING OF THE INTEL PRODUCT OR ANY OF ITS PARTS.

Intel may make changes to specifications and product descriptions at any time, without notice. Designers must not rely on the absence or characteristics of any features or instructions marked "reserved" or "undefined". Intel reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them. The information here is subject to change without notice. Do not finalize a design with this information.

The products described in this document may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are available on request.

Contact your local Intel sales office or your distributor to obtain the latest specifications and before placing your product order.

Copies of documents which have an order number and are referenced in this document, or other Intel literature, may be obtained by calling 1-800-548-4725, or go to: http://www.intel.com/design/literature.htm

Intel and the Intel logo are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

*Other names and brands may be claimed as the property of others.

Copyright © 2014, Intel Corporation. All rights reserved.


まとめ

以前のドキュメントと比較してみるとかなり変わっているということがお分かりいただけると思います。また、リリース・ノートによるとかなりいろいろと修正されているので、新しいBSPを使用する価値はかなりあるかと思います。

今後、対象のドキュメントが更新されることがあれば、できるだけついていきたいと思います。保証はできませんが...。

日本語資料 改定履歴

2014年2月4日 初版


  • 有効にしたい場合は原書をご確認ください。
  • インテル株式会社による表現が「Memory」に対して「メモリー」となっていることに倣っています。
  • SDアソシエーションがSDメモリーカード関連の商標を管理する主体であることを考慮に入れ、同団体の表現をそのまま使用しています。
  • インテル株式会社による表現がそうなっているので、それに合わせています。ただし、前述の「microSDメモリーカード」に限り、この原則に従いません。
  • 質問者の技術レベルに応じて必要な回答を用意するのは、非常に高いスキルと多くの時間を必要とするものです。私はこれらのサービスが可能な状態にはありません。
  • クロス・コンパイルのための設定による通常環境に対する影響を「クロス汚染」と表現しています。
  • スクリプトを実行したセッションの環境を大幅に変更することになるため、常に新しいセッションを開始し、その中で作業をすることにより、他への影響を最小限にすることができるということを説明しています。
  • UEFIのことをBIOSと誤記しているものです。EDKIIはUEFIを構成するもので、BIOSではありません(BIOSが必要な場合には別プロジェクトのSeaBIOSを持ってくるのがセオリーです)。いわゆる自作PC系でよくみかけるのと同じ記述上の誤りをしているわけです。
  • UEFIの意味でBIOSと記述されており、正しくはUEFIです。
  • Intel Galileo BoardなどのSKU4 (Non-Secure) SoC搭載ボードにおいて、正常にrebootコマンドが動作しないことがあります。このような症状が出る場合には、対応方法を記載したFAQを参照ください。
  • Galileo / Kips Bay Fab Dならば基板右上、Kips Bay Fab Cならば基板左下に、それぞれ接続用のピンヘッダーがあります。

    Galileo / Kips bay Fab Dにおけるピンヘッダーの配置を以下に示します(Kips Bay Fab Cでは180度回転しています):

      5:LSPI_MISO_R(DO) 3:LSPI_CS_N(CS_N) 1:VCC
    8:NC 6:LSPI_MOSI(DI) 4:LSPI_SCK(CLK) 2:GND

    ※Galileoの回路図から“さかきけい”が独自に調べた結果のため、間違っていたらすみません。

  • /sketchフォルダーとrootfsが揮発しなくなる(消えなくなる)ということです。
  • 原書の改定履歴です。
  • 私の意訳では法的な文書の内容を正確に伝えることはできませんので、このような対応となります。ご了承ください。
このエントリーをはてなブックマークに追加