オープンソースの便利なソフト「flashrom」の操作方法
シリアルフラッシュメモリなどの識別、読み出し、消去、書き込みなどができる便利なソフトであるflashrom。私もRaspberry Piで使うことがあるが、たまにしか使わないため操作方法をよく忘れてしまう。今回は自分の備忘録も兼ねて、基本的な操作方法をまとめておく。
前提条件として、Raspberry PiのSPI端子とフラッシュが接続されており、flashromがすでにapt-getコマンドなどでinstallされているという前提で書いていく。ちなみに私はRaspberry Pi 4を使っている。RaspberryPiとの接続についてはflashromの公式Webサイトの以下のページに説明がある。
https://www.flashrom.org/RaspberryPiまた、Raspberry Pi以外のlinux端末からライターなどを使ってflashromを使ってSPIで通信するときも、基本的には同じ方法でできるはず。
デバイスの識別(Identifying)
-pオプションをつけることでデバイスの識別ができる。私はFlashメモリとラズベリーパイが問題なく接続されているか確認するために、まず最初にこのコマンドを実行している。
Raspbery PiのSPIで接続している場合はlinux_spi:dev=/dev/spidev0.0を指定する。また、spispeedで周波数を指定する(単位はkHz)。spispeedを大きくすれば読み出しや書き込みを早く行うことができる。
ただし、Raspbery PiとFlashメモリを接続するジャンパー線の長さが長くなったりすると通信が不安定になる。flashromのページだと1000kHz(1MHz)に設定されているが、私は5000kHz(5MHz)程度に設定することが多い。
以下が5000kHzで認識をする場合のコマンド。問題なく認識できれば、Flashのメーカー名やチップ名が表示される。
flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=5000
データの読み出し(Read)
-rオプションをつけて、そのあとに任意のファイル名を書いて実行することで、flashメモリに書かれているデータを読みだしてファイルとして保存することができる。ファイルはコマンドを実行したディレクトリに保存される。
なお、容量が大きいFlashメモリのデータを読み出す場合、spispeedを小さくしすぎるとかなり時間がかかるので、-pコマンドでどの程度の周波数で通信できるか確かめておき、なるべく大きいspispeedで実行することをオススメする。
以下のコマンドでは、readfile.binというファイル名でflashからreadしたデータを保存する。
flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=5000 -r readfile.bin
データの消去(Erase)
Flashメモリに書き込みを行うには、ファイルを書き込む前に一度Eraseを行って書き込まれているデータを消去する必要がある。
消去のコマンドは以下のように-Eオプションをつけて実行する。なお、私はEraseを行う前に念のため-rオプションで読み出しを実行し、書かれているデータをファイルにバックアップすることにしている。
flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=5000 -E
データの書き込み(Write)
-wオプションをつけて、そのあとにFlashメモリに書きたいファイル名を指定することで、flashメモリにデータを書き込むことができる。なお、このコマンドを実行すると自動的にVerify(ファイルがFlashメモリに正常に書き込まれているか確認すること)も実行される。
以下のコマンドでは、writefile.binというファイルを書き込んでいる。
flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=5000 -w writefile.bin
他にも便利なコマンドがあれば追記していきたい。
0 件のコメント :
コメントを投稿