スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

FON2405Eをイーサネットコンバータ化(その1)

開発環境を手に入れている事だし、コンパイルしてFlashへ書き込めばOKなのですが、その前に元に戻せる様に今書かれているFlashの内容を吸い出してバックアップを取っておきます。やり方は Hot Tuna さんが記事を書かれているのでそのままを実行しました。

これはLinuxがSDRAM上で動作する事とU-BootのTFTP機能を使ってkernel+rootfs部分をFlashに書き込まずに直接SDRAMに書き込んで実行する事ができる事を利用しています。

sirial_Flash-SDRAM.png

実はこの方法には1つ難点があります。それは「吸い出す用のプログラムを作っておく必要がある」事です。本来はこの部分が厄介極まりなかったりするのですが、Hot Tuna さんの所で吸い出す用(実際は専用ではないのですが)のプログラムを公開されているので即解決………とすんなり行けば良いのですが、大人の事情で少々手間が必要になります。何が問題かというと、FON2405Eのオリジナルコードの配置とHot Tuna さんが公開されているコードの配置が異なっているのです。

org_HotTuna_ROM_allocation.png

オリジナルのROM配置と吸い出し用のプログラムのROM配置はこの様になってます。領域だけに注目すると、"uboot" = "Bootloader", "boardconfig" = "Factory" で良い感じになってますが、"image"領域と"Kernel"領域の配置が異なっています。幸い吸い開始位置が同じで終了位置で"Kernel"(吸い出し側領域)の方が大きくなっているので、吸い出す時に多く吸い出して余分な部分を切り取るという方法が使えます。シリアルFlashは2Mbyteなので本来この配置はおかしいのですが…。

※ 吸い出し用のプログラムでは吸い出しROM構成でしかシリアルFlashの内容を見ることが出来ない事に注意してください。
※ ROM配置と名称はそれぞれのkernel起動時のログに出される内容を参考にしています。


さて、シリアルFlash内容を吸い出すには次の手順が必要になってきます。

 1. TFTPサーバの用意
 2. 吸い出し用Linuxの起動
 3. 各部分の吸い出し
 4. 余分な部分をカット

■ TFTPサーバの用意
TFTPサーバはPCで用意することになります。Windows-PCにもTFTPサーバソフトはあるのですが、IPアドレスを簡単に操作出来たり何かと便利なので、Linux-PC上にTFTPサーバを構築することにします。丁度、WinXPからUbuntu 14.04に載せ替えたノートPCがあるのでそこで走らせる事にしました。

$ sudo apt-get install tftp tftpd
$ sudo vi /etc/xinetd.d/tftp
$ cat /etc/xinetd.d/tftp
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = /tftpboot
disable = no
}
$ sudo mkdir /tftpboot
$ sudo chmod -R 777 /tftpboot
$ sudo chown -R nobody /tftpboot/
$ sudo service xinetd restart
$ sudo lsof -i:69
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
xinetd 2418 root 5u IPv4 19218 0t0 UDP *:tftp

後はsdk_root_uImage_ram.img をダウンロードしてくるのですが、直接のパスが分からないので、Ubuntu に入っているFireFoxを使用してダウンロードしました。このファイルをTFTPサーバに指定したディレクトリに入れておけばTFTPサーバとしては準備完了です。

FON2405Eと通信するためにFON2405Eの白色ソケット(INTERNET)側とLANのストレートケーブルで繋ぎます。その後、ノートPCに適当なIPアドレスを振っておきます。

$ sudo ifconfig eth0 down
$ sudo ifconfig eth0 10.10.10.3 up

■ 吸い出し用Linuxの起動
前回やった様にFON2405EのシリアルとWindows-PCを繋いでTeraTermを起動させます。"FON WPS" SWを押しながらFON2405Eの電源をON。TeraTerm上にU-Bootの起動ログと選択項目が出るのでTeraTermで "3" を選択してSWを放すとU-Bootのままコマンド受付に移行します。そこでTFTPサーバからkernelイメージを読み込むようにし、吸い出し用のLinuxを起動させます。

RT3052 # tftpboot 80800000 sdk_root_uImage_ram.img
RT3052 # bootm

■ 各部分の吸い出しと余分な部分のカット
吸い出し方法は"uboot", "boardconfig", "image"のどの領域も同じなので、一番手順の多い"image"の方法を記載します。因みに"uci_overlay"は…いらないでしょう。バックアップを取っておくことも出来ますが。

"image"領域の場合、吸い出し用Linuxの配置では"Kernel"の領域になるので、この部分をマルっとFON2405E内でファイル化します。またその後に外部から取得出来るようにhttpdを立ち上げておきます。操作はTeraTerm上で以下のコマンドを実行。

# cd /tmp
# dd if=/dev/mtd3ro of=firmware.img
7808+0 records in
7808+0 records out
# ls -l
-rw-r--r-- 1 0 0 3997696 firmware.img
# killall goahead
# httpd -h /tmp


先ほどTFTPサーバとして使用したUbuntuマシンのLANを黒ソケット(COMPUTER)側につなぎ替えて以下のコマンドを実行してファイル化した内容を取得します。また、余分な部分をカットしておきます(必要な部分は先頭から0x001f0000 - 0x00020000 = 1900544byte分)。

$ wget http://10.10.10.254/firmware.img
$ dd if=firmware.img of=fon2405-orig-firemware-image-4.0.2.3.img bs=64k count=29


これでバックアップ完了です。
スポンサーサイト

tag : Linux

tag : イーサネットコンバータ

tag : FON2405E

コメントの投稿

非公開コメント

黒ねこ時計 くろック D02
プロフィール

jujurou

Author:jujurou
運営HP:チャコの部屋
Twitter:jujurou

カレンダー
06 | 2017/07 | 08
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
最新記事
最新コメント
カテゴリ
ユーザタグ

ぺるけ RaspberryPi Linux トランジスタ式ミニワッター TRminiWatterPart4 MPD OpenOCD イーサネットコンバータ FON2405E DAC buildroot FM3ペリフェラル BeagleBoneBlack FM3評価ボード library OpenGL mingw ODROID-U2 TL-WR700N Edison bitbake KiCad 計測 VMware シングル FM4 ミニワッター 6N6P プリアンプ 

月別アーカイブ
ランキング

FC2 Blog Ranking

カウンター
検索フォーム
リンク
RSSリンクの表示
QRコード
QRコード
ライセンス
クリエイティブ・コモンズ・ライセンス
Twitter
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。