9.3.1. SPIフラッシュメモリへの書き込み方法
SPIフラッシュメモリへの書き込み方法について説明します。SPIフラッシュメモリの書き換え方法には、大きく分けて次に示す2種類の方法があります。
表9.2 フラッシュメモリの書き換え方法
方法 | 特徴 |
---|
ダウンローダーを使用する |
|
TFTPを使用する |
|
SPIフラッシュメモリを書き換えるためには、Hermit-Atが起動している必要があります。SPIフラッシュメモリに書き込まれているHermit-Atが起動しない状態になってしまった場合は、10章SDブートの活用を参照してSDカードからソフトウェアを起動させてください。
9.3.1.1. フラッシュメモリのパーティションについて
フラッシュメモリの書き換えは、パーティション毎に行います。パーティションは"リージョン"とも呼ばれます。
各パーティションのサイズはフラッシュメモリ内には保存されていません。IPL、Hermit-AtとLinuxカーネルそれぞれが同じパーティションテーブルを保持することにより、一意的に扱うことができるようになっています。
各パーティションは、書き込みを制限することが可能です。書き込みを制限する理由は、誤動作や予期せぬトラブルにより、フラッシュメモリ上のデータが不意に破壊または消去されることを防ぐためです。
読み込みは、常時可能です。読み込みに制限を付けることはできません。
各パーティションのデフォルト状態での書き込み制限の有無と、対応するイメージファイル名を次に示します。
表9.3 パーティションのデフォルト状態での書き込み制限の有無と対応するイメージファイル名
パーティション | 書き込み制限 | イメージファイル名 | 備考 |
---|
ipl | あり | ipl-ae1500-[version] .bin | IPLブートローダーイメージを配置するパーティションです。 |
bootloader | あり | loader-armadilloeva1500-[version] .bin | Hermit-Atブートローダーイメージを配置するパーティションです。 |
fdt | なし | r8a7791-armadilloeva1500-[version] .dtb.gz | DTBを配置するパーティションです。 |
firmware | あり | squashfs-ae1500-firmware-[version] .img | 有償ミドルウェアなどのファームウェアを配置するパーティションです。 |
| |
---|
2014年7月現在では、firmwareパーティションのファームウェアを使用することはできません。
|
| |
---|
工場出荷状態でフラッシュメモリに書き込まれているイメージファイルは、最新版ではない可能性があります。最新版のHermit-Atブートローダー、DTB はArmadilloサイトから、ファームウェアイメージファイルはユーザーズサイトからダウンロード可能です。最新版のイメージファイルに書き換えてからのご使用を推奨します。
|
ダウンローダーでは、書き込みが制限されているパーティションを"ロック(locked)されている"と呼びます。このパーティションを強制的に書き換える場合は、"--force-locked"というオプションを付けます。他のオプションについては、「ダウンローダーを使用してSPIフラッシュメモリを書き換える」を参照してください。
Linuxが動いている場合、パーティションの書き込み制限をコマンドで外すことが可能です。Sysfsの MTDクラスディレクトリ以下にある"ro"というファイルに0を書き込むことで制限を外すことが可能です。逆に1を書き込めば、パーティションへの書き込みを制限する事が可能です。
MTDクラスディレクトリとパーティションの対応は次の通りです。
表9.4 パーティションとMTDクラスディレクトリの対応
パーティション | MTDクラスディレクトリ |
---|
ipl | /sys/class/mtd/mtd0 |
bootloader | /sys/class/mtd/mtd1 |
fdt | /sys/class/mtd/mtd2 |
firmware | /sys/class/mtd/mtd3 |
以降の説明では、任意のパーティションを示すMTDクラスディレクトリを"/sys/class/mtd/[MTD]"のように表記します。
書き込み制限を外すには、roファイルに0を書き込みます。
書き込みを制限するには、roファイルに1を書き込みます。
9.3.1.2. ダウンローダーを使用してSPIフラッシュメモリを書き換える
Armadilloをネットワークに接続できない場合は、ダウンローダー(hermit)を使用してSPIフラッシュメモリを書き換える必要があります。hermitはATDEに標準でインストールされています。
hermitはArmadilloで動作しているHermit-Atと協調動作を行いSPIフラッシュメモリを書き換えることができます。hermitとArmadilloで動作しているHermit-At間の通信には、シリアル[]が使用されます。
hermitのヘルプは次のとおりです。
ここでは、bootloaderパーティションを書き換える手順について説明します。
手順9.4 ダウンローダーを使用して書き換える
Hermit-Atブートローダーが保守モードで起動するように設定します。設定方法については、「Hermit-Atの起動モード」を参照してください。
Armadilloが保守モードで起動したことを確認するために、ATDEでminicomを起動しておきます。デバイスファイル名(/dev/ttyUSB0)は、ご使用の環境により ttyUSB1やttyS0、ttyS1 などになる場合があります。Armadilloに接続されているシリアルポートのデバイスファイルを指定してください。
Armadilloに電源を投入します。Hermit-Atブートローダーが保守モードで起動すると、次のように保守モードのプロンプトが表示されます。
minicomを終了させシリアルポート(/dev/ttyUSB0)を開放します。
bootloaderパーティションと書き込むイメージファイル(loader-armadilloeva1500-[version].bin)を指定してhermitコマンドを実行します。bootloaderパーティションを更新する場合は、必ず"--force-locked"オプションを指定する必要があります。
| |
---|
書き込みが制限されているパーティションを書き換える場合、"--force-locked"オプションを指定する必要があります。
|
ATDEのプロンプトが表示されるとSPIフラッシュメモリの書き換えは完了です。次回起動時から書き換えたHermit-Atブートローダーイメージで起動します。
9.3.1.3. TFTPを使用してSPIフラッシュメモリを書き換える
Hermit-At ブートローダーの tftpdl 機能を使用することで、ネットワーク経由で、SPIフラッシュメモリを書き換えることができます。
tftpdl 機能は、所属するネットワークにある TFTP サーバーが公開しているファイルをダウンロードして、自分自身のSPIフラッシュメモリを書き換えることができる機能です。
| |
---|
ATDE5では、標準で TFTP サーバー (atftpd) が動作しています。/var/lib/tftpboot/ ディレクトリにファイルを置くことで、TFTP によるアクセスが可能になります。 |
tftpdl 機能を使用するには、Hermit-Atを保守モードで起動してください。
作業用 PC のシリアル通信ソフトウェアを使用して、コマンドを入力します。図9.4「tftpdl コマンド例」は、Armadillo の IP アドレスを 192.168.10.10 に設定し、IP アドレスが 192.168.10.1 の TFTP サーバー上にある、r8a7791-armadilloeva1500.dtb.gz を fdtパーティションにを書き込む例です。
書き込み対象となるパーティションを指定するオプションと、パーティションの対応を次に示します。
表9.5 パーティションとオプションの対応
パーティション | オプション |
---|
bootloader | --bootloader |
fdt | --fdt |
| |
---|
tftpdlは、TFTPプロトコルを使用してTFTPサーバーからイメージファイルをダウンロードします。デフォルトのデータブロックサイズが512Byteであるため、イメージファイルの最大サイズがブロック番号の桁溢れが発生しない33554431Byte(32MByte - 1Byte)に制限されます。これよりもサイズの大きいイメージファイルをダウンロードする場合は、"--blksize"オプションを利用してデータブロックサイズを増やす必要があります。
"--blksize"オプションには、IPフラグメンテーションが起きないデータブロックサイズを指定する必要があります。
|
カーネルイメージを、eMMCにインストールします。事前に10章SDブートの活用を参照して、Debian GNU/Linux を SD ブートしている必要があります。
「Linuxカーネルをビルドする」で作成したカーネルイメージファイルはカレントディレクトリ以下にあることを想定しています。