本章では、Armadillo-840のフラッシュメモリに書き込まれているイメージファイルを更新する手順について説明します。
フラッシュメモリの書き換え方法には、大きく分けて以下の2種類の方法があります。
表12.1 フラッシュメモリの書き換え方法
方法 | 特徴 |
---|
netflashを使用する |
|
ダウンローダーを使用する |
|
TFTPを使用する |
|
フラッシュメモリを書き換えるためには、Linuxまたはブートローダーが起動している必要があります。フラッシュメモリに書き込まれているブートローダーが起動しない状態になってしまった場合は、16章SDブートの活用を参照してSDカードからソフトウェアを起動させてください。
| |
---|
ダウンローダーを使用してユーザーランドイメージなどサイズの大きなイメージファイルを書き換えると非常に時間がかかります。これは、イメージファイルをArmadilloに転送する際にシリアルの転送速度がボトルネックとなるためです。サイズの大きなイメージファイルを書き換える場合はnetflashまたはTFTPを使用する方法を推奨します。
|
12.1. フラッシュメモリのパーティションについて
フラッシュメモリの書き換えは、パーティション毎に行います。パーティションは"リージョン"とも呼ばれます。
各パーティションのサイズはフラッシュメモリ内には保存されていません。ブートローダーとLinuxカーネルそれぞれが同じパーティションテーブルを保持することにより、一意的に扱うことができるようになっています。
各パーティションは、書き込みを制限することが可能です。書き込みを制限する理由は、誤動作や予期せぬトラブルにより、フラッシュメモリ上のデータが不意に破壊または消去されることを防ぐためです。
読み込みは、常時可能です。読み込みに制限を付けることはできません。
各パーティションのデフォルト状態での書き込み制限の有無と、対応するイメージファイル名を表12.2「パーティションのデフォルト状態での書き込み制限の有無と対応するイメージファイル名」に示します。
表12.2 パーティションのデフォルト状態での書き込み制限の有無と対応するイメージファイル名
パーティション | 書き込み制限 | イメージファイル名 | 備考 |
---|
bootloader | あり | loader-armadillo840-nor-[version] .bin | ブートローダーイメージを配置するパーティションです。 |
config | なし | なし | ユーザーランドアプリケーション"flatfsd"がFlat file-system(フラッシュメモリ向けファイルシステム)を構築するパーティションです。使用方法については7章コンフィグ領域 − 設定ファイルの保存領域を参照してください。 |
license | あり | なし | 有償ミドルウェアなどのライセンスファイルを配置するパーティションです。 |
firmware | あり | squashfs-a840-firmware-[version] .img | 有償ミドルウェアなどのファームウェアを配置するパーティションです。 |
kernel | なし | linux-a840-[version] .bin.gz | Linuxカーネルイメージを配置するパーティションです。 |
userland | なし | romfs-a840-[version] .img.gz | ユーザーランドイメージを配置するパーティションです。 |
| |
---|
licenseパーティションにはボードごとに固有なイメージが出荷時に書き込まれています。本パーティションを書き換えてライセンスファイルが消えてしまった場合、AVコーデックミドルウェアを使用できなくなります。特別な理由がない限り、licenseパーティションは書き換えないでください。万一、ライセンスファイルが消えてしまった場合、弊社営業部へご相談ください。
|
| |
---|
工場出荷状態でフラッシュメモリに書き込まれているイメージファイルは、最新版ではない可能性があります。最新版のブートローダー、LinuxカーネルおよびユーザーランドイメージファイルはArmadilloサイトから、ファームウェアイメージファイルはユーザーズサイトからダウンロード可能です。最新版のイメージファイルに書き換えてからのご使用を推奨します。
|
ダウンローダーでは、書き込みが制限されているパーティションを"ロック(locked)されている"と呼びます。このパーティションを強制的に書き換える場合は、"--force-locked"というオプションを付けます。他のオプションについては、「ダウンローダーを使用してフラッシュメモリを書き換える」を参照してください。
Linuxが動いている場合、パーティションの書き込み制限をコマンドで外すことが可能です。Sysfsの MTDクラスディレクトリ以下にある"ro"というファイルに0を書き込むことで制限を外すことが可能です。逆に1を書き込めば、パーティションへの書き込みを制限する事が可能です。
MTDクラスディレクトリとパーティションの対応については、表12.3「パーティションとMTDクラスディレクトリの対応」を参照してください。
表12.3 パーティションとMTDクラスディレクトリの対応
パーティション | MTDクラスディレクトリ |
---|
bootloader | /sys/class/mtd/mtd0 |
config | /sys/class/mtd/mtd1 |
license | /sys/class/mtd/mtd2 |
firmware | /sys/class/mtd/mtd3 |
kernel | /sys/class/mtd/mtd4 |
userland | /sys/class/mtd/mtd5 |
以降の説明では、任意のパーティションを示すMTDクラスディレクトリを"/sys/class/mtd/[MTD]"のように表記します。
書き込み制限を外すには、roファイルに0を書き込みます。
書き込みを制限するには、roファイルに1を書き込みます。
12.2. netflashを使用してフラッシュメモリを書き換える
Linux が動作している状態では、Linux アプリケーションの netflash を利用することでフラッシュメモリを書き換えることができます。ここでは、netflash を利用して次に示す場所に存在するイメージファイルをフラッシュメモリに書き込む手順を紹介します。
Webサーバー上のイメージファイル
ストレージ上のイメージファイル
netflashコマンドのヘルプは次の通りです。
"-r"オプションに指定するフラッシュメモリのデバイスファイルとパーティションの対応を次に示します。
表12.4 フラッシュメモリのパーティションとデバイスファイル
パーティション | デバイスファイル |
---|
bootloader[] | /dev/flash/bootloader |
config | /dev/flash/config |
license[] | /dev/flash/license |
firmware[] | /dev/flash/firmware |
kernel | /dev/flash/kernel |
userland | /dev/flash/userland |
12.2.1. Webサーバー上のイメージファイルを書き込む
ATDEでは、標準でWebサーバー(lighttpd)が動作しており、/var/www/
ディレクトリ以下に置かれたファイルはネットワーク経由でダウンロードすることができます。netflash は、HTTPによるファイルのダウンロードをサポートしています。
ここでは、ATDEとネットワーク通信ができることを前提に、ATDEからイメージファイルをダウンロードしてkernelパーティションに書き込む手順を説明します。
手順12.1 Webサーバー上のイメージファイルを書き込む
ATDEの/var/www/
ディレクトリにLinuxカーネルイメージファイルを置きます。
Webサーバー上のイメージファイルのURL(http://[ATDEのIPアドレス]/linux-a840-[version]
.bin.gz)を指定して netflashコマンドを実行します。次の例では、ATDEのIPアドレスが「192.168.10.1」であることを想定しています。
Armadilloのプロンプトが表示されるとフラッシュメモリの書き換えは完了です。次回起動時から書き換えたLinuxカーネルイメージで起動します。
12.2.2. ストレージ上のイメージファイルを書き込む
ストレージ(SDカードやUSBメモリ)をマウントすることで、ストレージに保存されたイメージファイルをフラッシュメモリに書き込むことができます。
ここでは SDカードに保存されているイメージファイルを userland パーティションに書き込む手順を説明します。
手順12.2 SDカード上のイメージファイルを書き込む
SDカードを/mnt/
ディレクトリにリードオンリーでマウントします。
SDカード上のイメージファイルのパス(/mnt/romfs-a840-[version]
.img.gz)を指定して netflashコマンドを実行します。
Armadilloのプロンプトが表示されるとフラッシュメモリの書き換えは完了です。次回起動時から書き換えたユーザーランドイメージで起動します。
SDカードをアンマウントします。
12.3. ダウンローダーを使用してフラッシュメモリを書き換える
Linuxを起動できない場合やブートローダーを更新する場合は、ダウンローダー(hermit)を使用してフラッシュメモリを書き換える必要があります。hermitはATDEに標準でインストールされています。
hermitはArmadilloのブートローダーと協調動作を行いフラッシュメモリを書き換えることができます。hermitとブートローダー間の通信には、シリアル[]が使用されます。
hermitのヘルプは次の通りです。
ここでは、bootloaderパーティションを書き換える手順について説明します。
手順12.3 ダウンローダーを使用して書き換える
ブートローダーが保守モードで起動するように設定します。設定方法については、「ブートローダー起動モード」を参照してください。
Armadilloが保守モードで起動したことを確認するために、ATDEでminicomを起動しておきます。デバイスファイル名(/dev/ttyUSB0)は、ご使用の環境により ttyUSB1やttyS0、ttyS1 などになる場合があります。Armadilloに接続されているシリアルポートのデバイスファイルを指定してください。
Armadilloに電源を投入します。ブートローダーが保守モードで起動すると、次のように保守モードのプロンプトが表示されます。
minicomを終了させシリアルポート(/dev/ttyUSB0)を開放します。
bootloaderパーティションと書き込むイメージファイル(loader-armadillo840-nor-[version].bin)を指定してhermitコマンドを実行します。bootloaderパーティションを更新する場合は、必ず"--force-locked"オプションを指定する必要があります。
| |
---|
書き込みが制限されているパーティションを書き換える場合、"--force-locked"オプションを指定する必要があります。
|
ATDEのプロンプトが表示されるとフラッシュメモリの書き換えは完了です。次回起動時から書き換えたブートローダーイメージで起動します。
12.4. TFTPを使用してフラッシュメモリを書き換える
Hermit-At ブートローダーの tftpdl 機能を使用することで、Linuxが動いていない時でもフラッシュメモリを書き換えることができます。
tftpdl 機能は、所属するネットワークにある TFTP サーバーが公開しているファイルをダウンロードして、自分自身のフラッシュメモリを書き換えることができる機能です。
| |
---|
ATDE5では、標準で TFTP サーバー (atftpd) が動作しています。/var/lib/tftpboot/ ディレクトリにファイルを置くことで、TFTP によるアクセスが可能になります。 |
tftpdl 機能を使用するには、ターゲットとなる Armadillo のジャンパを設定し、保守モードで起動してください。
作業用 PC のシリアル通信ソフトウェアを使用して、コマンドを入力します。図12.5「tftpdl コマンド例」は、Armadillo の IP アドレスを 192.168.10.10 に設定し、IP アドレスが 192.168.10.1 の TFTP サーバー上にある、romfs.img.gz を userland パーティションにを書き込む例です。
書き込み対象となるパーティションを指定するオプションと、パーティションの対応を次に示します。
表12.5 パーティションとオプションの対応
パーティション | オプション |
---|
bootloader | --bootloader |
config | --config |
license | --license |
firmware | --firmware |
kernel | --kernel |
userland | --userland |
| |
---|
tftpdlは、TFTPプロトコルを使用してTFTPサーバーからイメージファイルをダウンロードします。デフォルトのデータブロックサイズが512Byteであるため、イメージファイルの最大サイズがブロック番号の桁溢れが発生しない33554431Byte(32MByte - 1Byte)に制限されます。これよりもサイズの大きいイメージファイルをダウンロードする場合は、"--blksize"オプションを利用してデータブロックサイズを増やす必要があります。
"--blksize"オプションには、IPフラグメンテーションが起きないデータブロックサイズを指定する必要があります。
|
12.5. ブートローダーが起動しなくなった場合の復旧作業
フラッシュメモリのbootloaderパーティションを誤ったイメージファイルで書き換えたり、書き換え中にArmadilloの電源を切断してしまった場合、ブートローダーが起動しなくなる場合があります。フラッシュメモリのブートローダーが起動しなくなった場合は、SDブートを利用して復旧する必要があります。
ブートローダーの復旧手順を次に示します。
手順12.4 ブートローダーの復旧
SDブートを行うためのブートディスクを作成します。ブートディスクの作成方法については16章SDブートの活用を参照してください。
Armadilloにブートディスクを接続し、ブートローダーがSDカードから起動し、且つ保守モードとなるように設定します。Armadillo-840のJP1およびJP2をショートに設定してください。
Armadilloが保守モードで起動したことを確認するために、ATDEでminicomを起動しておきます。デバイスファイル名(/dev/ttyUSB0)は、ご使用の環境により ttyUSB1やttyS0、ttyS1 などになる場合があります。Armadilloに接続されているシリアルポートのデバイスファイルを指定してください。
Armadilloに電源を投入します。ブートローダーが保守モードで起動すると、次のように保守モードのプロンプトが表示されます。
minicomを終了させシリアルポート(/dev/ttyUSB0)を開放します。
bootloaderパーティションと書き込むイメージファイル(loader-armadillo840-nor-[version].bin)を指定してhermitコマンドを実行します。bootloaderパーティションを更新する場合は、必ず"--force-locked"オプションを指定する必要があります。
ATDEのプロンプトが表示されるとフラッシュメモリの書き換えは完了です。次回起動時から書き換えたブートローダーイメージで起動します。