1
1

CFEのfirmware update

Last updated at Posted at 2020-01-15

BroadcomのmipsのSOCはCFEという独自のブートローダーが使われています。このブートローダーでfirmwareをupdateするときにはtftpが使えます。

tftpはサーバとクライアントの両方に対応しています。

クライアントの場合

CFE> flash -noheader 192.168.11.2:main.trx flash1.trx

サーバの場合

CFE> flash -noheader : flash1.trx

5秒くらいの間にputしないとerrorになりプロンプトに戻ります。

バラしてシリアル接続できる場合はいいのですが、バラさないでupdateする方法がないか長いこと考えていました。

電源投入後の起動時にこんなメッセージがでます。

Wait a few seconds for an image
Reading :: Failed.: Timeout occured

どうもなんかを待っているようです。

手持ちのcfeのソースをgrepしてみてこんなコードがありました。

    /* Wait a few seconds for an image */
    ret = ui_docommand("flash -noheader : flash1.trx");

タイミングよくtftpするとバラさずにupdateできるようです。

shスクリプトにしてみました。

cfeflash.sh
#!/bin/sh

IP=$1
FILE=$2

while [ 1 ]
do
ping -t 1 -c 1 ${IP} >/dev/null 2>&1
if [ $? == 0 ]; then
echo " Find target"
echo "bin
put ${FILE}
quit
" | tftp ${IP}
exit
fi
echo -n "."
done

ネットワークインターフェースにデフォルトのIPの同じサブネットのアドレスを設定かエイリアスしてスクリプトを実行してターゲットの電源を入れると焼けます。

% cfeflash.sh 192.168.11.1 main.trx
........ Find target
Sent 323584 bytes during 0.6 seconds in 633 blocks

CFEのnvramのlan_ipaddrに保存されてます。

猛牛さんのターゲットは以下のIPは以下の記事に記載してあります。

tftpコマンドだけでもできるようです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1