アットウィキロゴ
MC35UL2解析ページ
掲示板 掲示板 ページ検索 ページ検索 メニュー メニュー

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でブートローダーも指定できるが、ブートローダー付のアップデートファイルで、更新に失敗すると、フラッシュデータを書き換える方法がないので、ブートローダー付のアップデートファイルを作るのは、推奨しない。
最近更新されたスレッド
人気記事ランキング
ウィキ募集バナー