今までは、リスクをとった書き換えをやっていたが
http://continue-to-challenge.blogspot.com/2018/05/fon2405eopenwrt.html
一度できたマスターなROMからまるごとコピーする方法にした。
NaonoPIを有効活用してROMライターになってもらった。
左はFONでROM交換できるように交換用のソケットをつけた。
http://www.aitendo.com/product/16564
右はNanoPIでSPIラインをクリップをつけた。
http://www.aitendo.com/product/7311
準備
ハード
NanoPIのレイアウトはhttp://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO#Diagram.2C_Layout_and_Dimension
【NanoPI】
pin name【クリップ】
17 3.3V
19 SI
20 GND
21 SO
23 CLK
24 CS
pin name
1 CS#
2 SO
3 WP#(VCCへ)
4 GND
5 SI
6 SCLK
7 HOLD#(VCCへ)
8 VCC
ソフト
flashromをインストールapt-get install flashrom
このあたりが参考になるhttps://www.flashrom.org/RaspberryPi
読み書き
まずはデバイスを検出してみる
root@NanoPi-NEO:~# flashrom -p linux_spi:dev=/dev/spidev0.0
flashrom v0.9.9-rc1-r1942 on Linux 4.14.52 (armv7l)
flashrom is free software, get the source code at https://flashrom.org
Calibrating delay loop... OK.
Found Macronix flash chip "MX25L1605" (2048 kB, SPI) on linux_spi.
Found Macronix flash chip "MX25L1605A/MX25L1606E/MX25L1608E" (2048 kB, SPI) on linux_spi.
Found Macronix flash chip "MX25L1605D/MX25L1608D/MX25L1673E" (2048 kB, SPI) on linux_spi.
Multiple flash chip definitions match the detected chip(s): "MX25L1605", "MX25L1605A/MX25L1606E/MX25L1608E", "MX25L1605D/MX25L1608D/MX25L1673E"
Please specify which chip definition to use with the -c <chipname> option.
2MのフラッシュROMだねー読み込んでみる
root@NanoPi-NEO:~# flashrom -p linux_spi:dev=/dev/spidev0.0 -c "MX25L1605" -r /tmp/2m_base.img
flashrom v0.9.9-rc1-r1942 on Linux 4.14.52 (armv7l)
flashrom is free software, get the source code at https://flashrom.org
Calibrating delay loop... OK.
Found Macronix flash chip "MX25L1605" (2048 kB, SPI) on linux_spi.
Reading flash... done.
2m_base.imgに保存。これを8MBのフラッシュに書き込もうと思う。書き込んでみる
ファイルサイズをデバイスのサイズに合わせる必要があるみたいなのでこの場合は、8MBにする感じ。
root@NanoPi-NEO:~# dd if=/tmp/2m_base.img of=/tmp/8m_base.img ibs=8M conv=sync
0+1 records in
16384+0 records out
8388608 bytes (8.4 MB, 8.0 MiB) copied, 0.238071 s, 35.2 MB/s
これを、8MBのフラッシュに書いてみるroot@NanoPi-NEO:~# flashrom -p linux_spi:dev=/dev/spidev0.0
flashrom v0.9.9-rc1-r1942 on Linux 4.14.52 (armv7l)
flashrom is free software, get the source code at https://flashrom.org
Calibrating delay loop... OK.
Found Macronix flash chip "MX25L6405" (8192 kB, SPI) on linux_spi.
Found Macronix flash chip "MX25L6405D" (8192 kB, SPI) on linux_spi.
Found Macronix flash chip "MX25L6406E/MX25L6408E" (8192 kB, SPI) on linux_spi.
Found Macronix flash chip "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E" (8192 kB, SPI) on linux_spi.
Multiple flash chip definitions match the detected chip(s): "MX25L6405", "MX25L6405D", "MX25L6406E/MX25L6408E", "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E"
Please specify which chip definition to use with the -c <chipname> option.
書くときは、wでファイル名を指定する。root@NanoPi-NEO:~# flashrom -p linux_spi:dev=/dev/spidev0.0 -c "MX25L6406E/MX25L6408E" -w /tmp/8m_base.img
flashrom v0.9.9-rc1-r1942 on Linux 4.14.52 (armv7l)
flashrom is free software, get the source code at https://flashrom.org
Calibrating delay loop... OK.
Found Macronix flash chip "MX25L6406E/MX25L6408E" (8192 kB, SPI) on linux_spi.
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.
これでOK。フラッシュROMの書き換えが捗るぞー。
参考
https://qiita.com/yamori813/items/28c3fe71840c3277e409
0 件のコメント:
コメントを投稿