Armadillo-640(Debian):Armadillo-440/840のROM書き換え(※)のtftpサーバーとして使う方法です。
※)
Armadillo-400 シリーズソフトウェアマニュアル:6.4. tftpdl を使用してフラッシュメモリを書き換える
Armadillo-840 製品マニュアル:12.4. TFTPを使用してフラッシュメモリを書き換える
Armadillo-640は、2種類のOS(Debian、Armadillo Base OS)に対応していますが、この手順では、Debianを使用します。
また、本ブログでは、Armadillo-640を使用していますが、
OSがDebianのArmadillo-610/X1/IoT(G3/G3L/A6)では同様の方法でtftpサーバーを動かせます。
以下、Armadillo-640とArmadillo-440/840のコンソールとして、
PCのシリアル通信ソフト(※)が起動しているものとして説明します。
※)
TIPS:ArmadilloのコンソールにTera Termを使用
1. tftpサーバーのインストール
Armadillo-640をインターネットに接続可能なネットワークに接続しておきます。
下記コマンドで、tftpdをインストールします。
root@armadillo:~# apt-get update
# apt-get updateでエラーになる場合は、下記のコマンド(--allow-releaseinfo-changeオプションを付与)を実行。
# apt-get --allow-releaseinfo-change update
root@armadillo:~# apt-get -y install tftpd-hpa
補足)/srv/tftpは、tftpd-hpaインストール時に生成されるtftpサーバーのデフォルトのディレクトリ名です。
2. Armadillo-640のIPアドレス
Armadillo-640はデフォルトではDHCPサーバーからIPアドレスを取得します。
この場合は、下記のコマンドでIPアドレスを確認しておきます。
root@armadillo:~# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.102 netmask 255.255.255.0 broadcast 192.168.10.255
# 以下、略
上記の例では、IPアドレスは[192.168.10.102]です。
Armadillo-640のIPアドレスを固定にする場合は、下記コマンドで設定します。
root@armadillo:~# ifconfig eth0 192.168.10.10 up
上記の例では、IPアドレスは[192.168.10.10]です。
tftpd-hpaを再起動します。(IPアドレスが設定されている状態で起動する必要があるため)
root@armadillo:~# systemctl restart tftpd-hpa.service
以下、Armadillo-840のROM書き換え例になります。
Armadillo-440の場合は下記を参考ください。
Armadillo-640(Debian):Armadillo-440のROM書き換えのtftpサーバーとして使う
3. Armadillo-440のROM書き換えのtftpサーバーとして使ってみる
3. Armadillo-840のROM書き換えのtftpサーバーとして使ってみる
3-1. Armadillo-640とArmadillo-840を同一ネットワークに接続します
(上記手順2でIPアドレスを固定にした場合は、DHCPサーバーが不要なので、
Armadillo-640とArmadillo-840をLANケーブルで1対1に接続したり、ハブ経由で接続することも可能です。)
3-2. Armadillo-640の/srv/tftpに、Armadillo-840のROMに書き込むイメージを置きます
ここでは、各イメージのファイル名を下記とします。
ブートローダー:loader-armadillo840-nor-v3.11.0.bin
カーネル:linux-a840-v1.22.bin.gz
ユーザーランド:romfs-a840-v1.15.img.gz
例:USBメモリの最上位の階層に書き込まれた上記イメージファイルを、Armadillo-640の/srv/tftpに置く場合
イメージファイルが書き込まれたUSBメモリをArmadillo-640に接続します。
下記コマンドで、USBメモリ内のイメージファイルを/srv/tftpにコピーします。
# USBメモリを/mntにマウントして、/mnt内にイメージファイルがあることを確認
root@armadillo:~# mount /dev/sda1 /mnt
root@armadillo:~# ls -l /mnt
(略)
-rwxr-xr-x 1 root root 2837651 Oct 11 2019 linux-a840-v1.22.bin.gz
-rwxr-xr-x 1 root root 55488 Mar 30 2018 loader-armadillo840-nor-v3.11.0.bin
-rwxr-xr-x 1 root root 44213724 Oct 11 2019 romfs-a840-v1.15.img.gz
# イメージファイルを/srv/tftpにコピーして、/mntからUSBメモリをアンマウント
root@armadillo:~# cp /mnt/loader-armadillo840-nor-v3.11.0.bin /srv/tftp
root@armadillo:~# cp /mnt/linux-a840-v1.22.bin.gzz /srv/tftp
root@armadillo:~# cp /mnt/romfs-a840-v1.15.img.gz /srv/tftp
root@armadillo:~# umount /mnt
/srv/tftpにあるイメージファイルを確認します。
root@armadillo:~# ls -l /srv/tftp/
total 18064
-rw-r--r-- 1 root root 2837651 Oct 11 2019 linux-a840-v1.22.bin.gz
-rw-r--r-- 1 root root 55488 Mar 30 2018 loader-armadillo840-nor-v3.11.0.bin
-rw-r--r-- 1 root root 44213724 Oct 11 2019 romfs-a840-v1.15.img.gz
3-3. Armadillo-840を保守モードで起動します
Armadillo-840のジャンパーを保守モード(JP1:ショート)、または、
開発用USBシリアル変換アダプタスライドスイッチを外側にした状態で、
電源を投入して保守モード(※)で起動します。
※)
Armadillo-840製品マニュアル「表10.4 ブートローダー起動モードスイッチ」
保守モードで起動した状態(ブートローダーのバージョンがv3.11.0の場合)
Hermit-At v3.11.0 (Armadillo-840/nor) compiled at 08:31:32, Mar 30 2018
hermit>
ブートローダの環境変数を初期化します。ブートデバイスをROMにします。
hermit> clearenv
hermit> setbootdevice flash
3-4. Armdillo-840にブートローダーを書き込む
手順3-2でArmadillo-640の/srv/tftpに置いたブートローダーをtftpdlコマンドで書き込みます。
下記例では、
ブートローダー:loader-armadillo840-nor-v3.11.0.bin
Armadillo-840のIPアドレス:192.168.10.xx(xxの部分は、他の装置と重ならない値(ここでは、20))
Armadillo-640のIPアドレス:192.168.10.10
の場合です。
hermit> tftpdl 192.168.10.20 192.168.10.10 --blksize=1024 --bootloader=loader-armadillo840-nor-v3.11.0.bin
ROM書き込み成功時のログは、後述の参考のようにコンソールに表示されます。
続けて、カーネル/ユーザーランドを書き込む場合は、
一度、Armadillo-840の電源を落とし、再度保守モードで起動し、環境変数を初期化(手順3-3参照)します。
3-5. Armdillo-840にカーネル/ユーザーランドを書き込む
手順3-2でArmadillo-640の/srv/tftpに置いたカーネル/ユーザーランドをtftpdlコマンドで書き込みます。
# カーネルの書き込み
hermit> tftpdl 192.168.10.20 192.168.10.10 --blksize=1024 --kernel=linux-a840-v1.22.bin.gz
# ユーザーランドの書き込み
hermit> tftpdl 192.168.10.20 192.168.10.10 --blksize=1024 --userland=romfs-a840-v1.15.img.gz
ROM書き込み成功時のログは、後述の参考のようにコンソールに表示されます。
以上で、Armadillo-640をtftpサーバーとして、Armadillo-840のROMの書き換えが実施できます。
参考)ROM書き込み成功時のログ
補足)tftpdlコマンド実行後、Armadillo-640がネットワーク再接続を実施することがあり、
「No response from server.」というメッセージがでる場合があります。
ブートローダーの場合
hermit> tftpdl 192.168.10.20 192.168.10.10 --blksize=1024 --bootloader=loader-armadillo840-nor-v3.11.0.bin
initializing net-device...OK
Client: 192.168.10.20
Server: 192.168.10.10
Region(bootloader): loader-armadillo840-nor-v3.11.0.bin
Filename : loader-armadillo840-nor-v3.11.0.bin
......
Filesize : 55488
programing: bootloader
#
completed!!
カーネルの場合
hermit> tftpdl 192.168.10.20 192.168.10.10 --blksize=1024 --kernel=linux-a840-v1.22.bin.gz
initializing net-device...OK
Client: 192.168.10.20
Server: 192.168.10.10
Region(kernel): linux-a840-v1.22.bin.gz
Filename : linux-a840-v1.22.bin.gz
......................................................(略)
Filesize : 2837651
programing: kernel
######################(略)
completed!!
ユーザーランドの場合
hermit> tftpdl 192.168.10.20 192.168.10.10 --blksize=1024 --userland=romfs-a840-v1.15.img.gz
initializing net-device...OK
Client: 192.168.10.20
Server: 192.168.10.10
Region(userland): romfs-a840-v1.15.img.gz
Filename : romfs-a840-v1.15.img.gz
No response from server.
......................................................(略)
Filesize : 44213724
programing: userland
######################################################(略)
completed!!