at_ito
2014年9月29日 8時16分
製品出荷時に、ArmadilloにLinuxカーネルイメージや、ユーザーランドイメージを書き込むことがあるかと思います。
Hermit-Atのtftpdlコマンド等でイメージを書き込んだ後に、正常にNORフラッシュに書き込まれたのかどうかを確認したい場合もあるかと思います。
ここでは、Hermit-Atのmd5sumコマンドを使用し、イメージが正常に書き込まれているかどうかを確認する方法を紹介します。
1. イメージのサイズとmd5値の確認
ATDEで「ls -l」等のコマンドを実行し、イメージファイルのサイズを確認してください。
[atde ~]$ ls -l
合計 45560
-rw-r--r-- 1 atmark atmark 2824049 8月 4 18:46 linux.bin.gz
-rw-r--r-- 1 atmark atmark 43825331 6月 2 20:03 romfs.img.gz
上記の結果から以下の内容がわかります。
- linux.bin.gzのサイズが2824069 Byte
- romfs.img.gzのサイズが43825331 Byte
次に、以下のコマンドを実行し、イメージファイルのmd5値を確認してください。
[atde ~]$ md5sum linux.bin.gz
2a5cf15a9f459e2f71077aa3063e832d linux.bin.gz
[atde ~]$ md5sum romfs.img.gz
435326a278e5f6dee0c358c482b9b53a romfs.img.gz
上記の結果から以下の内容がわかります。
- linux.bin.gzのmd5値が 2a5cf15a9f459e2f71077aa3063e832d
- romfs.img.gzのmd5値が 435326a278e5f6dee0c358c482b9b53a
2. kernelパーティションと、userlandパーティションのアドレスを確認する
まずはArmadilloを保守モードで起動してください。
そうすると以下のようにhermitのプロンプト(コンソールに"hermit> "とでます)が表示されます。
hermit>
次に、以下のようにmemmapコマンドを実行し、Armadilloのメモリマップを確認してください。
hermit> memmap
0x04000000:0x0bffffff FLA all bf:8K bl:4x32K/l,1023x128K/l
0x04000000:0x0403ffff FLA bootloader bf:8K bl:4x32K/l,1x128K/l
0x04040000:0x0407ffff FLA config bf:8K bl:2x128K
0x04080000:0x040bffff FLA license bf:8K bl:2x128K/l
0x040c0000:0x044bffff FLA firmware bf:8K bl:32x128K/l
0x044c0000:0x048bffff FLA kernel bf:8K bl:32x128K
0x048c0000:0x0bffffff FLA userland bf:8K bl:954x128K
0x40000000:0x5fffffff RAM dram-1
上記メッセージから以下の内容がわかります。
- kernelパーティションは、アドレス 0x44c0000 ~ 0x048bffff に配置されている
- userlandパーティションは、アドレス 0x048c0000 ~ 0x0bffffff に配置されている
3. 書き込まれたイメージのmd5値を確認
以下のようにhermitのmd5sumコマンドを実行することで、NORフラッシュに書かれたデータのmd5値を見ることができます。
hermit> md5sum <start address> <size>
前述のデータからkernelとuserlandのmd5値をチェックすると、以下のようになります。
hermit> md5sum 0x044c0000 2824049
2a5cf15a9f459e2f71077aa3063e832d
hermit> md5sum 0x048c0000 43825331
435326a278e5f6dee0c358c482b9b53a
上記のように、事前にATDEで確認したイメージのmd5値と同じとなっていることで、正常に書き込まれていることを確認できます。 もしイメージ書込みミス等が起きていれば、ここの値が一致しない形になります。