第5章 フラッシュメモリの書き換え方法

Armadilloのオンボードフラッシュメモリを書き換えることで、ソフトウェアの機能を変更することができます。

[警告]

何らかの原因により「フラッシュメモリの書き換え」に失敗した場合、ソフトウェアが正常に起動しなくなる場合があります。書き換え中は以下の点に注意してください。

  • Armadilloの電源を切断しない

  • Armadilloと作業用PCを接続しているシリアルケーブルとLANケーブルを外さない

5.1. ダウンローダのインストール

作業用PCにダウンローダをインストールします。

ダウンローダの種類には、表5.1「ダウンローダ一覧」のようなものがあります。

表5.1 ダウンローダ一覧

ダウンローダOSタイプ説明
hermit-atLinuxLinux用のCUIアプリケーションです。
shoehorn-atLinuxLinux用のCUIアプリケーションです。
hermit-at-winWindowsWindows用のGUIアプリケーションです。

[ティップ]

ATDE(Atmark Techno Development Environment)を利用する場合、ダウンローダパッケージはすでにインストールされているので、インストールする必要はありません。

5.1.1. 作業用PCがLinuxの場合

付属CDのdownloader/debディレクトリよりパッケージファイルを用意し、インストールします。必ずrootユーザで行ってください。

[PC ~]# dpkg --install hermit-at_[version]_i386.deb
[PC ~]# dpkg --install shoehorn-at_[version]_i386.deb

図5.1 ダウンローダのインストール(Linux)


5.1.2. 作業用PCがWindowsの場合

付属CDのdownloader/win32/hermit-at-win_[version].zipを任意のフォルダに展開します。

5.2. フラッシュメモリの書き込み領域について

フラッシュメモリの書き込み先頭アドレスは、領域(リージョン)名で指定することができます。書き込み領域毎に指定するイメージファイルは、表5.2「リージョン名と対応するイメージファイル 」のようになります。

表5.2 リージョン名と対応するイメージファイル

製品領域名ファイル名
Armadillo-210bootloaderloader-armadillo2x0-[version].bin
kernellinux-a210-[version].bin.gz
userland

romfs-a210-recover-[version].img.gz

romfs-a210-base-[version].img.gz

Armadillo-220/230/240bootloaderloader-armadillo2x0-eth-[version].bin
kernellinux-a2x0-[version].bin.gz
userland

romfs-a2x0-recover-[version].img.gz

romfs-a2x0-base-[version].img.gz

Armadillo-9bootloaderloader-armadillo9-[version].bin
kernellinux-[version].bin.gz
userlandromfs-[version].img.gz
Armadillo-300iplipl-a300.bin(※書き換え不可)
bootloaderloader-armadillo-3x0-[version].bin
kernellinux-a300-[version].bin.gz
userlandromfs-a300-[version].img.gz
Armadillo-500bootloaderloader-armadillo5x0-[version].bin
kernellinux-a500-[version].bin.gz
userlandromfs-a500-[version].img.gz
Armadillo-500 FXbootloaderloader-armadillo5x0-fx-[version].bin
kernellinux-a500-fx-[version].bin.gz
userlandromfs-a500-fx-[version].img.gz

[ティップ]

一部製品のユーザーランドには、RecoverとBaseという2種類のイメージファイルが用意されています。Recoverイメージは、出荷状態でオンボードフラッシュメモリに書き込まれていて、各製品の特徴や性能を利用するアプリケーションが含まれています。Baseイメージは、開発のベースとなるように、基本的なアプリケーションやツールのみが含まれています。

5.3. Hermit-Atダウンローダを使用してフラッシュメモリを書き換える

ここでは、Hermit-Atダウンローダを使用してフラッシュメモリを書き換える手順について説明します。「ダウンローダのインストール」でインストールしたHermit-Atダウンローダを使用します。これは、Armadilloのブートローダーと協調動作を行い、作業用PCからArmadilloのフラッシュメモリを書き換えることができます。

5.3.1. 準備

「ジャンパピンの設定について」を参照し、Hermit-Atを起動してください。

Armadilloと接続している作業用PCのシリアルインターフェースが他のアプリケーションで使用されていないことを確認します。使用されている場合は、該当アプリケーションを終了するなどしてシリアルインターフェースを開放してください。

5.3.2. 作業用PCがLinuxの場合

図5.2「ダウンロードコマンド」のようにコマンドを実行します。

downloadはhermitのサブコマンドの一つです。--input-fileで指定されたファイルをターゲットボードに書き込む時に使用します。--regionは書き込み対象の領域を指定するオプションです。下記の例では、「kernel領域にlinux.bin.gzを書き込む」という命令になります。

[PC ~]$ hermit download --input-file linux.bin.gz --region kernel

図5.2 ダウンロードコマンド


シリアルインターフェースがttyS0以外の場合は、図5.3「ダウンロードコマンド(ポート指定) 」のように--portオプションを使用してポートを指定してください。

[PC ~]$ hermit download --input-file linux.bin.gz --region kernel --port ttyS1

図5.3 ダウンロードコマンド(ポート指定) [4]


bootloaderリージョンは、誤って書き換えることがないように簡易プロテクトされています。書き換える場合は、図5.4「ダウンロードコマンド(アンプロテクト)[4]」のように--force-lockedオプションを使用して、プロテクトの解除をしてください。

[PC ~]$ hermit download --input-file loader.bin --region bootloader --force-locked

図5.4 ダウンロードコマンド(アンプロテクト)[4]


[警告]

bootloaderリージョンに誤ったイメージを書き込んでしまった場合、オンボードフラッシュメモリからの起動ができなくなります。この場合は「ブートローダーを出荷状態に戻す」を参照してブートローダーを復旧してください。

5.3.3. 作業用PCがWindowsの場合

hermit-at-win.exeを実行します。図5.5「Hermit-At:Downloadウィンドウ」が表示されます。

Hermit-At:Downloadウィンドウ

図5.5 Hermit-At:Downloadウィンドウ


Armadilloと接続されているシリアルインターフェースを「Serial Port」に指定してください。ドロップダウンリストに表示されない場合は、直接ポートを入力してください。

Imageには書き込むファイルを指定してください。Regionには書き込み対象のリージョンを指定してください。allやbootloaderリージョンを指定する場合は、Force Lockedをチェックしてください。

すべて設定してから実行ボタンをクリックします。図5.6「Hermit-At:downloadダイアログ」が表示されます。

Hermit-At:downloadダイアログ

図5.6 Hermit-At:downloadダイアログ


ダウンロードの設定と進捗状況が表示されます。ダウンロードが完了するとダイアログはクローズされます。

5.4. tftpdlを使用してフラッシュメモリを書き換える

Armadilloのブートローダー機能のtftpdlを使用してフラッシュメモリを書き換えることができます。この機能は、所属するネットワークにあるTFTPサーバーが公開しているファイルをダウンロードしてフラッシュメモリを書き換えることができます。

「オンボードフラッシュメモリブート」を参照して、Armadilloの起動モードを保守モードに変更し再起動してください。

作業用PCのシリアル通信ソフトウェアを使用して、コマンドを入力します。図5.7「tftpdlコマンド例」は、ArmadilloのIPアドレスを192.168.10.10に設定し、IPアドレスが192.168.10.1のtftpサーバー上にある、linux.bin.gzをkernelリージョンにを書き込む例です。

hermit> tftpdl 192.168.10.10 192.168.10.1 --kernel=linux.bin.gz

図5.7 tftpdlコマンド例


実行すると、図5.8「tftpdlログ」のようにログが出力されます。「completed!!」と表示されたら書き換えが終了します。

hermit> tftpdl 192.168.10.10 192.168.10.1 --kernel=linux.bin.gz

Client: 192.168.10.10
Server: 192.168.10.1
Region(kernel): linux.bin.gz

initializing net-device...OK
Filename : linux.bin.gz
..........................................................................
..........................................................................
..................................
Filesize : 1841551

programing: kernel
###############

completed!!

図5.8 tftpdlログ


5.5. netflashを使用してフラッシュメモリを書き換える

Linuxアプリケーションのnetflashを使用してフラッシュメモリを書き換えることができます。netflashは、所属するネットワークにあるHTTPサーバーやFTPサーバーが公開しているファイルをダウンロードしてフラッシュメモリを書き換えることができます。

Armadilloにログインし、図5.9「netflashコマンド例」のようにコマンドを実行します。

[armadillo ~]# netflash -k -n -u -r /dev/flash/kernel [URL]

図5.9 netflashコマンド例


オプションの"-r [デバイスファイル名]"で書き込み対象のリージョンを指定しています。表5.3「リージョンとデバイスファイルの対応」を参照してください。その他のオプションについては、netflash -hで詳細を確認する事ができます。

表5.3 リージョンとデバイスファイルの対応

リージョンデバイスファイル
カーネル/dev/flash/kernel
ユーザランド/dev/flash/userland

5.6. ブートローダーを出荷状態に戻す

CPU のInternal ROM 機能のUART ブートモードを使用して、ブートローダーを出荷状態に戻すことができます。

5.6.1. 準備

Armadilloのジャンパを、表3.4「UARTブートモードジャンパー設定」のように設定してください。

Armadilloと接続している作業用PCのシリアルインターフェースが他のアプリケーションで使用されていないことを確認します。使用されている場合は、該当アプリケーションを終了するなどしてシリアルインターフェースを開放してください。

5.6.2. 作業用PCがLinuxの場合

図5.10「shoehornコマンド例」のようにコマンド[5]を実行してから、Armadilloに電源を投入し、起動させてください。

[PC ~]$ shoehorn --boot --target armadillo5x0
			--initrd /dev/null 
			--kernel /usr/lib/hermit/loader-armadillo5x0-boot.bin 
			--loader /usr/lib/shoehorn/shoehorn-armadillo5x0.bin 
			--initfile /usr/lib/shoehorn/shoehorn-armadillo5x0.init
			--postfile /usr/lib/shoehorn/shoehorn-armadillo5x0.post

図5.10 shoehornコマンド例


実行すると、図5.11「shoehornログ」のようにログが表示されます。

/usr/lib/shoehorn/shoehorn-armadillo5x0.bin: 1996 bytes (2048 bytes buffer)
/usr/lib/hermit/loader-armadillo5x0-boot.bin: 39772 bytes (39772 bytes buffer)
/dev/null: 0 bytes (0 bytes buffer)
Waiting for target - press Wakeup now.
Initializing target...
Writing SRAM loader...
Pinging loader
Initialising hardware:
- flushing cache/TLB
- Switching to 115200 baud
- Setting up DDR
Pinging loader
Detecting DRAM
- 32 bits wide
- start: 0x80000000 size: 0x04000000 last: 0x83ffffff
Total DRAM: 65536kB
Loading /usr/lib/hermit/loader-armadillo5x0-boot.bin:
- start: 0x83000000 size: 0x00009b5c last: 0x83009b5b
initrd_start is c0400000
Moving initrd_start to c0400000
Loading /dev/null:
- start: 0xc0400000 size: 0x00000000
Writing parameter area
- nr_pages (all banks): 4096
- rootdev: (RAMDISK_MAJOR, 0)
- pages_in_bank[0]: 2048
- pages_in_bank[1]: 2048
- initrd_start: 0xc0400000
- initrd_size: 0x0
- ramdisk_size: 0x0
- start: 0x80020000 size: 0x00000900 last: 0x800208ff
Pinging loader
Starting kernel at 0x83000000

図5.11 shoehornログ


shoehorn コマンドが成功すると、ターゲットの Armadillo 上で Hermit At ブートローダーの UART ブートモード版 (loader-armadillo5x0-boot-[version].bin) が動作している状態になります。以降の手順は、ジャンパの設定変更や電源の切断をせずにおこなう必要があります。

図5.12「ブートローダの書き込みコマンド例」のようにブートローダの書き込みを行ってください[6]

[PC ~]$ hermit erase --region bootloader download --input-file loader.bin
        --region bootloader --force-locked

図5.12 ブートローダの書き込みコマンド例


5.6.3. 作業用PCがWindowsの場合

hermit-at-win.exeを実行しShoehornボタンをクリックすると、図5.13「Hermit-At:Shoehornウィンドウ」が表示されます。

Hermit-At:Shoehornウィンドウ

図5.13 Hermit-At:Shoehornウィンドウ


Targetにarmadillo5x0を選択して実行ボタンをクリックします。

Hermit-At:shoehornダイアログ

図5.14 Hermit-At:shoehornダイアログ


ダイアログが表示されます。Armadilloに電源を投入して起動してください。ダウンロードするための準備が完了すると自動的にクローズされます。以降の手順は、ジャンパの設定変更や電源の切断をせずにおこなう必要があります。

ダウンロードをおこなう前に、一旦ブートローダリージョンを削除します。Eraseボタンをクリックすると、図5.15「Hermit-At Win32:Erase ウィンドウ」が表示されます。

[警告]

Eraseを実行するためには、Hermit-At Win32 v1.3.0 以降が必要です。Hermit-At Win32 v1.2.0 以前ではこの手順は適用できません。Eraseを実行しない場合でもダウンロードは可能ですが、setenvサブコマンドなどでフラッシュメモリに保存されたパラメータが削除されません。

Hermit-At Win32:Erase ウィンドウ

図5.15 Hermit-At Win32:Erase ウィンドウ


Regionにbootloaderリージョンを選択し、Force Lockedをチェックして実行ボタンをクリックします。ブートローダリージョンの削除中は、図5.16「Hermit-At Win32:Erase ダイアログ」が表示され、削除の設定と進捗状況を確認することができます。

Hermit-At Win32:Erase ダイアログ

図5.16 Hermit-At Win32:Erase ダイアログ


ブートローダリージョンの削除が完了すると、ダイアログはクローズされます。次にダウンロードをおこないます。Downloadボタンをクリックすると、図5.17「Hermit-At Win32:Download ウィンドウ(Erase後)」が表示されます。

Hermit-At Win32:Download ウィンドウ(Erase後)

図5.17 Hermit-At Win32:Download ウィンドウ(Erase後)


Imageにはブートローダイメージファイルを、Regionにはbootloaderを指定し、Force Lockedをチェックして実行ボタンをクリックします。ダウンロード中は、図5.18「Hermit-At Win32:Download ダイアログ(bootloader)」が表示され、ダウンロードの設定と進捗状況を確認することができます。

Hermit-At Win32:Download ダイアログ(bootloader)

図5.18 Hermit-At Win32:Download ダイアログ(bootloader)


ダウンロードが完了すると、ダイアログはクローズされます。

5.7. ブートローダーのパラメータを出荷状態に戻す

フラッシュメモリのbootloaderリージョンには、ブートローダーイメージの他にブートローダーのパラメータが保存されています。これは、Armadilloの再起動後も設定を有効にするためです。パラメータと初期設定の対応を、表5.4「ブートローダーのパラメータ」に示します。

表5.4 ブートローダーのパラメータ

パラメータ初期設定説明
Linuxカーネルパラメータ無しLinuxカーネル起動時にカーネルに渡すパラメータ
ブートデバイスフラッシュメモリLinuxカーネルを格納しているデバイスを指定する

ブートローダーのパラメータを出荷状態に戻すには、ターゲットとなる Armadillo のジャンパを設定し、保守モードで起動してください。

作業用PCのシリアル通信ソフトウェアを使用して、コマンドを入力します。Linuxカーネルパラメータを初期設定に戻すには、図5.19「Linuxカーネルパラメータを初期設定に戻す」のようにコマンドを実行してください。[7]

hermit> clearenv

図5.19 Linuxカーネルパラメータを初期設定に戻す


ブートデバイスを初期設定のフラッシュメモリに戻すには、図5.20「ブートデバイスを初期設定に戻す」のようにコマンドを入力してください。[7]

hermit> setbootdevice flash

図5.20 ブートデバイスを初期設定に戻す


5.8. ブートローダーの種類

Armadilloには複数のブートローダーが用意されています。ブートローダーの一覧は、「ブートローダーイメージのビルド」を参照してください。



[4] コマンドは1 行で入力します。

[5] 書面の都合上折り返して表記しています。通常は1行のコマンドとなります。

[6] 書面の都合上折り返して表記しています。実際にはコマンドは1 行で入力します。

[7] 「ブートローダーを出荷状態に戻す」の手順を実行すると、パラメータが初期化されますので、この手順は必要ありません。但し、Hermit-AT Win32 v1.2.0 以前のバージョンを使用した場合、自動ではパラメータが初期化されないため、本手順を実行する必要があります。