NPAD のファームウェアを展開、修正したあとでまとめて FWDN で書き込めるようにします。この内容の利用は自己責任でお願いします。pad が文鎮になっても責任は取れません。
前回展開したものを利用します。
必要なもの
mkyaffs2image
mkbootimg
tccpack
※ mkbootimg はページサイズを 4096 に修正。
※ mkyaffs2image はチャンクサイズを 4096 にスペアサイズを 128 に修正。また、ecc はサポートなしにする。
1、boot.img 用の ramdisk の作成
修正済みの ramdisk ツリーのトップに移動して、
$ find . -print0 | cpio -o0 -H newc | gzip -9 > ../boot.img-ramdisk-new.gz
2、boot.img の作成
ベースアドレスやコマンドラインのパラメータはもともとの boot.img と同じものを指定します。特にベースアドレスの指定を間違えると起動しなくなります。
boot.img のパラメータを表示するプログラムのソースを
ここにおきます。コンパイルには bootimg.h が必要です。
ベースアドレスは、カーネルアドレスの下位4桁は 0 にします。
$ mkbootimg --kernel boot.img-kernel --ramdisk boot.img-ramdisk-new.gz --cmdline 'console=ttySAC0 androidboot.hardware=tcc92xx' --base 0x40000000 -o boot-new.img
3、recovery.img の作成
rycovery.img は作り直す必要はないと思いますが、boot.img と同様にすることで作成できます。
4、system.img の作成
yaffs2 の mkyaffs2image を使って作成します。mkyaffs2image で ecc を有効にすると FWDN で書き込んだときに CRC エラーになります。三日くらい悩みました。普通に make したら ecc が有効になってました。
system に展開したとして、
$ mkyaffs2image -f system system-new.img
5、tcc8900_mtd.img の作成
作成したものを使って一つにまとめます。
$ tccpack boot-new.img system-new.img recovery.img tcc8900_mtd-new.img
これで出来上がった tcc8900_mtd-new.img のみを FWDN で書き込めば OK です。
失敗しても、元の tcc8900_mtd.img を書き込めば大丈夫です。