MC35UL2解析ページ
アップデートファイルの構造
最終更新:
mc35ul2
-
view
アップデートファイルの構造
アップデートファイルはブートローダ+uclinuxカーネル+ファイルシステムという構造になっているが、ヘッダがついているので、単純に合体してもアップデートファイルとしては認識されない。
| UPGIMG03 | 文字列 | |
| VERS | 4バイト | ファームウェアバージョン |
| BOOT | 文字列 | |
| CKSMb | 4バイト | ブートローダーのチェックサム |
| OFFSb | 4バイト | ブートローダーのフラッシュに対するオフセット (0x46000000) |
| BOOTLEN | 4バイト | ブートローダーの長さ |
| BOOTLDR | xバイト | ブートローダー本体 |
| ... | ... | ... |
| ROFS | 文字列 | |
| CKSMr | 4バイト | ROMFSのチェックサム |
| OFFSr | 4バイト | ROMFSのフラッシュに対するオフセット (0x46020000) |
| ROFSLEN | 4バイト | ROMFSの長さ ([OFFSc]+[LINXGZ]+[CRAMFS]) |
| OFFSc | 4バイト | cramfs.imgのフラッシュに対するオフセット |
| LINXGZ | yバイト | linux.gzデータ |
| ... | ... | ... |
| CRAMFS | zバイト | cramfs.imgデータ |
| ... | ... | ... |
実際このデータを手作業で作るのは大変なので、ユーティリティプログラムを用意した。オリジナルのプログラムは、MG35 open-source firmware で公開されている。これを元にMC35UL2用に改造した。オリジナルのプログラムはGPLに従って公開されているので、このプログラムもGPLに従う。コンパイルは、
g++ -o mc35tool mc35tool.cpp
を実行する。使い方は、
mc35tool split ファイル名
で、ファームウェアを分解し、boot.img、cramfs.img、linux.gzを生成する。ファイルを結合して、アップデートファイルを作るには、
mc35tool join -k linux.gz -c cramfs.img -v 1.0.8 new.update
-kでカーネルイメージ、-cでcramfsイメージ、-vでファームウェアバージョンを指定し、最後の引数がアップデートファイルの名前になる。また、新たに-tを追加した。-t 1でMC35UL2のファームウェアを、-t 2でMC35UL3のファームウェアを指定する。デフォルトのタイプはMC35UL2になっている。-bでブートローダーも指定できるが、ブートローダー付のアップデートファイルで、更新に失敗すると、フラッシュデータを書き換える方法がないので、ブートローダー付のアップデートファイルを作るのは、推奨しない。