Firmwareの書き込み
2007.09.29 Saturday 13:02
tftpd
まずファイル転送にtftpを使うので、atftpdをdebian packageからインストール。
aftpdへのシンボリックリンク /usr/sbin/in.tftpd 及び/etc/inetd.conf の記述も追加されている。初期ディレクトリが /tftpboot となっているのはfonへのファイル転送用としては使いにくいので、fonソースパッケージのbinディレクトリに書き換えて
kill -HUP inetdのプロセスIDとしてinetdを再起動。
転送と書き込み方法はOpenWRTのWikiにあるハードウェア別にまとめられたページを参考にする。http://wiki.openwrt.org/OpenWrtDocs/Hardware/Fon/Fonera 下の方にある Flashing OpenWrt というところ。
しかし、実際に手順どおり行ってみると%{FREEMEMLO}と指定されたloadの開始アドレスが0x80041000ではなく0x80040800と少しずれてしまう。このアドレス情報がbootの際に使われるのかはわからないのだが、ここでは%{FREEMEMLO}の代わりに0x80041000と固定値を使った。
rootfsの書き込みサイズ計算だが、kernel書き込み後に fis free で空き容量をみると0x00703000空いていた。だが、0x00700000で十分なはずなのでこの値を使った。
同じページの少し上にオリジナルファームウェアへの復旧手順があるのだが、その手順とOpenWRT書き込み手順が異なっているのでちょっと混乱する。復旧手順ではrootfsの後ろにvmlinux.bin.l7が入っているが、OpenWRTの手順で行うと位置が逆になる。(先にvmlinux.binが入る)
とにかくresetしてみると、FONのファームウェアが起動してコンソールからログインできるようになったのでたぶんOK。フラッシュ上のアドレスの違いは問題にならないようだ。しかし、無線LANクライアントがないので動作確認ができず(笑)。
ここまででコンパイル〜起動まで確認できたので、プログラムや設定を変更して同様の手順をたどればオリジナルのファームウェアを構築できることになる。
Comments